mg=mg or Duel.GetMatchingGroup(function(mc) return mc:IsFaceupEx() and mc:IsCanBeSynchroMaterial(c) end,c:GetControler(),LOCATION_MZONE+LOCATION_HAND,0,nil)
local smat_states=nil
local smat_arr=nil
...
...
@@ -3743,6 +3743,7 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
end
end
end
assert(#selected_states>0,"we selected an invalid state")
for _,candidate in ipairs(cg_arr) do
for _,state in ipairs(selected_states) do
...
...
@@ -3785,6 +3786,9 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
break
end
end
if addable:IsContains(candidate) then
break
end
end
end
end
...
...
@@ -3793,7 +3797,7 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
local finishable=Synchro.IsSelectionValid(sg_arr,target_level,tuner_race,tuner_filter,non_tuner_race,non_tuner_filter,tc,tuner_min,tuner_max,non_tuner_min,non_tuner_max,base_mapper)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local picked=Group.SelectUnselect(addable,sg,tp,finishable,true,selected_level_min,target_level)
...
...
@@ -3831,6 +3835,14 @@ function Synchro.SynOperation()
-- confirm hand hard
local hand_cards=g:Filter(function(c) return c:IsLocation(LOCATION_HAND) end,nil)
Duel.ConfirmCards(1-tp,hand_cards)
for mc in aux.Next(g) do
if Synchro.IsRevolution(mc,c) then
local revo_effect=mc:IsHasEffect(97682931)
Duel.Hint(HINT_CARD,0,mc:GetCode())
revo_effect:UseCountLimit(mc:GetControler())
end
end
-- Detect whether Tatsunecro’s effect was actually used:
-- (a) Tatsunecro itself was used as material, AND
-- (b) At least one hand card was included.
...
...
@@ -3871,12 +3883,12 @@ function Synchro.SynOperation()
function Synchro.IsSelectionValid(selection,target_level,tuner_race,tuner_filter,non_tuner_race,non_tuner_filter,tc,tuner_min,tuner_max,non_tuner_min,non_tuner_max,base_mapper)
local states=Synchro.BuildStatesFromSelection(
selection,
tuner_race,tuner_filter,
non_tuner_race,non_tuner_filter,
Synchro.DefaultLevelMapper,
base_mapper,
tc,target_level
)
for _,state in ipairs(states) do
...
...
@@ -4051,6 +4063,15 @@ function Synchro.IsTatsunecro(c)
return c:IsHasEffect(3096468)~=nil
end
--- @param c Card
function Synchro.IsRevolution(c,tc)
local revo_e=c:IsHasEffect(97682931)
if revo_e==nil or revo_e:CheckCountLimit(c:GetControler())==false then
return false
end
return revo_e:GetValue()(revo_e,tc)
end
--- @param c Card
function Synchro.IsGenomix(c)
return c:IsHasEffect(42155488)~=nil
...
...
@@ -4127,10 +4148,8 @@ function Synchro.GenerateVariantForCard(st,card,selected_count,tc,tuner_race,tun
local declared_race=card:IsHasEffect(42155488):GetLabel()
if st.genomix_race~=nil then
assert(declared_race==st.genomix_race,"we activated 2 Genomix Fighter with 2 different races but we still have monster to summon")