Implement thief discard and retain flows

This commit is contained in:
2026-06-17 22:48:55 +09:00
parent 098571e9aa
commit f2828deb19
7 changed files with 414 additions and 56 deletions

View File

@@ -221,6 +221,8 @@ for i = 1, 3 do
end
end`),
method('StartPlayerTurn', `self.Turn = self.Turn + 1
self.RetainSelectActive = false
self:UpdateDiscardPrompt()
self.Energy = self.MaxEnergy
self:ApplyRelics("turnStart")
self.PlayerBlock = 0
@@ -248,6 +250,33 @@ end
self:DrawCards(5)
self:RenderHand(true)
self:RenderCombat()`),
method('HasPowerEffect', `if self.PlayerPowers == nil then
return false
end
for i = 1, #self.PlayerPowers do
local pc = self.Cards[self.PlayerPowers[i]]
if pc ~= nil and pc.powerEffect == effect then
return true
end
end
return false`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'effect' }], 0, 'boolean'),
method('ShouldOfferRetain', `if self:HasPowerEffect("retainOne") ~= true then
return false
end
if self.Hand == nil or #self.Hand <= 0 then
return false
end
for i = 1, #self.Hand do
local c = self.Cards[self.Hand[i]]
if c ~= nil and c.retain ~= true then
return true
end
end
return false`, [], 0, 'boolean'),
method('BeginRetainSelection', `self.RetainSelectActive = true
self:UpdateDiscardPrompt()
self:Toast("보존할 카드를 선택하세요")
self:RenderHand(false)`, []),
method('EndPlayerTurn', `if self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then
return
end
@@ -255,6 +284,17 @@ if self:IsDiscardSelecting() == true then
self:Toast("버릴 카드를 먼저 선택하세요")
return
end
if self:IsRetainSelecting() == true then
self:FinishPlayerTurn(0)
return
end
if self:ShouldOfferRetain() == true then
self:BeginRetainSelection()
return
end
self:FinishPlayerTurn(0)`),
method('FinishPlayerTurn', `self.RetainSelectActive = false
self:UpdateDiscardPrompt()
local burn = 0
for bi = 1, #self.Hand do
\tlocal hc = self.Cards[self.Hand[bi]]
@@ -270,7 +310,7 @@ local kept = {}
for i = 1, #self.Hand do
\tlocal cardId = self.Hand[i]
\tlocal c = self.Cards[cardId]
\tif c ~= nil and c.retain == true then
\tif c ~= nil and (c.retain == true or i == retainSlot) then
\t\ttable.insert(kept, cardId)
\telse
\t\ttable.insert(self.DiscardPile, cardId)
@@ -281,8 +321,9 @@ if self.PlayerWeak > 0 then self.PlayerWeak = self.PlayerWeak - 1 end
if self.PlayerVuln > 0 then self.PlayerVuln = self.PlayerVuln - 1 end
self:RenderHand(false)
self:RenderPiles()
self:EnemyTurn()`),
self:EnemyTurn()`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'retainSlot' }]),
method('DrawCards', `local drawnSlots = {}
local drewAny = false
for i = 1, amount do
\tif #self.DrawPile <= 0 then
\t\tself:RecycleDiscardIntoDraw()
@@ -296,14 +337,15 @@ for i = 1, amount do
\t\tself:TriggerSly(cardId)
\telse
\t\ttable.insert(self.Hand, cardId)
\t\tif #self.Hand <= 5 then
\t\t\ttable.insert(drawnSlots, #self.Hand)
\t\tend
\t\tdrewAny = true
\t\ttable.insert(drawnSlots, #self.Hand)
\tend
end
self:RenderPiles()
if animate == true and #drawnSlots > 0 then
if drewAny == true then
\tself:RenderHand(false)
end
if animate == true and #drawnSlots > 0 then
\tlocal drawStart = Vector2(-590, 8)
\tfor i = 1, #drawnSlots do
\t\tlocal slot = drawnSlots[i]