Uma presença sinistra


Tudo começou com um ataque e consequentemente a mordida de um lobo sinistro, quando o personagem do jogo, vulgo o jogador, caminhava pela mata que tem perto da cidade. Embora não tenha sido mortal e o jogador tenha conseguido escapar, o lobo continua por perto, rondando os incautos que se aventuram naquela floresta, afinal ele é o lobo alfa.

Podemos concluir portanto que até o momento da transformação total, o jogador não é páreo para o alfa e um encontro com ele pode ser catastrófico. Eu sei disso, você sabe disso, o jogador sabe disso e até o lobo sabe disso. A gente só não sabe onde o lobo estará.

Mas antes de projetar essa presença sinistra no jogo, vamos dar ao jogador alguma esperança de se safar desse encontro. Sabemos que uma bala de prata disparada contra o coração de um lobisomem mata a fera. Mas hoje é proibido ter armas então vamos trocar o revólver por uma faca, afinal, coração de lobisomem não distingue entre uma bala de prata e uma faca de prata. A faca só exige um pouco mais de coragem para chegar perto o suficiente da fera.

Depois de criar o objeto faca, iremos introduzí-lo no jogo no terceiro dia, no script intro.scp:

//=== Introdução e apresentação do jogo ===========
  ...
:Dia3
  shape= aga.gif,100,6,18,19
  '~~oje é o terceiro dia e ainda sinto dores pelo
  corpo todo, principalmente onde ocorreu a
  mordida. Tenho andado pela mata e o tempo todo
  sinto a presença do lobo alfa, querendo medir
  forças e terminar o serviço que ele começou há
  dois dias atrás.

  §§Só por precaução peguei uma faca de prata, que
  encontrei em casa, nas tralhas do meu falecido
  avô. Talvez ele fosse um caçador de lobos.

  §§Não sei o que acontecerá se o lobo cruzar meu
  caminho a noite mas tenho certeza que tentarei
  matá-lo. Quem sabe assim a maldição desaparece.'
  poeobj= faca,jog
  goto Saida

Uma das formas mais simples de resolver a presença de personagens no jogo é escolher um registrador para guardar o nome da posição onde ele está. Faremos isso usando o registrador 6, que será inicializado no script start.scp da seguinte forma:

  //- Posição atual do lobo
  reg= 6,.

Se o conteúdo do registrador for um ponto, então o lobo não está em lugar algum. E ele vai estar no momento que o jogador "pisar" na mata. Vamos excluir a posição dentro da cabana, dentro do buraco e na cidade, afinal o lobo não vai se arriscar nesses locais desfavoráveis a ele.

Onde tratar do movimento do lobo? Obviamente que será no script comum.scp, como se segue:

//=== Procedimentos comuns a posições ==============
  shape= menu.gif,840,0,45,69,menu
  shape= sair.png,840,350,45,69,final
  dispobj= jog,,10,10,80,400,1
  dispobj= loc,,810,90,80,240,1
  reg- 2,1
  ifreg= 2,0,FimDoDia
  //- coloca o lobo numa posição aleatoria
  reg= 6,.
  reg= 0,1
  reg? 0,15
  if= 0,2,reg=,6,mata1
  if= 0,3,reg=,6,mata2
  if= 0,5,reg=,6,mata3
  if= 0,7,reg=,6,riacho
  if= 0,9,reg=,6,arvore
  if= 0,12,reg=,6,cabana
  ifloc= #6,Cuidado
  return

:Cuidado
  //- o lobo está na mesma posição
  reg= 0,1
  reg? 0,4
  ifreg= 0,2,Atacou
  return
:Atacou
  cortxt= FF00FF
  reg= 5,O lobo sentiu sua presença e desferiu um ataque   mortal.~
  script saida

Novamente usamos o registrador zero para sortear um número entre 1 e 15 e apenas alguns números desse intervalo tem o poder de colocar o lobo numa posição válida. Portanto, essa faixa vai balancear a real presença do lobo - quanto maior ela for, menor a probabilidade dele aparecer.

Uma vez que o lobo foi colocado no jogo, é testado (ifloc=) se ele está na mesma posição que o jogador. Se estiver vamos para a fase seguinte (:Cuidado), que vai testar aleatoriamente se o lobo vai atacar ou não o jogador.

Se ele atacar, já era. O jogador morre e vai pro script saida.scp, já preparado para informar ao jogador que ele foi dessa vida pra outra. Simples assim.