Commit 7e80fa74 authored by mercury233's avatar mercury233

fix

parent a6aa0a6c
...@@ -17,26 +17,34 @@ function c101012032.initial_effect(c) ...@@ -17,26 +17,34 @@ function c101012032.initial_effect(c)
e1:SetOperation(c101012032.spop) e1:SetOperation(c101012032.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c101012032.spfilter(c,tp)
return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsControler(tp)
end
function c101012032.spcon(e,tp,eg,ep,ev,re,r,rp) function c101012032.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2
end end
function c101012032.cfilter(c,tp)
return c:IsRace(RACE_FAIRY) and (c:IsControler(tp) or c:IsFaceup())
end
function c101012032.fgoal(sg,tp)
if sg:GetCount()>0 and Duel.GetMZoneCount(tp,sg)>0 then
Duel.SetSelectedCard(sg)
return Duel.CheckReleaseGroup(tp,nil,0,nil)
else return false end
end
function c101012032.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c101012032.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_FAIRY) end local rg=Duel.GetReleaseGroup(tp):Filter(c101012032.cfilter,nil,tp)
local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,3,nil,RACE_FAIRY) if chk==0 then return rg:CheckSubGroup(c101012032.fgoal,1,3,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g=rg:SelectSubGroup(tp,c101012032.fgoal,false,1,3,tp)
e:SetLabel(Duel.Release(g,REASON_COST)) e:SetLabel(Duel.Release(g,REASON_COST))
end end
function c101012032.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c101012032.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
local ct=e:GetLabel() local ct=e:GetLabel()
local cat=CATEGORY_SPECIAL_SUMMON local cat=CATEGORY_SPECIAL_SUMMON
if ct==3 then if ct==3 then
cat=cat+CATEGORY_DRAW cat=cat+CATEGORY_DRAW
e:SetCategory(cat)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2)
end end
e:SetCategory(cat)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end end
function c101012032.spop(e,tp,eg,ep,ev,re,r,rp) function c101012032.spop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -10,7 +10,7 @@ function c101012040.initial_effect(c) ...@@ -10,7 +10,7 @@ function c101012040.initial_effect(c)
e1:SetDescription(aux.Stringid(101012040,0)) e1:SetDescription(aux.Stringid(101012040,0))
e1:SetCategory(CATEGORY_DESTROY) e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCountLimit(1,101012040) e1:SetCountLimit(1,101012040)
e1:SetTarget(c101012040.destg) e1:SetTarget(c101012040.destg)
...@@ -18,17 +18,10 @@ function c101012040.initial_effect(c) ...@@ -18,17 +18,10 @@ function c101012040.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetDescription(aux.Stringid(101012040,1)) e2:SetDescription(aux.Stringid(101012040,1))
e2:SetCode(EVENT_CUSTOM+101012040) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c101012040.descon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--event
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetRange(LOCATION_MZONE)
e3:SetCondition(c101012040.evcon)
e3:SetOperation(c101012040.evop)
c:RegisterEffect(e3)
--atk --atk
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(101012040,2)) e4:SetDescription(aux.Stringid(101012040,2))
...@@ -43,12 +36,9 @@ end ...@@ -43,12 +36,9 @@ end
function c101012040.cfilter(c,tp) function c101012040.cfilter(c,tp)
return c:IsFaceup() and c:IsControler(tp) return c:IsFaceup() and c:IsControler(tp)
end end
function c101012040.evcon(e,tp,eg,ep,ev,re,r,rp) function c101012040.descon(e,tp,eg,ep,ev,re,r,rp)
return not eg:IsContains(e:GetHandler()) and eg:IsExists(c101012040.cfilter,1,nil,1-tp) return not eg:IsContains(e:GetHandler()) and eg:IsExists(c101012040.cfilter,1,nil,1-tp)
end end
function c101012040.evop(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+101012040,re,r,rp,ep,ev)
end
function c101012040.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c101012040.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end
if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end
......
...@@ -31,11 +31,12 @@ function c101012064.initial_effect(c) ...@@ -31,11 +31,12 @@ function c101012064.initial_effect(c)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c101012064.cfilter(c,tp) function c101012064.cfilter(c,tp)
return ((c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_ONFIELD)) or c:IsPreviousLocation(LOCATION_GRAVE)) and c:IsLocation(LOCATION_HAND+LOCATION_DECK) return c:IsControler(tp) and c:GetPreviousControler()==tp
and c:IsReason(REASON_EFFECT) and c:GetPreviousControler()==tp and c:IsControler(tp) and c:IsPreviousSetCard(0x71) and (c:IsPreviousLocation(LOCATION_GRAVE) or (c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP)))
and c:IsSetCard(0x71) and not c:IsLocation(LOCATION_EXTRA)
end end
function c101012064.secon(e,tp,eg,ep,ev,re,r,rp) function c101012064.secon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c101012064.cfilter,1,nil,tp) and not eg:IsContains(e:GetHandler()) return bit.band(r,REASON_EFFECT)~=0 and eg:IsExists(c101012064.cfilter,1,nil,tp)
end end
function c101012064.sefilter(c) function c101012064.sefilter(c)
return c:IsSetCard(0x71) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() and not c:IsCode(101012064) return c:IsSetCard(0x71) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() and not c:IsCode(101012064)
......
...@@ -37,19 +37,20 @@ function c101012080.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -37,19 +37,20 @@ function c101012080.activate(e,tp,eg,ep,ev,re,r,rp)
end end
end end
if res then if res then
if tc1:IsCanBeSpecialSummoned(e,0,tp,false,false) then if Duel.SendtoGrave(tc2,REASON_EFFECT)~=0 and tc2:IsLocation(LOCATION_GRAVE)
and tc1:IsCanBeSpecialSummoned(e,0,tp,false,false) then
if Duel.GetLocationCountFromEx(tp,tp,nil,tc1)>0 then if Duel.GetLocationCountFromEx(tp,tp,nil,tc1)>0 then
Duel.SpecialSummon(tc1,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc1,0,tp,tp,false,false,POS_FACEUP)
end end
end end
Duel.SendtoGrave(tc2,REASON_EFFECT)
if tc1:GetOriginalRace()==tc2:GetOriginalRace() and tc1:GetOriginalAttribute()==tc2:GetOriginalAttribute() then if tc1:GetOriginalRace()==tc2:GetOriginalRace() and tc1:GetOriginalAttribute()==tc2:GetOriginalAttribute() then
Duel.BreakEffect()
local atk=tc2:GetTextAttack() local atk=tc2:GetTextAttack()
Duel.SetLP(1-tp,Duel.GetLP(1-tp)-atk) Duel.SetLP(1-tp,Duel.GetLP(1-tp)-atk)
end end
else else
Duel.SendtoGrave(tc1,REASON_EFFECT) if Duel.SendtoGrave(tc1,REASON_EFFECT)~=0 and tc1:IsLocation(LOCATION_GRAVE)
if tc2:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP,1-tp) then and tc2:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP,1-tp) then
if Duel.GetLocationCountFromEx(1-tp,1-tp,nil,tc2)>0 then if Duel.GetLocationCountFromEx(1-tp,1-tp,nil,tc2)>0 then
Duel.SpecialSummon(tc2,0,1-tp,1-tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc2,0,1-tp,1-tp,false,false,POS_FACEUP)
end end
......
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