Pular para o conteúdo

O mercado

Seis moedas que esta cidade inventou, um preço que se move com ou sem ninguém olhando, e uma forma de enviar uma posição de um telefone para outro sem que um banco fique sabendo.

Nada nele jamais pergunta ao mundo exterior quanto algo vale. Os preços são do seu servidor.


Abre emOscilaçãoO que é
Santocoin SNT$42,0003%A primeira que a cidade criou. Lenta, pesada, na carteira de todo mundo
Vinewood VNW$3,2008%Fama, com preço por hora
Bayview BAY$1802%Sem graça de propósito. Um lugar para guardar dinheiro enquanto você decide
Dustcoin DST$1215%Vinda do condado, e já foi à lua duas vezes
Voltline VLT$6409%Energia, água e estradas. Entediante até as luzes se apagarem
Omen OMN$422%Ninguém sabe quem a criou

Tire uma da config e ela deixa de existir. A posição de ninguém é apagada por isso — devolva a moeda e todo mundo volta a ter o que tinha.


shared/config/crypto.lua:

Tick = 300, -- seconds between one price and the next
Volatility = 1.0, -- every coin's swing, multiplied. One number for the whole market
History = 48, -- how many prices the chart remembers
Shock = { Chance = 0.02, Size = 0.22 }, -- rare, and the reason anybody checks twice a day
Fee = 0.02, -- the house, on the way in and on the way out
Trade = { Min = 10, Max = 250000 }, -- what one order may be, in money

E, por moeda: o preço em que ela abre, a sua Swing, uma Drift que a inclina para cima ou para baixo ao longo de semanas, um Floor e um Ceiling dos quais ela nunca sai, e uma Depth — o dinheiro necessário para mover essa moeda um por cento quando alguém a negocia. Uma moeda rasa é aquela que um jogador rico consegue mover sozinho, o que faz uma moeda rasa valer a pena ser mantida e temida. Depth = 0 significa que as ordens não movem o preço de forma alguma, o que é mais simples e muito mais fácil de farmar.

Icon dá uma imagem à moeda; uma moeda sua sem ícone recorre a um glifo desenhado e, depois, à primeira letra do símbolo dela.


Wallet = 'character', -- or 'device'

No modo character, um telefone roubado mostra ao ladrão um aplicativo vazio. No modo device, o telefone é a carteira, e roubar um leva o portfólio junto.

Ele vem em character, porque o outro transforma cada assalto em um assalto a banco, e isso deve ser uma escolha deliberada de alguém, e não um padrão.


Um preço é em centavos e uma posição é em milionésimos de moeda, ambos números inteiros do começo ao fim, ambos arredondados contra quem está negociando, com a comissão por cima. Comprar algo e vender de volta no mesmo segundo sempre custa dinheiro — um mercado em que isso sai empatado é um mercado em que um ciclo de compra-venda-compra-venda imprime dinheiro.

O cliente nunca é consultado sobre quanto uma moeda vale e nunca envia um preço. Toda escrita em uma carteira fica atrás de um lock, porque ler as posições, mover o dinheiro e gravá-las de volta são três etapas com um yield entre cada uma, e duas ordens no mesmo tick venderiam as mesmas moedas.


exports.mic_phone:Coins() --> every coin, with price, change and history
exports.mic_phone:CoinPrice('santo') --> 42137.55, in money
exports.mic_phone:GetCrypto(src, 'santo') --> 0.4218
exports.mic_phone:GetCryptoValue(src) --> the whole portfolio, in money
exports.mic_phone:AddCrypto(src, 'omen', 12.5) --> a hack that pays in coin, a mining script
exports.mic_phone:RemoveCrypto(src, 'omen', 12.5) --> false when they did not have it, and nothing moves
exports.mic_phone:SetCoinPrice('omen', 0.4) --> move the market for a story

RemoveCrypto recusa em vez de ficar negativo, então a sua resposta também é conseguiram pagar — que é a pergunta que uma loja que vende algo por moeda realmente está fazendo:

if exports.mic_phone:RemoveCrypto(src, 'omen', price) then giveThem(thing) end