微件

配队模拟器:修订间差异

来自卡厄思梦境WIKI

律Rhyme留言 | 贡献
创建页面,内容为“<script> (function() { 'use strict'; // ========== 工具函数 ========== function show(el) { if (el) el.style.display = 'block'; } function hide(el) { if (el) el.style.display = 'none'; } // ========== 战斗员选择 ========== const characterBox = document.getElementById('character-box'); const selectedCharacter = document.getElementById('selected-character'); characterBox.addEventListener('click', function(e) { e.…”
 
律Rhyme留言 | 贡献
无编辑摘要
第1行: 第1行:
<!-- JavaScript -->
<script>
<script>
(function() {
// 存储当前选择状态
     'use strict';
let currentSelection = {
     character: null,
    partner: null,
    cards: [],
    weapon: null,
    armor: null,
    ring: null
};


    // ========== 工具函数 ==========
// 打开选择模态框
    function show(el) { if (el) el.style.display = 'block'; }
function openSelectionModal(type) {
    function hide(el) { if (el) el.style.display = 'none'; }
    const modal = document.getElementById('selection-modal');
    const content = document.getElementById('modal-content');
   
    switch(type) {
        case 'character':
            content.innerHTML = `{{#ask:[[分类:战斗员]]
                |?名称
                |?稀有度
                |?职业
                |?属性
                |sort=实装日期,稀有度,id
                |order=desc,desc,desc
                |mainlabel=-
                |link=none
                |template=配队/战斗员
                |headers=hide
                |format=template
                |limit=1000
            }}`;
            break;
           
        case 'partner':
            content.innerHTML = `{{#ask:[[分类:伙伴]]
                |?名称
                |?稀有度
                |?职业
                |?属性
                |?id
                |sort=实装日期,稀有度,id
                |order=desc,desc,desc
                |mainlabel=-
                |link=none
                |template=配队/伙伴
                |headers=hide
                |format=template
                |limit=1000
            }}`;
            break;
           
        case 'card':
            // 需要先选择角色才能选择卡牌
            if (!currentSelection.character) {
                alert('请先选择角色');
                return;
            }
            content.innerHTML = generateCardSelection();
            break;
           
        case 'weapon':
            content.innerHTML = generateEquipmentSelection('武器');
            break;
           
        case 'armor':
            content.innerHTML = generateEquipmentSelection('装甲');
            break;
           
        case 'ring':
            content.innerHTML = generateEquipmentSelection('戒指');
            break;
    }
   
    modal.style.display = 'block';
    document.body.style.overflow = 'hidden';
   
    // 为生成的元素添加点击事件
    setTimeout(() => {
        addSelectionEvents(type);
    }, 100);
}


    // ========== 战斗员选择 ==========
// 关闭选择模态框
     const characterBox = document.getElementById('character-box');
function closeSelectionModal() {
     const selectedCharacter = document.getElementById('selected-character');
     const modal = document.getElementById('selection-modal');
     modal.style.display = 'none';
    document.body.style.overflow = 'auto';
}


    characterBox.addEventListener('click', function(e) {
// 生成卡牌选择界面
        e.stopPropagation();
function generateCardSelection() {
        // 创建选择层
    if (!currentSelection.character) return '';
         const overlay = document.createElement('div');
   
         overlay.style.cssText = `
    // 这里需要根据选择的角色获取对应的卡牌数据
            position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8);
    // 假设从模板中获取卡牌信息
             z-index: 10000; display: flex; align-items: center; justify-content: center; overflow-y: auto;
    return `
        `;
    <div>
        overlay.innerHTML = `
         <h3>选择卡牌 - ${currentSelection.character}</h3>
             <div style="background: #222; padding: 20px; border-radius: 10px; max-width: 90vw; max-height: 90vh; overflow-y: auto;">
         <div style="display: flex; flex-wrap: wrap; gap: 10px;">
                <div style="position: absolute; top: 20px; right: 20px; color: white; font-size: 24px; cursor: pointer;">×</div>
             <!-- 自我意识技能 -->
                <h2 style="color: white; text-align: center;">选择战斗员</h2>
             <div class="card-selection" data-card-type="ego">
                <div id="character-list" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 15px; padding-top: 20px;">
                {{#invoke:卡牌|main|角色模块|自我意识技能卡牌}}
                    <!-- 由AJAX或预加载填充 -->
            </div>
                </div>
           
            <!-- 起始卡牌 -->
            <div class="card-selection" data-card-type="start1">
                {{#invoke:卡牌|main|角色模块|起始卡牌_1}}
            </div>
            <div class="card-selection" data-card-type="start2">
                {{#invoke:卡牌|main|角色模块|起始卡牌_2}}
            </div>
            <div class="card-selection" data-card-type="start3">
                {{#invoke:卡牌|main|角色模块|起始卡牌_3}}
            </div>
            <div class="card-selection" data-card-type="start4">
                {{#invoke:卡牌|main|角色模块|起始卡牌_4}}
            </div>
           
            <!-- 独特卡牌 -->
            <div class="card-selection" data-card-type="unique1">
                {{#invoke:卡牌|main|角色模块|独特卡牌_1}}
             </div>
             </div>
         `;
            <div class="card-selection" data-card-type="unique2">
        document.body.appendChild(overlay);
                {{#invoke:卡牌|main|角色模块|独特卡牌_2}}
            </div>
            <div class="card-selection" data-card-type="unique3">
                {{#invoke:卡牌|main|角色模块|独特卡牌_3}}
            </div>
            <div class="card-selection" data-card-type="unique4">
                {{#invoke:卡牌|main|角色模块|独特卡牌_4}}
            </div>
         </div>
    </div>`;
}


        // 关闭按钮
// 生成装备选择界面
        overlay.querySelector('div').firstChild.onclick = function() {
function generateEquipmentSelection(type) {
             document.body.removeChild(overlay);
    return `
        };
    <div>
        <h3>选择${type}</h3>
        <div style="display: flex; flex-wrap: wrap; gap: 10px;">
             {{#invoke:装备|generateCards}}
        </div>
    </div>`;
}


        // 获取战斗员列表(使用你提供的SMW查询)
// 添加选择事件
        fetch(mw.util.wikiScript('api'), {
function addSelectionEvents(type) {
            method: 'POST',
    const items = document.querySelectorAll('.selection-item');
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
   
            body: new URLSearchParams({
    items.forEach(item => {
                action: 'parse',
         item.addEventListener('click', function() {
                format: 'json',
             const name = this.getAttribute('data-name');
                text: '{{#ask:[[分类:战斗员]]|?名称|?稀有度|?职业|?属性|sort=实装日期,稀有度,id|order=desc,desc,desc|mainlabel=-|link=none|template=配队/战斗员|headers=hide|format=template|limit=1000}}'
             const id = this.getAttribute('data-id');
            })
              
        })
             switch(type) {
        .then(r => r.json())
                case 'character':
         .then(data => {
                    selectCharacter(name, id);
             const listContainer = overlay.querySelector('#character-list');
                    break;
             listContainer.innerHTML = data.parse.text['*'];
                 case 'partner':
 
                     selectPartner(name, id);
             // 为每个角色绑定点击事件
                     break;
             const characterItems = listContainer.querySelectorAll('.rarity-1, .rarity-2, .rarity-3, .rarity-4, .rarity-5');
                case 'card':
            characterItems.forEach(item => {
                     selectCard(name, this.getAttribute('data-card-type'));
                 item.addEventListener('click', function(e) {
                    break;
                     e.stopPropagation();
                case 'weapon':
                     const name = this.previousElementSibling.textContent.trim(); // 名称在底部黑条内
                     selectWeapon(name, id);
                     const imgSrc = this.parentElement.querySelector('img').src;
                     break;
 
                case 'armor':
                     // 更新显示
                     selectArmor(name, id);
                     selectedCharacter.innerHTML = `<img src="${imgSrc}" style="width:100%; height:100%; object-fit: cover;">`;
                     break;
                     show(selectedCharacter);
                case 'ring':
                     hide(characterBox.querySelector('span'));
                     selectRing(name, id);
 
                    break;
                     document.body.removeChild(overlay);
             }
                });
           
             });
            closeSelectionModal();
         });
         });
     });
     });
}


    // ========== 伙伴选择 ==========
// 选择角色
     const partnerBox = document.getElementById('partner-box');
function selectCharacter(name, id) {
     const selectedPartner = document.getElementById('selected-partner');
    currentSelection.character = name;
     const slot = document.getElementById('character-slot');
     slot.innerHTML = `[[File:战斗员图鉴_${name}.png|150px|link=]]`;
    slot.style.justifyContent = 'center';
}


    partnerBox.addEventListener('click', function(e) {
// 选择伙伴
        e.stopPropagation();
function selectPartner(name, id) {
        const overlay = document.createElement('div');
    currentSelection.partner = name;
        overlay.style.cssText = `
    const slot = document.getElementById('partner-slot');
            position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8);
    slot.innerHTML = `[[File:face_character_wide_${id}.png|150px|link=]]`;
            z-index: 10000; display: flex; align-items: center; justify-content: center; overflow-y: auto;
    slot.style.justifyContent = 'center';
        `;
}
        overlay.innerHTML = `
 
            <div style="background: #222; padding: 20px; border-radius: 10px; max-width: 90vw; max-height: 90vh; overflow-y: auto;">
// 选择卡牌
                <div style="position: absolute; top: 20px; right: 20px; color: white; font-size: 24px; cursor: pointer;">×</div>
function selectCard(name, cardType) {
                <h2 style="color: white; text-align: center;">选择伙伴</h2>
    currentSelection.cards.push({name, type: cardType});
                <div id="partner-list" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 15px; padding-top: 20px;">
    updateDeckDisplay();
                    <!-- 填充 -->
}
                </div>
            </div>
        `;
        document.body.appendChild(overlay);


        overlay.querySelector('div').firstChild.onclick = function() {
// 选择武器
            document.body.removeChild(overlay);
function selectWeapon(name, id) {
        };
    currentSelection.weapon = name;
    const slot = document.getElementById('weapon-slot');
    slot.innerHTML = generateEquipmentDisplay(name, id);
    slot.style.justifyContent = 'center';
}


        fetch(mw.util.wikiScript('api'), {
// 选择装甲
            method: 'POST',
function selectArmor(name, id) {
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    currentSelection.armor = name;
            body: new URLSearchParams({
    const slot = document.getElementById('armor-slot');
                action: 'parse',
    slot.innerHTML = generateEquipmentDisplay(name, id);
                format: 'json',
    slot.style.justifyContent = 'center';
                text: '{{#ask:[[分类:伙伴]]|?名称|?稀有度|?职业|?属性|?id|sort=实装日期,稀有度,id|order=desc,desc,desc|mainlabel=-|link=none|template=配队/伙伴|headers=hide|format=template|limit=1000}}'
}
            })
        })
        .then(r => r.json())
        .then(data => {
            const listContainer = overlay.querySelector('#partner-list');
            listContainer.innerHTML = data.parse.text['*'];


            const partnerItems = listContainer.querySelectorAll('.rarity-1, .rarity-2, .rarity-3, .rarity-4, .rarity-5');
// 选择戒指
            partnerItems.forEach(item => {
function selectRing(name, id) {
                item.addEventListener('click', function(e) {
    currentSelection.ring = name;
                    e.stopPropagation();
    const slot = document.getElementById('ring-slot');
                    const name = this.previousElementSibling.textContent.trim();
    slot.innerHTML = generateEquipmentDisplay(name, id);
                    // 注意:伙伴使用 face_character_wide_{id}.png
    slot.style.justifyContent = 'center';
                    const id = this.parentElement.querySelector('img').alt.match(/portrait_character_crop_half_(\d+)/)?.[1] || '0000';
}
                    const imgSrc = mw.util.getUrl(`File:face_character_wide_${id}.png`, { action: 'view' }); // 构建图片URL


                    selectedPartner.innerHTML = `<img src="${imgSrc}" style="width:100%; height:100%; object-fit: cover;">`;
// 生成装备显示
                    show(selectedPartner);
function generateEquipmentDisplay(name, id) {
                    hide(partnerBox.querySelector('span'));
    return `
    <div style="position:relative;width:124px;height:124px">
        <div style="position:absolute;top:0px;left:0px">[[File:frame_item_rarity_金.png|124px]]</div>
        <div style="position:absolute;top:8px;left:8px;width:108px;height:108px;border:1px solid #fff;"></div>
        <div style="position:absolute;top:6px;left:6px;">[[File:relic_${id.toString().padStart(4, '0')}.png|112px|center]]</div>
        <div style="position:absolute;bottom:2px;left:6px;">{{描边|黑|${name}}}</div>
    </div>`;
}


                    document.body.removeChild(overlay);
// 更新卡组显示
                });
function updateDeckDisplay() {
            });
    const deckArea = document.getElementById('deck-area');
         });
    if (currentSelection.cards.length === 0) {
        deckArea.innerHTML = '<div style="font-size: 48px; color: #ccc;">+</div>';
        return;
    }
   
    let cardsHTML = '<div style="display: flex; flex-wrap: wrap; gap: 10px;">';
    currentSelection.cards.forEach(card => {
         cardsHTML += `<div class="card-in-deck" data-card="${card.name}">
            {{#invoke:卡牌|main|角色模块|${card.name}}}
        </div>`;
     });
     });
    cardsHTML += '</div>';
   
    deckArea.innerHTML = cardsHTML;
}


     // ========== 卡牌选择 ==========
// 初始化点击事件
     const addCardButton = document.getElementById('add-card-button');
document.addEventListener('DOMContentLoaded', function() {
     const cardDeckBox = document.getElementById('card-deck-box');
     // 战斗员选择
     const cardSelectionModal = document.getElementById('card-selection-modal');
     document.getElementById('character-slot').addEventListener('click', function() {
     const cardListContainer = document.getElementById('card-list');
        openSelectionModal('character');
 
     });
     addCardButton.addEventListener('click', function() {
   
         show(cardSelectionModal);
    // 伙伴选择
         loadCharacterCards(); // 加载当前所选角色的卡牌(需要你提供角色→模块映射表,这里先模拟)
    document.getElementById('partner-slot').addEventListener('click', function() {
        openSelectionModal('partner');
     });
   
    // 卡组选择
    document.getElementById('deck-area').addEventListener('click', function() {
        openSelectionModal('card');
     });
   
    // 装备选择
    document.getElementById('weapon-slot').addEventListener('click', function() {
        openSelectionModal('weapon');
    });
   
     document.getElementById('armor-slot').addEventListener('click', function() {
         openSelectionModal('armor');
    });
   
    document.getElementById('ring-slot').addEventListener('click', function() {
         openSelectionModal('ring');
     });
     });
});
</script>


    function loadCharacterCards() {
<style>
        // 示例:假设选择的角色是"艾莉丝",对应 Module:卡牌/艾莉丝
.selection-slot {
        // 实际应从 selectedCharacter 获取角色名,然后查映射 → 这里简化处理
    transition: all 0.3s ease;
        const moduleName = "示例角色"; // 替换为实际逻辑
}
 
        // 假设我们有一个 API 或模板能列出某角色的所有卡牌
        // 这里我们伪造一些卡牌供演示,你应该替换为真实的 SMW 查询或 Lua 输出
        const sampleCards = [
            { module: "示例角色", name: "起始卡牌_1" },
            { module: "示例角色", name: "起始卡牌_2" },
            { module: "示例角色", name: "独特卡牌_1" }
        ];
 
        cardListContainer.innerHTML = ''; // 清空
        sampleCards.forEach(card => {
            const cardDiv = document.createElement('div');
            // 使用Module:卡牌渲染单张卡牌
            fetch(mw.util.wikiScript('api'), {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: new URLSearchParams({
                    action: 'parse',
                    format: 'json',
                    text: `{{#invoke:卡牌|main|${card.module}|${card.name}}}`
                })
            })
            .then(r => r.json())
            .then(data => {
                cardDiv.innerHTML = data.parse.text['*'];
                cardListContainer.appendChild(cardDiv);
 
                // 绑定点击加入卡组
                const smallCard = cardDiv.querySelector('.card-small-wrapper');
                if (smallCard) {
                    smallCard.addEventListener('click', function(e) {
                        e.stopPropagation();
                        const clone = this.cloneNode(true);
                        clone.style.width = '180px';
                        clone.style.height = 'auto';
                        cardDeckBox.appendChild(clone);
                        cardDeckBox.querySelector('div[style*="margin-top: 100px"]')?.remove(); // 移除提示占位符
                    });
                }
            });
        });
    }
 
    // ========== 装备选择 ==========
    const equipmentSlots = document.querySelectorAll('.equipment-slot');
    const equipmentModal = document.getElementById('equipment-modal');
    const equipmentListContainer = document.getElementById('equipment-list');
    const equipmentTitle = document.getElementById('equipment-title');


    equipmentSlots.forEach(slot => {
.selection-slot:hover {
        slot.addEventListener('click', function() {
    border-color: #666;
            const type = this.getAttribute('data-type');
    background: #f8f8f8;
            equipmentTitle.textContent = `选择${type}`;
}
            show(equipmentModal);


            // 使用 Module:装备 生成列表
.selection-item {
            fetch(mw.util.wikiScript('api'), {
    cursor: pointer;
                method: 'POST',
    transition: transform 0.2s ease;
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
}
                body: new URLSearchParams({
                    action: 'parse',
                    format: 'json',
                    text: '{{#invoke:装备|generateCards}}'
                })
            })
            .then(r => r.json())
            .then(data => {
                equipmentListContainer.innerHTML = data.parse.text['*'];


                // 筛选类型 & 绑定点击
.selection-item:hover {
                const allCards = equipmentListContainer.querySelectorAll('.equipment-wrapper');
    transform: scale(1.05);
                allCards.forEach(card => {
}
                    const cardType = card.getAttribute('data-param3');
                    if (cardType !== type) {
                        hide(card);
                    } else {
                        show(card);
                        const clickableCard = card.querySelector('.equipment-card');
                        clickableCard.addEventListener('click', function(e) {
                            e.stopPropagation();


                            // 获取装备名
.card-in-deck {
                            const equipName = clickableCard.getAttribute('data-equipment');
    cursor: pointer;
                            // 渲染单张装备卡片到槽位
}
                            renderEquipmentToSlot(slot, equipName);
                            hide(equipmentModal);
                        });
                    }
                });
            });
        });
    });


    function renderEquipmentToSlot(slot, equipName) {
.card-in-deck:hover {
        const outputDiv = slot.querySelector('.selected-equipment');
    opacity: 0.8;
        fetch(mw.util.wikiScript('api'), {
}
            method: 'POST',
</style>
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            body: new URLSearchParams({
                action: 'parse',
                format: 'json',
                text: `{{#invoke:装备|card|${equipName}|5}}` // 默认5星
            })
        })
        .then(r => r.json())
        .then(data => {
            outputDiv.innerHTML = data.parse.text['*'];
            show(outputDiv);
            hide(slot.querySelector('span'));
        });
    }
 
    // ESC关闭模态框
    document.addEventListener('keydown', function(e) {
        if (e.key === 'Escape') {
            hide(cardSelectionModal);
            hide(equipmentModal);
            document.querySelectorAll('.modal').forEach(modal => hide(modal));
        }
    });
 
})();
</script>

2025年10月18日 (六) 20:08的版本

<script> // 存储当前选择状态 let currentSelection = {

   character: null,
   partner: null,
   cards: [],
   weapon: null,
   armor: null,
   ring: null

};

// 打开选择模态框 function openSelectionModal(type) {

   const modal = document.getElementById('selection-modal');
   const content = document.getElementById('modal-content');
   
   switch(type) {
       case 'character':

content.innerHTML = `

凯隆
小春
雨果
蕾欧娜
维若妮卡
梅铃
奥尔莱亚
麦格纳
卡莉佩
路克
蕾伊
欧文
凯西乌斯
百丽儿
米卡
玛丽贝尔
卢卡斯
艾美
德蕾莎
席琳娜
妮雅

`;

           break;
           
       case 'partner':

content.innerHTML = `

`;

           break;
           
       case 'card':
           // 需要先选择角色才能选择卡牌
           if (!currentSelection.character) {
               alert('请先选择角色');
               return;
           }
           content.innerHTML = generateCardSelection();
           break;
           
       case 'weapon':
           content.innerHTML = generateEquipmentSelection('武器');
           break;
           
       case 'armor':
           content.innerHTML = generateEquipmentSelection('装甲');
           break;
           
       case 'ring':
           content.innerHTML = generateEquipmentSelection('戒指');
           break;
   }
   
   modal.style.display = 'block';
   document.body.style.overflow = 'hidden';
   
   // 为生成的元素添加点击事件
   setTimeout(() => {
       addSelectionEvents(type);
   }, 100);

}

// 关闭选择模态框 function closeSelectionModal() {

   const modal = document.getElementById('selection-modal');
   modal.style.display = 'none';
   document.body.style.overflow = 'auto';

}

// 生成卡牌选择界面 function generateCardSelection() {

   if (!currentSelection.character) return ;
   
   // 这里需要根据选择的角色获取对应的卡牌数据
   // 假设从模板中获取卡牌信息
   return `

选择卡牌 - ${currentSelection.character}

               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"
               错误: 找不到模块 "Module:卡牌/角色模块"

`;

}

// 生成装备选择界面 function generateEquipmentSelection(type) {

   return `

选择${type}

`;

}

// 添加选择事件 function addSelectionEvents(type) {

   const items = document.querySelectorAll('.selection-item');
   
   items.forEach(item => {
       item.addEventListener('click', function() {
           const name = this.getAttribute('data-name');
           const id = this.getAttribute('data-id');
           
           switch(type) {
               case 'character':
                   selectCharacter(name, id);
                   break;
               case 'partner':
                   selectPartner(name, id);
                   break;
               case 'card':
                   selectCard(name, this.getAttribute('data-card-type'));
                   break;
               case 'weapon':
                   selectWeapon(name, id);
                   break;
               case 'armor':
                   selectArmor(name, id);
                   break;
               case 'ring':
                   selectRing(name, id);
                   break;
           }
           
           closeSelectionModal();
       });
   });

}

// 选择角色 function selectCharacter(name, id) {

   currentSelection.character = name;
   const slot = document.getElementById('character-slot');
   slot.innerHTML = `[[File:战斗员图鉴_${name}.png|150px|link=]]`;
   slot.style.justifyContent = 'center';

}

// 选择伙伴 function selectPartner(name, id) {

   currentSelection.partner = name;
   const slot = document.getElementById('partner-slot');
   slot.innerHTML = `[[File:face_character_wide_${id}.png|150px|link=]]`;
   slot.style.justifyContent = 'center';

}

// 选择卡牌 function selectCard(name, cardType) {

   currentSelection.cards.push({name, type: cardType});
   updateDeckDisplay();

}

// 选择武器 function selectWeapon(name, id) {

   currentSelection.weapon = name;
   const slot = document.getElementById('weapon-slot');
   slot.innerHTML = generateEquipmentDisplay(name, id);
   slot.style.justifyContent = 'center';

}

// 选择装甲 function selectArmor(name, id) {

   currentSelection.armor = name;
   const slot = document.getElementById('armor-slot');
   slot.innerHTML = generateEquipmentDisplay(name, id);
   slot.style.justifyContent = 'center';

}

// 选择戒指 function selectRing(name, id) {

   currentSelection.ring = name;
   const slot = document.getElementById('ring-slot');
   slot.innerHTML = generateEquipmentDisplay(name, id);
   slot.style.justifyContent = 'center';

}

// 生成装备显示 function generateEquipmentDisplay(name, id) {

   return `
[[File:relic_${id.toString().padStart(4, '0')}.png|112px|center]]
${name}

`;

}

// 更新卡组显示 function updateDeckDisplay() {

   const deckArea = document.getElementById('deck-area');
   if (currentSelection.cards.length === 0) {

deckArea.innerHTML = '

+

';

       return;
   }
   

let cardsHTML = '

';
   currentSelection.cards.forEach(card => {
cardsHTML += `
           错误: 找不到模块 "Module:卡牌/角色模块"}
`;
   });
cardsHTML += '

';

   deckArea.innerHTML = cardsHTML;

}

// 初始化点击事件 document.addEventListener('DOMContentLoaded', function() {

   // 战斗员选择
   document.getElementById('character-slot').addEventListener('click', function() {
       openSelectionModal('character');
   });
   
   // 伙伴选择
   document.getElementById('partner-slot').addEventListener('click', function() {
       openSelectionModal('partner');
   });
   
   // 卡组选择
   document.getElementById('deck-area').addEventListener('click', function() {
       openSelectionModal('card');
   });
   
   // 装备选择
   document.getElementById('weapon-slot').addEventListener('click', function() {
       openSelectionModal('weapon');
   });
   
   document.getElementById('armor-slot').addEventListener('click', function() {
       openSelectionModal('armor');
   });
   
   document.getElementById('ring-slot').addEventListener('click', function() {
       openSelectionModal('ring');
   });

}); </script>

<style> .selection-slot {

   transition: all 0.3s ease;

}

.selection-slot:hover {

   border-color: #666;
   background: #f8f8f8;

}

.selection-item {

   cursor: pointer;
   transition: transform 0.2s ease;

}

.selection-item:hover {

   transform: scale(1.05);

}

.card-in-deck {

   cursor: pointer;

}

.card-in-deck:hover {

   opacity: 0.8;

} </style>