M10c: vem betalar i kiosken och spärrar utan återvändo
All checks were successful
release / build-release (push) Successful in 2m7s
All checks were successful
release / build-release (push) Successful in 2m7s
Björns tillägg 2026-10-24. Med egna kort och fler i sällskapet frågar kiosken vem som betalar (minigame.Payer: kontant, spelarens kort eller en följares kort; den som inte har råd nekas, Esc avbryter). Avgiften dras nu när man passerar spärren in i det betalda området (level.InsideGates), inte på spärrrutan. Banflaggan oneWayGates: incheckad släpps inte ut igen förrän man åkt; Enter vid spärren kallar på personal (10 s) som låser upp korten; ny inpassering kostar igen. På i 005, 007/007b och 008/008b. Skriptkommandon urge och push. Docs, wiki och skärmdumpar uppdaterade. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -141,6 +141,18 @@ func (s *LevelScene) drawModeHint(a *Assets, screen *ebiten.Image) {
|
||||
a.Draw(screen, txt, 4, y+3, col)
|
||||
}
|
||||
|
||||
// ForceUrge gör en i sällskapet törstig (skriptläget: "urge NAMN" för
|
||||
// skärmdumpar av kiosken).
|
||||
func (s *LevelScene) ForceUrge(name string) bool {
|
||||
for _, m := range s.run.Party.Members {
|
||||
if m.Name == name {
|
||||
m.Meters.Drink, m.Urge = 5, sim.Thirsty
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// LevelOver rapporterar om banan är avgjord (skriptläget: "waitover").
|
||||
func (s *LevelScene) LevelOver() bool { return s.run.Outcome != sim.Ongoing }
|
||||
|
||||
@@ -222,6 +234,13 @@ func (s *LevelScene) MiniPick(text string) bool {
|
||||
s.run.StepMini(0, minigame.Input{MoveX: 1})
|
||||
return false
|
||||
}
|
||||
case *minigame.Payer:
|
||||
o := m.Options[m.Cursor]
|
||||
if o.Name == text || (text == "cash" && o.Cash) {
|
||||
return true
|
||||
}
|
||||
s.run.StepMini(0, minigame.Input{MoveX: 1})
|
||||
return false
|
||||
case *minigame.TopUp:
|
||||
switch m.Stage {
|
||||
case minigame.TopUpPickMember:
|
||||
@@ -492,6 +511,9 @@ func (s *LevelScene) drawHUD(g *Game, screen *ebiten.Image) {
|
||||
if r.Facility.Active {
|
||||
p = r.FacilityProgress()
|
||||
}
|
||||
if r.Staff.Active {
|
||||
p = r.StaffProgress()
|
||||
}
|
||||
by := float32(y + h - 7)
|
||||
vector.DrawFilledRect(screen, 4, by, ScreenW-8, 4, colBar, false)
|
||||
vector.DrawFilledRect(screen, 4, by, float32((ScreenW-8)*p), 4, colKnown, false)
|
||||
@@ -567,6 +589,17 @@ func (s *LevelScene) infoLines(a *Assets) (lines []line, accent color.Color, bar
|
||||
}
|
||||
|
||||
switch lvl.At(tile) {
|
||||
case level.Gate:
|
||||
switch {
|
||||
case r.Staff.Active:
|
||||
return []line{plainLine(a.T("hud.staff_busy"), colDim)}, colGood, true
|
||||
case r.NoExitAt >= 0 && r.Time-r.NoExitAt < deniedShowSec:
|
||||
return a.wrapLine(plainLine(fmt.Sprintf(a.T("hud.no_exit"), sim.StaffSec), colBad), maxW), colBad, false
|
||||
case r.NeedsStaff():
|
||||
return []line{plainLine(fmt.Sprintf(a.T("hud.staff_prompt"), sim.StaffSec), colWarn)}, colWarn, false
|
||||
case lvl.OneWayGates && r.StaffUnlocked:
|
||||
return []line{plainLine(a.T("hud.unlocked_prompt"), colGood)}, colGood, false
|
||||
}
|
||||
case level.Toilet:
|
||||
if r.Facility.Active {
|
||||
return []line{plainLine(a.T("hud.toilet_busy"), colDim)}, colGood, true
|
||||
|
||||
Reference in New Issue
Block a user