dsh-metaphysics 0.60.0 → 0.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1550 -1435
- package/README.md +17 -14
- package/client.almanac.js +24 -24
- package/client.bazi.js +120 -112
- package/client.chenggu.js +40 -40
- package/client.convert.js +22 -22
- package/client.daliuren.js +79 -79
- package/client.fengshui.js +29 -29
- package/client.hepan.js +111 -103
- package/client.js +282 -263
- package/client.liuyao.js +101 -100
- package/client.mbti.js +21 -21
- package/client.name.js +71 -71
- package/client.numerology.js +21 -21
- package/client.qimen.js +82 -82
- package/client.star.js +14 -14
- package/client.tarot.js +107 -107
- package/client.trend.js +81 -81
- package/client.xiaoliuren.js +30 -30
- package/client.zeri.js +59 -59
- package/client.ziwei.js +116 -108
- package/engine/citations.js +4 -0
- package/engine/diff.js +3 -0
- package/engine/event-prompt.js +7 -1
- package/engine/followup.js +16 -1
- package/engine/index.js +16 -3
- package/engine/interpret-knowledge.js +21 -0
- package/engine/interpret.js +7 -3
- package/engine/liuyao.js +4 -0
- package/engine/meihua.js +3 -0
- package/engine/name-data.js +24 -78
- package/engine/name-extra.js +415 -0
- package/engine/name.js +36 -9
- package/engine/plain-summary.js +5 -1
- package/engine/surname-data.js +249 -0
- package/engine/tarot-cards.js +143 -0
- package/engine/tarot.js +74 -27
- package/engine/yijing-text.js +792 -0
- package/engine/zeri-shensha.js +958 -0
- package/engine/zeri.js +126 -28
- package/engine/ziwei-zuoyao.js +313 -0
- package/engine/ziwei.js +37 -1
- package/index.js +6 -1
- package/package.json +2 -2
- package//345/221/275/347/220/206/346/216/222/347/233/230.html +3324 -163
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// 塔罗 78 张逐张库(H3)。
|
|
2
|
+
//
|
|
3
|
+
// 【底本与口径】牌面 = Rider-Waite-Smith(1909);占星对应取黄金黎明/通行 Western 表,
|
|
4
|
+
// 与三处独立来源互核后写死(tarotoo 数据集、维基百科「托特塔罗牌」对应表、公开中文黄金黎明表)。
|
|
5
|
+
// 三条口径,宁可留空也不合成一句假共识:
|
|
6
|
+
// · 数字牌 2-10:花色定三分相星座(本位→固定→变动),二三四/五六七/八十 依次落进这三个星座;
|
|
7
|
+
// 同一组内第一/二/三张各占该星座的第一/二/三旬,旬主星按迦勒底连续序(白羊一旬起火星):
|
|
8
|
+
// 例:权杖二=火星在白羊座第一旬,权杖四=金星在白羊座第三旬,圣杯九=木星在双鱼座第二旬。
|
|
9
|
+
// 另一派「每个星座的第一旬归本星座守护星」的旬主星表(巨蟹一旬起月亮)与 777 系不同,
|
|
10
|
+
// 本库取 777/黄金黎明一路,因为小牌的星座-行星对应就是按它排的;两派不合并。
|
|
11
|
+
// · 首牌:只给源质 Kether(王冠)与花色三分相,不落单一星座——它是该元素的根源,不是某一段。
|
|
12
|
+
// · 宫廷牌:不给星座与主星。公开表里「国王=本位/王后=固定/骑士=变动」
|
|
13
|
+
// 与黄金黎明的四元素层级(骑士=火、国王=风、王后=土、侍从=水)两套映射互相冲突,
|
|
14
|
+
// 同一套里还各派不一(权杖与圣杯的国王、王后在两派里对调),故留空并在 systemNote 里说明。
|
|
15
|
+
// · 大牌:行星与星座按守护星关系互核(天蝎兼收火星/冥王星,水瓶兼收土星/天王星,
|
|
16
|
+
// 双鱼兼收木星/海王星);22 条径(希伯来字母)这一层未经核对,本库不出。
|
|
17
|
+
// 源质序(seph):首牌 1 → 十牌 10,对应 SEPHIROTH 下标。大牌与小牌同名不同层级,故大牌留空。
|
|
18
|
+
//
|
|
19
|
+
// 每行:[牌名, 英文名, 元素(小牌), 旬主星/行星, 星座, 源质序, 牌面图像, 核心寓意(小牌)]
|
|
20
|
+
|
|
21
|
+
// 花色 → 三分相星座(本位、固定、变动)
|
|
22
|
+
export const SUIT_SIGNS = {"权杖":["白羊座","狮子座","射手座"],"圣杯":["巨蟹座","天蝎座","双鱼座"],"宝剑":["天秤座","水瓶座","双子座"],"星币":["摩羯座","金牛座","处女座"]};
|
|
23
|
+
|
|
24
|
+
// 花色 → 2..10 号牌的旬主星
|
|
25
|
+
export const DECAN_PLANETS = {"权杖":["火星","太阳","金星","土星","木星","火星","水星","月亮","土星"],"圣杯":["金星","水星","月亮","火星","太阳","金星","土星","木星","火星"],"宝剑":["月亮","土星","木星","金星","水星","月亮","木星","火星","太阳"],"星币":["木星","火星","太阳","水星","月亮","土星","太阳","金星","水星"]};
|
|
26
|
+
|
|
27
|
+
// 十源质(首牌→十牌)
|
|
28
|
+
export const SEPHIROTH = ["Kether(王冠)","Chokmah(智慧)","Binah(理解)","Chesed(仁慈)","Geburah(严烈)","Tiphareth(美丽)","Netzach(胜利)","Hod(光辉)","Yesod(基础)","Malkuth(国度)"];
|
|
29
|
+
|
|
30
|
+
// 旬位(同组内第一/二/三张 → 该星座的第一/二/三旬)
|
|
31
|
+
export const DECAN_CN = ["第一旬","第二旬","第三旬"];
|
|
32
|
+
|
|
33
|
+
export const CARD_ROWS = [
|
|
34
|
+
["愚者","The Fool","","天王星","水瓶座","","年轻人立于崖边,行囊只一件、白玫瑰在手里,抬头看天没看脚下",""],
|
|
35
|
+
["魔术师","The Magician","","水星","双子座","","桌上摊开权杖、圣杯、宝剑、星币四样,他一手举杖一手指天",""],
|
|
36
|
+
["女祭司","The High Priestess","","月亮","巨蟹座","","黑白两柱之间坐着戴月冠的女子,膝上摊着一卷书",""],
|
|
37
|
+
["皇后","The Empress","","金星","金牛座","","麦田与树林里,丰盈的女子倚坐,长袍上缀着石榴",""],
|
|
38
|
+
["皇帝","The Emperor","","火星","白羊座","","山巅石座上披甲端坐,一手权杖一手球体,座侧雕着羊头",""],
|
|
39
|
+
["教皇","The Hierophant","","金星","金牛座","","两级石座间举着三重十字,两名黑衣侍者跪在脚前",""],
|
|
40
|
+
["恋人","The Lovers","","水星","双子座","","树上天使张开双翼俯视,下方一男一女赤诚相对",""],
|
|
41
|
+
["战车","The Chariot","","月亮","巨蟹座","","黑白两头狮身人面像并拉战车,驭者握缰不回头",""],
|
|
42
|
+
["力量","Strength","","太阳","狮子座","","白衣女子双手轻扶狮口,头顶一道无限符号",""],
|
|
43
|
+
["隐者","The Hermit","","水星","处女座","","灰袍老人独立山顶,提一盏六角星灯,拄杖往下看",""],
|
|
44
|
+
["命运之轮","Wheel of Fortune","","木星","射手座","","巨轮悬在半空,四角各有一活物捧书,轮上轮下各有升降",""],
|
|
45
|
+
["正义","Justice","","金星","天秤座","","座上人一手天平一手剑,黄帐在后,目光平直",""],
|
|
46
|
+
["倒吊人","The Hanged Man","","海王星","双鱼座","","一人单足绑在 T 形树上,双手背在身后,头边一圈亮光",""],
|
|
47
|
+
["死神","Death","","火星","天蝎座","","白马踏过田野,马上骷髅举旗,远处太阳从两塔之间升起",""],
|
|
48
|
+
["节制","Temperance","","木星","射手座","","天使一脚踏地一脚入水,两杯之间倒出一道水线",""],
|
|
49
|
+
["恶魔","The Devil","","土星","摩羯座","","石台上长角巨物蹲着,台前男女各锁一条松垮的铁链",""],
|
|
50
|
+
["高塔","The Tower","","火星","白羊座","","闪电劈落塔顶,火焰中两人坠落,王冠被掀上天",""],
|
|
51
|
+
["星星","The Star","","土星","水瓶座","","夜空下女子单膝跪入水,一壶倒在地上、一壶举向天,八颗星环绕",""],
|
|
52
|
+
["月亮","The Moon","","木星","双鱼座","","塔间小狗与狼对月而吠,螯虾从池中探出,路在两山间拐弯",""],
|
|
53
|
+
["太阳","The Sun","","太阳","狮子座","","向日葵墙下,裸身孩童骑在白马上张开手臂,天晴无云",""],
|
|
54
|
+
["审判","Judgement","","冥王星","天蝎座","","天使吹号,棺木里的人起身张开手臂,红旗上是一道十字",""],
|
|
55
|
+
["世界","The World","","土星","摩羯座","","蓝色天空里,花环中的舞者手持两杖,四角各有一活物",""],
|
|
56
|
+
["权杖一","Ace of Wands","火","","",1,"云中伸出一只手,握住一根粗壮权杖,远处是城堡与花园","热情被点着了,先做出第一下"],
|
|
57
|
+
["权杖二","Two of Wands","火","火星","白羊座",2,"城墙上的人一手扶杖一手托地球仪,望着山海分界的方向","本钱已经在手,下一步是敢不敢出门"],
|
|
58
|
+
["权杖三","Three of Wands","火","太阳","白羊座",3,"崖边的人背身望着海面船只,三根权杖立在身旁","布局已经出手,等第一次回声"],
|
|
59
|
+
["权杖四","Four of Wands","火","金星","白羊座",4,"四根权杖搭成挂花环的拱门,两人举花迎接,城堡在后","阶段性站稳了,值得停下来庆一下"],
|
|
60
|
+
["权杖五","Five of Wands","火","土星","狮子座",5,"五个人各持一根木棒相互比划,天色明亮,无人拦阻","摩擦是真的,但没人真的受伤"],
|
|
61
|
+
["权杖六","Six of Wands","火","木星","狮子座",6,"头戴桂冠的人骑在马上,手持饰花的权杖走在队伍前","成果被看见了,也别忘了带谁一起"],
|
|
62
|
+
["权杖七","Seven of Wands","火","火星","狮子座",7,"高处的人紧握一根权杖,下方六根斜着刺上来","占了高地,就得挨得住围攻"],
|
|
63
|
+
["权杖八","Eight of Wands","火","水星","射手座",8,"八根权杖平行掠过原野与河流,尖端指向同一个方向","节奏对上了,消息和进展一起来"],
|
|
64
|
+
["权杖九","Nine of Wands","火","月亮","射手座",9,"头上缠着绷带的人靠着一根权杖警戒,身后八根排成栅栏","撑到这一步,守的是最后一口气"],
|
|
65
|
+
["权杖十","Ten of Wands","火","土星","射手座",10,"一个人把十根权杖抱成一座山往前挪,远处是村舍","担子超重,先问哪些不是你的"],
|
|
66
|
+
["权杖侍从","Page of Wands","火","","","","少年双手举着一根比他还高的权杖端详,身后是热闹市集","热忱和消息来了,先接住再验货"],
|
|
67
|
+
["权杖骑士","Knight of Wands","火","","","","红袍骑士骑着跃起的斑点马,手中权杖直指前方","冲劲最盛时,也正是方向最模糊时"],
|
|
68
|
+
["权杖王后","Queen of Wands","火","","","","黑衣女子一手权杖一手向日葵,脚边蜷着一只黑猫","感染力是资源,先用在自己身上"],
|
|
69
|
+
["权杖国王","King of Wands","火","","","","披甲国王坐在宝座上手持权杖,脚边有火蜥蜴来回","敢定方向也敢担后果,权威才立得住"],
|
|
70
|
+
["圣杯一","Ace of Cups","水","","",1,"手心托着一只满溢的圣杯,五道水流下,水面浮着白色睡莲","情感有了出口,先允许它流动"],
|
|
71
|
+
["圣杯二","Two of Cups","水","金星","巨蟹座",2,"两人各持一杯相对而饮,中间悬着双蛇缠绕的短杖","两边都递出去,才算对等的关系"],
|
|
72
|
+
["圣杯三","Three of Cups","水","水星","巨蟹座",3,"三位女子挽手举杯相庆,身前果盘与鲜花累累","喜悦要有人分才会长成倍"],
|
|
73
|
+
["圣杯四","Four of Cups","水","月亮","巨蟹座",4,"树下的人抱臂闭目,云里又递来一杯,眼前三只杯没动","不是没机会,是不肯再看一眼"],
|
|
74
|
+
["圣杯五","Five of Cups","水","火星","天蝎座",5,"黑袍人低头看着三只倾倒的空杯,身后还有两只立着,河上有桥","损失看得见,剩下的也还在"],
|
|
75
|
+
["圣杯六","Six of Cups","水","太阳","天蝎座",6,"高墙前的两个孩童互递装满花的杯,地面铺着落叶","旧事带着甜,别把它当作现在"],
|
|
76
|
+
["圣杯七","Seven of Cups","水","金星","天蝎座",7,"云雾里浮着七只杯,各盛冠冕、龙、宝石等不同的幻象","选项越多,越要挑能落地的那个"],
|
|
77
|
+
["圣杯八","Eight of Cups","水","土星","双鱼座",8,"月下的人转身离开排成两列的八只杯,往山里走","已经拥有的填不满,所以要走"],
|
|
78
|
+
["圣杯九","Nine of Cups","水","木星","双鱼座",9,"双臂交叠的人满足地坐在整齐九只杯前,身后挂着头饰","心愿到手了,享受也别过量"],
|
|
79
|
+
["圣杯十","Ten of Cups","水","火星","双鱼座",10,"一对男女相向鞠躬,孩子们在一旁,十只杯架在彩虹上","圆满要有人一起才算数"],
|
|
80
|
+
["圣杯侍从","Page of Cups","水","","","","少年扶着一只杯,杯中一条鱼探出头来","灵感很软,要留一点天真才接得住"],
|
|
81
|
+
["圣杯骑士","Knight of Cups","水","","","","骑士骑白马平举圣杯缓行,岸边有浪与远山","邀约优雅,也要问一句怎么落地"],
|
|
82
|
+
["圣杯王后","Queen of Cups","水","","","","女子凝视一只覆着七颗珠的杯,座边海潮翻卷","共情是天赋,边界是功课"],
|
|
83
|
+
["圣杯国王","King of Cups","水","","","","宝座立在波涛中的礁石上,国王一手杯一手权杖","情绪稳了才谈掌控,别让浪替你说话"],
|
|
84
|
+
["宝剑一","Ace of Swords","风","","",1,"云中一手举剑,剑尖穿过一顶桂冠,两侧山壁陡峭","一句真话能切开结,先算得起代价"],
|
|
85
|
+
["宝剑二","Two of Swords","风","月亮","天秤座",2,"蒙眼女子坐在海边石上,双手各持一剑交叉","两边都有理,所以迟迟落不下子"],
|
|
86
|
+
["宝剑三","Three of Swords","风","土星","天秤座",3,"空中三只剑穿过一颗悬着的心,雨落下来","伤要先承认,才谈得上愈合"],
|
|
87
|
+
["宝剑四","Four of Swords","风","木星","天秤座",4,"石台上躺着的骑士雕像双手合十,三剑在上、一剑在下","休息不是逃,是为了把判断找回来"],
|
|
88
|
+
["宝剑五","Five of Swords","风","金星","水瓶座",5,"一人抱着三把剑回头而笑,另两人从背影离场","赢了的代价也是代价"],
|
|
89
|
+
["宝剑六","Six of Swords","风","水星","水瓶座",6,"船夫撑舟带披斗篷的乘客离岸,六把剑插在船侧","先离开现场,事情会轻一点"],
|
|
90
|
+
["宝剑七","Seven of Swords","风","月亮","水瓶座",7,"一人回头抱着五把剑溜走,营地里还剩两把没动","策略一旦藏着,就得准备被拆穿"],
|
|
91
|
+
["宝剑八","Eight of Swords","风","木星","双子座",8,"蒙眼捆身的女子立在八把剑围成的栅栏里,远处是水面","困住的是念头,不是手脚"],
|
|
92
|
+
["宝剑九","Nine of Swords","风","火星","双子座",9,"床上女子掩面坐起,床头的帘上挂着九把剑","天亮前最难熬,但它真的会亮"],
|
|
93
|
+
["宝剑十","Ten of Swords","风","太阳","双子座",10,"十把剑穿身倒卧的人,身旁天际已经发白","到了谷底,就只剩向上的路"],
|
|
94
|
+
["宝剑侍从","Page of Swords","风","","","","少年侧身举剑回望,身后一群飞鸟掠过","求知与警觉是好的,别变成抢白"],
|
|
95
|
+
["宝剑骑士","Knight of Swords","风","","","","白马骑士举剑疾驰,树木被风向一边压弯","话说得快,先想清楚要砍在哪里"],
|
|
96
|
+
["宝剑王后","Queen of Swords","风","","","","侧坐的女子右手举剑指天,左手平伸,座上刻着蝴蝶与月","明辨是力量,尖刻只是它的影子"],
|
|
97
|
+
["宝剑国王","King of Swords","风","","","","国王正面端坐持剑,面容严厉,宝座雕纹繁复","判断要有原则,也要留一条能说话的路"],
|
|
98
|
+
["星币一","Ace of Pentacles","土","","",1,"手心托着一枚大星币,下方是整齐花园,远处山势陡峭","机会得落进地里才长得出来"],
|
|
99
|
+
["星币二","Two of Pentacles","土","木星","摩羯座",2,"舞动的人把两枚星币套在无限符号里,海面两艘船正遇风浪","收支两头要平衡,得每天重新调"],
|
|
100
|
+
["星币三","Three of Pentacles","土","火星","摩羯座",3,"教堂里工匠正在刻石,两人拿着图纸与他商议","手艺被认可,是因为能被验收"],
|
|
101
|
+
["星币四","Four of Pentacles","土","太阳","摩羯座",4,"一人把一枚星币紧抱在胸前,头顶与脚边各压着一枚","守住不等于安全,先分清哪笔是不敢花"],
|
|
102
|
+
["星币五","Five of Pentacles","土","水星","金牛座",5,"两人踏雪经过亮着窗灯的石教堂,其中一人腿有不便","匮乏里最难的是开口求助"],
|
|
103
|
+
["星币六","Six of Pentacles","土","月亮","金牛座",6,"举秤者分发钱币,两名提篮的乞者跪在脚边","给和受都留体面,这笔账才走得长"],
|
|
104
|
+
["星币七","Seven of Pentacles","土","土星","金牛座",7,"农夫倚着镰刀望着藤架上七枚星币,果实尚未熟透","收成前的等待,别用急躁去浇水"],
|
|
105
|
+
["星币八","Eight of Pentacles","土","太阳","处女座",8,"工匠埋头锤打一枚星币,身后山坡上八枚排成一列","熟练来自重复,先把这一件做完"],
|
|
106
|
+
["星币九","Nine of Pentacles","土","金星","处女座",9,"长袍女子站在葡萄园里,戴着猎鹰的手套举起,墙内是城堡","自足是挣来的,也允许自己享受它"],
|
|
107
|
+
["星币十","Ten of Pentacles","土","水星","处女座",10,"庭院中老人持杖,情侣与孩子相对,十枚星币绕成花环","基业是长期的,短视会啃地基"],
|
|
108
|
+
["星币侍从","Page of Pentacles","土","","","","少年双手捧着一枚星币细看,身后是开阔田野","踏实起步,先学能验证的那一部分"],
|
|
109
|
+
["星币骑士","Knight of Pentacles","土","","","","骑士骑黑马静立不动,双手平托一枚星币","慢不是停滞,是把每一步压实"],
|
|
110
|
+
["星币王后","Queen of Pentacles","土","","","","女子一手星币一手藤蔓,脚边一只野兔","照料和务实互相养,别只留一头"],
|
|
111
|
+
["星币国王","King of Pentacles","土","","","","藤蔓缠绕的宝座上,国王手持星币,座侧雕着牛头","资源怎么用才算守得住,这是他的题"],
|
|
112
|
+
];
|
|
113
|
+
|
|
114
|
+
// 牌名 → 逐张数据(占星列按大牌/小牌口径组装成一句,不留空串冒充「已考证」)
|
|
115
|
+
export const CARD_LIB = {};
|
|
116
|
+
for (const [name, en, el, planet, sign, seph, img, core] of CARD_ROWS) {
|
|
117
|
+
const tree = seph ? SEPHIROTH[seph - 1] : '';
|
|
118
|
+
const decan = seph >= 2 && seph <= 10 ? DECAN_CN[(seph - 2) % 3] : '';
|
|
119
|
+
CARD_LIB[name] = {
|
|
120
|
+
en,
|
|
121
|
+
el,
|
|
122
|
+
planet,
|
|
123
|
+
sign,
|
|
124
|
+
sephira: tree,
|
|
125
|
+
decan,
|
|
126
|
+
img,
|
|
127
|
+
core,
|
|
128
|
+
astro: planet && sign ? `${planet}在${sign}${decan ? `(${decan})` : ''}` : planet || '',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export const CARD_COUNTS = {
|
|
133
|
+
total: CARD_ROWS.length,
|
|
134
|
+
major: 22,
|
|
135
|
+
minor: 56,
|
|
136
|
+
// 有旬主星+旬座的数字牌 36 张;首牌 4 张只给源质;宫廷 16 张不给占星(口径见顶部)
|
|
137
|
+
pipAstro: CARD_ROWS.filter((r) => r[3] && r[4] && r[5] >= 2).length,
|
|
138
|
+
aceTree: CARD_ROWS.filter((r) => r[5] === 1).length,
|
|
139
|
+
courtNoAstro: CARD_ROWS.filter((r) => ['侍从', '骑士', '王后', '国王'].includes(r[0].slice(-2))).length,
|
|
140
|
+
majorAstro: CARD_ROWS.filter((r) => !r[2] && r[3] && r[4]).length,
|
|
141
|
+
withImg: CARD_ROWS.filter((r) => r[6]).length,
|
|
142
|
+
withCore: CARD_ROWS.filter((r) => r[7]).length,
|
|
143
|
+
};
|
package/engine/tarot.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
// 塔罗牌:78 张(22 大阿卡纳 + 56 小阿卡纳),抽牌、牌阵与解读
|
|
2
2
|
//
|
|
3
|
+
// 逐张库(英文名、牌面图像、旬主星/旬座、生命树源质)在 engine/tarot-cards.js,
|
|
4
|
+
// 本文件只负责组牌、抽牌与解读;两侧共用同一份牌名,牌名对不上会直接测出来。
|
|
5
|
+
//
|
|
3
6
|
// 【流派说明】塔罗是一套象征系统,而非确定性预言。本文件采用:
|
|
4
|
-
// ·
|
|
7
|
+
// · 牌名、编号、牌面:RWS(韦特)体系 —— 力量 = VIII、正义 = XI;
|
|
5
8
|
// 马赛体系里两者的编号相反(VIII 正义 / XI 力量),仅编号差异,牌义不变。
|
|
6
|
-
// · 大牌元素:黄金黎明(Golden Dawn
|
|
7
|
-
// ·
|
|
9
|
+
// · 大牌元素:黄金黎明(Golden Dawn)对应;行星/星座按守护星关系互核(详见 tarot-cards.js 口径注释)。
|
|
10
|
+
// · 小牌元素:权杖火、圣杯水、宝剑风、星币土(通行);2-10 号牌另给三分相旬位,首牌给源质。
|
|
11
|
+
// · 宫廷牌:只给花色元素,不给星座与主星——公开表里两套映射互相冲突,合并不成一句真话。
|
|
8
12
|
// · 逆位读法:取「同一股力量未顺过来 / 用力过猛 / 内在化」三义,
|
|
9
13
|
// 不采用「逆位即纯凶」的流派;不同流派对逆位的取舍不同,此处取中性偏提醒。
|
|
10
14
|
// 以上差异在 reading 与结果字段 systemNote 中均有标注,避免被当作唯一正解。
|
|
15
|
+
import { CARD_LIB, CARD_COUNTS } from './tarot-cards.js';
|
|
11
16
|
|
|
12
17
|
const MAJOR = [
|
|
13
18
|
['愚者', '0', '新开始 冒险 纯真 无限可能', '鲁莽 逃避 原地打转 不切实际'],
|
|
@@ -139,28 +144,25 @@ const MINOR = {
|
|
|
139
144
|
|
|
140
145
|
const ROMAN = ['0', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI'];
|
|
141
146
|
|
|
142
|
-
// 小牌牌阶:编号(A..10 / 宫廷)与数值 1..14
|
|
143
|
-
//
|
|
144
|
-
// 因此小牌的 core 是「花色:牌阶寓意」的组合句,不是逐张独立撰写的牌义。
|
|
147
|
+
// 小牌牌阶:编号(A..10 / 宫廷)与数值 1..14,供排序与结构分析使用。
|
|
148
|
+
// 每张牌的核心寓意自 H3 起逐张撰写(engine/tarot-cards.js),不再按「牌阶」套通用句。
|
|
145
149
|
const RANK_META = {
|
|
146
|
-
一: { number: 'A', value: 1
|
|
147
|
-
二: { number: '2', value: 2
|
|
148
|
-
三: { number: '3', value: 3
|
|
149
|
-
四: { number: '4', value: 4
|
|
150
|
-
五: { number: '5', value: 5
|
|
151
|
-
六: { number: '6', value: 6
|
|
152
|
-
七: { number: '7', value: 7
|
|
153
|
-
八: { number: '8', value: 8
|
|
154
|
-
九: { number: '9', value: 9
|
|
155
|
-
十: { number: '10', value: 10
|
|
156
|
-
侍从: { number: '侍从', value: 11
|
|
157
|
-
骑士: { number: '骑士', value: 12
|
|
158
|
-
王后: { number: '王后', value: 13
|
|
159
|
-
国王: { number: '国王', value: 14
|
|
150
|
+
一: { number: 'A', value: 1 },
|
|
151
|
+
二: { number: '2', value: 2 },
|
|
152
|
+
三: { number: '3', value: 3 },
|
|
153
|
+
四: { number: '4', value: 4 },
|
|
154
|
+
五: { number: '5', value: 5 },
|
|
155
|
+
六: { number: '6', value: 6 },
|
|
156
|
+
七: { number: '7', value: 7 },
|
|
157
|
+
八: { number: '8', value: 8 },
|
|
158
|
+
九: { number: '9', value: 9 },
|
|
159
|
+
十: { number: '10', value: 10 },
|
|
160
|
+
侍从: { number: '侍从', value: 11 },
|
|
161
|
+
骑士: { number: '骑士', value: 12 },
|
|
162
|
+
王后: { number: '王后', value: 13 },
|
|
163
|
+
国王: { number: '国王', value: 14 },
|
|
160
164
|
};
|
|
161
165
|
|
|
162
|
-
// 小牌核心寓意 = 花色 + 牌阶寓意的组合句(花色含义另由 suit/element/domain 承担)
|
|
163
|
-
|
|
164
166
|
// 牌位:每个位带一句位义说明(positionHint)
|
|
165
167
|
const SPREADS = {
|
|
166
168
|
1: [
|
|
@@ -181,6 +183,9 @@ const SPREADS = {
|
|
|
181
183
|
};
|
|
182
184
|
|
|
183
185
|
const COURT = ['侍从', '骑士', '王后', '国王'];
|
|
186
|
+
// 宫廷牌的「牌位」=这个角色在牌阵里通常顶替的位置(人物 or 自身的一个侧面),
|
|
187
|
+
// 与占星无关,所以宫廷牌没有星座也照样能读。
|
|
188
|
+
const COURT_ROLE = { 侍从: '学徒与消息', 骑士: '推进与风格', 王后: '滋养与吸引', 国王: '掌控与承担' };
|
|
184
189
|
const ELEMENT_ORDER = ['火', '水', '风', '土'];
|
|
185
190
|
const ELEM_NAME = { 火: '热情与行动', 水: '情感与关系', 风: '思维与沟通', 土: '现实与资源' };
|
|
186
191
|
const ELEM_TIP = {
|
|
@@ -209,17 +214,37 @@ const POS_TAIL = {
|
|
|
209
214
|
潜在: '它还没浮出水面,却已经在左右你的选择。',
|
|
210
215
|
};
|
|
211
216
|
|
|
212
|
-
const SYSTEM_NOTE = '塔罗为象征系统,牌义与元素对应存在流派差异;此处采用 RWS
|
|
217
|
+
const SYSTEM_NOTE = '塔罗为象征系统,牌义与元素对应存在流派差异;此处采用 RWS(韦特)牌名/编号/牌面与黄金黎明的元素归属,仅供自我觉察与娱乐。'
|
|
218
|
+
+ '小牌 2-10 按三分相旬位补行星与星座,首牌只标生命树源质;宫廷牌在公开资料里有两套互相冲突的星座映射,故不给宫廷牌占星对应,只给角色定位。';
|
|
219
|
+
|
|
220
|
+
// 牌面元素对应:数字牌给「某星在某座某旬」,首牌给源质(它是该元素的根源,不落单一星座),
|
|
221
|
+
// 宫廷牌留空——两套公开映射互相冲突,口径见 SYSTEM_NOTE。
|
|
222
|
+
function astroOf(name) {
|
|
223
|
+
const c = CARD_LIB[name];
|
|
224
|
+
if (!c) return '';
|
|
225
|
+
if (c.astro) return c.astro;
|
|
226
|
+
return c.sephira ? `${c.sephira}·${c.el}之根源` : '';
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// 逐张库规模(面板与测试用它核对「78 张都有图像、36 张有旬位」这类说法)
|
|
230
|
+
export const TAROT_STATS = CARD_COUNTS;
|
|
213
231
|
|
|
232
|
+
/** 牌面数据(大 22 + 小 56):英文名、牌面图像、元素对应、核心寓意均来自逐张库 */
|
|
214
233
|
export function tarotDeck() {
|
|
215
234
|
const deck = [];
|
|
216
235
|
MAJOR.forEach(([name, numeral, up, down], i) => {
|
|
217
236
|
const [element, core] = MAJOR_EXT[i];
|
|
218
|
-
|
|
237
|
+
const lib = CARD_LIB[name];
|
|
238
|
+
deck.push({
|
|
239
|
+
name, arcana: '大阿卡纳', element, number: numeral, value: i, core, up, down,
|
|
240
|
+
en: lib.en, sign: lib.sign, planet: lib.planet, astro: astroOf(name), image: lib.img,
|
|
241
|
+
});
|
|
219
242
|
});
|
|
220
243
|
for (const [suit, element, domain] of SUITS) {
|
|
221
244
|
for (const [rankCn, up, down] of MINOR[suit]) {
|
|
222
245
|
const meta = RANK_META[rankCn];
|
|
246
|
+
const lib = CARD_LIB[`${suit}${rankCn}`];
|
|
247
|
+
const court = meta.value >= 11;
|
|
223
248
|
deck.push({
|
|
224
249
|
name: `${suit}${rankCn}`,
|
|
225
250
|
arcana: '小阿卡纳',
|
|
@@ -230,9 +255,17 @@ export function tarotDeck() {
|
|
|
230
255
|
rankCn,
|
|
231
256
|
number: meta.number,
|
|
232
257
|
value: meta.value,
|
|
233
|
-
core:
|
|
258
|
+
core: lib.core,
|
|
234
259
|
up,
|
|
235
260
|
down,
|
|
261
|
+
en: lib.en,
|
|
262
|
+
image: lib.img,
|
|
263
|
+
role: COURT_ROLE[rankCn] || '',
|
|
264
|
+
sephira: lib.sephira,
|
|
265
|
+
decan: lib.decan,
|
|
266
|
+
sign: lib.sign,
|
|
267
|
+
planet: court ? '' : lib.planet,
|
|
268
|
+
astro: astroOf(`${suit}${rankCn}`),
|
|
236
269
|
});
|
|
237
270
|
}
|
|
238
271
|
}
|
|
@@ -285,9 +318,14 @@ export function tarotReading({ question = '', cards = [] } = {}) {
|
|
|
285
318
|
? '逆位并不等于凶,更像这股力量还没顺过来,或用力过了头'
|
|
286
319
|
: '正位,这股力量目前是通的';
|
|
287
320
|
const hint = c.positionHint || (SPREADS[n] && SPREADS[n][i] ? SPREADS[n][i].hint : '这一位要看的是它在你处境里的位置');
|
|
288
|
-
|
|
321
|
+
// 牌面图像与元素对应来自逐张库:数字牌给「某星在某座某旬」,首牌给源质,
|
|
322
|
+
// 宫廷牌没有占星可给,就把它顶的角色(学徒/推进/滋养/掌控)说出来。
|
|
323
|
+
const img = meta.image ? `牌面上${meta.image},` : '';
|
|
324
|
+
const ast = meta.astro ? `它对应的占星位置是${meta.astro},` : '';
|
|
325
|
+
const role = !ast && meta.role ? `它在这里顶的是「${meta.role}」那个角色,` : '';
|
|
326
|
+
const core = meta.core ? `它的核心是「${meta.core}」。` : '';
|
|
289
327
|
const tail = POS_TAIL[c.position] || '把它放回你的处境里对照,看看哪一句戳中了你。';
|
|
290
|
-
return `${c.position}(${hint})是「${c.name}」${ori}:${kws}。${core}${oriNote}。${tail}`;
|
|
328
|
+
return `${c.position}(${hint})是「${c.name}」${ori}:${kws}。${img}${ast}${role}${core}${oriNote}。${tail}`;
|
|
291
329
|
});
|
|
292
330
|
paras.push(lines.join(''));
|
|
293
331
|
}
|
|
@@ -379,6 +417,15 @@ export function drawTarot({ count = 3, question = '', at, random = Math.random }
|
|
|
379
417
|
...(c.rankCn ? { rankCn: c.rankCn } : {}),
|
|
380
418
|
value: c.value,
|
|
381
419
|
core: c.core,
|
|
420
|
+
en: c.en,
|
|
421
|
+
image: c.image,
|
|
422
|
+
// 空值不进结果:宫廷牌没有星座/主星,首牌没有旬位,别让字段带着空串冒充「已给出」
|
|
423
|
+
...(c.astro ? { astro: c.astro } : {}),
|
|
424
|
+
...(c.sephira ? { sephira: c.sephira } : {}),
|
|
425
|
+
...(c.decan ? { decan: c.decan } : {}),
|
|
426
|
+
...(c.role ? { role: c.role } : {}),
|
|
427
|
+
...(c.sign ? { sign: c.sign } : {}),
|
|
428
|
+
...(c.planet ? { planet: c.planet } : {}),
|
|
382
429
|
upright,
|
|
383
430
|
orientation: upright ? '正位' : '逆位',
|
|
384
431
|
keywords: splitKeywords(upright ? c.up : c.down),
|