feat: complete minor arcana data structure with fallback descriptions and keywords
This commit is contained in:
parent
0377c41888
commit
2b7fc07969
|
|
@ -0,0 +1,172 @@
|
|||
const cups = [
|
||||
{
|
||||
id: 'cups_ace',
|
||||
name: '圣杯·王牌',
|
||||
name_en: 'Ace of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: 'ace',
|
||||
keywords: ['情感起始', '流动', '感应', '纯粹'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征情感的起始与这种能量的纯粹流动。此刻可能正有一种新的感受在萌芽,或者是一个情感交流的契机正在出现。请保持内心的敞开,去感知这份自然流露的善意或灵感。'
|
||||
},
|
||||
{
|
||||
id: 'cups_2',
|
||||
name: '圣杯·二',
|
||||
name_en: 'Two of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '2',
|
||||
keywords: ['和谐连接', '平等', '共鸣', '整合'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种平等且和谐的连接状态。无论是人际关系还是内在自我的整合,当前都处于一种相互理解与平衡的氛围中。这是一种温和的共鸣,提醒 you 关注与他人建立深层连接的可能性。'
|
||||
},
|
||||
{
|
||||
id: 'cups_3',
|
||||
name: '圣杯·三',
|
||||
name_en: 'Three of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '3',
|
||||
keywords: ['分享', '庆祝', '归属', '支持'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出分享、庆祝与情感支持的网络。此刻适合与志同道合的人共处,在集体的欢愉中获得能量的补给。它是关于支持系统的力量,暗示着在社群或友谊中能找到归属感。'
|
||||
},
|
||||
{
|
||||
id: 'cups_4',
|
||||
name: '圣杯·四',
|
||||
name_en: 'Four of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '4',
|
||||
keywords: ['倦怠', '停滞', '省思', '淡漠'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '反映了一种内在的倦怠感或暂时的停滞。你可能正处于一种对外界提不起兴趣的状态,即便机会就在眼前也难以察觉。这并非负面,而是一个需要向内看、重新审视现状与渴望的时刻。'
|
||||
},
|
||||
{
|
||||
id: 'cups_5',
|
||||
name: '圣杯·五',
|
||||
name_en: 'Five of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '5',
|
||||
keywords: ['失落', '沉溺', '局部视角', '接纳'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了在情感遭遇挫折后的失落氛围。注意力可能更多地集中在那些已经失去或受损的事物上,导致忽略了依然存在的支持。提醒你在接纳悲伤的同时,也尝试转身看看那些依然挺立的“杯子”。'
|
||||
},
|
||||
{
|
||||
id: 'cups_6',
|
||||
name: '圣杯·六',
|
||||
name_en: 'Six of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '6',
|
||||
keywords: ['怀旧', '纯真', '传递', '归家'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '带有一种怀旧且纯真的基调。可能与过去的记忆、老友,或者是单纯的给予与收获有关。这是一种不需要算计的情感互动,提醒你找回那份最质朴的初心与对他人的善意。'
|
||||
},
|
||||
{
|
||||
id: 'cups_7',
|
||||
name: '圣杯·七',
|
||||
name_en: 'Seven of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '7',
|
||||
keywords: ['幻象', '多样选择', '迷茫', '想象'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '面对众多的选择与幻象时,内心往往充满了迷茫。虽然可能性看似无穷无尽,但并非所有选项都是脚踏实地的。此刻最重要的是清晰地识别哪些是幻梦,哪些是真正值得投入的路径。'
|
||||
},
|
||||
{
|
||||
id: 'cups_8',
|
||||
name: '圣杯·八',
|
||||
name_en: 'Eight of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '8',
|
||||
keywords: ['找寻', '转身', '精神追求', '离去'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '表达了一种主动离开原本熟悉领域的决心。即便当下的环境依然安稳,但内心深处知道它已无法提供更进一步的成长。这是一种对更高精神追求的向往,即便前方路途未知,也要选择转身前行。'
|
||||
},
|
||||
{
|
||||
id: 'cups_9',
|
||||
name: '圣杯·九',
|
||||
name_en: 'Nine of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '9',
|
||||
keywords: ['满足', '充盈', '自得', '宁静'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是一种情感上的富足与愿望达成的满足感。通过自己的努力或境遇的改善,当前获得了一份难得的内在宁静与自给自足。请享受这份此刻的喜悦,它是生活对你坚持的一种奖赏。'
|
||||
},
|
||||
{
|
||||
id: 'cups_10',
|
||||
name: '圣杯·十',
|
||||
name_en: 'Ten of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: '10',
|
||||
keywords: ['圆满', '长久和谐', '归属', '丰饶'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了最高级别的情感链接与长期和谐。可能体现在家庭关系的圆满,或者是某种深层归属感的达成。这是一种稳固且充盈的状态,提醒你珍惜这些构建起生活基石的珍贵连接。'
|
||||
},
|
||||
{
|
||||
id: 'cups_page',
|
||||
name: '圣杯·侍从',
|
||||
name_en: 'Page of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: 'page',
|
||||
keywords: ['好奇', '敏感', '消息', '直觉探索'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着一种带有好奇心的、敏感的探索者姿态。可能正有新的情感消息传来,或者你正在经历某种直觉上的觉醒。请像初学者一样,用感性且充满想象力的方式去观察当下的变化。'
|
||||
},
|
||||
{
|
||||
id: 'cups_knight',
|
||||
name: '圣杯·骑士',
|
||||
name_en: 'Knight of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: 'knight',
|
||||
keywords: ['跟从内心', '理想', '追逐', '感性行动'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '体现了跟从内心直觉与情感引导的行动。他带着一种理想主义的色彩,正在追逐内心认为美好的事物。这鼓励你在行动中加入更多的感性成分,用温和且富有艺术感的方式去达成目标。'
|
||||
},
|
||||
{
|
||||
id: 'cups_queen',
|
||||
name: '圣杯·王后',
|
||||
name_en: 'Queen of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: 'queen',
|
||||
keywords: ['同理', '疗愈', '镜像', '母性能量'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '展示了极致的同理心与温柔的疗愈能量。你可能正处于这种充满感性的领导角色中,或者是身边有一位这样能够共情感知你的人。提醒你关注梦境与直觉,那是潜意识在向你诉说。'
|
||||
},
|
||||
{
|
||||
id: 'cups_king',
|
||||
name: '圣杯·国王',
|
||||
name_en: 'King of Cups',
|
||||
arcana: 'minor',
|
||||
suit: 'cups',
|
||||
number: 'king',
|
||||
keywords: ['成熟掌控', '慈悲', '理智整合', '稳定'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了情感与理智的高度整合。即便在复杂或动荡的情绪波动中,依然能保持一种沉稳且理性的掌控感。这是一种成熟的慈悲,让你在能够深刻共感他人的同时,不丧失冷静判断的底线。'
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = cups;
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
const cups = require('./cups');
|
||||
const wands = require('./wands');
|
||||
const swords = require('./swords');
|
||||
const pentacles = require('./pentacles');
|
||||
|
||||
// 注意:Major Arcana 目前仍在 index.js 中,未来可提取至此
|
||||
const minorArcana = [
|
||||
...cups,
|
||||
...wands,
|
||||
...swords,
|
||||
...pentacles
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
minorArcana
|
||||
};
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
const pentacles = [
|
||||
{
|
||||
id: 'pentacles_ace',
|
||||
name: '星币·王牌',
|
||||
name_en: 'Ace of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: 'ace',
|
||||
keywords: ['物质基石', '契机', '务实', '增长'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着物质世界的基石与财富、健康的全新机会。它是一颗埋入土壤的种子,预示着一种可见的成果或事业的开端。这股能量稳健且务实,提醒你关注那些可以被触碰与衡量的实际增长。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_2',
|
||||
name: '星币·二',
|
||||
name_en: 'Two of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '2',
|
||||
keywords: ['动态平衡', '适应', '权衡工作', '灵活性'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种在多重任务或财务平衡中进行动态调整的状态。生活就像一场杂耍,需要你保持极佳的灵活性与适应力。这是一种关于权衡的艺术,提醒你在纷繁的事务中找准重心,随动而变。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_3',
|
||||
name: '星币·三',
|
||||
name_en: 'Three of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '3',
|
||||
keywords: ['协作', '技艺', '磨合', '共创'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出技能的磨合、团队的协作与工匠精神。通过与他人专业的配合,原本的想法正在转化为具有质感的现实。这标志着一个关于磨练技艺或项目共创的良好共赢阶段。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_4',
|
||||
name: '星币·四',
|
||||
name_en: 'Four of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '4',
|
||||
keywords: ['掌控', '积蓄', '稳固', '界限感'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '反映了一种对安全感、资产或现状的强力掌控欲望。你可能正紧紧抓着某些东西不放,无论是物质财富还是既定的观念。虽然稳定,但也提醒你过度防卫可能会阻碍新鲜能量的流入。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_5',
|
||||
name: '星币·五',
|
||||
name_en: 'Five of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '5',
|
||||
keywords: ['挑战', '匮乏', '意志磨炼', '求助'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了在物质匮乏、身体不适或感到被孤立时的挑战。这种艰辛通常是显而易见的,但它也在考验你的意志力。提醒你在最暗的夜里,依然有透出光亮的窗户,请不要因为此刻的寒冷而放弃求助。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_6',
|
||||
name: '星币·六',
|
||||
name_en: 'Six of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '6',
|
||||
keywords: ['流通', '平衡分配', '互惠', '层级'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '体现了资源在一种良善且平衡的循环中流动。这可能涉及到慈善、赞助或者是工作中合理的薪资分配。它带有一种等级感的温情,提醒你无论是作为给予者还是接受者,都要学会平衡。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_7',
|
||||
name: '星币·七',
|
||||
name_en: 'Seven of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '7',
|
||||
keywords: ['评估', '耐心', '周期', '观察进度'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出一种在长期付出后,停下来审视进度与产出的沉静时刻。种子已经种下并长出了枝叶,但成熟还需时日。这是一种关于耐心的历练,提醒你此刻评估比盲目加速更有价值。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_8',
|
||||
name: '星币·八',
|
||||
name_en: 'Eight of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '8',
|
||||
keywords: ['专注', '研习', '匠心', '建立壁垒'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是关于专注力、学徒期或全身心投入到某项技艺中去的能量。通过这种日复一日的重复与精研,你正在建立起坚固的职业壁垒。这标志着一种脚踏实地的进步,是通往大师之路的基石。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_9',
|
||||
name: '星币·九',
|
||||
name_en: 'Nine of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '9',
|
||||
keywords: ['独立', '富足', '尊严', '个人空间'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '展示了一种物质极度丰富且自给自足的优雅生活。你不仅拥有了财富,更拥有了以此构建起的独立尊严与审美。这标志着一个可以充分享受个人空间与成果的理想阶段,提醒你这份回报是你应得的。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_10',
|
||||
name: '星币·十',
|
||||
name_en: 'Ten of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: '10',
|
||||
keywords: ['传承', '长期累积', '秩序', '稳固根基'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是关于家族、传承与长期以来建立起的宏大物质成就。它不仅是个人的成功,更是某种秩序或传统的延续感。这是一种顶级的稳定,提醒你从更宏观的时间尺度上去审视当下的积累。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_page',
|
||||
name: '星币·侍从',
|
||||
name_en: 'Page of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: 'page',
|
||||
keywords: ['务实建议', '实效', '萌芽', '严谨'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着一份务实的建议或一个注重实效的新起点。他可能正带着关于工作、学习或金钱的消息缓缓而来,带有一定的学习意图。请保持那种踏实且严谨的态度,小小的尝试也可能孕育大的财富。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_knight',
|
||||
name: '星币·骑士',
|
||||
name_en: 'Knight of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: 'knight',
|
||||
keywords: ['可靠', '勤勉', '慢速', '扎实'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了极致的可靠、勤勉与按部就班的行动能力。他追求稳定而非速度,每一个足迹都深深刻入土地。这暗示了一个需要你扎实行进、重视细节的过程,唯有这份慢功夫才能支撑起不倒的建筑。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_queen',
|
||||
name: '星币·王后',
|
||||
name_en: 'Queen of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: 'queen',
|
||||
keywords: ['慈悲', '打理', '养育', '现实智慧'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '展示了一种现实生活里的富足与大地母亲般的养育能量。她在管理财务与打理家园方面充满智慧,不仅务实且极富爱心。这鼓励你关注身体健康与实际生活细节,用慈悲与实干来照亮周围。'
|
||||
},
|
||||
{
|
||||
id: 'pentacles_king',
|
||||
name: '星币·国王',
|
||||
name_en: 'King of Pentacles',
|
||||
arcana: 'minor',
|
||||
suit: 'pentacles',
|
||||
number: 'king',
|
||||
keywords: ['收获', '巅峰', '物质掌控', '经营'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了物质世界的巅峰成就与绝对的掌控能力。他不仅积累了巨额的信誉或财富,还建立起了一套高效运行的物质准则。这是一份脚踏实地的王者气概,预示着一个关于收获、秩序与稳健经营的辉煌期。'
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = pentacles;
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
const swords = [
|
||||
{
|
||||
id: 'swords_ace',
|
||||
name: '宝剑·王牌',
|
||||
name_en: 'Ace of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: 'ace',
|
||||
keywords: ['理智突破', '真相', '切入', '正义'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着理性的突破与思维的清晰。它如同一柄利刃,能够切开迷雾,直达事物的本质。这是一个关于真理、公正或全新观点的启动时刻,提醒你保持冷静,用智力的锋芒去开辟道路。'
|
||||
},
|
||||
{
|
||||
id: 'swords_2',
|
||||
name: '宝剑·二',
|
||||
name_en: 'Two of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '2',
|
||||
keywords: ['僵局', '中立', '封闭', '权衡'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种处于各种因素角力下的平衡或僵局。为了保持中立或避免伤害,当前可能倾向于封闭感官,不做出决定。这是一种暂时的防御性克制,提醒你真相终将浮现,逃避并非长久之计。'
|
||||
},
|
||||
{
|
||||
id: 'swords_3',
|
||||
name: '宝剑·三',
|
||||
name_en: 'Three of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '3',
|
||||
keywords: ['创伤', '割裂', '真实痛苦', '直面'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出心碎、悲伤或言辞冲突导致的情感创伤。通常这种痛苦是难以回避的,但它也往往标志着某种必须发生的割裂。这是一个需要通过感知痛苦来达成疗愈的过程,提醒你诚实地面对创伤。'
|
||||
},
|
||||
{
|
||||
id: 'swords_4',
|
||||
name: '宝剑·四',
|
||||
name_en: 'Four of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '4',
|
||||
keywords: ['休整', '冥想', '康复', '孤独'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是一个为了康复与反思而选择的暂时休息期。你可能刚经历了一场心理或现实的激战,现在需要通过冥想或孤独来重获能量。这是一种蓄势待发,提醒你不要急于重返战场,休整也是战斗的一部分。'
|
||||
},
|
||||
{
|
||||
id: 'swords_5',
|
||||
name: '宝剑·五',
|
||||
name_en: 'Five of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '5',
|
||||
keywords: ['代价', '冲突', '自保', '胜负感'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '反映了一次充满代价的胜负,或者说是紧张的冲突局面。虽然有人赢了,但场面中缺乏真正的赢家,空气中弥漫着自私或背叛的味道。提醒你权衡输赢的成本,不要为了微小的胜利而牺牲长远。'
|
||||
},
|
||||
{
|
||||
id: 'swords_6',
|
||||
name: '宝剑·六',
|
||||
name_en: 'Six of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '6',
|
||||
keywords: ['过渡', '离岸', '趋于平静', '理智选择'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种正在远离动荡、走向平静水域的过渡状态。虽然当下的心境依然沉重,但在理智的引导下,你正在做出离开的正确决定。这是一种极其微小的转折点,预示着最为困难的阶段已经过去。'
|
||||
},
|
||||
{
|
||||
id: 'swords_7',
|
||||
name: '宝剑·七',
|
||||
name_en: 'Seven of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '7',
|
||||
keywords: ['策略', '隐瞒', '机智', '非典型方案'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出一种通过非典型、独立甚至可能带有隐瞒性质的方式去解决问题。这可能涉及到机智的策略,也可能是某种逃避。提醒你关注行为背后的真实动机,以及这种“走捷径”可能带来的后果。'
|
||||
},
|
||||
{
|
||||
id: 'swords_8',
|
||||
name: '宝剑·八',
|
||||
name_en: 'Eight of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '8',
|
||||
keywords: ['设限', '思维牢笼', '动弹不得', '恐惧干扰'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是一种由于自我设限、恐惧或过度的逻辑分析导致的动弹不得感。虽然四周布满了剑,但绳子其实是松的,眼睛是你自己闭上的。提醒你困境往往源于思维的牢笼,而非现实的绝路。'
|
||||
},
|
||||
{
|
||||
id: 'swords_9',
|
||||
name: '宝剑·九',
|
||||
name_en: 'Nine of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '9',
|
||||
keywords: ['焦虑', '心理压力', '梦魇', '过度思虑'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '反映了由过度焦虑、压力或内疚导致的心理层面的深深痛苦。那些深夜里的无法入眠往往来自于脑海中放大的恐惧。提醒你,梦境与担忧往往比现实更可怕,请尝试点亮心灯,直面那些阴影。'
|
||||
},
|
||||
{
|
||||
id: 'swords_10',
|
||||
name: '宝剑·十',
|
||||
name_en: 'Ten of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: '10',
|
||||
keywords: ['终结', '低谷', '崩塌', '转折点'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了某种事态最终的、甚至显得有些惨烈的彻底结束。它意味着你已经到达了低谷,再也没有退后的可能。这种终结虽然痛苦,但也象征着黎明的开始,因为接下来除了上升,别无他途。'
|
||||
},
|
||||
{
|
||||
id: 'swords_page',
|
||||
name: '宝剑·侍从',
|
||||
name_en: 'Page of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: 'page',
|
||||
keywords: ['洞察', '求真', '警觉', '学习者'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着一位头脑敏捷、好奇心重且乐于探索真理的学习者。他可能正带着某种新的观点或消息出现,虽然不够成熟,但极具洞察力。请用更加理智且客观的态度去观察世界,不要急于下结论。'
|
||||
},
|
||||
{
|
||||
id: 'swords_knight',
|
||||
name: '宝剑·骑士',
|
||||
name_en: 'Knight of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: 'knight',
|
||||
keywords: ['逻辑行动', '直言', '修正', '利落'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了快速、坚定且基于逻辑的行动。他勇往直前,力求通过理智的辩驳或利落的行动来达成正义与真理。这是一股极其强效的智力能量,但也提醒你,过快的思考有时会忽略情感的软着陆。'
|
||||
},
|
||||
{
|
||||
id: 'swords_queen',
|
||||
name: '宝剑·王后',
|
||||
name_en: 'Queen of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: 'queen',
|
||||
keywords: ['自律', '冷峻', '诚实', '理性判断'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '展示了一种极致清晰的判断力与不受情感左右的诚实。她能一眼识破伪善,用最为直接的方式表达主张。它代表了一个关于公正与自律的阶段,鼓励你保持冷峻的洞察,用真相来武装自己。'
|
||||
},
|
||||
{
|
||||
id: 'swords_king',
|
||||
name: '宝剑·国王',
|
||||
name_en: 'King of Swords',
|
||||
arcana: 'minor',
|
||||
suit: 'swords',
|
||||
number: 'king',
|
||||
keywords: ['原则', '秩序', '智慧权威', '界限'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了最高的理智权威与逻辑法则的守护者。他在面对纷乱问题时总能给出客观、权威且公正的裁决。这是一份基于智慧的领导力量,要求你站在全局的高度,用严谨的逻辑去构建属于你的秩序。'
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = swords;
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
const wands = [
|
||||
{
|
||||
id: 'wands_ace',
|
||||
name: '权杖·王牌',
|
||||
name_en: 'Ace of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: 'ace',
|
||||
keywords: ['行动火花', '原始动力', '开创', '萌发'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着原始的创造冲动与行动的火花。当前可能正处于一个新项目的启动期,或者是某种激情的爆发时刻。这股能量充满了生命力,鼓励你勇敢地伸出手,抓住那个新生的机遇。'
|
||||
},
|
||||
{
|
||||
id: 'wands_2',
|
||||
name: '权杖·二',
|
||||
name_en: 'Two of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '2',
|
||||
keywords: ['远景', '权衡', '筹谋', '主张'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种正在筹划与权衡未来的视野感。虽然当前已经取得了一定的基础,但更宏大的目标需要你跨出原有的舒适圈。这是一种宏观视角的思考,提醒你在行动之前先确定好你的世界版图。'
|
||||
},
|
||||
{
|
||||
id: 'wands_3',
|
||||
name: '权杖·三',
|
||||
name_en: 'Three of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '3',
|
||||
keywords: ['展望', '扩展', '等待', '长期视野'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '呈现出一种等待成果与更远大展望的状态。你已经付出了努力并播下了种子,现在正站在高处观察机会的降临或船只的归港。这标志着视野的进一步扩张,以及对长期潜力的信心。'
|
||||
},
|
||||
{
|
||||
id: 'wands_4',
|
||||
name: '权杖·四',
|
||||
name_en: 'Four of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '4',
|
||||
keywords: ['稳定', '庆典', '筑基', '和谐'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '这是一个稳固且充满喜悦的阶段。它往往代表着阶段性的成功、和谐的环境或者是某个值得庆祝的时刻。这股能量带有一种安全感与归属感,鼓励你停下来,享受当前来之不易的稳定。'
|
||||
},
|
||||
{
|
||||
id: 'wands_5',
|
||||
name: '权杖·五',
|
||||
name_en: 'Five of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '5',
|
||||
keywords: ['竞争', '摩擦', '杂乱', '磨合'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '反映了由竞争、冲突或杂乱意见导致的混乱局面。虽然每个人都在发声,但尚未形成合力,表现为一种能量的消耗。提醒你这是成长的必经阶段,在碰撞中明确规则与目标,才能打破僵局。'
|
||||
},
|
||||
{
|
||||
id: 'wands_6',
|
||||
name: '权杖·六',
|
||||
name_en: 'Six of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '6',
|
||||
keywords: ['认可', '进展', '荣耀', '鼓舞'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了获得认可的时刻与胜利的喜悦。你的努力被他人看见,并获得了一致的认同或赞誉。这是一种鼓舞人心的能量,在享受荣耀的同时,也请记得这是为了更高远的目标所做的能量积蓄。'
|
||||
},
|
||||
{
|
||||
id: 'wands_7',
|
||||
name: '权杖·七',
|
||||
name_en: 'Seven of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '7',
|
||||
keywords: ['防御', '立场', '抗压', '坚持'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '面临挑战时展现出的防御与坚定立场。虽然身处高处但需要同时应对多方的干扰或质疑,这是一场关于意志力的较量。提醒你既然占据了优势位置,就请守住底线,不要退缩。'
|
||||
},
|
||||
{
|
||||
id: 'wands_8',
|
||||
name: '权杖·八',
|
||||
name_en: 'Eight of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '8',
|
||||
keywords: ['飞速', '传达', '变化', '敏捷'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '传递了极快的速度感与迅速的变化。某种消息传递得很快,或者是原本停滞的项目突然开始飞速推进。这要求你保持高度敏捷,因为在这个瞬息万变的阶段,唯有顺时而动才能跟上节奏。'
|
||||
},
|
||||
{
|
||||
id: 'wands_9',
|
||||
name: '权杖·九',
|
||||
name_en: 'Nine of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '9',
|
||||
keywords: ['韧性', '警觉', '最后防线', '持守'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '描述了一种经历漫长疲惫后依然持有的警觉与韧性。你可能经历过很多困难,虽然现在感到有些力不从心,但依然在守卫最后一道防线。这是一个关于耐力的时刻,提醒你再坚持一下,曙光就在前方。'
|
||||
},
|
||||
{
|
||||
id: 'wands_10',
|
||||
name: '权杖·十',
|
||||
name_en: 'Ten of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: '10',
|
||||
keywords: ['负担', '过度责任', '压抑', '终点前夕'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '承担了过重责任或目标导致的极端压抑感。虽然目标就在终点前方,但过度的负担让你低下了头,看不清路。提醒你审视当前的分配方案,是否需要适当放权或舍弃一些非核心的执着。'
|
||||
},
|
||||
{
|
||||
id: 'wands_page',
|
||||
name: '权杖·侍从',
|
||||
name_en: 'Page of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: 'page',
|
||||
keywords: ['活力', '冒险', '新计划', '单纯热情'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '象征着充满活力、爱冒险的新计划开始。你对未来充满了探索的欲望,并准备迎接新的挑战或消息。请保持那份单纯的热情,即便经验尚浅,这种初生牛犊的勇气也是通向成功的重要燃料。'
|
||||
},
|
||||
{
|
||||
id: 'wands_knight',
|
||||
name: '权杖·骑士',
|
||||
name_en: 'Knight of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: 'knight',
|
||||
keywords: ['热烈', '冲动', '极速', '开拓'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了快速、热烈且甚至有些冲动的行动派。他急于证明自己,正带着满腔热血扑向他的目标。这是一种具有感染力的能量,但同时也提醒你在奔跑时也要偶尔留意一下地下的石头与方向。'
|
||||
},
|
||||
{
|
||||
id: 'wands_queen',
|
||||
name: '权杖·王后',
|
||||
name_en: 'Queen of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: 'queen',
|
||||
keywords: ['自信', '开朗', '独立', '魅力'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '展示了一种自信、开朗且富有魅力的女性化特质。她在复杂的社交或事业环境中游刃有余,拥有极强的独立性。这鼓励你展现出自己的光彩,用积极的心态去感染并领导周围的人。'
|
||||
},
|
||||
{
|
||||
id: 'wands_king',
|
||||
name: '权杖·国王',
|
||||
name_en: 'King of Wands',
|
||||
arcana: 'minor',
|
||||
suit: 'wands',
|
||||
number: 'king',
|
||||
keywords: ['远见', '权威', '掌控', '意志'],
|
||||
core: '',
|
||||
energy: '',
|
||||
description: '代表了具有远见卓识的权威与卓越的领导力。他不仅拥有行动力,更具备宏观掌控全局的智慧与定力。这标志着一种成熟的掌控权,鼓励你不仅要勇于开拓,更要建立起能够持久运行的秩序。'
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = wands;
|
||||
|
|
@ -24,5 +24,6 @@
|
|||
<text class="card-subtitle">解析星体给你的启示</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,73 @@
|
|||
// AI 配置 (建议后续迁移至后端以保证 API Key 安全)
|
||||
const DEEPSEEK_API_KEY = 'sk-f659b4c3aa954baaa6cbdbd5cae0b7d1'; // 请在此处替换您的 API Key
|
||||
const DEEPSEEK_BASE_URL = 'https://api.deepseek.com/chat/completions';
|
||||
|
||||
// --- Prompt 模板定义 ---
|
||||
|
||||
// 1. 基础版模板:平静、清晰、节制
|
||||
const TAROT_PROMPT_BASE = `你是一位克制、温和、不制造依赖的塔罗解读者。
|
||||
你的角色不是预测未来,而是陪伴当下的人理解此刻的状态。
|
||||
|
||||
【解读边界】
|
||||
- 不给命令,不下结论,不使用“你应该”“结果是”“一定会”
|
||||
- 不预测具体事件或时间,不制造焦虑或依赖
|
||||
|
||||
【语言风格】
|
||||
- 平静、清晰、节制
|
||||
- 使用“可能 / 正在 / 也许 / 可以感受到”
|
||||
- 像是轻声说明,而不是说服或劝导,避免情绪渲染与神秘化表达
|
||||
|
||||
【解读结构】
|
||||
1. 用 1–2 句话描绘这张牌当下呈现的状态氛围
|
||||
2. 结合关键词与核心含义,解释它可能对应的内在状态
|
||||
3. 用一句自然收口的话结束,不引导行动
|
||||
|
||||
【输出要求】
|
||||
- 总字数 120–180 字
|
||||
- 只输出解读文本,不使用标题、编号、分段符号`;
|
||||
|
||||
// 2. 深夜版模板:更慢、更柔和、允许留白
|
||||
const TAROT_PROMPT_NIGHT = `你是一位安静、克制、不制造依赖的塔罗解读者。
|
||||
此刻的解读更像一次低声的陪伴,而不是解释或分析。
|
||||
|
||||
【解读边界】
|
||||
- 不给建议,不下判断,不使用“你应该”“结果是”“接下来会”
|
||||
- 不预测未来事件或变化,不放大情绪,不渲染痛苦
|
||||
|
||||
【语言风格】
|
||||
- 更慢、更柔和
|
||||
- 使用“也许 / 正在 / 像是 / 仿佛”
|
||||
- 允许留白,不急着说清楚一切,文字像夜晚一样安静
|
||||
|
||||
【解读结构】
|
||||
1. 先用一句贴近当下感受的描述开头
|
||||
2. 围绕关键词展开,但重点放在“感受本身”
|
||||
3. 用一句轻微、可停住的句子结束,不指向下一步
|
||||
|
||||
【输出要求】
|
||||
- 总字数 100–160 字
|
||||
- 不使用感叹号,不使用列表、解释性语句
|
||||
- 只输出解读文本`;
|
||||
|
||||
Page({
|
||||
data: {
|
||||
todayDate: '', // 用于存储今天的日期
|
||||
// 1. 桌面上现在展示的牌 (initial: null)
|
||||
// 1. 状态管理: idle, focusing, flipping, revealed
|
||||
state: 'idle',
|
||||
currentCard: null,
|
||||
isRevealed: false, // 是否已经翻牌
|
||||
explanation: '', // 用于存储动态生成的解牌文案
|
||||
cardBackImage: '/images/beimian.png', // 牌背图片
|
||||
isRevealed: false,
|
||||
explanation: '',
|
||||
cardBackImage: '/images/beimian.png',
|
||||
|
||||
// 动画数据
|
||||
deckAnimation: {},
|
||||
cardAnimation: {},
|
||||
infoAnimation: {},
|
||||
guideAnimation: {},
|
||||
|
||||
// AI 相关
|
||||
isAiLoading: false,
|
||||
aiExplanation: '',
|
||||
|
||||
// 3. 前缀文案列表(随机抽取)
|
||||
prefixList: [
|
||||
|
|
@ -18,157 +80,181 @@ Page({
|
|||
// 2. 完整的 22 张大阿尔卡那牌组(包含逆位含义)
|
||||
cardList: [
|
||||
{
|
||||
name: "0. 愚者",
|
||||
name: "愚者",
|
||||
keyword: "新的开始",
|
||||
meaning: "放下恐惧,勇敢迈出第一步,世界充满无限可能。",
|
||||
reversedMeaning: "也许有些太冲动了?停下来检查一下背包,确保安全再出发。",
|
||||
energy: "外放",
|
||||
image: "/images/yuzhe.png"
|
||||
},
|
||||
{
|
||||
name: "I. 魔术师",
|
||||
name: "魔术师",
|
||||
keyword: "创造力",
|
||||
meaning: "你拥有实现目标所需的一切资源,现在是行动的时候。",
|
||||
reversedMeaning: "你是否低估了自己的能力?或者在犹豫不决?相信自己,工具就在手边。",
|
||||
energy: "外放",
|
||||
image: "/images/moshushi.png"
|
||||
},
|
||||
{
|
||||
name: "II. 女祭司",
|
||||
name: "女祭司",
|
||||
keyword: "直觉",
|
||||
meaning: "倾听内心的声音,答案就在你潜意识的深处。",
|
||||
reversedMeaning: "暂时听不见内心的声音了吗?别急着向外寻找,先让自己静下来。",
|
||||
energy: "内敛",
|
||||
image: "/images/nvjishi.png"
|
||||
},
|
||||
{
|
||||
name: "III. 皇后",
|
||||
name: "皇后",
|
||||
keyword: "丰饶",
|
||||
meaning: "享受生活的美好,去创造、去关爱,收获也是一种能力。",
|
||||
reversedMeaning: "是否忽略了对自己的关爱?或者有些过度保护?给彼此一点呼吸的空间。",
|
||||
energy: "柔和",
|
||||
image: "/images/nvhuang.png"
|
||||
},
|
||||
{
|
||||
name: "IV. 皇帝",
|
||||
name: "皇帝",
|
||||
keyword: "秩序",
|
||||
meaning: "建立规则和结构,理性地掌控局面,承担起责任。",
|
||||
reversedMeaning: "有时候太固执会让人疲惫,适度放权,弹性也是一种力量。",
|
||||
energy: "坚实",
|
||||
image: "/images/huangdi.png"
|
||||
},
|
||||
{
|
||||
name: "V. 教皇",
|
||||
name: "教皇",
|
||||
keyword: "指引",
|
||||
meaning: "寻求传统智慧的帮助,或者成为他人的精神导师。",
|
||||
reversedMeaning: "不必拘泥于陈规旧矩,试着打破常规,寻找适合你自己的那条路。",
|
||||
energy: "庄重",
|
||||
image: "/images/jiaohuang.png"
|
||||
},
|
||||
{
|
||||
name: "VI. 恋人",
|
||||
name: "恋人",
|
||||
keyword: "选择",
|
||||
meaning: "跟随你的心,在关系中寻找和谐,做出忠于自我的决定。",
|
||||
reversedMeaning: "现在的关系是否有些失衡?先爱自己,才能更好地爱别人。",
|
||||
energy: "柔和",
|
||||
image: "/images/lianren.png"
|
||||
},
|
||||
{
|
||||
name: "VII. 战车",
|
||||
name: "战车",
|
||||
keyword: "意志",
|
||||
meaning: "认准目标,克服相反的力量,胜利属于坚持到底的人。",
|
||||
reversedMeaning: "感觉失去了方向控制?慢下来,重新调整导航,欲速则不达。",
|
||||
energy: "激进",
|
||||
image: "/images/zhanche.png"
|
||||
},
|
||||
{
|
||||
name: "VIII. 力量",
|
||||
name: "力量",
|
||||
keyword: "勇气",
|
||||
meaning: "真正的力量是温柔的坚持,用耐心驯服内心的野兽。",
|
||||
reversedMeaning: "不要怀疑自己的韧性,面对内心的软弱并不是坏事,那是温柔的开始。",
|
||||
energy: "柔和",
|
||||
image: "/images/liliang.png"
|
||||
},
|
||||
{
|
||||
name: "IX. 隐士",
|
||||
name: "隐士",
|
||||
keyword: "内省",
|
||||
meaning: "暂时远离喧嚣,向内探索,寻找属于你自己的光。",
|
||||
reversedMeaning: "`是不是一个人待太久了?试着走出洞穴,和外界建立一点连接吧。",
|
||||
energy: "潜沉",
|
||||
image: "/images/yinzhe.png"
|
||||
},
|
||||
{
|
||||
name: "X. 命运之轮",
|
||||
name: "命运之轮",
|
||||
keyword: "转折",
|
||||
meaning: "改变是永恒的,顺势而为,抓住出现在你面前的机会。",
|
||||
reversedMeaning: "运气暂时不在你这边,但没关系,低谷正是蓄力反弹的好时机。",
|
||||
energy: "流转",
|
||||
image: "/images/mingyunzhilun.png"
|
||||
},
|
||||
{
|
||||
name: "XI. 正义",
|
||||
name: "正义",
|
||||
keyword: "因果",
|
||||
meaning: "诚实面对真相,所有的决定都会带来相应的结果。",
|
||||
reversedMeaning: "即使结果不尽如人意,也要问心无愧。对自己诚实,比什么都重要。",
|
||||
energy: "平衡",
|
||||
image: "/images/zhengyi.png"
|
||||
},
|
||||
{
|
||||
name: "XII. 倒吊人",
|
||||
name: "倒吊人",
|
||||
keyword: "换位",
|
||||
meaning: "换一个角度看世界,有时候牺牲是为了更大的获得。",
|
||||
reversedMeaning: "挣扎只会更累,不如彻底放松,换个角度看世界,也许心结就解开了。",
|
||||
energy: "停滞",
|
||||
image: "/images/daodiaoren.png"
|
||||
},
|
||||
{
|
||||
name: "XIII. 死神",
|
||||
name: "死神",
|
||||
keyword: "新生",
|
||||
meaning: "结束是为了新的开始,彻底告别过去,才能拥抱未来。",
|
||||
reversedMeaning: "还在紧抓着过去不放吗?只有腾出双手,才能接住新的礼物。",
|
||||
energy: "决绝",
|
||||
image: "/images/sishen.png"
|
||||
},
|
||||
{
|
||||
name: "XIV. 节制",
|
||||
name: "节制",
|
||||
keyword: "平衡",
|
||||
meaning: "在极端之间寻找中庸之道,融合对立,通过耐心获得疗愈。",
|
||||
reversedMeaning: "是不是有些失衡了?在这忙乱的世界里,找回你内心的节奏和中点。",
|
||||
energy: "融合",
|
||||
image: "/images/jiezhi.png"
|
||||
},
|
||||
{
|
||||
name: "XV. 恶魔",
|
||||
name: "恶魔",
|
||||
keyword: "束缚",
|
||||
meaning: "觉察那些控制你的欲望或习惯,唯有觉知才能带来解脱。",
|
||||
reversedMeaning: "别被眼前的诱惑蒙蔽,或者感觉被束缚。其实锁链是松的,你随时可以走。",
|
||||
energy: "沉重",
|
||||
image: "/images/emo.png"
|
||||
},
|
||||
{
|
||||
name: "XVI. 高塔",
|
||||
name: "高塔",
|
||||
keyword: "崩塌",
|
||||
meaning: "不要害怕突如其来的剧变,它在摧毁虚假的根基,让你重建真实。",
|
||||
reversedMeaning: "废墟中反而能看清地基。既然倒了,正好可以按照你真正想要的样子重建。",
|
||||
energy: "剧烈",
|
||||
image: "/images/ta.png"
|
||||
},
|
||||
{
|
||||
name: "XVII. 星星",
|
||||
name: "星星",
|
||||
keyword: "希望",
|
||||
meaning: "黑暗之后必有星光,保持信心,未来充满治愈与灵感。",
|
||||
reversedMeaning: "暂时看不见星星也没关系,它们还在那里。给自己一点信心,黎明就在前方。",
|
||||
energy: "明亮",
|
||||
image: "/images/xingxing.png"
|
||||
},
|
||||
{
|
||||
name: "XVIII. 月亮",
|
||||
name: "月亮",
|
||||
keyword: "幻象",
|
||||
meaning: "直面内心的不安与迷茫,并非所有事情都如表象般真实。",
|
||||
reversedMeaning: "恐惧只是长长的影子,别被它吓住。随着天亮,迷雾终会散去。",
|
||||
energy: "幽静",
|
||||
image: "/images/yueliang.png"
|
||||
},
|
||||
{
|
||||
name: "XIX. 太阳",
|
||||
name: "太阳",
|
||||
keyword: "喜悦",
|
||||
meaning: "快乐、成功与活力,尽情地发光发热,享受当下的幸福。",
|
||||
meaning: "快乐、成功与活力,尽情地发光热,享受当下的幸福。",
|
||||
reversedMeaning: "乌云暂时遮住了阳光,但这只是暂时的。保持乐观,你心里的光谁也偷不走。",
|
||||
energy: "灼热",
|
||||
image: "/images/taiyang.png"
|
||||
},
|
||||
{
|
||||
name: "XX. 审判",
|
||||
name: "审判",
|
||||
keyword: "觉醒",
|
||||
meaning: "听到内心的召唤,回顾过往,做出决定,获得新生。",
|
||||
reversedMeaning: "不要对他人的评价太敏感,也不要自我怀疑。如果你准备好了,就出发吧。",
|
||||
energy: "回响",
|
||||
image: "/images/shenpan.png"
|
||||
},
|
||||
{
|
||||
name: "XXI. 世界",
|
||||
name: "世界",
|
||||
keyword: "圆满",
|
||||
meaning: "一段旅程的完美终点,成就感与整合,准备开始新的循环。",
|
||||
reversedMeaning: "机遇还没完全成熟,再耐心一点点。检查一下还有什么细节没完成?",
|
||||
energy: "圆融",
|
||||
meaning: "一段旅程的完美终点,成就感与整合,准备开始新的循环。",
|
||||
reversedMeaning: "机遇还没完全成熟,再耐心一点点。检查一下还有什么细节没完成?",
|
||||
image: "/images/shijie.png"
|
||||
}
|
||||
]
|
||||
|
|
@ -186,48 +272,175 @@ Page({
|
|||
todayDate: dateStr
|
||||
});
|
||||
|
||||
this.startIdleAnimation();
|
||||
console.log('塔罗牌(完整版 22 张 + 逆位文案)已经洗好了...')
|
||||
},
|
||||
|
||||
// --- 抽一张牌 ---
|
||||
// --- 抽一张牌 ---
|
||||
// --- 待机呼吸动画 ---
|
||||
startIdleAnimation: function () {
|
||||
const animation = wx.createAnimation({
|
||||
duration: 2000,
|
||||
timingFunction: 'ease-in-out',
|
||||
});
|
||||
|
||||
const next = () => {
|
||||
if (this.data.state !== 'idle' && this.data.state !== 'focusing') return;
|
||||
animation.translateY(4).step();
|
||||
animation.translateY(0).step();
|
||||
this.setData({
|
||||
deckAnimation: animation.export()
|
||||
});
|
||||
};
|
||||
|
||||
next();
|
||||
this.idleTimer = setInterval(next, 4000);
|
||||
},
|
||||
|
||||
// --- 抽一张牌:进入 focusing 状态 ---
|
||||
drawCard: function () {
|
||||
if (this.data.state !== 'idle' && this.data.state !== 'revealed') return;
|
||||
|
||||
// 停止之前的呼吸动画计时器(如果有)
|
||||
if (this.idleTimer) clearInterval(this.idleTimer);
|
||||
|
||||
this.setData({
|
||||
state: 'focusing',
|
||||
currentCard: null,
|
||||
isRevealed: false,
|
||||
explanation: ''
|
||||
});
|
||||
|
||||
// 引导文案淡入
|
||||
const guideAnim = wx.createAnimation({ duration: 500, timingFunction: 'ease' });
|
||||
guideAnim.opacity(1).step();
|
||||
this.setData({ guideAnimation: guideAnim.export() });
|
||||
|
||||
// 停顿 500-800ms 后进入 flipping
|
||||
setTimeout(() => {
|
||||
this.startFlipping();
|
||||
}, 800);
|
||||
},
|
||||
|
||||
// --- 开始翻牌流程 ---
|
||||
startFlipping: function () {
|
||||
const allCards = this.data.cardList;
|
||||
const randomIndex = Math.floor(Math.random() * allCards.length);
|
||||
|
||||
// 1. 复制这张牌的数据(这也是为了安全,不弄脏牌库)
|
||||
// Object.assign 是这一行特殊的复制魔法
|
||||
const selected = Object.assign({}, allCards[randomIndex]);
|
||||
|
||||
// 2. 扔硬币:50% 概率决定是否逆位 (isReversed)
|
||||
selected.isReversed = Math.random() >= 0.5;
|
||||
|
||||
// 3. 随机选择一个前缀
|
||||
const prefixes = this.data.prefixList;
|
||||
const randomPrefixIndex = Math.floor(Math.random() * prefixes.length);
|
||||
const selectedPrefix = prefixes[randomPrefixIndex];
|
||||
|
||||
// 4. 拍桌子 (先盖着牌)
|
||||
this.setData({
|
||||
state: 'flipping',
|
||||
currentCard: selected,
|
||||
isRevealed: false, // 刚抽的时候是盖着的
|
||||
explanation: `${selectedPrefix}${selected.isReversed ? selected.reversedMeaning : selected.meaning}`
|
||||
});
|
||||
|
||||
console.log("抽到了:", selected.name, selected.isReversed ? "逆位" : "正位");
|
||||
// 卡牌抬起并旋转的动画
|
||||
const cardAnim = wx.createAnimation({
|
||||
duration: 500,
|
||||
timingFunction: 'ease-in-out'
|
||||
});
|
||||
|
||||
// 轻微抬起 (Y -10~-15px) 和旋转 (≤ 3°)
|
||||
cardAnim.translateY(-12).rotate(Math.random() * 6 - 3).step();
|
||||
this.setData({ cardAnimation: cardAnim.export() });
|
||||
|
||||
// 翻转动画是在 WXML 中通过 CSS 类控制的,这里保持一致
|
||||
setTimeout(() => {
|
||||
this.setData({ isRevealed: true });
|
||||
|
||||
// 翻牌完成后留白 300-500ms
|
||||
setTimeout(() => {
|
||||
this.setData({ state: 'revealed' });
|
||||
this.showInterpretation();
|
||||
}, 500);
|
||||
}, 500);
|
||||
},
|
||||
|
||||
// --- 翻牌动作 ---
|
||||
revealCard: function () {
|
||||
if (this.data.isRevealed) return; // 如果已经翻开了,就别动了
|
||||
// --- 展示解读内容 ---
|
||||
showInterpretation: function () {
|
||||
const infoAnim = wx.createAnimation({
|
||||
duration: 800,
|
||||
timingFunction: 'ease'
|
||||
});
|
||||
infoAnim.opacity(1).translateY(0).step();
|
||||
this.setData({ infoAnimation: infoAnim.export() });
|
||||
|
||||
// 异步获取 AI 解读
|
||||
this.fetchAiInterpretation();
|
||||
},
|
||||
|
||||
// --- 获取 AI 解读主逻辑 (DeepSeek 直接调用版) ---
|
||||
fetchAiInterpretation: function () {
|
||||
const card = this.data.currentCard;
|
||||
if (!card) return;
|
||||
|
||||
this.setData({
|
||||
isRevealed: true
|
||||
isAiLoading: true,
|
||||
aiExplanation: ''
|
||||
});
|
||||
|
||||
// 1. 构建结构化 Prompt
|
||||
const position = card.isReversed ? '逆位' : '正位';
|
||||
const core = card.isReversed ? card.reversedMeaning : card.meaning;
|
||||
|
||||
// 当前版本统一使用基础解读 Prompt (TAROT_PROMPT_BASE)
|
||||
const systemPrompt = TAROT_PROMPT_BASE;
|
||||
|
||||
const userPrompt = `请基于以下信息给出解读:
|
||||
牌名:${card.name}
|
||||
位置:${position}
|
||||
关键词:${card.keyword}
|
||||
一句话核心解读:${core}
|
||||
能量倾向:${card.energy}`;
|
||||
|
||||
console.log("正在通过 DeepSeek 生成解读...");
|
||||
|
||||
// 2. 调用 DeepSeek API
|
||||
wx.request({
|
||||
url: DEEPSEEK_BASE_URL,
|
||||
method: 'POST',
|
||||
header: {
|
||||
'Authorization': `Bearer ${DEEPSEEK_API_KEY}`,
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
data: {
|
||||
model: "deepseek-chat",
|
||||
messages: [
|
||||
{ role: "system", content: systemPrompt },
|
||||
{ role: "user", content: userPrompt }
|
||||
],
|
||||
stream: false,
|
||||
temperature: 0.7
|
||||
},
|
||||
timeout: 15000,
|
||||
success: (res) => {
|
||||
if (res.data && res.data.choices && res.data.choices[0]) {
|
||||
const aiResult = res.data.choices[0].message.content;
|
||||
this.setData({
|
||||
aiExplanation: aiResult,
|
||||
isAiLoading: false
|
||||
});
|
||||
} else {
|
||||
console.warn("DeepSeek 返回异常,执行回退");
|
||||
this.handleAiFallback();
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error("DeepSeek 请求失败:", err);
|
||||
this.handleAiFallback();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// --- 跳转星座运势 (占位) ---
|
||||
goToHoroscope: function () {
|
||||
console.log("用户点击了星座入口,准备跳转...");
|
||||
}
|
||||
// --- AI 解读失败后的回退处理 ---
|
||||
handleAiFallback: function () {
|
||||
this.setData({
|
||||
aiExplanation: this.data.explanation,
|
||||
isAiLoading: false
|
||||
});
|
||||
},
|
||||
})
|
||||
|
|
@ -10,40 +10,62 @@
|
|||
<text class="app-title">🔮 神秘塔罗 🔮</text>
|
||||
</view>
|
||||
|
||||
<!-- 1. 抽卡前的状态:如果还没抽卡 (!currentCard),显示这个 -->
|
||||
<view class="intro" wx:if="{{!currentCard}}">
|
||||
<text class="instruction">请静下心来,排除杂念</text>
|
||||
<text class="instruction">默念你想询问的问题...</text>
|
||||
<text class="instruction" style="font-size: 12px; margin-top: 20px; color: #666;">(点击下方按钮开始洗牌)</text>
|
||||
<!-- 1. 待机与引导状态 -->
|
||||
<view class="intro" wx:if="{{state === 'idle' || state === 'focusing'}}">
|
||||
<view class="deck-container" animation="{{deckAnimation}}" bindtap="drawCard">
|
||||
<image class="card-deck" src="{{cardBackImage}}" mode="widthFix"></image>
|
||||
<text class="tap-hint" wx:if="{{state === 'idle'}}">点击开始抽牌</text>
|
||||
</view>
|
||||
|
||||
<view class="guide-text" animation="{{guideAnimation}}" style="opacity: 0;">
|
||||
<text class="instruction">请在心中默念你的问题</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 2. 抽卡后的状态:如果抽了卡 (currentCard),显示这个 -->
|
||||
<view class="card-display" wx:if="{{currentCard}}">
|
||||
<view class="flip-scene" bindtap="revealCard">
|
||||
<view class="flip-card {{isRevealed ? 'flipped' : ''}}">
|
||||
<!-- A. 牌背 (正面朝上时显示) -->
|
||||
<view class="card-face face-back">
|
||||
<image class="card-image" src="{{cardBackImage}}" mode="widthFix"></image>
|
||||
<text class="hint-text">👆 点击揭晓</text>
|
||||
</view>
|
||||
<!-- 2. 抽牌与结果展示状态 -->
|
||||
<view class="card-display" wx:if="{{state === 'flipping' || state === 'revealed'}}">
|
||||
<view class="flip-scene" animation="{{cardAnimation}}">
|
||||
<view class="flip-card {{isRevealed ? 'flipped' : ''}}">
|
||||
<!-- A. 牌背 -->
|
||||
<view class="card-face face-back">
|
||||
<image class="card-image" src="{{cardBackImage}}" mode="widthFix"></image>
|
||||
</view>
|
||||
|
||||
<!-- B. 牌面 (翻转后显示) -->
|
||||
<view class="card-face face-front">
|
||||
<image class="card-image {{currentCard.isReversed ? 'reversed' : ''}}" src="{{currentCard.image}}" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- B. 牌面 -->
|
||||
<view class="card-face face-front">
|
||||
<image class="card-image {{currentCard.isReversed ? 'reversed' : ''}}" src="{{currentCard.image}}" mode="widthFix"></image>
|
||||
</view>
|
||||
|
||||
<!-- 此处文字区域只在翻牌后显示,加一个淡入动画 -->
|
||||
<view class="card-info {{isRevealed ? 'visible' : ''}}">
|
||||
<text class="card-name">{{currentCard.name}} {{currentCard.isReversed ? '(逆位)' : ''}}</text>
|
||||
<text class="card-meaning">{{explanation}}</text>
|
||||
|
||||
<!-- 星座入口占位 -->
|
||||
<view class="horoscope-entry" bindtap="goToHoroscope">
|
||||
<text>👉 查看今日星座运势</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 解读区域:翻牌完成 (revealed) 后显示 -->
|
||||
<view class="card-info" animation="{{infoAnimation}}" style="opacity: 0; transform: translateY(20px);">
|
||||
<!-- 1. 牌名与位置 -->
|
||||
<view class="info-header">
|
||||
<text class="card-name">{{currentCard.name}}</text>
|
||||
<text class="card-pos">{{currentCard.isReversed ? '· 逆位' : '· 正位'}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 2. 关键词 (权重最高) -->
|
||||
<view class="keyword-area">
|
||||
<text class="keyword-tag">{{currentCard.keyword}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 3. 一句话核心解读 (判词) -->
|
||||
<view class="core-meaning">
|
||||
<text>{{currentCard.isReversed ? '警告:' : '启示:'}}{{currentCard.isReversed ? currentCard.reversedMeaning : currentCard.meaning}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 4. 详细解释文本 (权重最低) -->
|
||||
<view class="detail-explanation">
|
||||
<view class="loading-ai" wx:if="{{isAiLoading}}">
|
||||
<text class="loading-dot">···</text>
|
||||
<text>AI 正在感应心灵能量...</text>
|
||||
</view>
|
||||
<text class="explanation-text" wx:else>{{aiExplanation || explanation}}</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 3. 抽卡按钮:点击触发 drawCard -->
|
||||
|
|
|
|||
|
|
@ -41,18 +41,49 @@ page {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 还没抽卡时的提示字 */
|
||||
/* 引导区域 */
|
||||
.intro {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.deck-container {
|
||||
position: relative;
|
||||
width: 160px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card-deck {
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.tap-hint {
|
||||
position: absolute;
|
||||
bottom: -25px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
color: #e94560;
|
||||
font-size: 12px;
|
||||
opacity: 0.8;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.guide-text {
|
||||
margin-top: 20px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.instruction {
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
margin-bottom: 8px;
|
||||
opacity: 0.8;
|
||||
font-size: 16px;
|
||||
letter-spacing: 1px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
/* 卡牌展示出的框框 */
|
||||
|
|
@ -65,18 +96,17 @@ page {
|
|||
border-radius: 12px;
|
||||
box-shadow: 0 0 15px rgba(233, 69, 96, 0.3);
|
||||
margin-bottom: 20px; /* 减小间距 */
|
||||
/* width: 90%; 保持这一行,或者在下面的 flip-scene 里控制宽度 */
|
||||
}
|
||||
|
||||
/* --- 翻牌动画核心样式 --- */
|
||||
|
||||
/* 1. 场景容器:提供 3D 景深 */
|
||||
.flip-scene {
|
||||
width: 200px; /* 限制宽度,根据具体图片比例调整 */
|
||||
height: 333px; /* 假设图片比例 3:5,根据实际显示调整 */
|
||||
width: 200px;
|
||||
height: 333px;
|
||||
perspective: 1000px;
|
||||
margin-bottom: 20px;
|
||||
position: relative; /* 让提示文字可以定位 */
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* 2. 翻转实体:包含正反两面,执行旋转 */
|
||||
|
|
@ -84,22 +114,13 @@ page {
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
transition: transform 0.6s; /* 复位时使用普通过渡 */
|
||||
transition: transform 0.5s ease-in-out;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
/* 定义呼吸翻牌关键帧 - 疗愈版 */
|
||||
@keyframes breathFlip {
|
||||
0% { transform: scale(1) rotateY(0deg); }
|
||||
35% { transform: scale(0.97) rotateY(0deg); } /* 缓慢吸气 */
|
||||
60% { transform: scale(1.02) rotateY(0deg); } /* 连贯呼气 */
|
||||
100% { transform: scale(1) rotateY(180deg); } /* 稳步翻转 */
|
||||
}
|
||||
|
||||
/* 翻转状态:应用动画 */
|
||||
/* 翻转状态 */
|
||||
.flip-card.flipped {
|
||||
/* 延长到 1.8s,使用更舒缓的贝塞尔曲线 */
|
||||
animation: breathFlip 1.8s cubic-bezier(0.3, 0.0, 0.4, 1) forwards;
|
||||
transform: rotateY(180deg);
|
||||
}
|
||||
|
||||
/* 3. 正反面公共样式 */
|
||||
|
|
@ -107,23 +128,23 @@ page {
|
|||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
backface-visibility: hidden; /* 背面不可见 */
|
||||
backface-visibility: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 12px;
|
||||
overflow: hidden; /* 防止图片溢出圆角 */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 背面(Face Back):初始正面朝上,旋转 0 度 */
|
||||
/* 背面 */
|
||||
.face-back {
|
||||
background-color: #16213e;
|
||||
transform: rotateY(0deg);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
/* 正面(Face Front):初始背面朝上,预先旋 180 度 */
|
||||
/* 正面 */
|
||||
.face-front {
|
||||
background-color: #16213e;
|
||||
transform: rotateY(180deg);
|
||||
|
|
@ -133,7 +154,7 @@ page {
|
|||
.card-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block; /* 消除图片底部缝隙 */
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* 提示点击的文字 */
|
||||
|
|
@ -148,63 +169,110 @@ page {
|
|||
z-index: 3;
|
||||
}
|
||||
|
||||
/* --- 文字信息淡入动画 --- */
|
||||
/* --- 文字信息层级样式 --- */
|
||||
.card-info {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
/* 配合 1.8s 的总时长,延迟到 1.0s 左右开始浮现 */
|
||||
transition: opacity 0.8s ease 1.0s, transform 0.8s ease 1.0s;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.card-info.visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
.info-header {
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.card-name {
|
||||
color: #e94560;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.card-meaning {
|
||||
color: #fff;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-pos {
|
||||
color: #e94560;
|
||||
font-size: 14px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.keyword-area {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.keyword-tag {
|
||||
background: rgba(233, 69, 96, 0.15);
|
||||
color: #e94560;
|
||||
padding: 6px 16px;
|
||||
border-radius: 20px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
border: 1px solid rgba(233, 69, 96, 0.3);
|
||||
}
|
||||
|
||||
.core-meaning {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
line-height: 1.4;
|
||||
margin-bottom: 15px;
|
||||
line-height: 1.6;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* 星座入口样式 */
|
||||
.horoscope-entry {
|
||||
margin-top: 20px;
|
||||
padding: 10px;
|
||||
opacity: 0.9;
|
||||
.detail-explanation {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
padding: 15px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 20px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.horoscope-entry text {
|
||||
color: #a29bfe; /* 浅紫色,以此区分 */
|
||||
font-size: 14px;
|
||||
text-decoration: underline; /*以此暗示可点击*/
|
||||
cursor: pointer;
|
||||
.explanation-text {
|
||||
color: #aaa;
|
||||
font-size: 13px;
|
||||
text-align: justify;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 按钮稍微美化一下 */
|
||||
|
||||
/* 按钮美化 */
|
||||
.draw-btn {
|
||||
background-color: #0f3460 !important;
|
||||
border: 1px solid #e94560 !important;
|
||||
color: #fff !important;
|
||||
width: 65% !important;
|
||||
border-radius: 25px;
|
||||
margin-top: 40px;
|
||||
width: 80% !important;
|
||||
background-color: #e94560 !important;
|
||||
border-radius: 25px !important;
|
||||
font-weight: bold !important;
|
||||
box-shadow: 0 4px 15px rgba(233, 69, 96, 0.3);
|
||||
font-size: 16px !important;
|
||||
padding: 8px 0 !important;
|
||||
}
|
||||
|
||||
/* 逆位时的图片样式:旋转 180 度 */
|
||||
|
||||
|
||||
/* 逆位时的图片样式 */
|
||||
.card-image.reversed {
|
||||
transform: rotate(180deg);
|
||||
transition: transform 0.5s;
|
||||
}
|
||||
}
|
||||
|
||||
/* AI 加载状态 */
|
||||
.loading-ai {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
color: #666;
|
||||
font-size: 12px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
@keyframes flash {
|
||||
0%, 100% { opacity: 0.3; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
|
||||
.loading-dot {
|
||||
font-size: 24px;
|
||||
color: #e94560;
|
||||
margin-bottom: 5px;
|
||||
animation: flash 1.5s infinite;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue