Decken no Launchpad

Havia prometido publicar o codigo-fonte do MaginBook (agora Decken) somente quando o mesmo atualizasse sua base de dados sozinho. Ele ainda não faz isso, mas publiquei o código com que venho trabalhando e há scripts para realizarem esta tarefa. De qualquer modo, o arquivo database.db já vem com o cadastro de uma grande quantidade de cards de Magic, então não haverá problemas com isso. Uma vez que ele esteja executando, baixará automaticamente as imagens.

Vocês podem ver e baixar o código aqui. Lá vocês encontraram o Decken propriamente dito e mais o plugin para Magic.

Quando baixarem o plugin, não esqueçam de executar python setup.py develop dentro da pasta.

Vocês terão mais chances de executar o programa no Linux, ok? Pelo fato de está trabalhando no Mac ainda não tenho noção de quais os nomes das dependências via apt-get (no Ubuntu) eu preciso baixar. Tenho de informar no setup.py do Decken quais dependências ele deve baixar via easy_install. Por enquanto, só informei uma dependência: BeautifulSoup.

Depois que eu tiver com um programa capaz de ser funcional e instalável via easy_install, informo por aqui.

MaginBook sem a infra do Lackey

Mudei de idéia em relação a usar a infraestrutura do LackeyCCG.

Optei por implementar um plugin que dado uma lista de siglas de sets de Magic, acesse um site e carregue as informações dos cards, gravando-as num banco de dado SQLite. Foi uma escolha mais divertida.

Outra vez a biblioteca BeautifulSoup foi incrível. Navegar na árvore de tags HTML e extrair os dados é moleza com ela.

Glade, Mac OS e MaginBook

Ora, as coisas não poderiam ficar melhores. Depois do trabalho de pesquisa que estava tendo para fazer certas coisas com Gtk, descobri que seria possível utilizar o Glade no Mac OS X. Baixei o binário e problema resolvido.

O trabalho é devagar, pois procuro o melhor jeito para desenvolver o MaginBook. Além de um tutorial ou outro sobre Gtk e Glade, consegui um exemplo inesperado, um organizador de decks e cards feito em Python com Gtk! O criador do Magiclibrary escreveu um comentário num post anterior sobre este assunto. Fui atrás dos códigos-fonte da aplicação para saber como ele resolveu certas coisas. O bacana é que ele também utilizou o Glade como ferramenta para montar a interface gráfica.

Só lembrando a vocês que só vou disponibilizar o código da aplicação quando ela estiver conseguindo baixar a descrição das cartas e suas imagens.

Além do mais, é importante salientar que vou usar a infra-estrutura de plugins do LackeyCCG, onde já se fornece praticamente tudo: informações sobre blocos, edições, descrição das cartas e imagens.

Organizador de Decks em Python

Tenho um Nokia N800 que está parado deste que resolvi adotar uma agenda não-eletrônica. O fato do tablet não ter uma bateria de uma boa duração, muitas vezes não tinha a agenda disponível quando realmente precisava.

Bom, desde então fiquei pensando numa maneira de torná-lo útil novamente. Como eu jogo Magic The Gathering, um jogo de cartas colecionáveis, seria interessante ter uma lista de cartas e decks sempre à mão.

As funcionalidades que pretendo implementar para este organizador de decks, que chamarei de Maginbook:

  • Pesquisa de cartas
  • Download de novas cartas
  • Criar e baixar decks da Internet
  • Exportar decks para programas como MWS, LackeyCCG e Apprentice
  • Cotação das cartas

Eu comecei a testar as bibliotecas necessárias para este trabalho. Depois publico o código em algum repositório. Haverá duas versões: uma para Linux/Mac e outro para o Nokia N800 e outros tablets da linha.

DiceDnd 1.1

Depois de um final de semana complicado e acamado, voltei a escrever na segunda-feira os melhoramentos do DiceDnd. Pretendia melhorar o visual, habilitar o modo fullscreen e ainda fazer um pacote debian para distribuir o programa. Devido às dificuldades encontradas, fiquei somente no melhoramento visual. Pois bem, tirei umas fotos do aplicativo funcionando (não descobri uma função print screen no N800) e ainda estou disponibilizando uma nova versão abaixo.

Vou ficar devendo o fullscreen e o pacote.

DiceDnd no Nokia N800
DiceDnd no Nokia N800
DiceDnD com o resultado da jogada de dados
DiceDnD com o resultado da jogada de dados

fonte do dicednd.py (atualizado)

#!/usr/bin/python2.5

import osso
import gtk
import hildon

def labela(texto):
    fonte = '%s'
    etiqueta = gtk.Label(fonte % texto)
    etiqueta.set_use_markup(True)
    return etiqueta

def string_jogada(vezes, dado, soma):
    if soma > 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.set_border_width(40)
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,False)
        self.window.add(tabela)        

        self.dado4 = gtk.Button()
        self.dado4.add(labela('4'))
        self.dado6 = gtk.Button()
        self.dado6.add(labela('6'))
        self.dado8 = gtk.Button()
        self.dado8.add(labela('8'))
        self.dado10 = gtk.Button()
        self.dado10.add(labela('10'))
        self.dado12 = gtk.Button()
        self.dado12.add(labela('12'))
        self.dado20 = gtk.Button()
        self.dado20.add(labela('20'))
        self.botaoMais = gtk.Button()
        self.botaoMais.add(labela('+'))
        self.botaoMenos = gtk.Button()
        self.botaoMenos.add(labela('-'))
        self.botaoJogar = gtk.Button()
        self.botaoJogar.add(labela('Jogar'))
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)
        
        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)
        
        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)
        
        self.window.show_all()
        
    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))
            
    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))


    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '%s\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()
        
    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()

DiceDnd

Os dados usados no RPG D&D
Os dados usados no RPG D&D

A minha idéia exploratória de criar um aplicativo para gerar jogada de dados no meu N800  ocupou umas horas da noite de sexta e início de madrugada do sábado.

O objetivo da aplicação é bem simples. Eu vou voltar a mestrar campanhas de RPG. Comprei o recente D&D 4ª Edição em português mais uma aventura para personagens iniciantes. Não tenho todos os tipos de dados necessários. São 6 tipos, por quantidade de faces: 4, 6, 8, 10, 12 e 20. Assim, queria simular a parada de dados pelo meu N800, um internet tablet da Nokia.

Uma das principais linguagens para programar nesses dispositivos é Python. Apesar de não conhecer muito a biblioteca Gtk (biblioteca gráfica), conheço a linguagem razoavelmente bem, por isso acreditava que conseguiria implementar o aplicativo no final de semana.

A primeira providência foi procurar documentação. A idéia do projeto já estava toda na minha cabeça mas não sabia por onde começar. Depois de um tempo, encontrei algumas coisas. Foram importantes os seguintes documentos:

A versão do sistema operacional é o OS 2008 (Diablo). O Python 2.5 já estava instalado. De fato, não precisei instalar outra coisa. Algumas documentações diziam que eu tinha de instalar o interpretador da linguagem. Talvez eu tenha feito isso algum tempo atrás.

Outra coisa que ajudou bastante, para ir escrevendo e testando rapidamente, foi acessar via SSH o dispositivo pelo Nautilus (num notebook com Ubuntu). Criei o arquivo da aplicação no cartão do N800 e depois abrir com o editor TextFlow. Daí era só escrever, salvar e ir no PDA executar a aplicação.

O cliente e servidor do SSH não vem instalado por default no N800. Nem o terminal. Por ele é que eu rodava o Python. Pelo notebook, eu usava também um terminal para acessar o N800 via ssh. Era útil para testar algumas coisas no interpretador interativo do Python.

As próximas tarefas envolvem melhorar o aspecto visual da aplicação e preparar um instalador para ficar mais fácil de dispobilizar. O código-fonte encontra-se abaixo:

#!/usr/bin/python2.5

import osso
import gtk
import hildon

def string_jogada(vezes, dado, soma):
    if soma > 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,True)
        self.window.add(tabela)

        self.dado4 = gtk.Button('4')
        self.dado6 = gtk.Button('6')
        self.dado8 = gtk.Button('8')
        self.dado10 = gtk.Button('10')
        self.dado12 = gtk.Button('12')
        self.dado20 = gtk.Button('20')
        self.botaoMais = gtk.Button('+')
        self.botaoMenos = gtk.Button('-')
        self.botaoJogar = gtk.Button('Jogar')
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)

        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)

        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)

        self.window.show_all()

    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '%s\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()

    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()

Idéia exploratória

Uma boa idéia me surgiu agora, útil para o momento e ótima pedida para iniciar a exploração no mundo da programação de dispositivos Nokia que usam o sistema operacional Maemo: um rolador de dados.

Bobo, né? Inclusive, acho que já existe um. Mas é diferente do que eu estou pensando.

Gostaria que a tela do aplicativo mostrasse um quadrado com todos os tipos de dados usados no RPG D&D ou seja, os de 4, 6, 8, 10, 12 e 20 faces. E mais três botões: para o sinal de mais, o de menos e o de igual.

Ao apertar um dos dados ele saberá que quero jogar com ele. Ele esperará eu apertar no sinal de igual para a operação randômica executar. Os sinais servem para aumentar ou diminuir o que resultar do dado. Cada vez que eu apertar num deles incrementa-se ou descrementa-se em um.

Logicamente vou escrever esse aplicativo em Python. Vamos ver se tenho a sorte e produtividade de terminá-lo ainda neste final de semana. Quando concluir, posto por aqui.

Da prática para a especulação

Especulam se haverá aumento da compra de imóveis ao longo dos próximos anos. Vamos citar exemplos práticos. Sei de várias pessoas próximas a mim que estão planejando comprar um imóvel (casa ou apartamento), neste ano ou no próximo ano. E grande parte deles não é sequer o foco do badalado Minha Casa, Minha Vida.

O problema em Teresina, não sei em outros lugares, é o aumento do preço dos imóveis. Uma parte considera os preços propostos muito irreal. Resta saber se nos meses que se seguem ou mesmo em 2010 os preços começam a baixar.

Socialismo fracassou, capitalismo quebrou: o que vem a seguir?

Esse artigo eu encontrei no site do Paulo Henrique Amorim, o Conversa Afiada. Comenta um assunto que eu já venho lendo e notando em diversos lugares da Internet. É uma nova forma de ver o mercado e o rumo da política.

A prova de uma política progressista não é privada, mas sim pública. A prioridade não é o aumento do lucro e do consumo, mas sim a ampliação das oportunidades e, como diz Amartya Sen, das capacidades de todos por meio da ação coletiva. Isso significa iniciativa pública não baseada na busca de lucro. Decisões públicas dirigidas a melhorias sociais coletivas com as quais todos sairiam ganhando. Esta é a base de uma política progressista, não a maximização do crescimento econômico e da riqueza pessoal. A análise é do historiador britânico Eric Hobsbawm

Eric Hobsbawm – The Guardian Seja qual for o logotipo ideológico que adotemos, o deslocamento do mercado livre para a ação pública deve ser maior do que os políticos imaginam. O século XX já ficou para trás, mas ainda não aprendemos a viver no século XXI, ou ao menos pensá-lo de um modo apropriado. Não deveria ser tão difícil como parece, dado que a idéia básica que dominou a economia e a política no século passado desapareceu, claramente, pelo sumidouro da história. O que tínhamos era um modo de pensar as modernas economias industriais – em realidade todas as economias -, em termos de dois opostos mutuamente excludentes: capitalismo ou socialismo.

Conhecemos duas tentativas práticas de realizar ambos sistemas em sua forma pura: por um lado, as economias de planificação estatal, centralizadas, de tipo soviético; por outro, a economia capitalista de livre mercado isenta de qualquer restrição e controle. As primeiras vieram abaixo na década de 1980, e com elas os sistemas políticos comunistas europeus; a segunda está se decompondo diante de nossos olhos na maior crise do capitalismo global desde a década de 1930. Em alguns aspectos, é uma crise de maior envergadura do que aquela, na medida em que a globalização da economia não estava então tão desenvolvida como hoje e a economia planificada da União Soviética não foi afetada. Não conhecemos a gravidade e a duração da atual crise, mas sem dúvida ela vai marcar o final do tipo de capitalismo de livre mercado iniciado com Margareth Thatcher e Ronald Reagan.

A impotência, por conseguinte, ameaça tanto os que acreditam em um capitalismo de mercado, puro e desestatizado, uma espécie de anarquismo burguês, quanto os que crêem em um socialismo planificado e descontaminado da busca por lucros. Ambos estão quebrados. O futuro, como o presente e o passado, pertence às economias mistas nas quais o público e o privado estejam mutuamente vinculados de uma ou outra maneira. Mas como? Este é o problema que está colocado diante de nós hoje, em particular para a gente de esquerda.

Ninguém pensa seriamente em regressar aos sistemas socialistas de tipo soviético, não só por suas deficiências políticas, mas também pela crescente indolência e ineficiência de suas economias, ainda que isso não deva nos levar a subestimar seus impressionantes êxitos sociais e educacionais. Por outro lado, até a implosão do mercado livre global no ano passado, inclusive os partidos social-democratas e moderados de esquerda dos países do capitalismo do Norte e da Australásia estavam comprometidos mais e mais com o êxito do capitalismo de livre mercado.

Efetivamente, desde o momento da queda da URSS até hoje não recordo nenhum partido ou líder que denunciasse o capitalismo como algo inaceitável. E nenhum esteve tão ligado a sua sorte como o New Labour, o novo trabalhismo britânico. Em suas políticas econômicas, tanto Tony Blair como Gordon Brown (este até outubro de 2008) podiam ser qualificados sem nenhum exagero como Thatchers com calças. O mesmo se aplica ao Partido Democrata, nos Estados Unidos.

A idéia básica do novo trabalhismo, desde 1950, era que o socialismo era desnecessário e que se podia confiar no sistema capitalista para fazer florescer e gerar mais riqueza do que em qualquer outro sistema. Tudo o que os socialistas tinham que fazer era garantir uma distribuição eqüitativa. Mas, desde 1970, o acelerado crescimento da globalização dificultou e atingiu fatalmente a base tradicional do Partido Trabalhista britânico e, em realidade, as políticas de ajudas e apoios de qualquer partido social democrata. Muitas pessoas, na década de 1980, consideraram que se o barco do trabalhismo não queria ir a pique, o que era uma possibilidade real, tinha que ser objeto de uma atualização.

Mas não foi. Sob o impacto do que considerou a revitalização econômica thatcherista, o New Labour, a partir de 1997, engoliu inteira a ideologia, ou melhor, a teologia, do fundamentalismo do mercado livre global. O Reino Unido desregulamentou seus mercados, vendeu suas indústrias a quem pagou mais, deixou de fabricar produtos para a exportação (ao contrário do que fizeram Alemanha, França e Suíça) e apostou todo seu dinheiro em sua conversão a centro mundial dos serviços financeiros, tornando-se também um paraíso de bilionários lavadores de dinheiro. Assim, o impacto atual da crise mundial sobre a libra e a economia britânica será provavelmente o mais catastrófico de todas as economias ocidentais e o com a recuperação mais difícil também.

É possível afirmar que tudo isso já são águas passadas. Que somos livres para regressar à economia mista e que a velha caixa de ferramentas trabalhista está aí a nossa disposição – inclusive a nacionalização -, de modo que tudo o que precisamos fazer é utilizar de novo essas ferramentas que o New Labour nunca deixou de usar. No entanto, essa idéia sugere que sabemos o que fazer com as ferramentas. Mas não é assim.

Por um lado, não sabemos como superar a crise atual. Não há ninguém, nem os governos, nem os bancos centrais, nem as instituições financeiras mundiais que saiba o que fazer: todos estão como um cego que tenta sair do labirinto tateando as paredes com todo tipo de bastões na esperança de encontrar o caminho da saída.

Por outro lado, subestimamos o persistente grau de dependência dos governos e dos responsáveis pelas políticas às receitas do livre mercado, que tanto prazer lhes proporcionaram durante décadas. Por acaso se livraram do pressuposto básico de que a empresa privada voltada ao lucro é sempre o melhor e mais eficaz meio de fazer as coisas? Ou de que a organização e a contabilidade empresariais deveriam ser os modelos inclusive da função pública, da educação e da pesquisa? Ou de que o crescente abismo entre os bilionários e o resto da população não é tão importante, uma vez que todos os demais – exceto uma minoria de pobres – estejam um pouquinho melhor? Ou de que o que um país necessita, em qualquer caso, é um máximo de crescimento econômico e de competitividade comercial? Não creio que tenham superado tudo isso.

No entanto, uma política progressista requer algo mais que uma ruptura um pouco maior com os pressupostos econômicos e morais dos últimos 30 anos. Requer um regresso à convicção de que o crescimento econômico e a abundância que comporta são um meio, não um fim. Os fins são os efeitos que têm sobre as vidas, as possibilidades vitais e as expectativas das pessoas.

Tomemos o caso de Londres. É evidente que importa a todos nós que a economia de Londres floresça. Mas a prova de fogo da enorme riqueza gerada em algumas partes da capital não é que tenha contribuído com 20 ou 30% do PIB britânico, mas sim como afetou a vida de milhões de pessoas que ali vivem e trabalham. A que tipo de vida têm direito? Podem se permitir a viver ali? Se não podem, não é nenhuma compensação que Londres seja um paraíso dos muito ricos. Podem conseguir empregos remunerados decentemente ou qualquer tipo de emprego? Se não podem, de que serve jactar-se de ter restaurantes de três estrelas Michelin, com alguns chefs convertidos eles mesmos em estrelas. Podem levar seus filhos à escola? A falta de escolas adequadas não é compensada pelo fato de que as universidades de Londres podem montar uma equipe de futebol com seus professores ganhadores de prêmios Nobel.

A prova de uma política progressista não é privada, mas sim pública. Não importa só o aumento do lucro e do consumo dos particulares, mas sim a ampliação das oportunidades e, como diz Amartya Sen, das capacidades de todos por meio da ação coletiva. Mas isso significa – ou deveria significar – iniciativa pública não baseada na busca de lucro, sequer para redistribuir a acumulação privada. Decisões públicas dirigidas a conseguir melhorias sociais coletivas com as quais todos sairiam ganhando. Esta é a base de uma política progressista, não a maximização do crescimento econômico e da riqueza pessoal.

Em nenhum âmbito isso será mais importante do que na luta contra o maior problema com que nos enfrentamos neste século: a crise do meio ambiente. Seja qual for o logotipo ideológico que adotemos, significará um deslocamento de grande alcance, do livre mercado para a ação pública, uma mudança maior do que a proposta pelo governo britânico. E, levando em conta a gravidade da crise econômica, deveria ser um deslocamento rápido. O tempo não está do nosso lado.

Artigo publicado originalmente no jornal The Guardian.

Tradução do inglês para o espanhol: S. Segui, integrante dos coletivos Tlaxcala, Rebelión e Cubadebate.

Tradução do espanhol para o português: Katarina Peixoto

Sistema de RPG: Compacto

Simplicidade, velocidade de jogo, ênfase à interpretação. Assim é COMPACTO, o meu pequeno sistema genérico para aventuras rápidas onde voce pode por em prática aquela sua idéia maravilhosa que acabou de florar de sua mente doentia de Mestre (com todo o respeito!).

Ele não foi feito para ser realista, apenas jogável. Não há atributos como outros sistemas, mas isto pode ser remediado. Para diferenciar um personagem de outro, temos o que chamo de Propriedade. Voce escolhe as Propriedades assim que cria o personagem. Se for uma aventura com poucos jogadores, um ou dois, cada personagem poderia ter até quatro Propriedades, enquanto que com mais, uns três Propriedades. Eles servem para determinar se um personagem consegue realizar uma atividade, ação numa determinada área. A decisão é do Mestre, mas pode ser negada, se isto afeta a História de forma negativa.

PROPRIEDADES

  • Tecnologia
  • Recursos
  • Combate
  • Poder Paranormal
  • do Local
  • Beleza
  • Resistência
  • Fortitude
  • Furtividade
  • Sobrevivência
  • Esportes
  • Ladino
  • Artista
  • Contatos
  • Cuidados Médicos

O Poder Paranormal é um poder de acordo com o Mestre e as suas idéias de aventura. Pode ser magia, psiquismo, mutantismo, entre outros. Mas genericamente, para aproveitar as regras, eu criei alguns poderes úteis:

  • Regeneração
    O personagem usa uma rodada para recuperar uma Porção de Vida. Não pode se regenerar se foi ferido na mesma rodada.
  • Proteção
    Reduz em uma Classe de Dano o ataque do oponente. Este poder deve ser ativado, usando uma rodada.
  • Super Força
    Aumenta em uma Classe os ataques que usem da força física, como Combate Desarmado, Luta com Armas Brancas. Este poder deve ser ativado, e gasta uma rodada.

Recursos quer representar recursos financeiros, posses. Jogue um dado, e veja o resultado. Este será a quantidade de coisas raras/caras que o Personagem possui. Alguns itens:

  • Colete (Reduz a Classe de Dano Recebido em um nível)
  • Celular
  • Automotor
  • Casa/Apartamento
  • Computador
  • Armas de Fogo

O Combate, aumenta sua Classe de Dano em uma. Indica conhecimento sobre armas, e como usá-las com eficiência.

Esportes indica que o Personagem tem uma grande facilidade em aprender algum esporte. Normalmente se dar bem com várias modalidades. O Personagem ganha iniciativa nas rodadas.

Resistência indica aquelas pessoas difíceis de adoecer, e que resitem melhor às durezas da natureza e do esforço físico. Em termo de regras, o Personagem possui uma porção de vida a mais, ou seja, 5. Em situações onde haja necessidade de resistência física e psicológica, ele sairar-se bem normalmente. O Personagem morre apenas com 6 na Tabela de Morte.

Tecnologia. Há aqueles qeu aprendem rapidamente a utilizar qualquer máquina por simples analogia ao que se conhece, ou através de uma rápida explicação. Sempre estar atrás de conhecer novas tecnologias. É capaz de consertar máquinas e ter uma idéia para que serve uma máquina desconhecida.

Conhecimento do Local. É muito útil em aventuras. Muitas vezes as pistas para a solução de algum mistério podem ser reveladas por alguém que mora ou trabalha em algum lugar. Ou então, o objeto que apenas é vendido em alguma loja. Estas coisas fazem o Personagem útil na medida que conhece os lugares por andar bastante. Aumenta o leque dos tipos de Personagem, como, taxista, office boy, entregador de pizza, jornaleiro, carteiro, policial, bombeiro, entre outros.
Dependendo do histórico do Personagem, pode-se saber quais espécies de lugares ele conhece e assim avaliar o nível de dificuldade nos teste. Um playboy ou uma sociality são capazes de conhecer diversos “points” da alta sociedade como restaurantes, lojas, imobiliárias, decoradores, casas de pessoas públicas, etc.

Beleza. Não dar para negar, mas a beleza faz uma diferença e tanto na sociedade. As pessoas belas conseguem emprego mais facilmente, conhecem pessoas, atraem olhares e manipulam melhor o sexo oposto.

O Artista normalmente é versátil, faz de tudo um pouco. Sabe sobre música, artes pláticas, cinema, escultura, televisão, teatro, literatura e dança. Conhece muitos autores de obras, é capaz de associá-los, criar obras em algumas áreas, e reconhece um bom trabalho artístico.

Furtividade permite ao Personagem atravessar lugares sem se fazer notar. É capaz de esconder-se com facilidade numa multidão, em ambientes escuros; emboscar, espionar, entre tantas outras.

Cuidados Médicos. Indispensável em Aventuras. Capaz de salvar da morte certa Personagens, o médico ou curandeiro é muito bem vindo com companheiro. Esta Propriedade recupera 1 PV ou livra o Personagem da Inconsciência. Oferece a capacidade de reconhecer doenças, remédios, drogas, produtso químicos, ervas e outras coisas. É possível criar venos e outras coisas.

Sobrevivência é a palavra-chave para aqueles que desejam viver muitas aventuras. Numa floresta ou outras regiões, o PJ sabe onde encontrar água, orientar-se com o auxílio dos astros. Reconhece o comestível e o venenoso. Sabe tratar dos animais que caça, faz fogo, constrói proteção contra o sol e a chuva; fabrica armadilhas e armas rudimentares de caça.
Numa cidade, sempre anda com o necessáio para as eventualidades: kit de emergência, lanterna, ferramentas, cartão de crédito, mapas, agenda de telefones, computadores, entre outras coisas. Sempre sabe onde encontrar coisas que precisa para o dia-a-dia, como número de telefone da pizzaria favorita, empresa de gás, energia e abastecimento de água, entre outras coisas. Se possuir um carro, compreende o necessário para tirá-lo do prego, sabe concertar as coisas da casa, como luz, encanamentos, etc.

Existem os famosos Pontos de Vida, aqui chamados de Porções de Vida (PV). São apenas 4 para todos os personagens. Cada ferimento extingue uma Porção. Quando todas se forem, uma tabela (Tabela de Morte) deve ser usada para saber o que realmente acontece com o PJ. Um Personagem ferido recupera uma Porção por hora, ou de acordo com o Mestre. Cuidados Médicos podem recuperar uma Porção de alguém ferido.

TABELA DE ACERTO E DANO

TABELA DE ACERTO E DANO

Classe/Resultado ERRO FERIDO CRÍTICO
A 1 2 3 4 5 6
B 1 2 3 4 5 6
C 1 2 3 4 5 6
D 1 2 3 4 5 6
E 1 2 3 4 5 6
F 1 2 3 4 5 6
G 1 2 3 4 5 6
H 1 2 3 4 5 6
I 1 2 3 4 5 6
J 1 2 3 4 5 6

FORÇA E ARMAS

  • lutar desarmado
CLASSE A
  • ataque com tocha, mordida, pedrada
CLASSE B
  • faca, adaga, flecha
CLASSE C
  • espada, pistola, machado, besta
CLASSE D
  • metralhadora
CLASSE E

DIFICULDADE DOS TESTES:

  • FÁCIL: Sucesso automático para quem tem a Propriedade adequada; (3,4,5,6) para os que não tem.
  • MODERADO: Com Propriedade: (2,3,4,5,6); Sem (4,5,6).
  • MEDIANO: Com Propriedade: (3,4,5,6); Sem (5,6).
  • DIFÍCIL: Com Propriedade: (4,5,6); Sem (6).
  • M. DIFÍCIL: Com Propriedade: (5,6); Sem, é Impossível.

Quando é sua vez de agir, e for atacar alguém, jogue um 1d6. Dependendo da Classe de Dano do Ataque, veja o resultado:
ERRO: Significa que voce errou o ataque.
FERIDO: Apague uma porção.
CRÍTICO: Veja na Tabela de Morte; ou opcionalmente, apague duas porções.

TABELA DE MORTE

1 2 Consciente Sem Movimento
3 4 Inconsciente
5 6 Morto Realmente

A tabela a seguir serve para aqueles que ficaram inconscientes e podem precisar de cuidados médicos.

INCONSCIENTE
[1/2] ==> Não precisa de medicação. Volta a si, com uma porção em algum tempo, ou até ser acordado.
[3/4] ==> Medicação em 1 hora.
[5/6] ==> Medicação em 4 rodadas.

EXPERIÊNCIA

Se voce estiver com vontade de fazer campanhas com COMPACTO então temos a solução. Como o sistema não é para dar dor de cabeça aos Mestres, resolvi não deixar por conta do Mestre a tarefa árdua de dar os Pontos de Experiência. Aqui não há pontos de experiência. No final da Aventura, o Mestre verifica com uma jogada de dado, se o Personagem sobe ou não de Nível. Subir de Nível significa que o Personagem estar mais Experiente e Poderoso. Cada Nível alcançado o Personagem recebe um ponto em ANIMA que é um focus que pode ser usado para várias coisas.

Um personagem recém criado tem Nível 0 e Nenhum Anima. Dependendo do Mestre, os Personagens podem iniciar com um ou mais pontos de Anima.

Um ponto de Anima serve para as seguintes coisas:

  • Reduzir a dificuldade na Avaliação de Propriedade. Recupera no Final da Aventura.
  • Comprar/Pagar com Recursos alguma coisa que será utilizada apenas uma vez. Por exemplo: Pagar a diária de um hotel; Subornar alguém com dinheiro, etc. Recupera no Final da Aventura.
  • Trocar a Morte Imediata (aquela jogada que dar morte) por um Ferimento. Recupera no Final da Aventura.
  • Comprar alguma coisa da lista de recursos. O ponto de Anima é gasto definitivamente.

Exemplo de Personagem

Heitor, o Policial.
Nível: 2
Anima: 1/1
Conhecimentos: Combate, Local, Contatos.
Itens: Pistola (Comprado com um ponto de Anima).
PV: 4