post of the week
Ее близость дурманила, хотя Бардсли, на удивление, почему-то решил поверить, что у него уже выработался иммунитет к девичьему очарованию. Безусловно, даже с возрастом и имея определенный багаж накопленного опыта, он не мог не польститься на красоту, но здесь было нечто совсем иное – трепет, сладкое предвкушение, какой-то неподдельный, позабытый азарт от происходящего.
episode of the week
Здесь делается вжух 🪄

solitude desing test

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » solitude desing test » Тестовый форум » черновики


черновики

Сообщений 1 страница 4 из 4

1

[html]<div class="fp-wrap garden-wrap" id="garden8march"
     data-cols="5" data-rows="4"
     style="--field:url('https://upforme.ru/uploads/001c/ae/e6/3/718743.png');">
  <div class="fp-bg"></div>

  <div class="fp-header">
    <div class="fp-tag">Артефакторика · Урок</div>
    <div class="fp-title">Artificer's Workshop</div>
    <div class="fp-subtitle">собираем артефакт по частям</div>
  </div>

  <div class="fp-body gd-intro">
    <div class="gd-intro__grid">
      <div class="gd-intro__text">
        <p class="gd-lead">Добро пожаловать на <b>урок артефакторики</b> ✨</p>

        <p>На рабочем столе мастерской вы можете собрать артефакт собственными руками — из заготовленных частей. После начала работы предмет появляется на столе, а по клику на ячейку открывается окно с описанием стадии. Параллельно можно работать только над одним артефактом. Сначала выберите предмет, который хотите создать, займите свободную ячейку по порядку (от 1 до 20, нумерация слева направо), затем приносите выполненные задания с подтверждением — амс учтут их в продвижение крафта.</p>

        <div class="gd-steps-label">Как собрать артефакт</div>
        <div class="gd-steps">
          <div class="gd-step">
            <div class="gd-step__num">1</div>
            <div class="gd-step__text">Купить основу за <b>30 галлеонов</b> или пост</div>
          </div>
          <div class="gd-step">
            <div class="gd-step__num">2</div>
            <div class="gd-step__text">Выполнить <b>2 общих</b> + <b>4 специальных</b> задания</div>
          </div>
          <div class="gd-step">
            <div class="gd-step__num">3</div>
            <div class="gd-step__text">Получить готовый <b>артефакт</b> в инвентарь</div>
          </div>
        </div>

        <div class="gd-stages-label">Стадии крафта</div>
        <div class="gd-stages">
          <div class="gd-stage">
            <div class="gd-stage__icon seed-icon s-0"></div>
            <div class="gd-stage__count">0</div>
            <div class="gd-stage__name">пусто</div>
          </div>
          <div class="gd-stage__arrow">→</div>
          <div class="gd-stage">
            <div class="gd-stage__icon seed-icon s-1"></div>
            <div class="gd-stage__count">1–2</div>
            <div class="gd-stage__name">основа</div>
          </div>
          <div class="gd-stage__arrow">→</div>
          <div class="gd-stage">
            <div class="gd-stage__icon gd-stage__icon--bud"></div>
            <div class="gd-stage__count">3–4</div>
            <div class="gd-stage__name">камень</div>
          </div>
          <div class="gd-stage__arrow">→</div>
          <div class="gd-stage">
            <div class="gd-stage__icon gd-stage__icon--bloom"></div>
            <div class="gd-stage__count">5–6</div>
            <div class="gd-stage__name">артефакт</div>
          </div>
        </div>
      </div>

      <div class="gd-intro__img">
        <img src="https://upforme.ru/uploads/001c/95/36/6/589634.jpg" alt="">
      </div>
    </div>
  </div>

  <div class="fp-body gd-seeds">
    <div class="fp-section-dark">Артефакты и задания</div>

    <div class="gd-general">
      <div class="gd-general__label">Общие задания</div>
      <div class="gd-tasks">
        — общее задание про мастерскую и инструменты<br>
        — общее задание на участие во флудовой игре<br>
        — общее задание про артефакторику в посте<br>
        — общее задание про эстетику персонажа<br>
        — общее задание про 10 фактов из мира артефактов<br>
        — общее задание про подборку ассоциаций<br>
        — общее задание про "хочу видеть"<br>
        — общее задание про голосование за пост недели
      </div>
    </div>

    <div class="gd-seeds-grid gd-seeds-grid--5">

      <div class="gd-seed">
        <div class="gd-seed__icon seed-icon s-0"></div>
        <div class="gd-seed__num">Палатка-шатёр</div>
        <div class="gd-tasks">
          — специальное задание про палатку №1<br>
          — специальное задание про походы и уют<br>
          — специальное задание про чары расширения пространства<br>
          — специальное задание про мемы<br>
          — специальное задание на смену аватарки<br>
          — специальное задание в пост<br>
          — специальное задание про 10 фактов
        </div>
      </div>

      <div class="gd-seed">
        <div class="gd-seed__icon seed-icon s-0"></div>
        <div class="gd-seed__num">Магиометр</div>
        <div class="gd-tasks">
          — специальное задание про термометр №1<br>
          — специальное задание про скрытые чары<br>
          — специальное задание про детективные истории<br>
          — специальное задание про подборку книг<br>
          — специальное задание про загадку во флуде<br>
          — специальное задание в пост<br>
          — специальное задание про 10 фактов
        </div>
      </div>

      <div class="gd-seed">
        <div class="gd-seed__icon seed-icon s-0"></div>
        <div class="gd-seed__num">Автометла</div>
        <div class="gd-tasks">
          — специальное задание про метлу №1<br>
          — специальное задание про путешествия<br>
          — специальное задание про квиддич<br>
          — специальное задание про подборку маршрутов<br>
          — специальное задание про мемы с метлами<br>
          — специальное задание в пост<br>
          — специальное задание про 10 фактов
        </div>
      </div>

      <div class="gd-seed">
        <div class="gd-seed__icon seed-icon s-0"></div>
        <div class="gd-seed__num">Чародневник</div>
        <div class="gd-tasks">
          — специальное задание про книгу №1<br>
          — специальное задание про шпионские истории<br>
          — специальное задание про подборку 5 цитат<br>
          — специальное задание во флуде<br>
          — специальное задание про секреты<br>
          — специальное задание в пост<br>
          — специальное задание про 10 фактов
        </div>
      </div>

      <div class="gd-seed">
        <div class="gd-seed__icon seed-icon s-0"></div>
        <div class="gd-seed__num">Волшебночки</div>
        <div class="gd-tasks">
          — специальное задание про очки №1<br>
          — специальное задание про старые языки<br>
          — специальное задание про подборку манускриптов<br>
          — специальное задание про слово на другом языке<br>
          — специальное задание про эстетику учёного<br>
          — специальное задание в пост<br>
          — специальное задание про 10 фактов
        </div>
      </div>
    </div>
  </div>

  <div class="gd-field-wrap">
    <div class="garden-field" aria-label="Рабочий стол">
      <div class="garden-hotgrid"></div>
    </div>
  </div>

  <div class="garden-modal" aria-hidden="true">
    <div class="garden-modal__backdrop" data-close="1"></div>
    <div class="garden-modal__card" role="dialog" aria-modal="true">
      <button class="garden-modal__close" type="button" data-close="1" aria-label="Закрыть">×</button>

      <div class="gm-top">
        <div class="gm-icon"></div>
        <div class="gm-toptext">
          <div class="gm-title"></div>
          <div class="gm-chips">
            <span class="gm-chip gm-owner"></span>
            <span class="gm-chip gm-stage"></span>
            <span class="gm-chip gm-prog"></span>
            <span class="gm-chip gm-type"></span>
          </div>
        </div>
      </div>

      <div class="gm-sep"></div>

      <div class="gm-block">
        <div class="gm-h">Описание</div>
        <div class="gm-desc"></div>
      </div>

      <div class="gm-block">
        <div class="gm-h">Магический эффект</div>
        <div class="gm-effect"></div>
      </div>

      <div class="gm-foot">Нажми × или кликни по фону, чтобы закрыть.</div>
    </div>
  </div>
</div>

<style>
.garden-wrap{display:flex;flex-direction:column}
.gd-intro__grid{display:grid;grid-template-columns:1.6fr 1fr;gap:14px;align-items:stretch}
.gd-intro__text p{font-size:12px;line-height:1.7;color:var(--fp-muted);margin:0 0 10px;text-align:justify}
.gd-intro__text p:last-child{margin-bottom:0}
.gd-intro__text b{color:var(--fp-ink);font-weight:600}
.gd-intro__img{border-radius:calc(var(--fp-r) - 4px);overflow:hidden;border:1px solid var(--fp-stroke);background:rgba(220,223,217,.4);min-height:220px}
.gd-intro__img img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(50%) sepia(20%) hue-rotate(40deg) saturate(80%)}
.gd-lead{font-family:"Playfair Display",serif!important;font-style:italic;font-size:14px!important;color:var(--fp-green)!important;text-align:center!important;margin-bottom:14px!important;padding-bottom:10px;border-bottom:1px solid var(--fp-stroke)}
.gd-steps-label,.gd-stages-label{font-family:"Manrope",sans-serif;font-size:9px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fp-lt);text-align:center;margin:16px 0 10px}
.gd-steps{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.gd-step{display:flex;align-items:center;gap:10px;background:rgba(233,233,233,.7);border:1px solid var(--fp-stroke);border-radius:999px;padding:6px 14px 6px 6px;transition:border-color .25s ease}
.gd-step:hover{border-color:var(--fp-lt)}
.gd-step__num{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#7f8c73,#606C57);color:#f4f4f1;font-family:"Playfair Display",serif;font-style:italic;font-weight:600;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-bottom:2px}
.gd-step__text{font-size:11.5px;line-height:1.4;color:var(--fp-muted)}
.gd-step__text b{color:var(--fp-ink);font-weight:600}
.gd-stages{display:flex;align-items:center;justify-content:center;gap:4px;padding:12px 8px;background:rgba(220,223,217,.45);border:1px solid var(--fp-stroke);border-radius:var(--fp-r)}
.gd-stage{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;min-width:0}
.gd-stage__icon{width:38px;height:38px;border-radius:8px;background-color:rgba(244,244,244,.7);border:1px solid var(--fp-stroke);background-size:contain;background-repeat:no-repeat;background-position:center;filter:drop-shadow(0 4px 6px rgba(0,0,0,.06))}
.gd-stage__icon--bud{background-image:url("https://upforme.ru/uploads/001c/95/36/6/762326.png")}
.gd-stage__icon--bloom{background-image:url("https://upforme.ru/uploads/001c/95/36/6/146866.png")}
.gd-stage__count{font-family:"Playfair Display",serif;font-style:italic;font-weight:600;font-size:13px;color:var(--fp-green);line-height:1}
.gd-stage__name{font-family:"Manrope",sans-serif;font-size:9px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--fp-lt)}
.gd-stage__arrow{font-family:"Manrope",sans-serif;font-size:14px;color:var(--fp-lt);opacity:.6;align-self:flex-start;margin-top:14px;flex-shrink:0}
.gd-seeds .fp-section-dark{margin-top:0;margin-bottom:14px}
.gd-general{position:relative;background:rgba(220,223,217,.55);border:1px solid var(--fp-stroke);border-radius:var(--fp-r);padding:14px 16px 12px;margin:0 0 12px}
.gd-general__label{position:absolute;top:-8px;left:16px;padding:1px 12px;border-radius:999px;background:rgba(233,233,233,.96);border:1px solid var(--fp-stroke);font-family:"Manrope",sans-serif;font-size:9px;text-transform:uppercase;letter-spacing:.14em;color:var(--fp-lt)}
.gd-seeds-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gd-seeds-grid--5{grid-template-columns:repeat(5,1fr)}
.gd-seed{background:rgba(233,233,233,.92);border:1px solid var(--fp-stroke);border-radius:calc(var(--fp-r) - 4px);padding:12px 12px 10px;display:flex;flex-direction:column;gap:8px;transition:border-color .25s ease,transform .2s ease,box-shadow .25s ease}
.gd-seed:hover{border-color:var(--fp-lt);transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.06)}
.gd-seed__icon{width:54px;height:54px;margin:4px auto 2px;border-radius:12px;border:1px solid var(--fp-stroke);background-color:rgba(220,223,217,.5);background-size:contain;background-repeat:no-repeat;background-position:center;filter:drop-shadow(0 6px 8px rgba(0,0,0,.08))}
.gd-seed__num{font-family:"Playfair Display",serif;font-style:italic;font-size:13px;color:var(--fp-green);text-align:center;letter-spacing:.04em}
.gd-seed__desc{font-family:"Manrope",sans-serif;font-size:10px;line-height:1.5;color:var(--fp-muted);text-align:center;padding:0 2px 6px;border-bottom:1px solid var(--fp-stroke);font-style:italic}
.gd-tasks{font-family:"Manrope",sans-serif;font-size:10.5px;line-height:1.6;color:var(--fp-muted)}
.gd-general .gd-tasks{font-size:11.5px;line-height:1.7}
.gd-field-wrap{position:relative;z-index:1;margin:0 20px 20px}
.garden-field{--cols:5;--rows:4; --pad-x: 19%;--pad-top: 16%;--pad-bot: 15%;--gap: 3%;;width:100%;aspect-ratio:3/2;border-radius:calc(var(--fp-r) - 4px);overflow:hidden;border:1px solid var(--fp-stroke);position:relative;background:var(--field) center / cover no-repeat;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.garden-hotgrid{position:absolute;left:var(--pad-x);right:var(--pad-x);top:var(--pad-top);bottom:var(--pad-bot);display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr);gap:var(--gap)}
.gspot{position:relative;border-radius:14px;border:1px solid transparent;background:transparent;cursor:pointer;padding:0;transition:transform .14s ease,background .14s ease,border-color .14s ease}
.gspot:hover{transform:translateY(-1px);border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.05)}
.gspot:focus-visible{outline:none}
.gspot.is-empty{cursor:default}
.gspot.is-empty:hover{transform:none;background:transparent;border-color:transparent}
.gplant{--psize:62%;position:absolute;left:50%;top:50%;transform:translate(-50%,-58%);width:var(--psize);height:var(--psize);background-size:contain;background-repeat:no-repeat;background-position:center;filter:drop-shadow(0 10px 10px rgba(0,0,0,.22));pointer-events:none}
.gplant.s-2,.gplant.s-3{--psize:100%}
.garden-modal{position:fixed;inset:0;display:none;z-index:9999}
.garden-modal.is-open{display:block}
.garden-modal__backdrop{position:absolute;inset:0;background:rgba(11,13,10,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.garden-modal__card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,calc(100vw - 24px));max-height:90vh;overflow-y:auto;background:rgba(233,233,233,.98);border:1px solid var(--fp-stroke);border-radius:var(--fp-r);box-shadow:0 30px 80px rgba(0,0,0,.35);padding:20px}
.garden-modal__close{position:absolute;right:14px;top:14px;width:30px;height:30px;border-radius:50%;border:1px solid var(--fp-stroke);background:rgba(244,244,244,.9);cursor:pointer;font-size:18px;line-height:1;color:var(--fp-muted);padding:0;display:flex;align-items:center;justify-content:center;transition:all .2s ease}
.garden-modal__close:hover{background:linear-gradient(135deg,#7f8c73,#606C57);color:#f4f4f1;border-color:transparent}
.gm-top{display:flex;gap:14px;align-items:center;padding:0 0 4px}
.gm-icon{width:64px;height:64px;border-radius:12px;border:1px solid var(--fp-stroke);background-color:rgba(220,223,217,.5);background-size:contain;background-repeat:no-repeat;background-position:center;flex-shrink:0;filter:drop-shadow(0 8px 10px rgba(0,0,0,.1))}
.gm-toptext{flex:1;min-width:0}
.gm-title{font-family:"Playfair Display",serif;font-style:italic;font-size:18px;color:var(--fp-green);letter-spacing:.04em;margin-bottom:8px}
.gm-chips{display:flex;flex-wrap:wrap;gap:5px}
.gm-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;border:1px solid var(--fp-stroke);background:rgba(244,244,244,.7);font-family:"Manrope",sans-serif;font-size:10px;font-weight:500;color:var(--fp-muted);letter-spacing:.03em}
.gm-sep{height:1px;background:linear-gradient(90deg,transparent,var(--fp-stroke),transparent);margin:14px 0 4px}
.gm-block{background:rgba(220,223,217,.35);border:1px solid var(--fp-stroke);border-radius:calc(var(--fp-r) - 6px);padding:12px 14px;margin:10px 0 0}
.gm-h{font-family:"Manrope",sans-serif;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--fp-lt);font-weight:600;margin-bottom:6px}
.gm-desc,.gm-effect{font-family:"Manrope",sans-serif;font-size:12px;line-height:1.65;color:var(--fp-muted);text-align:justify}
.gm-effect.is-locked{color:var(--fp-lt);font-style:italic;position:relative;padding-left:20px}
.gm-effect.is-locked::before{content:"🔒";position:absolute;left:0;top:0;font-style:normal}
.gm-foot{margin-top:12px;font-size:10px;letter-spacing:.08em;color:var(--fp-lt);text-align:center;text-transform:uppercase}
.gplant.s-0{background-image:url("https://upforme.ru/uploads/001c/95/36/6/817510.png")}
.gplant.s-1{background-image:url("https://upforme.ru/uploads/001c/95/36/6/951199.png")}
.gplant.p-tent.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/224645.png")}
.gplant.p-tent.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/925262.png")}
.gplant.p-thermometer.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/54240.png")}
.gplant.p-thermometer.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/809412.png")}
.gplant.p-broom.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/209550.png")}
.gplant.p-broom.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/125120.png")}
.gplant.p-book.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/258348.png")}
.gplant.p-book.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/696863.png")}
.gplant.p-glasses.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/224645.png")}
.gplant.p-glasses.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/84110.png")}
.gm-icon.s-0{background-image:url("https://upforme.ru/uploads/001c/95/36/6/817510.png")}
.gm-icon.s-1{background-image:url("https://upforme.ru/uploads/001c/95/36/6/951199.png")}
.gm-icon.p-tent.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/762326.png")}
.gm-icon.p-tent.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/925262.png")}
.gm-icon.p-thermometer.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/469846.png")}
.gm-icon.p-thermometer.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/809412.png")}
.gm-icon.p-broom.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/809182.png")}
.gm-icon.p-broom.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/125120.png")}
.gm-icon.p-book.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/343449.png")}
.gm-icon.p-book.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/696863.png")}
.gm-icon.p-glasses.s-2{background-image:url("https://upforme.ru/uploads/001c/95/36/6/762326.png")}
.gm-icon.p-glasses.s-3{background-image:url("https://upforme.ru/uploads/001c/95/36/4/84110.png")}
.seed-icon.s-0{background-image:url("https://upforme.ru/uploads/001c/95/36/6/817510.png")}
.seed-icon.s-1{background-image:url("https://upforme.ru/uploads/001c/95/36/6/951199.png")}
@media (max-width:700px){.gd-intro__grid{grid-template-columns:1fr}.gd-intro__img{min-height:180px}.gd-seeds-grid,.gd-seeds-grid--5{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.gd-seeds-grid,.gd-seeds-grid--5{grid-template-columns:1fr}.gd-stages{flex-wrap:wrap;gap:8px}.gd-stage__arrow{display:none}.gd-stage{flex:0 0 calc(50% - 4px)}}
</style>

<script>
(function(){
  var root = document.querySelector('#garden8march');
  if(!root) return;

  var hotgrid = root.querySelector('.garden-hotgrid');
  var modal = root.querySelector('.garden-modal');

  var mTitle = root.querySelector('.gm-title');
  var mOwner = root.querySelector('.gm-owner');
  var mStage = root.querySelector('.gm-stage');
  var mProg  = root.querySelector('.gm-prog');
  var mType  = root.querySelector('.gm-type');
  var mDesc  = root.querySelector('.gm-desc');
  var mEffect= root.querySelector('.gm-effect');
  var mIcon  = root.querySelector('.gm-icon');

  var COLS = parseInt(root.getAttribute('data-cols') || '5', 10);
  var ROWS = parseInt(root.getAttribute('data-rows') || '4', 10);

  var field = root.querySelector('.garden-field');
  if(field){
    field.style.setProperty('--cols', COLS);
    field.style.setProperty('--rows', ROWS);
  }

  var EFFECT_LOCKED_TEXT = "Эффект откроется после полной сборки артефакта (6 из 6 заданий).";

  function stageFromTasks(done, total){
    var t = Math.max(1, Number(total || 1));
    var d = Math.max(0, Math.min(Number(done || 0), t));
    var ratio = d / t;
    if(ratio <= 0) return 0;
    if(ratio < 0.34) return 1;
    if(ratio < 0.67) return 2;
    return 3;
  }

  function stageName(n){
    return ["пусто","основа","камень","артефакт"][n] || ("стадия " + n);
  }

  var typeLabel = {
    tent:        "⛺ палатка-шатёр",
    thermometer: "🌡️ магический термометр",
    broom:       "🧹 метла автопилота",
    book:        "📖 книга записей",
    glasses:     "👓 очки чтения"
  };

  var PLOTS = [
    { pos: 1, owner:"Имя игрока", plant:"Палатка-шатёр", type:"tent", tasksDone:6, tasksTotal:6,
      note:"Описание процесса крафта палатки-шатра. Здесь будет рассказ о том, как мастер выбирает ткань, накладывает чары расширения пространства, какие чары особенно сложно сочетать и почему конкретно эта работа требует терпения.",
      effect:"Магический эффект готовой палатки. Складывается до спичечного коробка, разворачивается в шикарную палатку с базовыми удобствами." },

    { pos: 2, owner:"Имя игрока", plant:"Магический Термометр", type:"thermometer", tasksDone:6, tasksTotal:6,
      note:"Описание процесса крафта магического термометра. Текст про настройку шкалы, выбор камня-индикатора и тонкость работы с чарами обнаружения.",
      effect:"Магический эффект готового термометра. Показывает температуру и уровень магической активности в помещении." },

    { pos: 3, owner:"Имя игрока", plant:"Метла Автопилота", type:"broom", tasksDone:6, tasksTotal:6,
      note:"Описание процесса крафта метлы-автопилота. Здесь будет про работу с древком, чары навигации, особенности привязки к маршрутам.",
      effect:"Магический эффект готовой метлы. Задаёшь пункт назначения — доставляет без управления." },

    { pos: 4, owner:"Имя игрока", plant:"Книга Записей", type:"book", tasksDone:0, tasksTotal:6,
      note:"Описание процесса крафта книги записей. Работа с бумагой, чары звукозаписи, наложение защитных рун от подделки страниц.",
      effect:"Магический эффект готовой книги. Всё сказанное в радиусе 5 метров записывает на страницы." },

    { pos: 5, owner:"Имя игрока", plant:"Очки Чтения", type:"glasses", tasksDone:6, tasksTotal:6,
      note:"Описание процесса крафта очков чтения. Подбор линз, чары перевода и увеличения, тонкая огранка камня-фокусатора.",
      effect:"Магический эффект готовых очков. Увеличивают мелкий текст и переводят иностранный язык в современный." },

    { pos: 6, owner:"Имя игрока", plant:"Палатка-шатёр", type:"tent", tasksDone:4, tasksTotal:6,
      note:"Описание процесса крафта палатки-шатра. Текст-заглушка для второго экземпляра.",
      effect:"Магический эффект готовой палатки." },

    { pos: 7, owner:"Имя игрока", plant:"Магический Термометр", type:"thermometer", tasksDone:6, tasksTotal:6,
      note:"Описание процесса крафта магического термометра.",
      effect:"Магический эффект готового термометра." },

    { pos: 8, owner:"Имя игрока", plant:"Метла Автопилота", type:"broom", tasksDone:2, tasksTotal:6,
      note:"Описание процесса крафта метлы-автопилота.",
      effect:"Магический эффект готовой метлы." }
  ];

  var byPos = {};
  for(var i=0;i<PLOTS.length;i++){ byPos[PLOTS[i].pos] = PLOTS[i]; }

  function setIcon(el, type, stage){
    var base = (el.classList.contains('gm-icon') ? 'gm-icon' : 'gplant');
    if(stage <= 1){
      el.className = base + ' s-' + stage;
    }else{
      el.className = base + ' p-' + (type || 'tent') + ' s-' + stage;
    }
  }

  function openModal(plot, stage){
    mTitle.textContent = plot.plant || '—';
    mOwner.textContent = '👤 ' + (plot.owner || '—');
    mStage.textContent = '🛠 ' + stageName(stage);

    var done = Number(plot.tasksDone || 0);
    var total = Math.max(1, Number(plot.tasksTotal || 1));
    mProg.textContent = '✅ ' + done + '/' + total;

    var t = (plot.type || 'tent');
    mType.textContent = typeLabel[t] || ('✨ ' + t);

    mDesc.textContent = plot.note || '—';

    if(done >= total){
      mEffect.textContent = plot.effect || '—';
      mEffect.classList.remove('is-locked');
    }else{
      mEffect.textContent = EFFECT_LOCKED_TEXT;
      mEffect.classList.add('is-locked');
    }

    setIcon(mIcon, t, stage);

    modal.classList.add('is-open');
    modal.setAttribute('aria-hidden','false');
    document.addEventListener('keydown', onEsc);
  }

  function closeModal(){
    modal.classList.remove('is-open');
    modal.setAttribute('aria-hidden','true');
    document.removeEventListener('keydown', onEsc);
  }
  function onEsc(e){ if(e.key === 'Escape') closeModal(); }

  modal.addEventListener('click', function(e){
    var t = e.target;
    if(t && t.getAttribute && t.getAttribute('data-close') === '1') closeModal();
  });

  var frag = document.createDocumentFragment();
  var cellCount = COLS * ROWS;

  for(var k=1;k<=cellCount;k++){
    var plot = byPos[k];

    var btn = document.createElement('button');
    btn.type = 'button';
    btn.className = 'gspot';

    if(!plot){
      btn.classList.add('is-empty');
      btn.setAttribute('aria-label', 'Пустая ячейка ' + k);
      frag.appendChild(btn);
      continue;
    }

    var st = stageFromTasks(plot.tasksDone, plot.tasksTotal);
    btn.setAttribute('aria-label', plot.plant + ' — ' + plot.owner);

    var icon = document.createElement('div');
    icon.className = 'gplant';
    setIcon(icon, plot.type, st);
    btn.appendChild(icon);

    (function(p, s){
      btn.addEventListener('click', function(){ openModal(p, s); });
    })(plot, st);

    frag.appendChild(btn);
  }

  hotgrid.innerHTML = '';
  hotgrid.appendChild(frag);
})();
</script>[/html][hideprofile]

0

Перевести2

https://upforme.ru/uploads/001c/b0/ba/2/917742.png https://upforme.ru/uploads/001c/b0/ba/2/279987.png https://upforme.ru/uploads/001c/b0/ba/2/834708.png
https://upforme.ru/uploads/001c/b0/ba/2/80404.png https://upforme.ru/uploads/001c/b0/ba/2/789697.png

0

Перевести3

https://upforme.ru/uploads/001c/b0/ba/2/650028.png https://upforme.ru/uploads/001c/b0/ba/2/332858.png
https://upforme.ru/uploads/001c/b0/ba/2/551754.png https://upforme.ru/uploads/001c/b0/ba/2/47016.png
https://upforme.ru/uploads/001c/b0/ba/2/999052.png

0

Перевести4

https://upforme.ru/uploads/001c/b0/ba/2/20166.png https://upforme.ru/uploads/001c/b0/ba/2/870647.png https://upforme.ru/uploads/001c/b0/ba/2/838774.png
https://upforme.ru/uploads/001c/b0/ba/2/898169.png https://upforme.ru/uploads/001c/b0/ba/2/45701.png

0


Вы здесь » solitude desing test » Тестовый форум » черновики


Рейтинг форумов | Создать форум бесплатно