Commit bf4d6a9b authored by Nemo Ma's avatar Nemo Ma

fix

parent b0446a0a
......@@ -29,7 +29,7 @@ s.VHisc_Vampire=true
function s.negcon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
and (re:IsActiveType(TYPE_SPELL) or (re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:IsType(TYPE_SPELL))
and (re:IsActiveType(TYPE_SPELL) or (re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:IsType(TYPE_SPELL)))
end
function s.negcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,LOCATION_ONFIELD,0,0x32b,4,REASON_COST) and (re:GetHandler():IsAbleToHand() or re:GetHandler():IsStatus(STATUS_ACT_FROM_HAND)) end
......@@ -41,7 +41,7 @@ function s.negop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeChainOperation(ev,s.repop)
end
function s.repop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsAbleToHand() then
if e:GetHandler():IsRelateToEffect(e) then
if e:GetHandler():IsOnField() then e:GetHandler():CancelToGrave() end
Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,e:GetHandler())
......
......@@ -32,32 +32,29 @@ function s.initial_effect(c)
Duel.RegisterEffect(e1,0)
--
s.globle_check=true
_hack_ritual_check=aux.RitualUltimateFilter
WD_hack_ritual_check=aux.RitualUltimateFilter
function Auxiliary.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
local exg=Group.CreateGroup()
if c:GetOriginalCode()==id then
exg=Duel.GetMatchingGroup(s.filter0,tp,LOCATION_EXTRA,0,nil,c)
if exg:GetCount()>0 then
local g=m1
m1:Merge(exg)
local g=Group.__add(exg,m1)
if Duel.GetFlagEffect(tp,id+1)~=0 then
Duel.RegisterFlagEffect(tp,id,RESET_EVENT+RESET_CHAIN,0,1)
end
local boolean=_hack_ritual_check(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
m1=g
return boolean
return WD_hack_ritual_check(c,filter,e,tp,g,m2,level_function,greater_or_equal,chk)
end
end
return _hack_ritual_check(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
return WD_hack_ritual_check(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk)
end
_hack_ritual_mat_filter=Group.Filter
WD_hack_ritual_mat_filter=Group.Filter
function Group.Filter(group,filter,card_or_group_or_nil,...)
local exg=Group.CreateGroup()
if card_or_group_or_nil and aux.GetValueType(card_or_group_or_nil)=="Card" and card_or_group_or_nil:GetOriginalCode()==id and Duel.GetFlagEffect(tp,id+1)~=0 and Duel.GetFlagEffect(tp,id)~=0 then
exg=Duel.GetMatchingGroup(s.filter0,card_or_group_or_nil:GetControler(),LOCATION_EXTRA,0,nil,c)
group:Merge(exg)
end
return _hack_ritual_mat_filter(group,filter,card_or_group_or_nil,...)
return WD_hack_ritual_mat_filter(group,filter,card_or_group_or_nil,...)
end
end
end
......
......@@ -25,22 +25,65 @@ function c77693530.initial_effect(c)
c:RegisterEffect(e3)
--deck fusion material
if not c77693530.globle_check then
--chain check
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAIN_SOLVING)
e1:SetOperation(c77693530.chainop)
Duel.RegisterEffect(e1,0)
c77693530.globle_check=true
_hack_fusion_check=Card.CheckFusionMaterial
AQ_hack_fusion_check=Card.CheckFusionMaterial
function Card.CheckFusionMaterial(card,Group_fus,Card_g,int_chkf,not_mat)
local exg=Group.CreateGroup()
if card:GetOriginalCode()==77693530 then
exg=Duel.GetMatchingGroup(c77693530.filter0,int_chkf,LOCATION_DECK,0,nil)
exg=Duel.GetMatchingGroup(c77693530.filter0,int_chkf,LOCATION_DECK,0,nil,card)
exg=Group.__bxor(exg,Group_fus):Filter(Card.IsLocation,nil,LOCATION_DECK)
if exg:GetCount()>0 then
Group_fus:Merge(exg)
if Duel.GetFlagEffect(0,77693530)~=0 and Duel.GetFlagEffect(0,77693531)==0 then
Duel.RegisterFlagEffect(0,77693531,RESET_EVENT+RESET_CHAIN,0,1)
local e1=Effect.CreateEffect(card)
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetOperation(c77693530.resetop)
e1:SetReset(RESET_EVENT+RESET_CHAIN)
Duel.RegisterEffect(e1,0)
local e2=e1:Clone()
e2:SetCode(EVENT_CHAIN_NEGATED)
Duel.RegisterEffect(e2,0)
end
local hg=Group.__add(exg,Group_fus)
return AQ_hack_fusion_check(card,hg,Card_g,int_chkf,not_mat)
end
end
return _hack_fusion_check(card,Group_fus,Card_g,int_chkf,not_mat)
return AQ_hack_fusion_check(card,Group_fus,Card_g,int_chkf,not_mat)
end
AQ_hack_fusion_select=Duel.SelectFusionMaterial
function Duel.SelectFusionMaterial(tp,card,mg,gc_nil,chkf)
if card:GetOriginalCode()==77693530 and Duel.GetFlagEffect(0,77693530)~=0 and Duel.GetFlagEffect(0,77693531)~=0 then
exg=Duel.GetMatchingGroup(c77693530.filter0,int_chkf,LOCATION_DECK,0,nil,card)
if exg:GetCount()>0 then
mg:Merge(exg)
end
end
Duel.ResetFlagEffect(0,77693531)
return AQ_hack_fusion_select(tp,card,mg,gc_nil,chkf)
end
end
end
function c77693530.filter0(c)
return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial()
function c77693530.chainop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(0,77693530,RESET_EVENT+RESET_CHAIN,0,1)
end
function c77693530.resetop(e,tp,eg,ep,ev,re,r,rp)
Duel.ResetFlagEffect(0,77693531)
e:Reset()
end
function c77693530.splimit(e,c)
if not c then return false end
return not c:IsCode(77693530)
end
function c77693530.filter0(c,fc)
return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial(fc)
end
function c77693530.eqcon(e,tp,eg,ep,ev,re,r,rp)
return rp==1-tp and re:IsActiveType(TYPE_MONSTER) and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
......@@ -91,7 +134,7 @@ function c77693530.repfilter(c)
return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsFaceup() and c:IsAbleToDeck()
end
function c77693530.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return rp~=tp and Duel.IsExistingMatchingCard(aux.NecroValleyFilter(c77693530.repfilter),tp,LOCATION_GRAVE+LOCATION_MZONE,0,3,nil) end
if chk==0 then return rp~=tp and Duel.IsExistingMatchingCard(aux.NecroValleyFilter(c77693530.repfilter),tp,LOCATION_GRAVE+LOCATION_MZONE,0,3,nil) and not e:GetHandler():IsReason(REASON_REPLACE) end
if Duel.SelectEffectYesNo(tp,e:GetHandler(),aux.Stringid(77693530,1)) then
return true
else return false end
......@@ -99,7 +142,7 @@ end
function c77693530.repop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c77693530.repfilter),tp,LOCATION_GRAVE+LOCATION_MZONE,0,3,3,nil)
Duel.SendtoDeck(g,nil,3,REASON_EFFECT)
Duel.SendtoDeck(g,nil,3,REASON_EFFECT+REASON_REPLACE)
end
function c77693530.repval(e,c)
return c==e:GetHandler() and c:IsLocation(LOCATION_MZONE)
......
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