PICK SEA reversal axis: server-side roll + preview + deposited slot — TDD
- new apps/epic/utils.STACK_REVERSAL_PROBABILITY (=0.25) + stack_reversal_probability(user, room) helper; single source of truth across game phases & one-line swap point for forthcoming per-user-profile config - sea_deck view rolls each card's `reversed` axis at fetch time using the helper, attaches to card JSON; matches the eager shuffle pattern (whole deal determined at phase start) - room_view + sea_partial pass `stack_reversal_pct` into context for the new <p class="sea-reversal-hint">25% reversals</p> hint above the SPREAD combobox (italic, 0.7rem, 0.55 opacity) - SeaDeal.openStage applies .stage-card--reversed + .is-reversed to stat block when card.reversed → preview lands face-reversed w. REVERSAL keywords - _fillSlot adds .sea-card-slot--reversed → slot itself rotates 180° (bg + border + content stack flips, not just inner chars upside-down in place); .sea-pos-cross overrides to 270° to compose w. its existing 90° - _fillSlot adds .sea-card-slot--rank-long when corner_rank.length ≥ 5 (XVIII / XXIII / XXVIII / XXXIII / XXXVIII / XLIII / XLVIII) → SCSS scaleX(0.7) + letter-spacing -0.05em squeezes horizontally w.o changing font-size Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,28 @@ from django.db.models import Q
|
||||
from apps.epic.models import Room, RoomInvite
|
||||
|
||||
|
||||
# ── Game-wide constants ────────────────────────────────────────────────────
|
||||
# Reversal probability applied to any card pulled from a stack, anywhere in
|
||||
# the game (PICK SEA initially; future phases — gameplay draws etc. — will
|
||||
# share this single source of truth). Stub for a future per-user profile
|
||||
# override: callers MUST go through stack_reversal_probability(user, room)
|
||||
# rather than referencing the constant directly so the user-config hookup is
|
||||
# a one-line change inside the helper.
|
||||
STACK_REVERSAL_PROBABILITY = 0.25
|
||||
|
||||
|
||||
def stack_reversal_probability(user=None, room=None):
|
||||
"""Reversal probability for a draw stack in this user's context.
|
||||
|
||||
Current behavior: returns the module default for everyone. Plumbing point
|
||||
for a forthcoming per-user setting — when that lands, swap the body to
|
||||
something like `return getattr(user.profile, 'reversal_rate', STACK_REVERSAL_PROBABILITY)`
|
||||
and every call site picks up the per-user value automatically.
|
||||
"""
|
||||
return STACK_REVERSAL_PROBABILITY
|
||||
|
||||
|
||||
|
||||
def _planet_house(degree, cusps):
|
||||
"""Return 1-based house number for a planet at ecliptic degree.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user