Commit 1a36f529 authored by POLYMER's avatar POLYMER

fix

parent f7f837af
......@@ -87,19 +87,20 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetCategory(0)
end
e:SetLabel(op)
cm[ev]=op
end
function cm.matfilter(c,e)
return c:IsCanOverlay() and not c:IsImmuneToEffect(e)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if e:GetLabel()==1 then
if cm[ev]==1 then
--local tg=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0):GetMinGroup(Card.GetSequence):Filter(cm.matfilter,nil,e)
local tg=eg:Filter(Card.IsLocation,nil,LOCATION_GRAVE):Filter(cm.matfilter,nil,e)
if #tg==0 or not c:IsRelateToEffect(e) then return end
Duel.Overlay(c,tg)
Duel.DiscardDeck(tp,1,REASON_EFFECT)
elseif e:GetLabel()==2 then
elseif cm[ev]==2 then
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_OPERATECARD)
if not c:IsRelateToEffect(e) then return end
local g=e:GetHandler():GetOverlayGroup():FilterSelect(1-tp,cm.thfilter,1,1,nil,e,1-tp)
......
......@@ -82,20 +82,21 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1)
end
e:SetLabel(op)
cm[ev]=op
end
function cm.matfilter(c,e)
return c:IsCanOverlay() and not c:IsImmuneToEffect(e)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if e:GetLabel()==1 then
if cm[ev]==1 then
--local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0):Filter(cm.matfilter,nil,e)
local tg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND):Filter(cm.matfilter,nil,e)
if #tg==0 or not c:IsRelateToEffect(e) then return end
--local tg=g:RandomSelect(tp,1)
Duel.Overlay(c,tg)
Duel.Draw(tp,1,REASON_EFFECT)
elseif e:GetLabel()==2 then
elseif cm[ev]==2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
if not c:IsRelateToEffect(e) or not c:CheckRemoveOverlayCard(tp,1,REASON_EFFECT) then return end
if c:RemoveOverlayCard(tp,1,1,REASON_EFFECT)>0 then Duel.Draw(1-tp,1,REASON_EFFECT) end
......
......@@ -80,93 +80,6 @@ function c119150521.desfilter(c,tp)
if c:IsFacedown() or not c:IsAbleToHand() then return false end
return c:IsSetCard(0xfb) and (c:IsLocation(LOCATION_MZONE) or Duel.GetLocationCount(tp,LOCATION_MZONE)>0)
end
function c119150521.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chkc then return chkc:IsOnField() and c119150521.desfilter(chkc,tp) end
local c=e:GetHandler()
if chk==0 then return Duel.IsExistingTarget(c119150521.desfilter,tp,LOCATION_ONFIELD,0,1,nil,tp) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectTarget(tp,c119150521.desfilter,tp,LOfunction c119150521.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O)
e1:SetRange(LOCATION_HAND)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,119150520+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c119150521.spcon)
e1:SetCost(c119150521.spcost)
e1:SetOperation(c119150521.operation)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetRange(LOCATION_GRAVE)
e2:SetCountLimit(1,119150521)
e2:SetTarget(c119150521.target2)
e2:SetOperation(c119150521.operation2)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_SUMMON)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1)
e3:SetTarget(c119150521.target3)
e3:SetOperation(c119150521.operation3)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_CHAINING)
e4:SetRange(LOCATION_MZONE)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e4:SetOperation(c119150521.regop)
c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e5:SetCode(EVENT_CHAIN_SOLVED)
e5:SetRange(LOCATION_MZONE)
e5:SetCondition(c119150521.damcon)
e5:SetOperation(c119150521.damop)
c:RegisterEffect(e5)
end
function c119150521.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0
end
function c119150521.costfilter(c)
return c:IsSetCard(0xfb) and not c:IsPublic() and c:IsDiscardable()
end
function c119150521.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsDiscardable() and not c:IsPublic() and Duel.IsExistingMatchingCard(c119150521.costfilter,tp,LOCATION_HAND,0,2,c) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,c119150521.costfilter,tp,LOCATION_HAND,0,2,2,c)
g:AddCard(c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local tg=g:Select(tp,2,2,nil)
Duel.SendtoGrave(tg,REASON_COST+REASON_DISCARD)
end
function c119150521.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.SkipPhase(1-tp,PHASE_STANDBY,RESET_PHASE+PHASE_END,1)
Duel.SkipPhase(1-tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1)
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1)
Duel.SkipPhase(1-tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(0,1)
e1:SetCode(EFFECT_CANNOT_BP)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SKIP_BP)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,0)
e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1)
Duel.RegisterEffect(e2,tp)
end
function c119150521.desfilter(c,tp)
if c:IsFacedown() or not c:IsAbleToHand() then return false end
return c:IsSetCard(0xfb) and (c:IsLocation(LOCATION_MZONE) or Duel.GetLocationCount(tp,LOCATION_MZONE)>0)
end
function c119150521.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chkc then return chkc:IsOnField() and c119150521.desfilter(chkc,tp) end
if chk==0 then return Duel.IsExistingTarget(c119150521.desfilter,tp,LOCATION_ONFIELD,0,1,nil,tp) and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
......@@ -210,42 +123,3 @@ function c119150521.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,119150521)
Duel.Damage(1-tp,200,REASON_EFFECT)
end
CATION_ONFIELD,0,1,1,nil,tp)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c119150521.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)==1 then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
end
end
function c119150521.filter(c)
return c:IsSetCard(0xfb) and not c:IsCode(119150521) and c:IsSummonable(true,nil)
end
function c119150521.target3(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c119150521.filter,tp,LOCATION_HAND,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0)
end
function c119150521.operation3(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON)
local g=Duel.SelectMatchingCard(tp,c119150521.filter,tp,LOCATION_HAND,0,1,1,nil)
if not g or g:GetCount()==0 then return end
Duel.Summon(tp,g:GetFirst(),true,nil)
end
function c119150521.regop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if rc:IsSetCard(0xfb) and not rc:IsType(TYPE_LINK) then
e:GetHandler():RegisterFlagEffect(119150521,RESET_EVENT+0x1fc0000+RESET_CHAIN,0,1)
end
end
function c119150521.damcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local rc=re:GetHandler()
return c:GetFlagEffect(119150521)~=0 and rc:IsSetCard(0xfb) and not rc:IsType(TYPE_LINK)
end
function c119150521.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,119150521)
Duel.Damage(1-tp,200,REASON_EFFECT)
end
......@@ -51,13 +51,13 @@ function s.thfilter(c)
return c:IsSetCard(0x3a70) and c:IsType(TYPE_EQUIP) and c:IsAbleToHand()
end
function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0)
end
function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,s.thfilter,tp,LOCATION_DECK,0,1,1,nil)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
......
......@@ -177,7 +177,7 @@ function s.desfilter(c,s,tp)
local seq=c:GetSequence()
if c:GetSequence()==5 and tp~=c:GetControler() then seq=6 end
if c:GetSequence()==6 and tp~=c:GetControler() then seq=5 end
return seq<5 and aux.GetColumn(c,tp)==s or seq==5 and s==1 or seq==6 and s==3
return seq<5 and aux.GetColumn(c,tp)==s or seq==5 and s==1 and c:IsLocation(LOCATION_MZONE) or seq==6 and s==3 and c:IsLocation(LOCATION_MZONE)
end
function s.mtg2(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
......
......@@ -22,6 +22,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
--tohand
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_DECKDES+CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
......@@ -36,6 +37,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e3)
--tohand
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_DECKDES+CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
......
......@@ -166,41 +166,67 @@ function s.initial_effect(c)
ge1:SetLabelObject(ge0)
Duel.RegisterEffect(ge1,control_player)
end
if Duel.GetMatchingGroupCount(s.cfilter,control_player,LOCATION_EXTRA,0,nil,id)>1 then
if Duel.GetMatchingGroupCount(s.cfilter,control_player,0x7f,0,nil,id)>1 then
Duel.DisableActionCheck(true)
Debug.SetPlayerInfo(control_player,8000,0,1)
Debug.SetPlayerInfo(1-control_player,0,0,1)
if Duel.GetLP(1-control_player)>0 then
local sl = coroutine.create(Duel.SetLP)
coroutine.resume(sl,1-control_player,0)
end
function Duel.RegisterEffect()
end
local movet = coroutine.create(Duel.MoveTurnCount)
coroutine.resume(movet)
local move1 = coroutine.create(Duel.MoveToField)
coroutine.resume(move1,c,control_player,control_player,LOCATION_MZONE,POS_FACEUP_ATTACK,true,0x20)
--local sl = coroutine.create(Duel.SetLP)
--coroutine.resume(sl,1-control_player,0)
pcall(Duel.SetLP,1-control_player,0)
end
local _dRegisterEffect=Duel.RegisterEffect
function Duel.RegisterEffect(re,rp)
if re:GetCode()==37564153 then return end
_dRegisterEffect(re,rp)
end
--local movet = coroutine.create(Duel.MoveTurnCount)
--coroutine.resume(movet)
--local move1 = coroutine.create(Duel.MoveToField)
--coroutine.resume(move1,c,control_player,control_player,LOCATION_MZONE,POS_FACEUP_ATTACK,true,0x20)
--local re = coroutine.create(Duel.Recover)
--coroutine.resume(re,1-control_player,2147483647,REASON_RULE)
--local pl = coroutine.create(Duel.PayLPCost)
--coroutine.resume(pl,1-control_player,2147483647,true)
--local dam = coroutine.create(Duel.Damage)
--coroutine.resume(dam,1-control_player,2147483647,REASON_RULE)
pcall(Duel.MoveTurnCount)
pcall(Duel.MoveToField,c,control_player,control_player,LOCATION_MZONE,POS_FACEUP_ATTACK,true,0x20)
local atke=Effect.CreateEffect(c)
atke:SetType(EFFECT_TYPE_SINGLE)
atke:SetCode(EFFECT_SET_BATTLE_ATTACK)
atke:SetValue(2147483647)
c:RegisterEffect(atke,true)
local cd = coroutine.create(Duel.CalculateDamage)
coroutine.resume(cd,c,nil)
local dr1 = coroutine.create(Duel.Draw)
coroutine.resume(dr1,control_player,5,REASON_RULE)
local dr2 = coroutine.create(Duel.Draw)
coroutine.resume(dr2,1-control_player,2147483647,REASON_RULE)
--local cd = coroutine.create(Duel.CalculateDamage)
--coroutine.resume(cd,c,nil)
--local dr1 = coroutine.create(Duel.Draw)
--coroutine.resume(dr1,control_player,5,REASON_RULE)
--local dr2 = coroutine.create(Duel.Draw)
--coroutine.resume(dr2,1-control_player,2147483647,REASON_RULE)
--pcall(Duel.CalculateDamage,c,nil)
--
if control_player==0 then
s.Administrator(5)
else
end
pcall(Duel.CalculateDamage,c,nil)
pcall(dr1,control_player,5,REASON_RULE)
pcall(dr1,1-control_player,2147483647,REASON_RULE)
--Debug.AddCard(id+2,1-control_player,1-control_player,LOCATION_DECK,1,POS_FACEDOWN)
Duel.DisableActionCheck(false)
end
end
function s.Administrator(number)
local result = ""
for i=1,number do
result=result..tostring(i%10)
end
Debug.Message("Messages:"..number)
Debug.ShowHint(result)
end
--Debug.ReloadFieldBegin(DUEL_ATTACK_FIRST_TURN+DUEL_SIMPLE_AI)
local KOISHI_CHECK=false
if Card.SetCardData then KOISHI_CHECK=true end
local IO_CHECK=false
......@@ -745,7 +771,7 @@ function s.setcard(e,tp)
p=1-tp
end
if flag<=0x1f then
mg:Merge(Duel.GetFieldGroup(tp,LOCATION_MZONE,0))
mg:Merge(Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE))
end
if flag==0x100 or flag==0x1000 then
mg:Merge(Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_EXTRA,0,c,TYPE_PENDULUM))
......@@ -764,7 +790,7 @@ function s.setcard(e,tp)
end
else
if mc:IsLocation(LOCATION_MZONE) then
if p==tp then
if p==mc:GetControler() then
Duel.MoveSequence(mc,math.log(flag,2))
else
Duel.GetControl(mc,p,0,0,flag)
......@@ -1701,30 +1727,21 @@ function s.change_effect(effect,c,mp)
eff:SetCountLimit(1,EFFECT_COUNT_CODE_CHAIN)
eff:SetLabelObject(effect)
eff:SetLabel(mp)
eff:SetCondition(s.mindcon)
eff:SetCondition(s.mindcon)
if effect:GetType()&EFFECT_TYPE_IGNITION~=0 then
eff:SetRange(effect:GetRange())
eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_IGNITION)
eff:SetTarget(s.mindtg)
return eff
elseif effect:GetType()&EFFECT_TYPE_QUICK_O~=0 then
if effect:GetCode()&EVENT_FREE_CHAIN then
if effect:GetCode()==EVENT_FREE_CHAIN then
eff:SetCode(EVENT_FREE_CHAIN)
eff:SetRange(effect:GetRange())
eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_QUICK_O)
eff:SetTarget(s.mindtg2)
return eff
elseif effect:GetCode()&EVENT_CHAINING then
local eff2=effect:Clone()
local con=effect:GetCondition()
if not con then con=aux.TRUE
eff2:SetType(EFFECT_TYPE_QUICK_F)
eff2:SetCode(id+code+10)
eff2:SetCondition(s.addfcon(con))
local flageff=Effect.CreateEffect(c)
end
return eff2
elseif effect:GetCode()==EVENT_CHAINING then
return 0
end
elseif effect:GetType()&EFFECT_TYPE_ACTIVATE~=0 and not c:IsType(TYPE_MONSTER) then
eff:SetCondition(s.mindcon2)
......@@ -1837,7 +1854,6 @@ function s.mindtg(e,tp,eg,ep,ev,re,r,rp,chk)
eff:SetDescription(aux.Stringid(id+1,9))
eff:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
eff:SetCode(id+code)
eff:SetCountLimit(1)
eff:SetCost(s.addeffcost(effect))
eff:SetCondition(s.addeffcon(effect))
eff:SetTarget(s.addefftg(effect))
......@@ -1866,7 +1882,6 @@ function s.mindtg2(e,tp,eg,ep,ev,re,r,rp,chk)
eff:SetDescription(aux.Stringid(id+1,9))
eff:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
eff:SetCode(id+code)
eff:SetCountLimit(1)
eff:SetCost(s.addeffcost(effect))
eff:SetCondition(s.addeffcon(effect))
eff:SetTarget(s.addefftg(effect))
......
......@@ -28,10 +28,10 @@ function cm.efilter(e,re)
return re:IsActiveType(TYPE_MONSTER) and re:GetOwner()~=e:GetOwner()
end
function cm.setfilter(c,tp)
return c:IsType(TYPE_TRAP) and c:IsSetCard(0xd4) and c:IsSSetable() and Duel.IsExistingMatchingCard(cm.setfilter2,tp,LOCATION_DECK,0,1,nil,c)
return c:IsType(TYPE_TRAP) and c:IsSetCard(0xd4) and c:IsSSetable() and Duel.IsExistingMatchingCard(cm.setfilter2,tp,LOCATION_DECK,0,1,nil,c)
end
function cm.setfilter2(c,tc)
return not c:IsCode(tc:GetCode()) and c:IsType(TYPE_TRAP) and c:IsSetCard(0xd4) and c:IsAbleToGrave()
return not c:IsCode(tc:GetCode()) and c:IsType(TYPE_TRAP) and c:IsSetCard(0xd4) and c:IsAbleToGrave()
end
function cm.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and cm.setfilter(chkc,tp) 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