[Script] Tfm/Conspiração v7

 avatar
Flamma
lua
2 years ago
52 kB
7
Indexable
--para testes
local demo = true
local jogadoresDemo = {'Sh4nyyyyyyyy#0000', 'Infectsoul#2048', 'Preuclides#3383', 'Eminencia_elfia#6880', 'Cen#1969', 'Sklag#2552'}
-----------------------------------------------------------------------------------------------------------------------------------
local coroutine_create = coroutine.create
local coroutine_resume = coroutine.resume
local coroutine_yield = coroutine.yield

local math_random = math.random

local ui_addTextArea = ui.addTextArea
local ui_removeTextArea = ui.removeTextArea

local tfm_exec_addImage = tfm.exec.addImage
local tfm_exec_removeImage = tfm.exec.removeImage

local tfm_exec_respawnPlayer = tfm.exec.respawnPlayer
local tfm_exec_setPlayerScore = tfm.exec.setPlayerScore

do
   math.randomseed(math_random()*os.time()*math_random())
end

do local desativar = {'AutoShaman', 'AutoNewGame', 'AutoTimeLeft', 'AfkDeath', 'AutoScore'}
   for i=1, #desativar do
      tfm.exec['disable'..desativar[i]]()
   end
end

local comunidade = 'br'--tfm.get.room.community

local organizadores = {['Preuclides#3383'] = true} --se é organizador do module

local jogadoresGlobais = {
   ['Preuclides#3383'] = {pontos=10, comunidade='br'},
   ['Infectsoul#2048'] = {pontos=5, comunidade='br'},
   ['Hallonin#0000'] = {pontos=3, comunidade='en'}

} --jogadores e seu número de vitórias e a comunidade

setmetatable(jogadoresGlobais, {__index = function()
   return {pontos=0, comunidade='xx'}
end})

local jogadoresNoJogo = {} --{nick, papel} lista de jogadores na cadeira
local jogadoresChave = {} --uma cópia do jogadoresNoJogo, mas como {['nick'] = papel}
local jogadoresTotais = 0

local papeisNoJogo = {1, 0, 0, 1, 1, 1} --0 é espião, 1 é sociedade 

local sequenciaPossivelDeAgentes = {{2, 3, 2, 2, 3}, {2, 2, 2, 3, 3}, {2, 3, 2, 3, 2}} --sequência de número de agente nas missões
local sequenciaDaPartida = {} --a sequência de agentes na partida atual

local setColorTag
do
   local colors = { }

   setColorTag = function(tag, color) --por bolodefchoco#0095
      assert(tag, "Missing tag.")
      assert(color, "Missing color.")
      if type(color) == "number" then
         color = string.format("#%06x", color)
      else
         color = tostring(color)
         if not string.find(color, '#') then
            color = "#" .. color
         end
      end
      tag = tostring(tag)
      if not string.find(tag, "^<.->$") then
         tag = "<" .. tag .. ">"
      end
      colors[#colors + 1] = { tag = tag, color = color }
   end

   local putColors = function(str)
      for i = 1, #colors do
         str = string.gsub(str, colors[i].tag, "<font color=\"" .. colors[i].color .. "\">")
      end
      return str
   end

   local addTextArea = ui_addTextArea
   ui_addTextArea = function(id, str, ...)
      return addTextArea(id, putColors(str), ...)
   end
end

local coresPadrao = {
   brancoDeTexto = 'FDFDFE',
   brancoMaisEscuro = 'EDEDEE',
   corDeEspaco = 'BABD2F',
   textAreaFundo = '000001',
   textAreaBorda = '554444',
   espiao = 'FF0C40',
   sociedade = '10FF54',
   lider = '0950FF',
   espiaoEscolhido = 'FF6B00',
   missaoNumero = 'FFBF00',
   missaoEspecialTitulo = 'FFAAFF',
   missaoEspecial = 'ED67EA',
   colocarLider = '0730CC',
   colocarPadrao = 'CC0A00',
   colocarCinza = '20BB10',
   colocarCheio = 'AAAABC',
   colocarVerde = '30CD20',
   colocarBemEscuro = '55557A',
   _colocar = ':)'
}

for k in next, coresPadrao do
   setColorTag(tostring(k), coresPadrao[k])
end --coloca todos no html

local imagens = {
   ['faltam'] = {},
   ['meio'] = {},
   ['tempo'] = {}
}


---------------------------------modos e etc.---------------------------------
local listaDeModos = { 

   { --pegar as cadeiras 1
      --cadeira
      _primeiraVez = true, --se é a primeira vez que tá sendo executado
      _modoAtual = true, --se esse é o modo ativo ou não
      duracaoDoModo = 0 --duração do modo
   },

   { --parte em que mostra se vc é espião ou sociedade 2
      --'inciar',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 5
   },

   { --exibição da missão que iniciará 3
      --'exibir', 
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 10 --este número precisa de ser maior que ou igual a 7
   },

   { --seleção de agentes pelo líder 4
      --'selecionar',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 25
   },

   { --aprovação da missão pela população 5
      --'aprovar',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 15
   },

   { --se missão foi aprovada 6
      --'checar',
      _primeiraVez = true,
      _modoAtual = false,
      _segundaVez = false,
      duracaoDoModo = 3
   },

   { --durante a execução da missão 7
      --'agir',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 10
   },

   { --depois da missão, resultado 8
      --'resultar',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 5
   },

   { --quado chega na última missão 9
      --'finalizar',
      _primeiraVez = true,
      _modoAtual = false,
      duracaoDoModo = 500
   }
}

---------------------------------elementos da missão---------------------------------
--número da missão atual
local _missaoAtual = 1
--quem estará escolhendo os agentes
local liderDaMissao = '' 
--quantos agentes terão na missão atual
local numeroDeAgentesNaMissao = 0 
--número de missões sabotadas (o jogo acaba quando atingir o limite 3)
local missoesSabotadas = 0 
--numero de missões bem-sucedidas (acima ↑)
local missoesSucedidas = 0 
--numero de agente que ja foram recusados
local agentesRecusados = 0
--limite pra dar aleatorio qnd muitos são recusados
local limiteRecusados = 3
--em % qual a chance de ser sabotado
local aleatorioSabotar = 60 --60% de chance de a missão ser sabotada em caso de limite de recusas na aprovação
--quem aprovou em lista
local quemAprovou = {}
--quem recusou em lista
local quemRecusou = {}
--número do primeiro líder da missão
local numeroEscolhido = 0 
--número do título da missão selecionada
local missaoSelecionada = {}
--lider da missão
local agentesAtuais = {}
--lista de agentes e se eles sabotaram ou nao + papel deles
local agentes = {
   --['Nome#0001'] = {true, 0} nick, se sabotou ou n, papel
}

local tempoPercorrido = 0

---------------------------------textos do jogo---------------------------------
--todos os textos do jogo
--eles podem ser traduzidos
local textos = {
   ['br'] = {
      mensagemAleatoria = {
         '11"Frpdqgr" pdalol.',
         'Adeus, Buda.',
         'Siga o seu objetivo.',
         'Seja compassivo.',
         'O gato anda arranhando pessoas.',
         'Disseram-me: "0 é a cor do azar".',
         'Obliviscitur tenebris.',
         'Ac tenebras.',
         'Invenire astrologus.',
         'Memento mori.',
         'Et non moriatur.',
         'Não esqueça por que você está aqui.',
         'Maloso vobiscum et cum spiritum.',
         'AXE. Paz.',
         'Você deveria entender...',
         'Um par de olhos está sobre você.',
         'Ele está feliz com um desastre.',
         'Este sorriso é suspeito.',
         'Tenha algo em mente. Estratégia.',
         'Eu vejo você.',
         'É você?',
         'Como você sabia?',
         'Mi vitae, felis, bibendum.',
         'Maior sum quam liber tuus.',
         'Não acredite em ninguém.',
         'Ele será bom?',
         'Não trate bem quem te odeia. Reciprocidade.',
         'O "bom samaritano" sempre é um traidor.',
         'Sic gorgiamus allos subjuntos freira.'
            
      },
      listaDeMissoes = function(numeroExtra)
         if numeroExtra == nil then
            return 16
         end
         return({
         --1-3
            --nada
            {'Achatar a Terra', ('Que a Terra é plana todo o globo sabe. Os dias estão contados, a sociedade viu o capitão do exército inimigo comentando sobre a contrução de equipamentos de terraformação para curvar a Terra, localizados num parque que será manchete. Sugeriu-se que %s agentes da sociedade viajassem para os parques da cidade, onde o congressista Manchuriano e os agentes, acompanhados por quatro carros de palhaços chamando a atenção do público, destruiriam a máquina e achataria a Terra novamente.'):format(numeroDeAgentesNaMissao)}, 
            --irá falar com papiro
            {'Fabricar papiro', 'Rejeitamos a modernidade e abraçamos a tradição. A sociedade construirá mais papiros. Não papel, papel não. Papiro. Duas folhas, quatro folhas, elas são separadas. Eles têm milênios de existência. Papiro muito fino. Isto é para você. O papiro é fresco. Não imitarás. Curso gratuito de respiração. Respiração profunda. Você dá sinais na porta, então você deve dar as instruções. A sociedade pode comprar uma nova fazenda para plantar árvores e fazer papiros. O código hammurabi é mais antigo e não é feito com papiro...'},            --poderá pular alto
            {'Gravar pouso falso na Lua', ('A diretora da sociedade manda uma carta: "Cara sociedade, uma nave espacial apareceu em Hollywood onde o menino está e começou a filmá-lo pulando. Dentro do navio está o capitão do exército japonês com máscara de macaco, pedindo pela entrega do material do pouso lunar falso. Sombras apareceram me chamando para a gravação lunar. Livre como macaco, haha. Quero que vocês lidem com isto. Atenciosamente, Diretora Hello Kitty". O membro %s vai nos liderar nessa.'):format(liderDaMissao)}, 
         --4-6
            --irá virar um reptil
            {'Visitar líderes reptilianos', 'Uma carta escrita em nome do Rei Calango para um de seus favoritos marítimos contava sobre o desejo de os répteis em aliar-se à nossa sociedade. Os calangos provaram ser uma marca igualmente evocativa de líder, e não um gosto resistente ao ridículo. À medida que o país se apressava de contar séculos de sagas e dinastias, Calango, o imortal, retratou os leitores com o registro de suas aventuras nos pântamos. Devemos visitar o pântano secreto do Rei para firmar a aliança.'}, 
            --irá virar um vampiro
            {'Achar filho do Conde Drácula', 'O gato sugeriu fincar uma estaca no coração do vampiro para que ele se dissipe e sejamos mais fortes. Ah! Bobeira... Nadaremos em ouro com a aliança dos vampiros. Justiça, Romênia, preferência. Desde quando você quer justiça para os cristãos? Peter (memória falsa) sugeriu que um vampiro de aparência humana se tornasse humano (ah hah, perfeito porque essa pessoa provavelmente ficaria melhor). O gato lamentavelmente esfaqueou o vampiro romeniano e rasgou sua linda lingerie.'}, 
            --poderá usar meep
            {'Começar um desastre "natural"', ('O cientista Peter, assistente na base de aquecimento da ionosfera, olha para Mara Chung, agarra seu namorado Luca em algum lugar na multidão, entra no corredor e bate a porta do centro de pesquisa. Ele concluiu seu pensamento: Este monte de fracotes não percebe o que nós representamos. Histeria em massa. Moeda de piada para as autoridades da cidade da próxima semana. Aqueça a ionosfera na temperatura máxima com a ajuda de %s agentes para destruir este lugar.'):format(numeroDeAgentesNaMissao)}, 
         --7-9
            --irá poder entrar em uma parte secreta do mapa
            {'Inspec. bunker apocalíptico', 'Na Groenlândia comemos peixes capturados há apenas alguns meses, os ursos nos trazem comida depois de procurar mísseis nucleares no subsolo, há um enorme bunker, seu verde reluzente na neve, absorvedores de eco varreram a escuridão, usamos luvas brancas aqui, alguns pequenos manequins sendo substituídos, um soldado avança, Pelé voa como um velho urso polar, somos solenes, elogios para o diretor angolano David do bunker. Pede-nos para inspecionar.'}, 
            --poderá tocar música
            {'Virar um cantor cria', 'É horrível ser mídia mas não ser notado, a galera é dominada pelo dinheiro, dizem que ser humano é um animal racional. Mentiras... Vivemos em um mundo falho. Você quer consumismo ou objetividade? O consumo não te evolui. O mundo é perverso e cru. Não sei você. Maluco acima. Digno de rancor abaixo. A sociedade deveria usar o seu poder para disseminar essas ideias que nos trarão evolução. A arte muda o mundo, eu sou um artista. Cante a verdade, mesmo que seus superiores não gostem.'}, 
            --
            {'Sabotar alianças internacionais', 'A Santíssima Trindade que une os países deve ser derrubada. Manipularemos o governo japonês para atacar ativistas japoneses. Manifestantes não conseguem silenciar os defensores do sistema. A cobra da sociedade envenenará aqueles que se oporem a ela. A ação das forças sombrias de Roma, assustando as feministas, conspira por motivos ecniilistas legítimos contra fatos políticos. Os opressores chineses globais dizem "adeus Buda". Somento a sociedade pode apagar as uniões globais.'}, 
         --10-12
            {'Sabotar organizações rivais', 'Uma época em que movimentos desonestos usados em tecnologias gatinas (propriedade dos gatos) levam, espontaneamente, a uma evolução evolutivos de um robô móvel biológico secreto capaz de se infiltrar dentro de cada organismo para controlar, escanear, monitorar, visualizar e registrar as atividades humanas dia e noite. A sociedade usará os dispositivos imponentes para vigilância e mapeamento celular que colocam em risco a humanidade para retalhar as ações dos inimigos.'}, 
            {'Encontrar o homem de Marte', ('Luca estava sentado nu no chão enquanto conversava com o homem de Marte, salvador de mundos perigosos colonizados. Luca (memória real) lhe oferecia um gato em troca da salvação da Terra (que é plana). Bigode, máscara e vestido são as roupas naturais do homem de Marte. Balões coloridos voavam pela estrada marciana. Eram eles: os palhaços e o homem manchuriano, que procuravam pela companhia de %s agentes para visitá-lo. Precisamos de bigodes, máscaras e vestidos para nos juntar a eles.'):format(numeroDeAgentesNaMissao)}, 
            {'Eleger candidato manchuriano', 'Mara Chong organizou uma audiência ao candidato manchuriano. A diretora Hello Kitty buscava o consulado chinês. O congressista era o modelo de palco. A cobra produziu o filme de campanha como uma paródia de espionagem. Mara Chong repreendeu a cobra pela ironia. Só falta os agentes distribuirem o show de música & comédia que mostra por que a legislação da Manchúria aprovou o capturador de graves, dedicou as baleias a Deus e transformou os manchurianos em súditos benevolentes 15 minutos depois.'}, 
         --13-15
            {'Prever o futuro com tarot', '\n\nParece que essa <missaoEspecial><b>missão</b></font> é <missaoEspecial><b>especial</b></font>. Madame Lulu joga suas cartas na mesa e simbolos são revelados. Apenas os agentes da missão veem as letras. Este futuro será profíquo?'}, 
            {'Encontrar-se com a Bruxa Real', '\n\n<missaoEspecial><b>Missão especial</b></font>. Encontre a Bruxa Real. Ela desfrutará de seus poderes absolutos para te metamorfosear em sociedade ou espião, de acordo com seus desejos. Só um agente da missão pode se comunicar com ela.'}, 
            {'Conversar com a Bruxa Maléfica', '\n\nHello kitty<missaoEspecial><b> deu uma missão especial</b></font>. A Bruxa Maléfica jogará uma praga na Missão #5, fazendo com que ela seja bem-sucedida ou sabotada de modo automático, sem importar quais são os agentes da missão. Só um agente pode conversar com a Bruxa Maléfica.'},
         --16
            {'Contatar espião soviético', ('\n\nUma <missaoEspecial><b>missão especial</b></font> selvagem apareceu: Reintegração. Não temos contato no Vietnã. Nosso detetive russo desvendará o disfarce inimigo, seu assistente mandará um telégrafo para nossa base. Cremos que %s agentes serão escolhidos para interpretar a mensagem. Onde fica o Vietnã?'):format(numeroDeAgentesNaMissao)}
         })[numeroExtra]
      end,
      textareas = function(numeroExtra)
         return ({
            --1-3
            '<p align="center"><font size="12"><brancoMaisEscuro>Faltam <missaoNumero>%s</font> membros</font></p>',
            'Fim de jogo',
            '\n\n[ ERRO ]</font> O jogo quebrou!\nRecarregue o script\nou mude de sala para corrigir.</b>\n\n<font size="16">Chame no Discord: flamma#0050 caso o erro persista.',
            --4-6
            'Aprovar',
            'Recusar',
            [[<font size="20"><b><espiao>&#12288;Você é um espião</font></b></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ <espiao>Infiltre</font> e <espiao>sabote</font> 3 missões da <font color="#'..coresPadrao.sociedade..'">sociedade</font> para vencer;

&#12288;&#12288;&#12288;➜ Seja discreto: não deixe que a <sociedade>sociedade</font> descubra
&#12288;&#12288;&#12288;&#12288;sua verdadeira <espiao>identidade</font>;

&#12288;&#12288;&#12288;➜ Tente fazer com que o <lider>Líder</font> da missão escolha você.
&#12288;&#12288;&#12288;&#12288;pois <espiao>espiões</font> só podem sabotar ao serem escolhidos.</font>]],

            [[<font size="20"><sociedade><b>&#12288;Você é sociedade</b></font></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ Complete <sociedade>3 missões</font> com <sociedade>sucesso</font> para vencer;

&#12288;&#12288;&#12288;➜ Fique atento: há <espiao>2 espiões</font> infiltrados na <sociedade>sociedade</font>
&#12288;&#12288;&#12288;&#12288;que podem sabotar as missões;

&#12288;&#12288;&#12288;➜ Ao ser o <lider>Líder</font> da missão, escolha com sabedoria
&#12288;&#12288;&#12288;&#12288;pois um <espiao>espião</font> pode sabotar a missão inteira.</font>
]],

            [[<font size="20"><b><lider>&#12288;Você é expectador</font></b></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ Bem-vind(e|a|o) ao jogo :) Você é <lider>expectador</font>;


&#12288;&#12288;&#12288;➜ Aguarde o início de uma nova partida, você pode fazer outra
&#12288;&#12288;&#12288;&#12288;coisa enquanto isso;

&#12288;&#12288;&#12288;➜ Leia as regras ali.   <font size="24">☛</font></font>
]],
[[espaço]]})[numeroExtra]
      end
   }
}

local _textAreaVisivel = {}

---------------------------------textareas---------------------------------
setmetatable(jogadoresNoJogo, {__index = function()
   return {'</b><font size="11">[ espaço ]', 2}
end})

setmetatable(textos, {__index = function()
   return {
      mensagemAleatoria = {
         'PT-11"Frpdqgr" pdalol.',
         'Maybe the last mission...',
         'Follow your objective.',
         'Be compassive.',
         'The cat is angry.',
         'Someone say to me: "0 is a unfair color".',
         'Obliviscitur tenebris.',
         'Ac tenebras.',
         'Invenire astrologus.',
         'Memento mori.',
         'Et non moriatur.',
         'Remember again: follow your objective.',
         'Maloso vobiscum et cum spiritum.',
         'I long for peace.',
         'I can not understand.',
         'The eyes of society is on you.',
         'Why the leader is so happy?',
         'This smile...',
         'Be smart... Everyone lie.',
         'I see you.',
         'It is you?',
         'Someone know what he could not know.',
         'Mi vitae, felis, bibendum.',
         'Maior sum quam liber tuus.',
         'Do not believe.',
         'Will he be a good leader?',
         'Why I treat them good? Reciprocity.',
         'I figured it out, who use good words is a traitor.',
         'Sic gorgiamus allos subjuntos freira.'
            
      },
      listaDeMissoes = function(numeroExtra)
         if numeroExtra == nil then
            return 16
         end
         return({
        --1-3
            --nada
            {'Flatten the earth', ('All the globe know that the earth is flat. I count the days, the society saw the captain of enemy army "hablando" about how good is to speak spanish in a non-flat earth. Sus. They have a terraforming machine to curve the earth. The society will send %s agents to travel to the city park, where the manchurian spy congressist will meet four clown cars, and the agents with a watermelon on the head, will draw attention and destroy the non-flat-machine. The globe will stay flat as it always has been.'):format(numeroDeAgentesNaMissao)}, 
            --irá falar com papiro no chat
            {'Build papyrus machine', 'We reject modernity and embrace tradition. The society shalt build more papyrus. Not paper. Not paper. Papyrus. Two sheet, four sheet, they are separed. We are millennia of existence. Very thin papyrus. This is for you. The papyrus is fresh. Ye shalt not mimic. Free breathing course. Deep breathing. You give sinals in the door, so you shalt give the instructions. The society may buy a new farm to plant trees and make papyrus. The hammurabi code is older, and it is not made with papyrus...'}, 
            {'Fake moon dark moon', 'THE SOCIETY RECEIVED A LETTER: "Dear society, a misterious spaceship from an E.T. has been found in Hollywood where the boy is and started to film him jumping. Some asiatic ship (not spaceship, but from ocean) with a captain using a monkey mask is so happy asking by the fake-dark moon. We should record shadows of the fake-dark moon. He is free as a monkey, haha, so happy, i wanna be a free animal too. Maybe a cat. Please, deal with it.\nSincerely,\nHello Kitty, the society owner"'}, 
        --4-6
            {'Visit the reptilian empire', 'A letter written on behalf of King Lizard to one of his seafaring favorites told of the desire of reptiles to ally with our society. Lizards proved to be an equally evocative mark of leader, not a ridicule-resistant taste. As the country rushed to recount centuries of sagas and dynasties, King Lizard, the immortal, portrayed readers with a record of his adventures in the swamps. We must visit the secret swamp of the Lizard King to firm the alliance.'}, 
            {'Find the son of Count Dracula', 'The cat suggested sticking a stake in the heart of the vampire so that it would dissipate and we would be stronger. Oh! Silly... We will swim in gold with the vampire alliance. Justice, Romania, preference. Since when do you want justice for Christians? Peter (false memory) suggested that a human-looking vampire become human (ah hah, perfect because that person would probably look better). The cat pitifully stabbed the Romanian vampire and tore his beautiful lingerie.'}, 
            {'Start a "natural" disaster', 'Peter, the cientist of the society, look to Mara Chung, catches his boyfriend Luca in the crowd, go to science search center and close the door. He had an epifany: this bunch of weaklings do not realize what we stand for. A long kiss in the search base. The crowd outside was hysteric. Joke coin for everyone in this smalltown. We should burn the ionosphere and destroy this place. The couple went to the ionosphere heater.'}, 
        --7-9
            {'Rest in apocalipse', 'In Greenland we eat fish caught just a few months ago, bears bring us food after searching for nuclear missiles underground, there is a huge bunker, its gleaming green in the snow, echo absorbers swept the darkness, we wear white gloves here, some small mannequins being replaced, a soldier advances, football player flies like an old polar bear, we are solemn, praise for the Angolan director David of the bunker. Ask us to inspect.'}, 
            {'Sing a trap song', 'The smarts must hate capitalism. The end of supply and demand. Only the nature can make urgency messages. The money is primitive, perverse, crude and passionate. Crazy above. Worthy of grudge below. Become musicians, famous, trap is in, money is out. Do you know what is fame? The society should be famous. Select agents to become famous.'}, 
            {'Sell cookies to old ladies', 'The old ladies are sweet. We manipulate the japanese government to atack japanese acts. Old ladies are not the system defensors. We love cookies, but not cookie poison. The Roman Empire will make the young ladies scared, we conspiry by legitmes ecniilists ideals against facts. The opressors say "Goodbye Buda". We need to sell more cookies with chocolat.'}, 
        --10-12
            {'Talk with spirits', 'Spirits can control, scan, monitore, see and register human activies in day and night. Spirits will guide us. Spirits are so red. I think the spirits do not like cats. The spirits like sonic. Spirits is not a mercatory. Ancians spirits will kill us. Say "no" to spirits. I love spirits. Spiritys will make my day happier. Spirits do not like yellow.'}, 
            {'Find marcian man', ('Luca was naked in the ground while he was talking with the marcian man, the savior of conflicted and colonized worlds. Marco (true memory) offer to him a cat in exchange of the salvation of the Earth (and the Earth is flat). Mustache, mask and dress are natural clothes of the marcian man. Colorful balloons flew across the marcian road. Wow! The clown and the manchurian man, were looking for the company of %s agents to visit Mars. We need mustaches, mask and dress.'):format(numeroDeAgentesNaMissao)}, 
            {'Eleger candidato manchuriano', 'Mara Chong organizou uma audiência ao candidato manchuriano. A diretora Hello Kitty buscava o consulado chinês. O congressista era o modelo de palco. A cobra produziu o filme de campanha como uma paródia de espionagem. Mara Chong repreendeu a cobra pela ironia. Só falta os agentes distribuirem o show de música & comédia que mostra por que a legislação da Manchúria aprovou o capturador de graves, dedicou as baleias a Deus e transformou os manchurianos em súditos benevolentes 15 minutos depois.'}, 
        --13-15
            {'Prever o futuro com tarot', '\n\nParece que essa <missaoEspecial><b>missão</b></font> é <missaoEspecial><b>especial</b></font>. Madame Lulu joga suas cartas na mesa e simbolos são revelados. Apenas os agentes da missão veem as letras. Este futuro será profíquo?'}, 
            {'Encontrar-se com a Bruxa Real', '\n\n<missaoEspecial><b>Missão especial</b></font>. Encontre a Bruxa Real. Ela desfrutará de seus poderes absolutos para te metamorfosear em sociedade ou espião, de acordo com seus desejos. Só um agente da missão pode se comunicar com ela.'}, 
            {'Conversar com a Bruxa Maléfica', '\n\nHello kitty<missaoEspecial><b> deu uma missão especial</b></font>. A Bruxa Maléfica jogará uma praga na Missão #5, fazendo com que ela seja bem-sucedida ou sabotada de modo automático, sem importar quais são os agentes da missão. Só um agente pode conversar com a Bruxa Maléfica.'},
        --16
            {'Contatar espião soviético', ('\n\nUma <missaoEspecial><b>missão especial</b></font> selvagem apareceu: Reintegração. Não temos contato no Vietnã. Nosso detetive russo desvendará o disfarce inimigo, seu assistente mandará um telégrafo para nossa base. Cremos que %s agentes serão escolhidos para interpretar a mensagem. Onde fica o Vietnã?'):format(numeroDeAgentesNaMissao)}
         })[numeroExtra]
      end,
      textareas = function(numeroExtra)
         return ({
            '<p align="center"><font size="12"><brancoMaisEscuro><missaoNumero>%s</font> players left</font></p>',
            'Fim de jogo',
            '\n\n[ ERROR ]</font> Game is broken!\nRestart the script\nOr change your room.</b>\n\n<font size="16">You can also give me a head up in Discord: flamma#0050',
            'Aprove',
            'Refuse',
            [[<font size="20"><b><espiao>&#12288;You're a spy</font></b></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ You must <espiao>infiltrate</font> and <espiao>sabotage</font> 3 <sociedade>society</font>'s missions
&#12288;&#12288;&#12288;&#12288;to win; you have one spy ally, his name is in red too;

&#12288;&#12288;&#12288;➜ Try to make sure no one finds out that you're a <espiao>spy</font>
&#12288;&#12288;&#12288;&#12288;don't tell this to others;

&#12288;&#12288;&#12288;➜ The mission's <lider>Leader</font> should choose you because
&#12288;&#12288;&#12288;&#12288;if you're in a mission, you can <espiao>sabotage</font></font> it.]],

            [[<font size="20"><sociedade><b>&#12288;You're society</b></font></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ You need to <sociedade>successfully</font> complete 3 missions
&#12288;&#12288;&#12288;&#12288;to win the game;

&#12288;&#12288;&#12288;➜ Be careful: there are <espiao>2 spies</font> in the <sociedade>society</font> that
&#12288;&#12288;&#12288;&#12288;will sabotage the missions;

&#12288;&#12288;&#12288;➜ You should find out who is <espiao>spy</font>. Be aware and
&#12288;&#12288;&#12288;&#12288;do not choose <espiao>spies</font> when you're a <lider>Leader</font>.</font>
]],

            [[<font size="20"><b><lider>&#12288;You're a spectator</font></b></font>


<font size="12"><brancoDeTexto>&#12288;&#12288;&#12288;➜ Welcome to the game. You're a <lider>spectator</font>;


&#12288;&#12288;&#12288;➜ Please, wait a new round begins; listen to a music
&#12288;&#12288;&#12288;&#12288;while you wait;

&#12288;&#12288;&#12288;➜ You can read the rules there.  <font size="24">☛</font>


]],
--9
[[space]]})[numeroExtra]
      end
   }
end})

for i=1, 25 do --número de textareas no total
  _textAreaVisivel[i] = {['nil'] = {'nil', 10}} --todas ganham o atributo 'nil'
end

for k in next, tfm.get.room.playerList do
   if jogadoresGlobais[k] == nil then
      jogadoresGlobais[k] = {pontos=0, comunidade=tfm.get.room.community}
      tfm_exec_setPlayerScore(k, 0)
   else
      if jogadoresGlobais[k].comunidade == nil then
         jogadoresGlobais[k].comunidade = tfm.get.room.community
      end
      tfm_exec_setPlayerScore(k, jogadoresGlobais[k].pontos)
   end
end

local textAreas = function(numeroDaTextArea, jogadorAlvo, textoAuxiliar, numeroExtra, numeroExtra2)
   local numeroDaTextArea = numeroDaTextArea or 1
   local nomes = ''
   if numeroDaTextArea < 7 then
      nomes = jogadoresNoJogo[numeroDaTextArea][1]
   end
   local numeroExtra = numeroExtra or 1
   local numeroExtra2 = numeroExtra2 or 0
   local textoAuxiliar = textoAuxiliar or ''
   local jogadorAlvo = jogadorAlvo or nil
   if type(numeroExtra) == 'boolean' then
      numeroExtra = 1
   end
   if numeroDaTextArea == 7 then
      imagens['faltam'][#imagens['faltam']+1] = tfm_exec_addImage('16f7b2decb4.png', '!999', 313, 11, nil, 0.7, 1.2)
   end
   if numeroDaTextArea == 8 and next(imagens['tempo']) == nil then
      for i=1, #imagens['faltam'] do
         tfm_exec_removeImage(imagens['faltam'][i])
      end
      imagens['tempo'][#imagens['tempo']+1] = tfm_exec_addImage('16f7b2decb4.png', '!999', 352, 11, nil, 0.35, 1.2)
   end
   if numeroDaTextArea == 11 then
      imagens['meio'][#imagens['meio']+1] = tfm_exec_addImage('16f2ebcccc8.png', '!1000', 150, 140)
   end
   if nomes == '</b><font size="11">[ espaço ]' then
      nomes = '</b><font size="11">[ '..textos[comunidade].textareas(9)..' ]'
   end
   for i=numeroDaTextArea, numeroDaTextArea do
      return ({
      --1-6 - lista de cadeiras :format(6-jogadoresTotais)
      {1, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, -2, 130, 100, 20, nil, nil, 0, false},
      {2, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, 129, 130, 120, 20, nil, nil, 0, false},
      {3, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, 269, 130, 120, 20, nil, nil, 0, false},
      {4, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, 416, 130, 120, 20, nil, nil, 0, false},
      {5, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, 550, 130, 120, 20, nil, nil, 0, false},
      {6, "<p align='center'><font size='10'><b><font color='#"..textoAuxiliar.."'>"..nomes, jogadorAlvo, 699, 130, 100, 20, nil, nil, 0, false},
      --7 - do modo 'cadeira', text areas de jogadores que faltam
      {7, (textos[comunidade].textareas(1):format(6-jogadoresTotais)), jogadorAlvo, 320, 20, 160, 25, tonumber('0x'..coresPadrao.textAreaFundo), tonumber('0x'..coresPadrao.textAreaBorda), 0},
      --8 - contagem de tempo na maioria do listaDeModos
      {8, '<p align="center"><font size="14" color="#'..coresPadrao.missaoNumero..'">'..numeroExtra-tempoPercorrido, nil, 375, 20, 40, 20, 0x000001, 0x443333, 0},
      --9 do modo 'encerrar', mostra "fim de jogo"
      {9, ('<p align="center"><font size="12" color="#C2C2DA">%s'):format(textos[comunidade].textareas(2)), nil, 375, 20, 50, 20, nil, nil, 0.5},
      --10 mensagem de erro quando a coroutine quebra
      {10,'\n\n\n\n\n\n\n\n\n<p align="center"><font color="#FFFFFF" size="24" face="lucida console"><b> <font color="#FF0000"></font></font>'..textos[comunidade].textareas(3), nil, 0, 0, 800, 400, tonumber('0x'..coresPadrao.brancoMaisEscuro), tonumber('0x'..coresPadrao.brancoMaisEscuro), 0, false},
      --11 do modo 'iniciar', mostra se é espião ou sociedade; do modo 'exibir', mostra a missão e quem está escolhendo a missão
      --do modo 'aprovar', mostra se pode ser aprovado
      --do modo 'checar', mostra se agentes foram aprovados
      {11, textoAuxiliar, jogadorAlvo, 200, 159, 400, 200, tonumber('0x'..coresPadrao.textAreaFundo), tonumber('0x'..coresPadrao.textAreaBorda), 0, false},
      --12 do modo exibir, mostra a descrição da missão
      {12, textoAuxiliar, jogadorAlvo, 280, 190, 268, 170, nil, nil, 0, false},
      --13 do modo exibir, mostra o líder da missão
      {13, textoAuxiliar, jogadorAlvo, 210, 200, 380, 132, nil, nil, 0, false},
      --14-19 do modo selecionar, adiciona uma pessoa na missão
      {13+numeroExtra, textoAuxiliar, jogadorAlvo, (140*numeroExtra)+28-140, 150, 45, 18, tonumber('0x'..coresPadrao._colocar), nil, 1, false},
      {15}, {16}, {17}, {18}, {19}, --textareas simbólicas
      {20, ('<p align="center"><font color="#%s" size="11"><a href="event:%s">%s</a></font></p>'):format(coresPadrao.brancoDeTexto, textoAuxiliar, textos[comunidade].textareas(4)), jogadorAlvo, 230, 320, 135, 22, numeroExtra, tonumber('0x'..coresPadrao.textAreaBorda), 1, false}, --terminar
      {21, ('<p align="center"><font color="#%s" size="11"><a href="event:%s">%s</a></font></p>'):format(coresPadrao.brancoDeTexto, textoAuxiliar, textos[comunidade].textareas(5)), jogadorAlvo, 435, 320, 135, 22, numeroExtra, tonumber('0x'..coresPadrao.textAreaBorda), 1, false},
      {22, textoAuxiliar, jogadorAlvo, 200, 192, 400, 200, nil, nil, 0, false},
      {23, textoAuxiliar, jogadorAlvo, 230, 320, 135, 22, numeroExtra, tonumber('0x'..coresPadrao.textAreaBorda), 1, false}, --terminar
      {24, textoAuxiliar, jogadorAlvo, 435, 320, 135, 22, numeroExtra, tonumber('0x'..coresPadrao.textAreaBorda), 1, false},
      {25, textoAuxiliar, nil, 10, 300, 300, 200, nil, nil, 0, false}
   })[i]
   end
end

local removerTextArea = function(numeroDaTextArea, jogadorAlvo, ...) --remove text area
   if ... then --se tem + de 1 textarea pra remover
      local argumentos = {...}
      for i=1, #argumentos do
         ui_removeTextArea(argumentos[i], jogadorAlvo)
         if jogadorAlvo == nil then
            _textAreaVisivel[argumentos[i]] = {['nil'] = {'nil', 10}}
         end
      end
   end
   ui_removeTextArea(numeroDaTextArea, jogadorAlvo)
   if jogadorAlvo == nil then
      _textAreaVisivel[numeroDaTextArea] = {['nil'] = {'nil', 10}}
   end
end

local carregarTextArea = function(numeroDaTextArea, jogadorAlvo, textoAuxiliar, numeroExtra, analisar) --carrega textarea
   local numeroDaTextArea = numeroDaTextArea or 1
   ui_addTextArea(table.unpack(textAreas(numeroDaTextArea, jogadorAlvo, textoAuxiliar, numeroExtra)))
   if jogadorAlvo == nil and analisar ~= true then
      _textAreaVisivel[numeroDaTextArea]['nil'] = {textoAuxiliar, numeroExtra}
      for k in next, tfm.get.room.playerList do
         _textAreaVisivel[numeroDaTextArea][k] = {textoAuxiliar, numeroExtra}
      end
   elseif analisar ~= true then
      _textAreaVisivel[numeroDaTextArea][jogadorAlvo] = {textoAuxiliar, numeroExtra}
   end
   return false
end

local generoMuda = function(nomeDoAlvo, textArea) --mudar o gênero das textareas
   local genero = tfm.get.room.playerList[nomeDoAlvo] and tfm.get.room.playerList[nomeDoAlvo].gender or 0
   for k in textArea:gmatch('%-%(%w+%|%w+%|%w+%)') do
      local k = (k:gsub('%(', '%%('):gsub('%)', '%%)'))
      if genero == 0 then
         textArea = textArea:gsub(k, k:match('%-%%%((%w+)%|%w+%|%w+%%%)'))
      elseif genero == 1 then
         textArea = textArea:gsub(k, k:match('%-%%%(%w+%|(%w+)%|(%w+)%%%)'))
      else
         textArea = textArea:gsub(k, k:match('%-%%%(%w+%|%w+%|(%w+)%%%)'))
      end
   end
   return textArea
end

--------------------------------- funções ---------------------------------

--funções úteis (essas não fui eu quem fez, créditos aos criadores obviamente rs)
local shuffle = function(tbl) --embaralhador, coloca a tabela em ordem aleatória
   local t = {}
   for i, v in ipairs(tbl) do
      local pos = math_random(1, #t+1)
      table.insert(t, pos, v)
   end
   return t
end

local CleanNils = function(t)
   local ans = {}
   for _, v in next, t do
      if v ~= nil then
         ans[#ans+1] = v
      end
   end
   return ans
end

local tablelength = function(T) --contar o número de elementos na tabela
   local count = 0
   for _ in next, T do if T[_] ~= '' and T[_] ~= false then count = count + 1 end end
   return count
end

local gradient = function(targetPlayer, force, imagem, camada, opacity) --por sklag#2552, adiciona as imagens em modo degradê
   local y = 0
   local opacity = opacity or 1.16
   local numeroDeImagens = 0
   local imagem = imagem or '17948da3319.png'
   local camada = camada or '!'
   while opacity > force do
      y = y +1
      opacity = opacity-force
      numeroDeImagens = numeroDeImagens+1
      tfm_exec_addImage(imagem, camada..'1', 0, y, targetPlayer, 800, 1, nil, opacity)
      tfm_exec_addImage(imagem, camada..'1', 0, 400-y, targetPlayer, 800, 1, nil, opacity)
   end
   return numeroDeImagens
end

do local escolhe5 = {}
   for i=1, textos[comunidade].listaDeMissoes() do
      escolhe5[#escolhe5+1] = i
   end
   for i=1, 5 do
      local n = escolhe5[math_random(#escolhe5)]
      missaoSelecionada[#missaoSelecionada+1] = n
      for i2=1, #escolhe5 do
         if escolhe5[i2] == n then
            escolhe5[i2] = nil
         end
      end
      escolhe5 = CleanNils(escolhe5)
   end
end

print(missaoSelecionada)

for i=1, math_random(4, 8) do
   papeisNoJogo = (shuffle(papeisNoJogo)) --embaralha a tabela "papel" pra definir espião ou sociedade
end

local analisarJogador = function(nomeDoJogador)
   local taNoJogo = false
   for i=1, 6 do
      if jogadoresNoJogo[i][1] == nomeDoJogador then
         taNoJogo = true
      end
   end
   if jogadoresGlobais[nomeDoJogador] == nil then
      jogadoresGlobais[nomeDoJogador] = {pontos=0, comunidade=tfm.get.room.community}
      tfm_exec_setPlayerScore(nomeDoJogador, 0)
   else
      if jogadoresGlobais[nomeDoJogador].comunidade == nil then
         jogadoresGlobais[nomeDoJogador].comunidade = tfm.get.room.community
      end
      tfm_exec_setPlayerScore(nomeDoJogador, jogadoresGlobais[nomeDoJogador].pontos)
   end
   system.bindKeyboard(nomeDoJogador, 32, true, true) --espaço
   tfm_exec_respawnPlayer(nomeDoJogador) --ressuscita
   if listaDeModos[1]._modoAtual then --mostra "faltam x jogadores"
      carregarTextArea(7, nil, nil, nil, true)
      for i=1, 6 do --exibe as textareas sempre q alguém novo entra
         if jogadoresNoJogo[i][1] == '</b><font size="11">[ espaço ]' then
            carregarTextArea(i, nomeDoJogador, coresPadrao.corDeEspaco, true) --"[ espaço ]" se a cadeira tá vazia
         end
      end
   else
      gradient(nomeDoJogador, 0.002, nil, nil, 0.4)
      for i=1, #_textAreaVisivel do
         if _textAreaVisivel[i]['nil'][1] ~= 'nil' then
            carregarTextArea(i, nomeDoJogador, _textAreaVisivel[i]['nil'][1], _textAreaVisivel[i]['nil'][2], true)
         end
         if _textAreaVisivel[i][nomeDoJogador] ~= nil then
            if _textAreaVisivel[i][nomeDoJogador][1] ~= 'nil' then
               carregarTextArea(i, nomeDoJogador, _textAreaVisivel[i][nomeDoJogador][1], _textAreaVisivel[i][nomeDoJogador][2], true)
            end
         end
      end
   end
end

for k in next, tfm.get.room.playerList do
   analisarJogador(k)
end

local fazerMapa = function(jogadorAlvo)
   tfm_exec_addImage('18522944176.png', '_1001', 0, 14, jogadorAlvo) --fundo
   tfm_exec_addImage('1852293f469.png', '_1002', 0, 24, jogadorAlvo) --cadeiras
   tfm_exec_addImage('18522930d1d.png', '_1003', 0, 14, jogadorAlvo) --fundoIcones
   tfm_exec_addImage('18522935a65.png', '~1', -2, 14, jogadorAlvo) --icones
   tfm_exec_addImage('1852293a772.png', '&1', 0, 18, jogadorAlvo) --lampadas
end


local enfeite = function(tipoDaParticula, posicaoDoJogador)
   for i=1, math_random(12, 15) do
      tfm.exec.displayParticle(tipoDaParticula, math_random((26-140+(140*posicaoDoJogador)), (66-140+(140*posicaoDoJogador))), math_random(43, 93))
   end
end

-------------------------

--coroutine que será chamada pelo eventLoop
local scriptDoGato = coroutine_create(function()
   while true do
      if listaDeModos[1]._modoAtual and jogadoresTotais == 6 then --cadeira - pegar as cadeiras
         sequenciaDaPartida = sequenciaPossivelDeAgentes[math_random(#sequenciaPossivelDeAgentes)]
         listaDeModos[1]._modoAtual = false --começa o modo iniciar quando as cadeiras são preenchidas
         listaDeModos[2]._modoAtual = true
         tempoPercorrido = 0
         removerTextArea(7, nil)
         ------------------------------------------------------------------------------------------
      end
      if listaDeModos[2]._modoAtual then --iniciar - mostra sociedade ou espião
         carregarTextArea(8, nil, nil, listaDeModos[2].duracaoDoModo) --contagem do tempo
         if listaDeModos[2]._primeiraVez then
            numeroEscolhido = math_random(#jogadoresNoJogo) --escolhe o líder aleatóraimente
            gradient(nil, 0.002, nil, nil, 0.4)
            for i=1, #jogadoresNoJogo do --muda a cor dos espiões para vermelho
               if jogadoresNoJogo[i][2] == 0 then
                  for j=1, #jogadoresNoJogo do
                     if jogadoresNoJogo[j][2] == 0 then
                        carregarTextArea(i, jogadoresNoJogo[j][1], coresPadrao.espiao)
                     end
                  end --abaixo: mostra a mensagem do espião
                  carregarTextArea(11, jogadoresNoJogo[i][1], textos[jogadoresGlobais[jogadoresNoJogo[i][1]].comunidade].textareas(6))
               elseif jogadoresNoJogo[i][2] == 1 then--mostra a mensagem da sociedade
                  carregarTextArea(11, jogadoresNoJogo[i][1], textos[jogadoresGlobais[jogadoresNoJogo[i][1]].comunidade].textareas(7))
               else
                  carregarTextArea(11, jogadoresNoJogo[i][1], textos[jogadoresGlobais[jogadoresNoJogo[i][1]].comunidade].textareas(8))
               end
            end
            liderDaMissao = jogadoresNoJogo[numeroEscolhido][1] --coloca o líder da missão aleatoriamente
            listaDeModos[2]._primeiraVez = false
         end
         if tempoPercorrido == listaDeModos[2].duracaoDoModo then --vê se o modo iniciar já acabou
            removerTextArea(11, nil) --tira a textarea de exibição padrão
            tempoPercorrido = 0 --padrão de mudar o modo
            listaDeModos[2]._modoAtual = false
            listaDeModos[3]._modoAtual = true
            coroutine_yield() --para por 1 seg
         end
         if tempoPercorrido >= listaDeModos[2].duracaoDoModo+3 then --derruba o jogo se houver algum problema
            break
         end
         ------------------------------------------------------------------------------------------
      end
      if listaDeModos[3]._modoAtual then
         carregarTextArea(8, nil, nil, listaDeModos[3].duracaoDoModo) --tempo
         if listaDeModos[3]._primeiraVez then
            listaDeModos[3]._primeiraVez = false
            numeroDeAgentesNaMissao = sequenciaDaPartida[_missaoAtual]
            carregarTextArea(11, nil, ('<font size="18"><b><missaoNumero>&#12288;%s</font></b></font>'):format((textos[comunidade].listaDeMissoes(missaoSelecionada[_missaoAtual]))[1]))
            carregarTextArea(12, nil, '<p align="justify"><font size="10" color="#'..coresPadrao.brancoMaisEscuro..'">'..(textos[comunidade].listaDeMissoes(missaoSelecionada[_missaoAtual]))[2]..'</font></p>')
         elseif tempoPercorrido == tonumber(string.match(tostring(listaDeModos[3].duracaoDoModo*0.85), '(%d+)'))-1 then
            removerTextArea(12, nil)
         elseif tempoPercorrido == tonumber(string.match(tostring(listaDeModos[3].duracaoDoModo*0.85), '(%d+)')) then
           carregarTextArea(13, nil, generoMuda(liderDaMissao, '\n<font size="12" color="#'..coresPadrao.lider..'"><b>'..liderDaMissao..'</b></font><font size="12" color="#'..coresPadrao.brancoDeTexto..'"> foi escolhid-(e|a|o) como líder da missão.\n<font size="12">El-(u|a|e) terá que selecionar '..numeroDeAgentesNaMissao.. ' agentes para completá-la.\n\n\n\n\n\n\n\n<p align="right"><font size="9">'..textos[comunidade].mensagemAleatoria[math_random(#textos[comunidade].mensagemAleatoria)]..'</font></p></font>'))
         elseif tempoPercorrido == listaDeModos[3].duracaoDoModo then
           removerTextArea(11, nil, 12, 13)
           tempoPercorrido = 0
           listaDeModos[3]._modoAtual = false
           listaDeModos[4]._modoAtual = true
         elseif tempoPercorrido >= listaDeModos[3].duracaoDoModo+3 then
            break
         end
         ------------------------------------------------------------------------------------------
      end
      if listaDeModos[4]._modoAtual then
      end
      coroutine_yield()
   end
end)

---------------------------------------------------------
--funções chamadas pelo transformice
do 
   local aCada1Segundo
   eventLoop = function() --"aii mimimi coroutine desnecessaria" AAAAAAAAA RASENGAN
      if aCada1Segundo then 
         aCada1Segundo = false
         return
      end
      local checagem, resultado = coroutine_resume(scriptDoGato)
      if checagem == false then
         gradient(nil, 0.01, '17948d9ecc2.png', ':', 0.9)
         carregarTextArea(25, nil, '<brancoDeTexto>...: '..resultado)
         for i=1, 14 do
            removerTextArea(10+i)
         end
         carregarTextArea(10, nil)
         coroutine_resume = function() return true end
      end
      tempoPercorrido = tempoPercorrido+1
      aCada1Segundo = true
   end
end

eventNewPlayer = function(jogadorQueEntrou)
   analisarJogador(jogadorQueEntrou) --novo player = dá oq é necessário p ele
   ui.setMapName('Soçaite')
   imagens['tempo'][#imagens['tempo']+1] = tfm_exec_addImage('16f7b2decb4.png', '!999', 352, 11, jogadorQueEntrou, 0.35, 1.2)
   fazerMapa(jogadorQueEntrou)
end

eventPlayerLeft = function(jogadorQueSaiu)
   if listaDeModos[1]._modoAtual then
      for i=1, 6 do
         if jogadoresNoJogo[i][1] == jogadorQueSaiu then
            jogadoresNoJogo[i] = nil
            carregarTextArea(i, nil, coresPadrao.corDeEspaco)
            jogadoresTotais = jogadoresTotais-1
            carregarTextArea(7, nil)
         end
      end
   end
end

eventPlayerDied = function(nomeDoJogador)
   tfm_exec_respawnPlayer(nomeDoJogador)
end

eventTextAreaCallback = function(numeroDaTextArea, quemClicou, nomeDoEvento)

end

eventKeyboard = function(nomeDoJogador, teclaPressionada, _, posicaoXDoRato)
   if teclaPressionada == 32 and listaDeModos[1]._modoAtual then --cá temos cada textarea das cadeiras, tb coloca os jogadores na tabela {jogadores}
      for i=1, 6 do
         if demo then
            posicaoXDoRato = 30-140+i*140
            nomeDoJogador = jogadoresDemo[i]
         end
         for j=1, 6 do
            if jogadoresNoJogo[j][1] == nomeDoJogador then return end --quem já tem cadeira não pode pegar outra
         end
         if posicaoXDoRato > 25-140+i*140 and posicaoXDoRato < 75-140+i*140 and (jogadoresNoJogo[i][1] == '</b><font size="11">[ espaço ]') then --verifica se o posicaoXDoRato do jogador é em cima de uma cadeira
            jogadoresNoJogo[i] = {nomeDoJogador, papeisNoJogo[i]}; jogadoresChave[nomeDoJogador] = {papel = papeisNoJogo[i]}
            jogadoresTotais = jogadoresTotais+1;
            carregarTextArea(i, nil, coresPadrao.brancoDeTexto)
            carregarTextArea(7, nil)
            --insere txtareas
         end
      end
   end
end

--mapa
do
   local mapaXML = [[<C><P H="800" D="x_deadmeat/x_pictos/s_1105-fs8.png,20,701;x_deadmeat/x_pictos/d_1733-fs8.png,154,656;x_deadmeat/x_pictos/d_1733-fs8.png,153,679;x_deadmeat/x_pictos/d_1733-fs8.png,153,710;x_deadmeat/x_pictos/d_1733-fs8.png,153,742;x_deadmeat/x_pictos/d_1734-fs8.png,351,746;x_deadmeat/x_pictos/d_1727-fs8.png,519,719;x_deadmeat/x_pictos/d_1295-fs8.png,1136,620;x_deadmeat/x_pictos/s_1045-fs8.png,1124,656;x_deadmeat/x_pictos/s_1045-fs8.png,1082,635;x_deadmeat/x_pictos/s_1045-fs8.png,1166,635;x_deadmeat/x_pictos/s_1045-fs8.png,1123,616;x_deadmeat/x_pictos/s_1045-fs8.png,1206,615;x_deadmeat/x_pictos/s_1045-fs8.png,1165,595;x_deadmeat/x_pictos/s_1045-fs8.png,1245,596;x_deadmeat/x_pictos/s_1045-fs8.png,1204,575;x_deadmeat/x_campement/Nuages.png,-12,736" Ca="" MEDATA="13,1;;;;-0;0:::1-"/><Z><S><S T="12" X="400" Y="373" L="800" H="66" P="0,0,0.3,0.2,0,0,0,0" o="000000" c="3"/><S T="12" X="401" Y="159" L="1500" H="66" P="0,0,0.3,0.2,0,0,0,0" o="000000"/><S T="12" X="400" Y="-47" L="800" H="100" P="0,0,0,0.2,0,0,0,0" o="6a7495" c="4" N=""/><S T="12" X="900" Y="32" L="10" H="265" P="0,0,0,9999,0,0,0,0" o="324650"/><S T="12" X="-100" Y="32" L="10" H="265" P="0,0,0,9999,0,0,0,0" o="324650"/><S T="10" X="197" Y="752" L="65" H="150" P="0,0,0.3,0,0,0,0,0" m=""/><S T="10" X="389" Y="821" L="56" H="110" P="0,0,0.3,0,0,0,0,0" m=""/><S T="10" X="579" Y="805" L="82" H="66" P="0,0,0.3,0,0,0,0,0" m=""/><S T="9" X="337" Y="786" L="244" H="50" P="0,0,0,0,0,0,0,0" m=""/><S T="9" X="578" Y="786" L="244" H="50" P="0,0,0,0,0,0,0,0" m=""/><S T="10" X="596" Y="758" L="33" H="26" P="0,0,0.3,0,0,0,0,0" m=""/><S T="10" X="563" Y="762" L="47" H="16" P="0,0,2,0,-27,0,0,0" m=""/><S T="10" X="61" Y="740" L="80" H="33" P="0,0,0.3,0,0,0,0,0" m=""/><S T="1" X="-66" Y="132" L="171" H="34" P="0,0,0,0.2,10,0,0,0" m=""/><S T="1" X="866" Y="132" L="171" H="34" P="0,0,0,0.2,-10,0,0,0" m=""/></S><D><P X="58" Y="141" T="19" C="8A311B" P="0,0"/><P X="196" Y="141" T="19" C="8A311B" P="0,0"/><P X="323" Y="141" T="19" C="8A311B" P="0,0"/><P X="480" Y="141" T="19" C="8A311B" P="0,0"/><P X="604" Y="141" T="19" C="8A311B" P="0,0"/><P X="737" Y="141" T="19" C="8A311B" P="0,0"/><DS X="400" Y="110"/></D><O/><L/></Z></C>]]
   tfm.exec.newGame(mapaXML)
   tfm_exec_addImage('166dc37c641.png', '?0', 0, 401)
   fazerMapa()
   imagens['faltam'][#imagens['faltam']+1] = tfm_exec_addImage('16f7b2decb4.png', '!999', 313, 11, nil, 0.7, 1.2)
   ui.setMapName('Soçaite')
end
Editor is loading...