Seguinte, eu faria dessa maneira:
Primeiro colocaria a imagem para ser carregada no Boot, assim não correria o risco de, quando eu precisar dela, ela ter de ser carregada ainda e muito provavelmente não aparecer da primeira vez que eu a chame. Para isso, precisaria de um alias no create da Scene_Boot. Eu recomendaria criar uma função à parte para carregar as imagens customizadas, mas como é uma só, acho que não faz mal por no create mesmo, como está abaixo.
Código:
var Alt_Scene_Boot_create = Scene_Boot.prototype.create;
Scene_Boot.prototype.create = function() {
Alt_Scene_Boot_create.call(this);
ImageManager.loadPicture("Imagem");
};
Então eu iria aproveitar a função da Scene_Map que cria os objetos de tela, como a janela de nome do mapa e a janela de mensagem, para mandar ela desenhar a imagem também. Aí entra outro alias.
Código:
var Alt_Scene_Map_createDisplayObjects = Scene_Map.prototype.createDisplayObjects;
Scene_Map.prototype.createDisplayObjects = function() {
Alt_Scene_Map_createDisplayObjects.call(this);
this.image = new Sprite(ImageManager.loadPicture("Imagem"));
this.addChild(this.image);
};
Agora, criaria uma função que, recebe a coordenada x do clique, a y, a imagem, a largura da imagem e a altura dela também, para verificar e retornar se o clique fora executado sobre a imagem ou não.
Código:
Scene_Map.prototype.clickOverImageVerify = function(clickX, clickY, picture, imageWidth, imageHeight) {
var pictureWidth = picture.x + imageWidth;
var pictureHeight = picture.y + imageHeight;
if (clickX >= picture.x && clickX <= pictureWidth && clickY >= picture.y && clickY <= pictureHeight) {
return true;
} else {
return false;
};
};
Feita a função, editaria o update da Scene_Map para tirar a possibilidade de, ao clicar, verificar se o clique foi sobre a imagem. Se não, o código executaria o que faria normalmente. Para essa verificação, antes verificaria se houve um clique, e em sequência, se o clique foi sobre a imagem, usando a função que criei antes.
OBS.: Os valores 100 e 120 são, respectivamente, a altura e a largura fictícios da imagem fictícia.
Código:
Scene_Map.prototype.update = function() {
if (TouchInput.isTriggered()) {
if (this.clickOverImageVerify(TouchInput.x, TouchInput.y, this.image, 100, 120)) {
console.log("Colocar o que fazer aqui");
} else {
this.updateDestination();
};
};
this.updateMainMultiply();
if (this.isSceneChangeOk()) {
this.updateScene();
} else if (SceneManager.isNextScene(Scene_Battle)) {
this.updateEncounterEffect();
}
this.updateWaitCount();
Scene_Base.prototype.update.call(this);
};
Não testei aqui, mas creio que funcionaria. Talvez possa ter algo errado na sintaxe, então é bom dar uma conferida.