Sob a luz do luar


Pra dificultar um pouco mais a vida do jogador, vamos assumir que a solução para quebrar a maldição do lobisomem esteja descrita no pergaminho. Mas ele só pode ser lido sob a luz do luar, então, teremos dois shapes que retraram este objeto:

No primeiro momento que o jogador olhar para a lua e estando de posse do pergaminho, então ele mostra o seu conteúdo. A primeira modificação acontece no script lua.scp:

//=== Situação atual da lua ======================
  setmode= 4,900,420
  cleartela
  cleartxt

  ifobj# pergaminho,jog,Cont
  setshpobj= pergaminho,perga2.png

:Cont
  gosub comum
  shape= lua0.png,100,0,700,220
  //montar o nome do arquivo que mostra a lua
  reg= 1,5
  reg= 0,lua
  reg$ 0,#1
  reg$ 0,.png
  shape= #0,190,30,130,130
  'O dia fatídico está chegando...'
  printx $,100,230,700,190
  shape= tic.gif,100,390,20,30
  shape= ret.gif,130,390,140,30,xvlt

Note que a instrução ifobj# verifica se o campo local do pergaminho é diferente de "jog" ou seja, produz o salto para Cont se o pergaminho não estiver com o jogador. Caso contrário ele muda o nome do shape do pergamino para perga2.png.

//=== Objeto: pergaminho =================
  setmode= 4,900,420
  cortxt= FF0000
  cleartela
  cleartxt
  gosub comum

  getshpobj= 0,pergaminho
  shape= #0,100,0,358,358,

  'Pergaminho
  §§Antigo pargaminho com sinais de que...

O destaque aqui é que não usaremos mais diretamente o nome do shape mas obteremos o nome em vigor do shape, diretamente do campo shape do objeto. Colocamos ele no registrador zero, temporariamente, e em .seguida usados esse conteúdo para colocar a imagem na tela.

Este esquema serve para qualquer objeto que sofra variações na sua imagem, do tipo mala aberta / mala fechada; lanterna acesa / lanterna apagada; nível de água dentro da garrafa; vaso inteiro / vaso quebrado, etc.