fix: resolve Badhaka house by lagna in curse yogas, drop death wording (upstream 6abfe983 follow-up, BUG-1192)

Preta Yoga hard-coded the 11th house as Badhaka; it now uses the single
yoga_engine.badhaka_house() definition (movable 11 / fixed 9 / dual 7).
Remaining early-death / lineage-ending phrases removed from curse yoga
family effects and the Matru-hani yoga effects list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-02 23:45:06 +08:00
co-authored by Claude Opus 5.5
parent 67aa1b33d7
commit 7fb165ecf6
4 changed files with 92 additions and 24 deletions
+13 -7
View File
@@ -65,6 +65,17 @@ PLANET_INDEX = {planet: idx for idx, planet in enumerate(ALL_PLANETS)}
RAHU_KETU_OWNED_SIGN_INDEX = {'Rahu': 10, 'Ketu': 7}
# PyJHora const.house_strengths_of_planets, copied to make Yoga rule alignment deterministic.
# Strength scale: 5 own/lord, 4 exalted, 3 friend, 2 neutral, 1 enemy, 0 debilitated.
def badhaka_house(ascendant_sign: str) -> Optional[int]:
"""Badhaka 宫的唯一定义:变动 11、固定 9、双体 7;上升未知返回 None。"""
if ascendant_sign in MOVABLE_SIGNS:
return 11
if ascendant_sign in FIXED_SIGNS:
return 9
if ascendant_sign in DUAL_SIGNS:
return 7
return None
HOUSE_STRENGTHS = {
'Sun': [4, 1, 2, 2, 5, 2, 0, 3, 3, 1, 1, 3],
'Moon': [2, 4, 3, 5, 3, 3, 2, 0, 2, 2, 2, 2],
@@ -506,13 +517,8 @@ class YogaContext:
return house in [2, 7]
def is_badhaka(self, house: int) -> bool:
"""Badhaka 宫:基本盘7宫,固定盘9宫,变动盘11宫"""
asc = self.ascendant
if asc in ['Aries', 'Cancer', 'Libra', 'Capricorn']:
return house == 11
if asc in ['Taurus', 'Leo', 'Scorpio', 'Aquarius']:
return house == 9
return house == 7
"""Badhaka 宫:变动上升 11 宫,固定上升 9 宫,双体上升 7 宫。"""
return badhaka_house(self.ascendant) == house
# --- 相对宫位关系 ---
def house_offset(self, from_house: int, to_house: int) -> int: