conversation_tavern(); async function talk_as(idx, name, theatre_idx, message, emote, delay=4500) { theatre.functions.activateStagedByID(theatre_idx); theatre._sendTypingEvent(); theatre.setUserTyping(game.user.id, theatre.speakingAs); await new Promise(r => setTimeout(r, 800)); theatre._sendTypingEvent(); theatre.setUserTyping(game.user.id, theatre.speakingAs); theatre.setEmoteForInsertById(emote, "theatre-"+idx); await new Promise(r => setTimeout(r, 700)); ChatMessage.create({ user: game.user.id, speaker: ChatMessage.getSpeaker({token: canvas.tokens.objects.getChildByName(name)}), content: message }); await new Promise(r => setTimeout(r, delay)); theatre.setEmoteForInsertById("none", "theatre-"+idx); } async function conversation_tavern() { // make sure we are in the correct scene. if(canvas.scene.name != "village") { return; } // Remove any staged player/npc Object.keys(theatre.stage).forEach(a => theatre._removeFromStage(a)); const name_laila = "Laila Joo"; const name_voggusti = "Voggusti Waaland"; const name_valeros = "Valeros"; const name_merisiel = "Merisiel"; const name_ezren = "Ezren"; let chat_ids = []; // get logged in players. let players = await game.users; players = players.filter(user => !user.isGM); players.forEach(p => chat_ids.push(p.character._id)); // get npc's to stage. let idx_laila = canvas.tokens.objects.getChildByName(name_laila).actor.id; // id 0 let idx_voggusti = canvas.tokens.objects.getChildByName(name_voggusti).actor.id; // id 1 let idx_merisiel = canvas.tokens.objects.getChildByName(name_merisiel).actor.id; // id 2 let idx_valeros = canvas.tokens.objects.getChildByName(name_valeros).actor.id; // id 3 let idx_ezren = canvas.tokens.objects.getChildByName(name_ezren).actor.id; // id 4 let participants = [idx_laila, idx_voggusti, idx_merisiel, idx_valeros, idx_ezren]; participants.forEach(p => theatre.activateInsertById(p)); // Valeros talks. await talk_as(idx_valeros, name_valeros, 3, "Who the fuck are these guys? do you know them Marisiel?", "none"); // Remove Valeros from stage. theatre.functions.removeFromStagedByID(3); await new Promise(r => setTimeout(r, 1000)); // Merisiel talks. await talk_as(idx_merisiel, name_merisiel, 2, "Never seen them before.. you think they got some good loot to steal", "innocent"); // Voggusti talks. await talk_as(idx_voggusti, name_voggusti, 1, "Heeey Laaaaaila! can you bring me a ale daaaarling", "carefree", 1500); // Remove Merisiel from stage. theatre.functions.removeFromStagedByID(2); await new Promise(r => setTimeout(r, 2000)); // Laila talks. await talk_as(idx_laila, name_laila, 0, "Mr. Vuggosti you are drunk af, please just go home you are scarring the customers!", "worried"); // Voggusti gets frustrated. theatre.setEmoteForInsertById("frustrated", "theatre-"+idx_voggusti); // remove laila from stage. theatre.functions.removeFromStagedByID(0); // Ezren talks await talk_as(idx_ezren, name_ezren, 4, "Calm down Merisiel please dont steal from these young adventurers. Remember when we started doing adventures in Otari.", "none"); // remove Voggusti from stage. theatre.functions.removeFromStagedByID(1); // Merisiel talks await talk_as(idx_merisiel, name_merisiel, 2, "Yea of course i remember, our first mission when i stole that silver plate! it was beutiful.", "none"); // Ezren talks await talk_as(idx_ezren, name_ezren, 4, "yea these adventurers are gonna have as fun as we did, dont ruin it for them also.. Be nice", "none"); // Merisiel talks await talk_as(idx_merisiel, name_merisiel, 2, "you are so boring you damn sober tea drinking wizard.. it was just a joke..", "smug"); // remove Merisiel and ezren from stage theatre.functions.removeFromStagedByID(4); theatre.functions.removeFromStagedByID(2); // Valeros talks await talk_as(idx_valeros, name_valeros, 3, "Can everyone just shut up and be happy? im trying to enjoy my beer here..", "none"); // remove valeros from stage. theatre.functions.removeFromStagedByID(3); // voggusti talks. await talk_as(idx_voggusti, name_voggusti, 1, "You here that Laila, listen to the old tea geezer, be nice and bring me a beer", "carefree"); // laila talks. await talk_as(idx_laila, name_laila, 0, "well if everyone will be happy and enjoy my beer i could give you a beer voggusti.. but after this one you will leave.", "none"); /* * take everyone off stage */ await new Promise(r => setTimeout(r, 5000)); // remove npc's from stage await theatre._removeFromStage("theatre-"+idx_laila); await theatre._removeFromStage("theatre-"+idx_voggusti); await theatre._removeFromStage("theatre-"+idx_merisiel); await theatre._removeFromStage("theatre-"+idx_valeros); await theatre._removeFromStage("theatre-"+idx_ezren); }