Advertisement
dtorkin

Untitled

Feb 21st, 2025 (edited)
7
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. dnd5e.documents.macro.rollItem("Манифест Эхо", { event })
  2.  
  3. // Получаем ID выбранного токена (рыцаря)
  4. const controlledTokenId = canvas.tokens.controlled[0]?.id;
  5.  
  6. if (!controlledTokenId) {
  7. ui.notifications.warn("Выберите токен Рыцаря Эха!");
  8. return;
  9. }
  10.  
  11. // Получаем актера Рыцаря Эха
  12. const knight = canvas.tokens.controlled[0].actor;
  13.  
  14. // Получаем актера Эха
  15. const echoActor = game.actors.getName("Эхо"); // Замените на правильное имя!
  16.  
  17. if (!echoActor) {
  18. ui.notifications.warn("Не найден актер Эха!");
  19. return;
  20. }
  21.  
  22. // ПРОВЕРКА НА НАЛИЧИЕ ЭХА НА СЦЕНЕ
  23. const existingEcho = canvas.tokens.placeables.find(token => token.actor?.id === echoActor.id);
  24.  
  25. if (existingEcho) {
  26. ui.notifications.warn("Эхо уже призвано!");
  27. return; // Прерываем выполнение макроса, если Эхо уже есть
  28. }
  29.  
  30. // Получаем позицию рыцаря
  31. const knightToken = canvas.tokens.controlled[0];
  32. const knightX = knightToken.x;
  33. const knightY = knightToken.y;
  34.  
  35. // Выбираем случайную соседнюю клетку
  36. const gridSize = canvas.scene.grid.size;
  37. const offsets = [
  38. [0, -gridSize], // Вверх
  39. [gridSize, 0], // Вправо
  40. [0, gridSize], // Вниз
  41. [-gridSize, 0], // Влево
  42. [-gridSize, -gridSize], // Вверх-Влево
  43. [gridSize, -gridSize], // Вверх-Вправо
  44. [gridSize, gridSize], // Вниз-Вправо
  45. [-gridSize, gridSize], // Вниз-Влево
  46. ];
  47. const randomOffset = offsets[Math.floor(Math.random() * offsets.length)];
  48. const echoX = knightX + randomOffset[0];
  49. const echoY = knightY + randomOffset[1];
  50.  
  51. // Создаём токен Эха
  52. let newEcho = await echoActor.getTokenDocument({
  53. x: echoX,
  54. y: echoY,
  55. hidden: false,
  56. });
  57.  
  58. // Помещаем токен на сцену
  59. await canvas.scene.createEmbeddedDocuments("Token", [newEcho]);
  60. ui.notifications.info("Эхо призвано!");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement