void SkinnedHints::AddHint( Widget *hint_owner, const Hint &h ) { SkinMixer::Mix( (int)hint_owner, CaptionSkin( h._text, _fonts.GetFont(h._font_no) ), h._alignment ); RemoveHint(hint_owner); _hints.Insert( hint_owner, h); }
bool Scene_Inca_Passage::ItemUsed(const char *szItemName, const char *szObjectName) { // Le joueur utilise la statuette if (strcmp(szItemName, "inv_inca_statuette") == 0) { if (strcmp(szObjectName, "inca_passage_blocks_ceiling") == 0) { // Ouverture de la vignette ESoundBank::getSound("success")->playSample(); _lpSceneDirector->GoToVignette("vignette_inca_statuette", szObjectName, true); return true; } } // Le joueur utilise un effet de la statuette if (strcmp(szItemName, "statuette_effect_earthquake") == 0) { if (strcmp(szObjectName, "inca_passage_blocks_ceiling") == 0) { // Lancement de l'effet _bEffect = true; _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_CINEMATIC, true); _lpSceneDirector->getSequencer()->PlaySound(NULL, "rockfall"); _lpSceneDirector->getSequencer()->EarthQuake(NULL, true); _lpSceneDirector->getSequencer()->Wait(NULL, 4000); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "inca_passage_blocks_ceiling", "inca_passage_blocks_ground"); _lpSceneDirector->getSequencer()->EarthQuake(NULL, false); ResolveTask("task_inca_fillhole"); RemoveHint("inca","4artefacts","cross"); SetVisible("inca_final_zone", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_CINEMATIC, false); return true; } } char *effectprefix = "statuette_effect_"; if (strncmp(szItemName, effectprefix,strlen(effectprefix)) == 0) { _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("INCA_MAIN_YUMANCO_STATUETTE_NOEFFECT"), "", true, false); return true; } // Le joueur recompose la fresque3 if (strcmp(szObjectName, "inca_stairsfresco3_zone") == 0) { if (strcmp(szItemName, "inv_inca_cartouche1") == 0) { ESoundBank::getSound("success")->playSample(); _lpSceneDirector->getSequencer()->ShowImage(NULL, "inca_cartouche1_wall", true, true); // Mini jeu EMiniJeuBase *lpMiniJeu = new EMiniJeuPhotoComp("mg_photocomp_fresque1.png","mg_photocomp_bg_f1.jpg",79,129,"mg_photocomp_artefact_f1.png","mg_photocomp_cartouche_f1.png",458,225); _lpSceneDirector->getSequencer()->MiniGame(NULL, "fresco3", lpMiniJeu); } else { // Ca ne va pas ici _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("INCA_YUMANCO_NOTHERE"), "", true, false); } return true; } // Le joueur recompose la fresque4 if (strcmp(szObjectName, "inca_stairsfresco4_zone") == 0) { if (strcmp(szItemName, "inv_inca_cartouche2") == 0) { if (TaskResolved("task_inca_fillhole")) { ESoundBank::getSound("success")->playSample(); _lpSceneDirector->getSequencer()->ShowImage(NULL, "inca_cartouche1_wall", true, true); // Mini jeu EMiniJeuBase *lpMiniJeu = new EMiniJeuPhotoComp("mg_photocomp_fresque2.png","mg_photocomp_bg_f2.jpg",79,129,"mg_photocomp_artefact_f2.png","mg_photocomp_cartouche_f2.png",462,235); _lpSceneDirector->getSequencer()->MiniGame(NULL, "fresco4", lpMiniJeu); } else { _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("INCA_YUMANCO_HOLE"), "", true, false); } } else { // Ca ne va pas ici _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("INCA_YUMANCO_NOTHERE"), "", true, false); } return true; } return false; }
bool SceneBasement::ItemUsed(const char *szItemName, const char *szObjectName) { // Le joueur donne quelque chose au fantôme debout if (strcmp(szObjectName, "basement_ghostup") == 0) { int x,y; bool bGiven = false; GetObjectPosition("basement_ghostup", x, y); if (strcmp(szItemName, "inv_house_basement_paper") == 0) { ResolveTask("task_house_basement_givepaper"); RemoveHint("house","helpnatsumi","nextpaper"); // On peut maintenant retirer l'objet de l'inventaire _lpSceneDirector->DropItem("inv_house_basement_paper"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "success"); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("HOUSE_BASEMENT_NATSUMI_THANKYOU"), "", true, false, _lpGhostVoice); if (!TaskResolved("task_house_basement_givecharcoal")) { AddHint("house","helpnatsumi","nextcharcoal"); } bGiven = true; } else if (strcmp(szItemName, "inv_house_basement_grid_charcoal") == 0) { ResolveTask("task_house_basement_givecharcoal"); RemoveHint("house","helpnatsumi","nextcharcoal"); // On peut maintenant retirer l'objet de l'inventaire _lpSceneDirector->DropItem("inv_house_basement_grid_charcoal"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "success"); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("HOUSE_BASEMENT_NATSUMI_THANKYOU"), "", true, false, _lpGhostVoice); bGiven = true; } else { _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("HOUSE_BASEMENT_NATSUMI_IDONTNEED"), "", true, false, _lpGhostVoice); } // On teste si on a donné les 2 objets attendus par le fantôme if (bGiven) { if (TaskResolved("task_house_basement_givepaper") && TaskResolved("task_house_basement_givecharcoal")) { _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_DIALOG, true); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", false); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostup",false); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostdrawing1",true); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing1", "basement_ghostdrawing2"); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing2", "basement_ghostdrawing1"); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing1", "basement_ghostdrawing2"); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing2", "basement_ghostdrawing1"); _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_SHEDRAW"), "", false, true); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing1", "basement_ghostdrawing2"); _lpSceneDirector->getSequencer()->SwitchImage(NULL, "basement_ghostdrawing2", "basement_ghostdrawing1"); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostdrawing1",false); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_hidden", true); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghosthidden",true); _lpSceneDirector->getSequencer()->PlaySound(NULL, "success"); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_sketch",true); _lpSceneDirector->getSequencer()->Animation(NULL, "sketchanimp2p", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_DIALOG, false); _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_SHEDRAW2"), "", true); ResolveTask("task_house_basement_natsumineed"); AddTask("task_house_basement_bonzai"); RemoveHint("house","helpnatsumi","what"); AddObjective("house","bonzai"); AddHint("house","bonzai","how"); AddHint("house","bonzai","grip"); } } return true; } // Le joueur donne quelque chose au fantôme caché if (strcmp(szObjectName, "basement_ghosthidden") == 0) { _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostappear"); int x,y; GetObjectPosition("basement_ghostup", x, y); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghosthidden",false); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_hidden", false); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", true); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostup",true); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("HOUSE_BASEMENT_NATSUMI_DOYOUWANT2GIVE"), "", false, false, _lpGhostVoice); _lpTimerGhost->startCounter(0.0f, 1.0f, 0, 10000, K_COUNTER_LINEAR); return true; } // Le joueur utilise l'ampoule sur le bulbe cassé if ( strcmp(szItemName, "inv_house_basement_bulb") == 0 ) { if (strcmp(szObjectName, "bulbbroken") == 0) { _lpSceneDirector->getSequencer()->VoiceOver(NULL, KStr("HOUSE_BASEMENT_ASHLEY_IMPOBULB"),""); return true; } } // Le joueur utilise le torchon sur le bulbe cassé if ( strcmp(szItemName, "inv_house_basement_rag") == 0 ) { if (strcmp(szObjectName, "bulbbroken") == 0) { ESoundBank::getSound("success")->playSample(); // On peut maintenant retirer l'objet de l'inventaire _lpSceneDirector->DropItem("inv_house_basement_rag"); // On enlève la douille cassée SetVisible("bulbbroken", false); SetVisible("nobulb", true); // Tache résolue : enlever le bulbe brisé ResolveTask("task_house_basement_removebulb"); return true; } } // Le joueur utilise l'ampoule neuve sur la douille vide if ( strcmp(szItemName, "inv_house_basement_bulb") == 0 ) { if (strcmp(szObjectName, "nobulb") == 0) { ESoundBank::getSound("success")->playSample(); // On peut maintenant retirer l'objet de l'inventaire _lpSceneDirector->DropItem("inv_house_basement_bulb"); // On met l'ampoule SetVisible("bulboff", true); SetVisible("nobulb", false); // Tache résolue : enlever le bulbe brisé ResolveTask("task_house_basement_changebulb"); return true; } } // Le joueur utilise le marteau sur le vase if ( strcmp(szItemName, "inv_house_basement_hammer") == 0 ) { if (strcmp(szObjectName, "basement_vase") == 0) { ESoundBank::getSound("success")->playSample(); // On peut maintenant retirer l'objet de l'inventaire _lpSceneDirector->DropItem("inv_house_basement_hammer"); SetVisible("basement_vase", false); SetVisible("basement_vasebroken", true); SetVisible("basement_paper", true); _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_VASEBROKEN_INFO"), "", true); // Tache résolue ResolveTask("task_house_basement_brokevase"); return true; } } // Le joueur utilise la pince cassée sur le bonzai if ( strcmp(szItemName, "inv_house_basement_gripbroken") == 0 ) { _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_CANNOTWRIST"), "", true); } // Le joueur utilise la pince sur le bonzai if ( strcmp(szItemName, "inv_house_basement_grip") == 0 ) { // On doit avoir le modèle pour faire le mini jeu ! if (_lpSceneDirector->getInventory()->getItemFromInventory("inv_house_basement_sketch")) { if (strcmp(szObjectName, "basement_bonzai") == 0) { EMiniJeuBase *lpMiniJeu = new EMinijeuBonzai(); _lpSceneDirector->GoToMiniGame("bonzai", lpMiniJeu); return true; } } else { _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_INEEDMODEL"), "", true); return true; } } return false; }
bool Scene_Hell_Vale::ObjectClicked(const char *szObjectName, float x, float y) { // Le joueur pioche dans les âmes if (strcmp(szObjectName, "hell_vale_hands_zone") == 0) { // Il y a déjà une âme if (isVisible("hell_vale_soul_1") || isVisible("hell_vale_soul_2") || isVisible("hell_vale_soul_3") ) { _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_ENOUGHSOUL"), "", true, false); return true; } else if (isVisible("hell_vale_soul_richard")) { _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_ENDSOUL"), "", true, false); return true; } // On pioche une âme else if (TaskResolved("task_hell_foundrichard")) { _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_ENDSOUL"), "", true, false); } else if (TaskResolved("task_hell_savesoul_3")) { RemoveHint("hell","escape","soul"); ResolveTask("task_hell_meetsoul_richard"); AddTask("task_hell_reassureseth"); StartAnimation("soul4anim"); StartAnimation("soul4rot"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostcreep"); _lpSceneDirector->getSequencer()->ShowImage(NULL, "hell_vale_soul_richard", true); SoulRequest(4); } else if (TaskResolved("task_hell_savesoul_2")) { ResolveTask("task_hell_meetsoul_3"); AddTask("task_hell_savesoul_3"); StartAnimation("soul3anim"); StartAnimation("soul3rot"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostcreep"); _lpSceneDirector->getSequencer()->ShowImage(NULL, "hell_vale_soul_3", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_DIALOG, true); _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_NEWSOUL"), "", false, true); SoulRequest(3); } else if (TaskResolved("task_hell_savesoul_1")) { ResolveTask("task_hell_meetsoul_2"); AddTask("task_hell_savesoul_2"); StartAnimation("soul2anim"); StartAnimation("soul3rot"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostcreep"); _lpSceneDirector->getSequencer()->ShowImage(NULL, "hell_vale_soul_2", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_DIALOG, true); _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_NEWSOUL"), "", false, true); SoulRequest(2); } else { ResolveTask("task_hell_meetsoul_1"); AddTask("task_hell_savesoul_1"); StartAnimation("soul1anim"); StartAnimation("soul1rot"); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostcreep"); _lpSceneDirector->getSequencer()->ShowImage(NULL, "hell_vale_soul_1", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_DIALOG, true); _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_NEWSOUL"), "", false, true); SoulRequest(1); } } // Clic sur une âme : rappel if (strcmp(szObjectName, "hell_vale_soul_1") == 0) { SoulRequest(1); } else if (strcmp(szObjectName, "hell_vale_soul_2") == 0) { SoulRequest(2); } else if (strcmp(szObjectName, "hell_vale_soul_3") == 0) { SoulRequest(3); } else if (strcmp(szObjectName, "hell_vale_soul_richard") == 0) { _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_ENDSOUL"), "", true, false); } // Objets à ramasser if (strcmp(szObjectName, "hell_item_heart") == 0) { PickupSimple(szObjectName, "inv_hell_item_heart"); return true; } if (strcmp(szObjectName, "hell_item_eyeball") == 0) { _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HELL_ASHLEY_EYEBALL"), "", true, false); return true; } if (strcmp(szObjectName, "hell_item_butterfly") == 0) { PickupSimple(szObjectName, "inv_hell_item_butterfly"); return true; } if (strcmp(szObjectName, "hell_sling_stick") == 0) { PickupMultiple(szObjectName, "inv_hell_sling_stick",-1); return true; } if ( strncmp(szObjectName, "hell_item_cane[", strlen("hell_item_cane[")) == 0 ) { PickupMultiple(szObjectName, "inv_hell_item_cane_part", 3); } return false; }
void SceneBasement::Init() { StartAnimation("basement_ghostup_anim"); SetVisible("basement_ghostup", false, true); SetupItem("envelope_basement"); // 1ère visite if (!TaskResolved("task_house_basementvisit")) { ResolveTask("task_house_basementvisit"); AddObjective("house","basementlight"); AddHint("house","basementlight","how"); RemoveHint("house","helpnatsumi","where"); AddHint("house","helpnatsumi","what"); AddHint("house","helpnatsumi","nextpaper"); } // Lumière éteinte if (!TaskResolved("task_house_basement_light")) { AddTask("task_house_basement_light"); SetVisible("darkness", true); // Ampoule non réparée if (TaskResolved("task_house_basement_changebulb")) { SetVisible("bulboff", true); } else { // Bulbe cassé retiré ? if (TaskResolved("task_house_basement_removebulb")) { SetVisible("bulbbroken", false); SetVisible("nobulb", true); }else { SetVisible("bulbbroken", true); } } } else { SetVisible("darkness", false); SetVisible("lightning", true); SetVisible("bulboff", false, true); SetVisible("bulbon", true, true); } if (TaskResolved("task_japan_universeresolved")) { SetVisible("basement_ghosthidden", false, true); SetupItem("basement_rope"); if (isVisible("basement_rope")) { StartEmitter("flake_rope"); } } // La clé SetVisible("basement_screwdriver", TestGlobal("basement_screwdriver") == false); // La pince SetVisible("basement_grip", TestGlobal("basement_grip") == false); // Le bonzaï if (TaskResolved("task_house_basement_bonzai")) { SetVisible("basement_bonzairesolved", true, true); } else { SetVisible("basement_bonzai", true, true); } // La grille if (TaskResolved("task_house_basement_opengrid")) { SetVisible("basement_gridopen", true); } else { SetVisible("basement_gridclosed", true); } // Le charbon if (!TaskResolved("task_house_basement_reversecoal")) { SetVisible("basement_coalbucketup", true, true); } else { SetVisible("basement_coalbucketdown", true, true); } // Le vase if (!TaskResolved("task_house_basement_brokevase")) { SetVisible("basement_vase", true, true); } else { SetVisible("basement_vasebroken", true, true); // Le papier SetVisible("basement_paper", TestGlobal("basement_paper") == false); } // La boite à outils if (!TaskResolved("task_house_basement_opentoolbox")) { SetVisible("basement_toolboxclosed", true, true); } else { SetVisible("basement_toolboxopen", true, true); // Le marteau SetVisible("basement_hammer", TestGlobal("basement_hammer") == false); } // Le fantôme if (!TaskResolved("task_house_basement_light")) { int x,y; GetObjectPosition("basement_ghostup", x, y); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", true); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostcreep"); _lpSceneDirector->getSequencer()->Wait(NULL, 2500); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostappear"); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostup",true); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("HOUSE_BASEMENT_NATSUMI_LETME"), "", false, false, _lpGhostVoice); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostup",false); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghosthidden",true); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", false); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_hidden", true); } else { if (!TaskResolved("task_japan_universeresolved")) { _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_hidden", true); _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghosthidden",true); } } // Le croquis if (TaskResolved("task_house_basement_givepaper") && TaskResolved("task_house_basement_givecharcoal")) { SetVisible("basement_sketch", TestGlobal("basement_sketch") == false); } // On revient de l'univers if (getAdditionalName() == "backfrombeyond") { int x,y; x = 1024/2; y = 768/2; SetVisible("black", true, true); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", true); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_CINEMATIC, true); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("JAPAN_NATSUMI_HOUSEEPILOG1"), "", false, false, _lpGhostVoice); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("JAPAN_NATSUMI_HOUSEEPILOG2"), "", false, false, _lpGhostVoice); _lpSceneDirector->getSequencer()->Talk(NULL, x, y, KStr("JAPAN_NATSUMI_HOUSEEPILOG3"), "", false, false, _lpGhostVoice); _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostgone"); _lpSceneDirector->getSequencer()->GotoVideo(NULL, "videos/reveil.ogv","frombeyond"); SetupItem("basement_rope"); StartEmitter("flake_rope"); _lpSceneDirector->getSequencer()->ShowImage(NULL, "black", false); _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", false); _lpSceneDirector->getSequencer()->Wait(NULL, 2000); _lpSceneDirector->getSequencer()->NarrationMode(NULL, SEQUENCE_NARRATION_CINEMATIC, false); ResolveTask("task_freeghost_done_japan"); AddObjective("house","freemurray"); AddHint("house","freemurray","where"); _lpSceneDirector->getDiaryPtr()->beginCreatePage(); _lpSceneDirector->getDiaryPtr()->addImageToPage("diary_basement2.png"); _lpSceneDirector->getDiaryPtr()->addStringToPage("DIARY_BASEMENT2", FONT_DIARY_1, 0, 0); _lpSceneDirector->getDiaryPtr()->endCreatePage(); return; } // Allumage if (getAdditionalName() == "light") { // On provoque l'apparition de Natsumi ObjectClicked("basement_ghosthidden", 0, 0); _lpSceneDirector->getDiaryPtr()->beginCreatePage(); _lpSceneDirector->getDiaryPtr()->addImageToPage("diary_basement1.png"); _lpSceneDirector->getDiaryPtr()->addStringToPage("DIARY_BASEMENT1", FONT_DIARY_1, 0, 0); _lpSceneDirector->getDiaryPtr()->endCreatePage(); } if (getAdditionalName() == "completed") { BasementGoforUniverse(); return; } // On force le passage à l'univers, en cas de plantage/quit prématuré entre la scène et l'univers if (TaskResolved("task_japan_prologcompleted") && !TaskResolved("task_japan_universeresolved")) { BasementGoforUniverse(); return; } // On a tout terminé if ( TaskResolved("task_japan_universeresolved") && TestGlobal("basement_rope")) { _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("GLOBAL_ASHLEY_FINISHED"), "", true); return; } }