Wild Witch Project - Um game que você nunca viu

Neste jogo você precisa ajudar uma bruxa adolescente a salvar seu mundo da Mortífera Bunda Assassina do Espaço Sideral

Escrevendo roteiro e pensando em I.A.


Eu aqui pensando reversamente: o personagem, a ação e oque precisaria em forma de código.
Lembra um pouco aquela dos “ditos populares em php”. Mas em fim.

Sou Aracne, não lembro qual nome usei no passado antes de ser esta forma que me conheço agora. Não importa mais.

class CAracne (Char)
CAracne.passado = nil
CAracne.nome = “Aracne”
CAracne.idade = “?”

Aracne = CAracne.new()

Escuro, húmido e gostoso. O sol lá fora não me incomoda, estou feliz na sombra. Ouço os pássaros e os insetos da floresta. Apenas a harmonia escura a sombra. O cheiro do musgo, da casca da árvore e da flor, o cheiro do que me serviu de alimento.... a harmonia me afasta a solidão.

Aracne:attachSensor( Vista:new() )
Aracne:attachSensor( Audio:new() )
Aracne:attachSensor( Olfato:new() )
-- regula parãmetros para o personagem
Aracne.olfato.dist = 5
Aracne.audio.dist = 30 -- 30 metros

-- procura sombra, as áreas de sombra já estão demarcadas
-- no terreno. Escrita como função genérica para ser reaproveitada
-- por outros personagens.
function Char:procuraSombra( )
    local pos = self.phys.position
    local initialDist = 50
    sombra = nil
    for el in mapa:getElementByGroup(“sombra”)
        if el:dist( self ) < initialDist then
            initialDist = el:dist(self)
            sombra = el
        end
    end
    return sombra
end

Mas... que som é este? Se esgueira, é pesado, não é rato, nem coelho. Alguém talves? Comida para mais meses ou um sonho que me despertou?
É cheiro de homem... não tem algo a mais nele me incomodando. É cheiro de fêmea. Humpf, apenas comida.
Está chegando perto,  mais perto, quase perto, perto, AGORA!

function CAracne:main()
    if self.repouso then
        if self.audio:proximidade() or self.visao:proximidade() or self.olfato:proximidade() then
            self.epouso = false
        end
    else
        if self.primeiroAtaque then
            self.animation.set(“camuflagem”)
            local dist, char = minimo( {self.audio.alvo(), self.visao.alvo(), self.olfato.alvo() } )
            if dist <= self.distanciaDeBote then self.bote( char ) end
        else
            self.cacar()
    end
    self.continueAcao() --executa a ação escolhida ou continua a ação corrente que pode ser uma acao de parado, ou movimento
end