Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dnd5e.documents.macro.rollItem("Манифест Эхо", { event })
- // Получаем ID выбранного токена (рыцаря)
- const controlledTokenId = canvas.tokens.controlled[0]?.id;
- if (!controlledTokenId) {
- ui.notifications.warn("Выберите токен Рыцаря Эха!");
- return;
- }
- // Получаем актера Рыцаря Эха
- const knight = canvas.tokens.controlled[0].actor;
- // Получаем актера Эха
- const echoActor = game.actors.getName("Эхо"); // Замените на правильное имя!
- if (!echoActor) {
- ui.notifications.warn("Не найден актер Эха!");
- return;
- }
- // ПРОВЕРКА НА НАЛИЧИЕ ЭХА НА СЦЕНЕ
- const existingEcho = canvas.tokens.placeables.find(token => token.actor?.id === echoActor.id);
- if (existingEcho) {
- ui.notifications.warn("Эхо уже призвано!");
- return; // Прерываем выполнение макроса, если Эхо уже есть
- }
- // Получаем позицию рыцаря
- const knightToken = canvas.tokens.controlled[0];
- const knightX = knightToken.x;
- const knightY = knightToken.y;
- // Выбираем случайную соседнюю клетку
- const gridSize = canvas.scene.grid.size;
- const offsets = [
- [0, -gridSize], // Вверх
- [gridSize, 0], // Вправо
- [0, gridSize], // Вниз
- [-gridSize, 0], // Влево
- [-gridSize, -gridSize], // Вверх-Влево
- [gridSize, -gridSize], // Вверх-Вправо
- [gridSize, gridSize], // Вниз-Вправо
- [-gridSize, gridSize], // Вниз-Влево
- ];
- const randomOffset = offsets[Math.floor(Math.random() * offsets.length)];
- const echoX = knightX + randomOffset[0];
- const echoY = knightY + randomOffset[1];
- // Создаём токен Эха
- let newEcho = await echoActor.getTokenDocument({
- x: echoX,
- y: echoY,
- hidden: false,
- });
- // Помещаем токен на сцену
- await canvas.scene.createEmbeddedDocuments("Token", [newEcho]);
- ui.notifications.info("Эхо призвано!");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement