Commit 9b44ce56 authored by Vury Leo's avatar Vury Leo

Add リペア・ジェネクス・コントローラー and ヴィサス=アムリターラ

parent cec203e4
...@@ -84,14 +84,14 @@ function s.smop(e,tp,eg,ep,ev,re,r,rp) ...@@ -84,14 +84,14 @@ function s.smop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
-- --
local e2=Effect.CreateEffect(c) -- local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD) -- e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) -- e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) -- e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetTarget(s.tlmtg) -- e2:SetTarget(s.tlmtg)
e2:SetValue(s.tlmval) -- e2:SetValue(s.tlmval)
e2:SetReset(RESET_PHASE+PHASE_END) -- e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp) -- Duel.RegisterEffect(e2,tp)
-- --
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
......
...@@ -4,6 +4,11 @@ function s.initial_effect(c) ...@@ -4,6 +4,11 @@ function s.initial_effect(c)
aux.EnableChangeCode(c,56099748) aux.EnableChangeCode(c,56099748)
--synchro summon --synchro summon
aux.AddSynchroMixProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),nil,nil,aux.Tuner(nil),1,99) aux.AddSynchroMixProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),nil,nil,aux.Tuner(nil),1,99)
Synchro.AddSynchroProcedure(c,{
tuner_max=Synchro.Infinite,
non_tuner_max=1,
non_tuner_filter=function(mc) return mc:IsAttribute(ATTRIBUTE_LIGHT) end,
})
c:EnableReviveLimit() c:EnableReviveLimit()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
......
...@@ -3428,6 +3428,7 @@ function Synchro.AddSynchroProcedure(c,params) ...@@ -3428,6 +3428,7 @@ function Synchro.AddSynchroProcedure(c,params)
end end
-- Entry point: prepares and invokes the DFS -- Entry point: prepares and invokes the DFS
--- @param tc Card
function Synchro.FindValidSelection(candidates,target_level, function Synchro.FindValidSelection(candidates,target_level,
tuner_race,tuner_filter, tuner_race,tuner_filter,
non_tuner_race,non_tuner_filter,tc, non_tuner_race,non_tuner_filter,tc,
...@@ -3597,6 +3598,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_f ...@@ -3597,6 +3598,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_f
--- include branch --- include branch
if can_include then if can_include then
Debug.Message(string.format("can include %d true",mc:GetCode()))
for _,diff in ipairs(Synchro.GenerateVariantForCard( for _,diff in ipairs(Synchro.GenerateVariantForCard(
state,mc,#selected+1,tc,tuner_race,prune_tuner_filter,non_tuner_race,prune_non_tuner_filter state,mc,#selected+1,tc,tuner_race,prune_tuner_filter,non_tuner_race,prune_non_tuner_filter
)) do )) do
...@@ -3614,18 +3616,23 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_f ...@@ -3614,18 +3616,23 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_f
selected,index+1,branch_state,prune_indexes selected,index+1,branch_state,prune_indexes
) then ) then
table.remove(selected) table.remove(selected)
Debug.Message(string.format("include %d true",mc:GetCode()))
return true return true
end end
table.remove(selected) table.remove(selected)
end end
else
Debug.Message(string.format("can include %d false",mc:GetCode()))
end end
-- exclude branch -- exclude branch
if Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_filter,non_tuner_race,non_tuner_filter,tc, if Synchro.CanCompleteSelection(candidates,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,scheck,selected,index+1,state,prune_indexes) then tuner_min,tuner_max,non_tuner_min,non_tuner_max,base_mapper,scheck,selected,index+1,state,prune_indexes) then
Debug.Message(string.format("exclude %d true",mc:GetCode()))
return true return true
end end
Debug.Message(string.format("final %d false",mc:GetCode()))
return false return false
end end
...@@ -3636,8 +3643,25 @@ function Synchro.SynCondition(tuner_race,tuner_filter,non_tuner_race,non_tuner_f ...@@ -3636,8 +3643,25 @@ function Synchro.SynCondition(tuner_race,tuner_filter,non_tuner_race,non_tuner_f
if c==nil then return true end if c==nil then return true end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end
-- add リペア・ジェネクス・コントローラー to scheck
if Duel.IsPlayerAffectedByEffect(c:GetOwner(),8173184) then
local old_scheck=scheck
--- @param g Group
scheck=aux.AND(function(g)
Debug.Message(string.format("scheck for %d %d",#g,g:GetFirst():GetCode()))
if not g:IsExists(function(mc) return mc:IsType(TYPE_TUNER) and mc:IsSetCard(0x2) end,1,nil) then
Debug.Message(string.format("scheck false"))
return false
end
Debug.Message(string.format("scheck true"))
return true
end,
old_scheck)
end
local target_level=c:GetLevel() local target_level=c:GetLevel()
mg=mg or Duel.GetMatchingGroup(Card.IsCanBeSynchroMaterial,c:GetControler(),LOCATION_MZONE+LOCATION_HAND,0,nil) --- @param mc Card
mg=mg or Duel.GetMatchingGroup(function(mc) return mc:IsCanBeSynchroMaterial(c) end,c:GetControler(),LOCATION_MZONE+LOCATION_HAND,0,nil)
local smat_states=nil local smat_states=nil
local smat_arr=nil local smat_arr=nil
...@@ -3678,6 +3702,19 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt ...@@ -3678,6 +3702,19 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
end end
mg=mg or Duel.GetMatchingGroup(function(mc) return mc:IsCanBeSynchroMaterial(mc,tc) end,tc:GetOwner(),LOCATION_MZONE+LOCATION_HAND,0,nil) mg=mg or Duel.GetMatchingGroup(function(mc) return mc:IsCanBeSynchroMaterial(mc,tc) end,tc:GetOwner(),LOCATION_MZONE+LOCATION_HAND,0,nil)
-- add リペア・ジェネクス・コントローラー to scheck
if Duel.IsPlayerAffectedByEffect(tp,8173184) then
local old_scheck=scheck
--- @param g Group
scheck=aux.AND(function(g)
if not g:IsExists(function(mc) return mc:IsType(TYPE_TUNER) and mc:IsSetCard(0x2) end,1,nil) then
return false
end
return true
end,
old_scheck)
end
local sg=Group.CreateGroup() local sg=Group.CreateGroup()
if smat~=nil then if smat~=nil then
...@@ -3715,8 +3752,9 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt ...@@ -3715,8 +3752,9 @@ function Synchro.SynTarget(tuner_race,tuner_filter,non_tuner_race,non_tuner_filt
end end
end end
end end
for _,state in ipairs(selected_states) do
for _,candidate in ipairs(cg_arr) do for _,candidate in ipairs(cg_arr) do
for _,state in ipairs(selected_states) do
local can_include=Synchro.CanIncludeMaterial( local can_include=Synchro.CanIncludeMaterial(
candidate,state,sg_arr,tc, candidate,state,sg_arr,tc,
tuner_filter,non_tuner_filter,scheck tuner_filter,non_tuner_filter,scheck
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment