Commit 4f13f675 authored by POLYMER's avatar POLYMER

fix

parent ee9a16d3
...@@ -1676,7 +1676,6 @@ ...@@ -1676,7 +1676,6 @@
98941048 0 98941048 0
98941049 0 98941049 0
98941050 0 98941050 0
98942050 0
99550610 0 99550610 0
99700125 0 99700125 0
99700135 0 99700135 0
...@@ -5953,18 +5952,6 @@ ...@@ -5953,18 +5952,6 @@
70007756 0 70007756 0
70007757 0 70007757 0
98920615 0 98920615 0
65830000 0
65830005 0
65830010 0
65830015 0
65830020 0
65830025 0
65830030 0
65830035 0
65830040 0
65830045 0
65830050 0
65830055 0
40009673 0 40009673 0
40009675 0 40009675 0
40009677 0 40009677 0
......
No preview for this file type
No preview for this file type
...@@ -33,6 +33,7 @@ function cm.spcfilter(c) ...@@ -33,6 +33,7 @@ function cm.spcfilter(c)
end end
function cm.spccon(e,c) function cm.spccon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and (Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 or not Duel.IsExistingMatchingCard(cm.spcfilter,tp,LOCATION_MZONE,0,1,nil)) and (Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 or not Duel.IsExistingMatchingCard(cm.spcfilter,tp,LOCATION_MZONE,0,1,nil))
end end
......
...@@ -59,7 +59,7 @@ function cm.destg1(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -59,7 +59,7 @@ function cm.destg1(e,tp,eg,ep,ev,re,r,rp,chk)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0)
end end
function cm.deop1(e,tp,eg,ep,ev,re,r,rp) function cm.desop1(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil)
Duel.Destroy(sg,REASON_EFFECT) Duel.Destroy(sg,REASON_EFFECT)
end end
...@@ -74,7 +74,7 @@ function cm.destg2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -74,7 +74,7 @@ function cm.destg2(e,tp,eg,ep,ev,re,r,rp,chk)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_SZONE,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_SZONE,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0)
end end
function cm.deop2(e,tp,eg,ep,ev,re,r,rp) function cm.desop2(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_SZONE,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_SZONE,nil)
Duel.Destroy(sg,REASON_EFFECT) Duel.Destroy(sg,REASON_EFFECT)
end end
...@@ -89,7 +89,7 @@ function cm.destg3(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -89,7 +89,7 @@ function cm.destg3(e,tp,eg,ep,ev,re,r,rp,chk)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0)
end end
function cm.deop3(e,tp,eg,ep,ev,re,r,rp) function cm.desop3(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil) local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil)
Duel.Destroy(sg,REASON_EFFECT) Duel.Destroy(sg,REASON_EFFECT)
end end
......
...@@ -3,6 +3,16 @@ local KOISHI_CHECK=false ...@@ -3,6 +3,16 @@ local KOISHI_CHECK=false
if Card.SetCardData then KOISHI_CHECK=true end if Card.SetCardData then KOISHI_CHECK=true end
local IO_CHECK=false local IO_CHECK=false
if io then IO_CHECK=true end if io then IO_CHECK=true end
local tableclone=function(tab,mytab)
local res=mytab or {}
for i,v in pairs(tab) do res[i]=v end
return res
end
local _Card=tableclone(Card)
local _Duel=tableclone(Duel)
local _Effect=tableclone(Effect)
local _Group=tableclone(Group)
local _Debug=tableclone(Debug)
function s.initial_effect(c) function s.initial_effect(c)
if not s.globle_check then if not s.globle_check then
s.autodata={ s.autodata={
...@@ -102,49 +112,12 @@ function s.initial_effect(c) ...@@ -102,49 +112,12 @@ function s.initial_effect(c)
local sge6=sge4:Clone() local sge6=sge4:Clone()
sge6:SetCode(EVENT_SPSUMMON_SUCCESS) sge6:SetCode(EVENT_SPSUMMON_SUCCESS)
Duel.RegisterEffect(sge6,0) Duel.RegisterEffect(sge6,0)
s.RandomSelect=Group.RandomSelect
s.TossCoin=Duel.TossCoin
s.TossDice=Duel.TossDice
s.Select=Group.Select
s.FilterSelect=Group.FilterSelect
s.SelectUnselect=Group.SelectUnselect
s.CRemoveOverlayCard=Card.RemoveOverlayCard
s.SelectMatchingCard=Duel.SelectMatchingCard
s.SelectReleaseGroup=Duel.SelectReleaseGroup
s.SelectReleaseGroupEx=Duel.SelectReleaseGroupEx
s.SelectTarget=Duel.SelectTarget
s.SelectTribute=Duel.SelectTribute
s.DiscardHand=Duel.DiscardHand
s.DRemoveOverlayCard=Duel.RemoveOverlayCard
s.SelectFusionMaterial=Duel.SelectFusionMaterial
s.SpecialSummon=Duel.SpecialSummon
s.SpecialSummonStep=Duel.SpecialSummonStep
s.MoveToField=Duel.MoveToField
s.SSet=Duel.SSet
s.GetControl=Duel.GetControl
s.SelectDisableField=Duel.SelectDisableField
s.SelectField=Duel.SelectField
s.SelectEffectYesNo=Duel.SelectEffectYesNo
s.SelectYesNo=Duel.SelectYesNo
s.SelectOption=Duel.SelectOption
s.SelectPosition=Duel.SelectPosition
s.AnnounceCoin=Duel.AnnounceCoin
s.AnnounceCard=Duel.AnnounceCard
s.AnnounceNumber=Duel.AnnounceNumber
s.ConfirmCards=Duel.ConfirmCards
s.Hint=Duel.Hint
end end
local control_player=0 local control_player=0
if Duel.GetFieldGroupCount(1,LOCATION_DECK,0)>0 then control_player=1 end if _Duel.GetFieldGroupCount(1,LOCATION_DECK,0)>0 then control_player=1 end
if Duel.GetMatchingGroupCount(s.cfilter,control_player,LOCATION_EXTRA,0,nil,id)==1 then if _Duel.GetMatchingGroupCount(s.cfilter,control_player,LOCATION_EXTRA,0,nil,id)==1 then
s.Wild_Mode=true s.Wild_Mode=true
local _cRegisterEffect=Card.RegisterEffect if KOISHI_CHECK then
function Card.RegisterEffect(ec,e,bool) function Card.RegisterEffect(ec,e,bool)
if s.cfilter(ec) then if s.cfilter(ec) then
return _cRegisterEffect(ec,e,bool) return _cRegisterEffect(ec,e,bool)
...@@ -153,12 +126,12 @@ function s.initial_effect(c) ...@@ -153,12 +126,12 @@ function s.initial_effect(c)
ge0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) ge0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
ge0:SetCode(EVENT_DRAW) ge0:SetCode(EVENT_DRAW)
ge0:SetOperation(s.changecardcode) ge0:SetOperation(s.changecardcode)
return _cRegisterEffect(ec,ge0,true) return _Card.RegisterEffect(ec,ge0,true)
end end
end end
local dg=Duel.GetFieldGroup(control_player,0,LOCATION_DECK) local dg=_Duel.GetFieldGroup(control_player,0,LOCATION_DECK)
for tc in aux.Next(dg) do for tc in aux.Next(dg) do
Card.RegisterEffect(tc) _Card.RegisterEffect(tc)
end end
local ge0=Effect.GlobalEffect() local ge0=Effect.GlobalEffect()
ge0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) ge0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
...@@ -168,21 +141,21 @@ function s.initial_effect(c) ...@@ -168,21 +141,21 @@ function s.initial_effect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT) ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
ge1:SetTargetRange(0,LOCATION_DECK+LOCATION_HAND) ge1:SetTargetRange(0,LOCATION_DECK+LOCATION_HAND)
ge1:SetLabelObject(ge0) ge1:SetLabelObject(ge0)
Duel.RegisterEffect(ge1,control_player) _Duel.RegisterEffect(ge1,control_player)
end end
if Duel.GetMatchingGroupCount(s.cfilter,control_player,0x7f,0,nil,id)==2 and KOISHI_CHECK then end
Duel.DisableActionCheck(true) if _Duel.GetMatchingGroupCount(s.cfilter,control_player,0x7f,0,nil,id)==2 and KOISHI_CHECK then
Debug.SetPlayerInfo(control_player,8000,0,1) _Duel.DisableActionCheck(true)
Debug.SetPlayerInfo(1-control_player,0,0,1) _Debug.SetPlayerInfo(control_player,8000,0,1)
_Debug.SetPlayerInfo(1-control_player,0,0,1)
if Duel.GetLP(1-control_player)>0 then if Duel.GetLP(1-control_player)>0 then
--local sl = coroutine.create(Duel.SetLP) --local sl = coroutine.create(Duel.SetLP)
--coroutine.resume(sl,1-control_player,0) --coroutine.resume(sl,1-control_player,0)
pcall(Duel.SetLP,1-control_player,0) pcall(Duel.SetLP,1-control_player,0)
end end
local _dRegisterEffect=Duel.RegisterEffect
function Duel.RegisterEffect(re,rp) function Duel.RegisterEffect(re,rp)
if re:GetCode()==37564153 then return end if re:GetCode()==37564153 then return end
_dRegisterEffect(re,rp) _Duel.RegisterEffect(re,rp)
end end
--local movet = coroutine.create(Duel.MoveTurnCount) --local movet = coroutine.create(Duel.MoveTurnCount)
--coroutine.resume(movet) --coroutine.resume(movet)
...@@ -194,19 +167,19 @@ function s.initial_effect(c) ...@@ -194,19 +167,19 @@ function s.initial_effect(c)
--coroutine.resume(pl,1-control_player,2147483647,true) --coroutine.resume(pl,1-control_player,2147483647,true)
--local dam = coroutine.create(Duel.Damage) --local dam = coroutine.create(Duel.Damage)
--coroutine.resume(dam,1-control_player,2147483647,REASON_RULE) --coroutine.resume(dam,1-control_player,2147483647,REASON_RULE)
pcall(Duel.MoveTurnCount) pcall(_Duel.MoveTurnCount)
pcall(Duel.MoveToField,c,control_player,control_player,LOCATION_MZONE,POS_FACEUP_ATTACK,true,0x20) pcall(_Duel.MoveToField,c,control_player,control_player,LOCATION_MZONE,POS_FACEUP_ATTACK,true,0x20)
local atke=Effect.CreateEffect(c) local atke=Effect.CreateEffect(c)
atke:SetType(EFFECT_TYPE_SINGLE) atke:SetType(EFFECT_TYPE_SINGLE)
atke:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) atke:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
atke:SetCode(EFFECT_SET_BATTLE_ATTACK) atke:SetCode(EFFECT_SET_BATTLE_ATTACK)
atke:SetValue(2147483647) atke:SetValue(2147483647)
c:RegisterEffect(atke,true) _Card.RegisterEffect(c,atke,true)
local atke2=Effect.CreateEffect(c) local atke2=Effect.CreateEffect(c)
atke2:SetType(EFFECT_TYPE_SINGLE) atke2:SetType(EFFECT_TYPE_SINGLE)
atke2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) atke2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
atke2:SetCode(EFFECT_MATCH_KILL) atke2:SetCode(EFFECT_MATCH_KILL)
c:RegisterEffect(atke2,true) _Card.RegisterEffect(c,atke2,true)
--local cd = coroutine.create(Duel.CalculateDamage) --local cd = coroutine.create(Duel.CalculateDamage)
--coroutine.resume(cd,c,nil) --coroutine.resume(cd,c,nil)
--local dr1 = coroutine.create(Duel.Draw) --local dr1 = coroutine.create(Duel.Draw)
...@@ -220,11 +193,11 @@ function s.initial_effect(c) ...@@ -220,11 +193,11 @@ function s.initial_effect(c)
else else
end end
pcall(Duel.CalculateDamage,c,nil) pcall(_Duel.CalculateDamage,c,nil)
pcall(dr1,control_player,5,REASON_RULE) pcall(dr1,control_player,5,REASON_RULE)
pcall(dr1,1-control_player,2147483647,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) --Debug.AddCard(id+2,1-control_player,1-control_player,LOCATION_DECK,1,POS_FACEDOWN)
Duel.DisableActionCheck(false) _Duel.DisableActionCheck(false)
end end
end end
function s.Administrator(number) function s.Administrator(number)
...@@ -232,8 +205,8 @@ function s.Administrator(number) ...@@ -232,8 +205,8 @@ function s.Administrator(number)
for i=1,number do for i=1,number do
result=result..tostring(i%10) result=result..tostring(i%10)
end end
Debug.Message("Messages:"..number) _Debug.Message("Messages:"..number)
Debug.ShowHint(result) _Debug.ShowHint(result)
end end
function s.changecardcode(e,tp) function s.changecardcode(e,tp)
local cardtable={27520594,95511642,22916281,58400390,4392470,62514770,46986414,89631139} local cardtable={27520594,95511642,22916281,58400390,4392470,62514770,46986414,89631139}
...@@ -438,7 +411,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og) ...@@ -438,7 +411,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og)
while page~=0 do while page~=0 do
if page==1 then if page==1 then
local desc=s.Cheating_Mode and 4 or 3 local desc=s.Cheating_Mode and 4 or 3
ot=s.SelectOption(tp,aux.Stringid(id,0),aux.Stringid(id,1),aux.Stringid(id,2),aux.Stringid(id,desc),1345) ot=_Duel.SelectOption(tp,aux.Stringid(id,0),aux.Stringid(id,1),aux.Stringid(id,2),aux.Stringid(id,desc),1345)
if ot==0 then if ot==0 then
s.movecard(e,tp) s.movecard(e,tp)
page=0 page=0
...@@ -457,7 +430,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og) ...@@ -457,7 +430,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og)
elseif page==2 then elseif page==2 then
local desc1=s.Hint_Mode and 6 or 5 local desc1=s.Hint_Mode and 6 or 5
local desc2=s.Control_Mode and 9 or 8 local desc2=s.Control_Mode and 9 or 8
ot=s.SelectOption(tp,1360,aux.Stringid(id,desc1),aux.Stringid(id,7),aux.Stringid(id,desc2),1345) ot=_Duel.SelectOption(tp,1360,aux.Stringid(id,desc1),aux.Stringid(id,7),aux.Stringid(id,desc2),1345)
if ot==0 then if ot==0 then
page=page-1 page=page-1
elseif ot==1 then elseif ot==1 then
...@@ -476,7 +449,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og) ...@@ -476,7 +449,7 @@ function s.menuop(e,tp,eg,ep,ev,re,r,rp,c,sg,og)
local desc1=s.Wild_Mode and 11 or 10 local desc1=s.Wild_Mode and 11 or 10
local desc2=s.Random_Mode and 13 or 12 local desc2=s.Random_Mode and 13 or 12
local desc3=s.Theworld_Mode and 10 or 9 local desc3=s.Theworld_Mode and 10 or 9
ot=s.SelectOption(tp,1360,aux.Stringid(id,desc1),aux.Stringid(id,desc2),aux.Stringid(id,14),1212) ot=_Duel.SelectOption(tp,1360,aux.Stringid(id,desc1),aux.Stringid(id,desc2),aux.Stringid(id,14),1212)
if ot==0 then if ot==0 then
page=page-1 page=page-1
elseif ot==1 then elseif ot==1 then
...@@ -527,7 +500,7 @@ function s.mvop(e,tp,eg,ep,ev,re,r,rp) ...@@ -527,7 +500,7 @@ function s.mvop(e,tp,eg,ep,ev,re,r,rp)
end end
function s.movecard(e,tp) function s.movecard(e,tp)
local c=e:GetHandler() local c=e:GetHandler()
local ot=s.SelectOption(tp,1152,1190,1191,1192,1105) local ot=_Duel.SelectOption(tp,1152,1190,1191,1192,1105)
if ot==0 then if ot==0 then
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
...@@ -559,9 +532,9 @@ function s.movespop(e,tp,eg,ep,ev,re,r,rp) ...@@ -559,9 +532,9 @@ function s.movespop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=Duel.GetMatchingGroup(Card.IsType,tp,0x73,0,c,TYPE_MONSTER) local g=Duel.GetMatchingGroup(Card.IsType,tp,0x73,0,c,TYPE_MONSTER)
local sg=g:Select(tp,0,99,nil) local sg=g:Select(tp,0,99,nil)
if #sg==0 then --if #sg==0 then
sg=s.RandomSelect(g,tp,math.min(3,#g)) -- sg=_Group.RandomSelect(g,tp,math.min(3,#g))
end --end
for tc in aux.Next(sg) do for tc in aux.Next(sg) do
local cardtype=tc:GetType() local cardtype=tc:GetType()
local sumtype=0 local sumtype=0
...@@ -751,7 +724,7 @@ function s.setcard(e,tp) ...@@ -751,7 +724,7 @@ function s.setcard(e,tp)
local p=tp local p=tp
if flag&0x600060~=0 then if flag&0x600060~=0 then
flag=flag>>16 flag=flag>>16
if s.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 then if _Duel.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 then
flag=flag==2^5 and flag<<1 or flag>>1 flag=flag==2^5 and flag<<1 or flag>>1
else else
p=1-tp p=1-tp
...@@ -766,7 +739,7 @@ function s.setcard(e,tp) ...@@ -766,7 +739,7 @@ function s.setcard(e,tp)
e1:SetCode(EFFECT_SET_CONTROL) e1:SetCode(EFFECT_SET_CONTROL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetValue(p) e1:SetValue(p)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
mc:RegisterEffect(e1,true) mc:RegisterEffect(e1,true)
end end
else else
...@@ -785,7 +758,7 @@ function s.setcard(e,tp) ...@@ -785,7 +758,7 @@ function s.setcard(e,tp)
end end
local mc=mg:Select(tp,1,1,nil):GetFirst() local mc=mg:Select(tp,1,1,nil):GetFirst()
if flag>0x7f then if flag>0x7f then
if mc:IsType(TYPE_PENDULUM) and (flag==0x100 or flag==0x1000) and s.SelectOption(tp,1003,1009)==1 then if mc:IsType(TYPE_PENDULUM) and (flag==0x100 or flag==0x1000) and _Duel.SelectOption(tp,1003,1009)==1 then
Duel.MoveToField(mc,tp,p,LOCATION_PZONE,POS_FACEUP,true) Duel.MoveToField(mc,tp,p,LOCATION_PZONE,POS_FACEUP,true)
else else
local pos=Duel.SelectPosition(tp,mc,0x3) local pos=Duel.SelectPosition(tp,mc,0x3)
...@@ -808,7 +781,7 @@ function s.setcard(e,tp) ...@@ -808,7 +781,7 @@ function s.setcard(e,tp)
e1:SetCode(EFFECT_SET_CONTROL) e1:SetCode(EFFECT_SET_CONTROL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetValue(p) e1:SetValue(p)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
mc:RegisterEffect(e1,true) mc:RegisterEffect(e1,true)
end end
end end
...@@ -1028,7 +1001,7 @@ function s.hintcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -1028,7 +1001,7 @@ function s.hintcon(e,tp,eg,ep,ev,re,r,rp)
return s.Hint_Mode return s.Hint_Mode
end end
function s.hintop(e,tp,eg,ep,ev,re,r,rp) function s.hintop(e,tp,eg,ep,ev,re,r,rp)
local str="这个效果可以被 " local str=""
if Duel.IsChainDisablable(ev) then if Duel.IsChainDisablable(ev) then
local ex2,g2,gc2,dp2,dv2=Duel.GetOperationInfo(ev,CATEGORY_SPECIAL_SUMMON) local ex2,g2,gc2,dp2,dv2=Duel.GetOperationInfo(ev,CATEGORY_SPECIAL_SUMMON)
local ex3,g3,gc3,dp3,dv3=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) local ex3,g3,gc3,dp3,dv3=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE)
...@@ -1063,7 +1036,11 @@ function s.hintop(e,tp,eg,ep,ev,re,r,rp) ...@@ -1063,7 +1036,11 @@ function s.hintop(e,tp,eg,ep,ev,re,r,rp)
str=str.."伤害杂耍人 " str=str.."伤害杂耍人 "
end end
end end
Debug.Message(str.."对应") if str=="" then
--Debug.Message("")
else
Debug.Message("这个效果可以被 "..str.."对应")
end
end end
function s.saveop(e,tp,eg,ep,ev,re,r,rp) function s.saveop(e,tp,eg,ep,ev,re,r,rp)
s.autodata=s.save() s.autodata=s.save()
...@@ -1073,7 +1050,7 @@ end ...@@ -1073,7 +1050,7 @@ end
function s.loadmenu(e,tp) function s.loadmenu(e,tp)
local c=e:GetHandler() local c=e:GetHandler()
local decs=s.manualdata.turn==0 and 7 or 6 local decs=s.manualdata.turn==0 and 7 or 6
local ot=s.SelectOption(tp,aux.Stringid(id+1,8),aux.Stringid(id+1,5),aux.Stringid(id+1,decs),1212) local ot=_Duel.SelectOption(tp,aux.Stringid(id+1,8),aux.Stringid(id+1,5),aux.Stringid(id+1,decs),1212)
if ot==0 then if ot==0 then
s.loadcard(c,s.autodata) s.loadcard(c,s.autodata)
elseif ot==1 then elseif ot==1 then
...@@ -1172,7 +1149,7 @@ function s.loadcard(c,data) ...@@ -1172,7 +1149,7 @@ function s.loadcard(c,data)
e1:SetCode(EFFECT_SET_CONTROL) e1:SetCode(EFFECT_SET_CONTROL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetValue(p) e1:SetValue(p)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
tc:RegisterEffect(e1,true) tc:RegisterEffect(e1,true)
end end
for _,counter in ipairs(cdata.counter) do for _,counter in ipairs(cdata.counter) do
...@@ -1194,34 +1171,34 @@ function s.mindcontrol(e,tp) ...@@ -1194,34 +1171,34 @@ function s.mindcontrol(e,tp)
s.Control_Mode=not s.Control_Mode s.Control_Mode=not s.Control_Mode
if s.Control_Mode then if s.Control_Mode then
Debug.Message("骇入开始") Debug.Message("骇入开始")
function Group.Select(g,sp,min,max,nc) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return s.Select(g,tp,min,max,nc) end function Group.Select(g,sp,min,max,nc) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return _Group.Select(g,tp,min,max,nc) end
function Group.FilterSelect(g,sp,...) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return s.FilterSelect(g,tp,...) end function Group.FilterSelect(g,sp,...) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return _Group.FilterSelect(g,tp,...) end
function Group.SelectUnselect(cg,sg,sp,...) Duel.ConfirmCards(tp,cg:Filter(s.confirmfilter,nil,tp)) return s.SelectUnselect(cg,sg,tp,...) end function Group.SelectUnselect(cg,sg,sp,...) Duel.ConfirmCards(tp,cg:Filter(s.confirmfilter,nil,tp)) return _Group.SelectUnselect(cg,sg,tp,...) end
function Card.RemoveOverlayCard(oc,sp,...) return s.CRemoveOverlayCard(oc,tp,...) end function Card.RemoveOverlayCard(oc,sp,...) return _Card.RemoveOverlayCard(oc,tp,...) end
function Duel.SelectFusionMaterial(sp,c,g,...) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return s.SelectFusionMaterial(tp,c,g,...) end function Duel.SelectFusionMaterial(sp,c,g,...) Duel.ConfirmCards(tp,g:Filter(s.confirmfilter,nil,tp)) return _Duel.SelectFusionMaterial(tp,c,g,...) end
function Duel.SelectTarget(sp,f,p,sl,ol,max,min,ex,...) function Duel.SelectTarget(sp,f,p,sl,ol,max,min,ex,...)
local sg=Duel.GetMatchingGroup(f,p,sl,ol,ex,...) local sg=Duel.GetMatchingGroup(f,p,sl,ol,ex,...)
Duel.ConfirmCards(tp,sg:Filter(s.confirmfilter,nil,tp)) Duel.ConfirmCards(tp,sg:Filter(s.confirmfilter,nil,tp))
return s.SelectTarget(tp,f,p,sl,ol,max,min,ex,...) return _Duel.SelectTarget(tp,f,p,sl,ol,max,min,ex,...)
end end
function Duel.SelectTribute(sp,...) return s.SelectTribute(tp,...)end function Duel.SelectTribute(sp,...) return _Duel.SelectTribute(tp,...)end
function Duel.DiscardHand(sp,f,min,max,r,nc,...) function Duel.DiscardHand(sp,f,min,max,r,nc,...)
local dg=Duel.SelectMatchingCard(tp,f,sp,LOCATION_HAND,0,min,max,nc,...) local dg=Duel.SelectMatchingCard(tp,f,sp,LOCATION_HAND,0,min,max,nc,...)
return Duel.SendtoGrave(dg,r) return Duel.SendtoGrave(dg,r)
end end
function Duel.RemoveOverlayCard(sp,...) return s.DRemoveOverlayCard(tp,...) end function Duel.RemoveOverlayCard(sp,...) return _Duel.DRemoveOverlayCard(tp,...) end
function Duel.SelectMatchingCard(sp,f,p,sl,ol,max,min,ex,...) function Duel.SelectMatchingCard(sp,f,p,sl,ol,max,min,ex,...)
local sg=Duel.GetMatchingGroup(f,p,sl,ol,ex,...) local sg=Duel.GetMatchingGroup(f,p,sl,ol,ex,...)
Duel.ConfirmCards(tp,sg:Filter(s.confirmfilter,nil,tp)) Duel.ConfirmCards(tp,sg:Filter(s.confirmfilter,nil,tp))
return s.SelectMatchingCard(tp,f,p,sl,ol,max,min,ex,...) return _Duel.SelectMatchingCard(tp,f,p,sl,ol,max,min,ex,...)
end end
function Duel.SelectReleaseGroup(sp,...) return s.SelectReleaseGroup(tp,...) end function Duel.SelectReleaseGroup(sp,...) return _Duel.SelectReleaseGroup(tp,...) end
function Duel.SelectReleaseGroupEx(sp,...) return s.SelectReleaseGroupEx(tp,...) end function Duel.SelectReleaseGroupEx(sp,...) return _Duel.SelectReleaseGroupEx(tp,...) end
function Duel.SpecialSummon(tg,stype,sp,...) return s.SpecialSummon(tg,stype,tp,...) end function Duel.SpecialSummon(tg,stype,sp,...) return _Duel.SpecialSummon(tg,stype,tp,...) end
function Duel.SpecialSummonStep(tg,stype,sp,...) return s.SpecialSummonStep(tg,stype,tp,...) end function Duel.SpecialSummonStep(tg,stype,sp,...) return _Duel.SpecialSummonStep(tg,stype,tp,...) end
function Duel.MoveToField(c,mp,...) return s.MoveToField(c,tp,...) end function Duel.MoveToField(c,mp,...) return _Duel.MoveToField(c,tp,...) end
function Duel.SSet(p,tg,sp,...) if not sp then sp=p end return s.SSet(tp,tg,sp,...) end function Duel.SSet(p,tg,sp,...) if not sp then sp=p end return _Duel.SSet(tp,tg,sp,...) end
function Duel.GetControl(tg,p,rphase,rcount,zone,...) function Duel.GetControl(tg,p,rphase,rcount,zone,...)
if zone==nil then zone=0x1f end if zone==nil then zone=0x1f end
local flag=0x1f-zone local flag=0x1f-zone
...@@ -1232,38 +1209,38 @@ function s.mindcontrol(e,tp) ...@@ -1232,38 +1209,38 @@ function s.mindcontrol(e,tp)
end end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
if tp==p then if tp==p then
flag=s.SelectField(tp,1,LOCATION_MZONE,0,flag+0x60) flag=_Duel.SelectField(tp,1,LOCATION_MZONE,0,flag+0x60)
else else
flag=s.SelectField(tp,1,0,LOCATION_MZONE,(flag+0x60)<<16)>>16 flag=_Duel.SelectField(tp,1,0,LOCATION_MZONE,(flag+0x60)<<16)>>16
end end
return s.GetControl(tg,p,rphase,rcount,flag,...) return _Duel.GetControl(tg,p,rphase,rcount,flag,...)
end end
function Duel.SelectDisableField(p,count,sl,ol,filter) function Duel.SelectDisableField(p,count,sl,ol,filter)
if tp==p then if tp==p then
return s.SelectDisableField(tp,count,sl,ol,filter) return _Duel.SelectDisableField(tp,count,sl,ol,filter)
else else
return s.SelectDisableField(tp,count,ol,sl,filter) return _Duel.SelectDisableField(tp,count,ol,sl,filter)
end end
end end
function Duel.SelectField(p,count,sl,ol,filter) function Duel.SelectField(p,count,sl,ol,filter)
if tp==p then if tp==p then
return s.SelectField(tp,count,sl,ol,filter) return _Duel.SelectField(tp,count,sl,ol,filter)
else else
return s.SelectField(tp,count,ol,sl,filter) return _Duel.SelectField(tp,count,ol,sl,filter)
end end
end end
function Duel.SelectEffectYesNo(sp,...) return s.SelectEffectYesNo(tp,...) end function Duel.SelectEffectYesNo(sp,...) return _Duel.SelectEffectYesNo(tp,...) end
function Duel.SelectYesNo(sp,desc) return s.SelectYesNo(tp,desc) end function Duel.SelectYesNo(sp,desc) return _Duel.SelectYesNo(tp,desc) end
function Duel.SelectOption(sp,...) return s.SelectOption(tp,...) end function Duel.SelectOption(sp,...) return _Duel.SelectOption(tp,...) end
function Duel.SelectPosition(sp,c,pos) return s.SelectPosition(tp,c,pos) end function Duel.SelectPosition(sp,c,pos) return _Duel.SelectPosition(tp,c,pos) end
function Duel.AnnounceCoin(p,...) return s.AnnounceCoin(tp,...) end function Duel.AnnounceCoin(p,...) return _Duel.AnnounceCoin(tp,...) end
function Duel.AnnounceCard(p,...) return s.AnnounceCard(tp,...) end function Duel.AnnounceCard(p,...) return _Duel.AnnounceCard(tp,...) end
function Duel.AnnounceNumber(p,...) return s.AnnounceNumber(tp,...) end function Duel.AnnounceNumber(p,...) return _Duel.AnnounceNumber(tp,...) end
function Duel.Hint(htype,sp,desc) return s.Hint(htype,tp,desc) end function Duel.Hint(htype,sp,desc) return _Duel.Hint(htype,tp,desc) end
function Duel.ConfirmCards(sp,tg) return s.ConfirmCards(tp,tg)end function Duel.ConfirmCards(sp,tg) return _Duel.ConfirmCards(tp,tg)end
local ge0=Effect.GlobalEffect() local ge0=Effect.GlobalEffect()
ge0:SetType(EFFECT_TYPE_FIELD) ge0:SetType(EFFECT_TYPE_FIELD)
...@@ -1379,44 +1356,48 @@ function s.mindcontrol(e,tp) ...@@ -1379,44 +1356,48 @@ function s.mindcontrol(e,tp)
end end
local ini=s.initial_effect local ini=s.initial_effect
s.initial_effect=function() end s.initial_effect=function() end
for tc in aux.Next(g) do
if tc.initial_effect then
tc:ReplaceEffect(id,0) tc:ReplaceEffect(id,0)
s.initial_effect=ini
tc.initial_effect(tc) tc.initial_effect(tc)
end end
end
s.initial_effect=ini
end
else else
Debug.Message("骇入结束") Debug.Message("骇入结束")
Group.Select=s.Select Group.Select=_Group.Select
Group.FilterSelect=s.FilterSelect Group.FilterSelect=_Group.FilterSelect
Group.SelectUnselect=s.SelectUnselect Group.SelectUnselect=_Group.SelectUnselect
Card.RemoveOverlayCard=s.CRemoveOverlayCard Card.RemoveOverlayCard=_Card.RemoveOverlayCard
Duel.SelectMatchingCard=s.SelectMatchingCard Duel.SelectMatchingCard=_Duel.SelectMatchingCard
Duel.SelectReleaseGroup=s.SelectReleaseGroup Duel.SelectReleaseGroup=_Duel.SelectReleaseGroup
Duel.SelectReleaseGroupEx=s.SelectReleaseGroupEx Duel.SelectReleaseGroupEx=_Duel.SelectReleaseGroupEx
Duel.SelectTarget=s.SelectTarget Duel.SelectTarget=_Duel.SelectTarget
Duel.SelectTribute=s.SelectTribute Duel.SelectTribute=_Duel.SelectTribute
Duel.DiscardHand=s.DiscardHand Duel.DiscardHand=_Duel.DiscardHand
Duel.RemoveOverlayCard=s.DRemoveOverlayCard Duel.RemoveOverlayCard=_Duel.DRemoveOverlayCard
Duel.SelectFusionMaterial=s.SelectFusionMaterial Duel.SelectFusionMaterial=_Duel.SelectFusionMaterial
Duel.SpecialSummon=s.SpecialSummon Duel.SpecialSummon=_Duel.SpecialSummon
Duel.SpecialSummonStep=s.SpecialSummonStep Duel.SpecialSummonStep=_Duel.SpecialSummonStep
Duel.MoveToField=s.MoveToField Duel.MoveToField=_Duel.MoveToField
Duel.SSet=s.SSet Duel.SSet=_Duel.SSet
Duel.GetControl=s.GetControl Duel.GetControl=_Duel.GetControl
Duel.SelectDisableField=s.SelectDisableField Duel.SelectDisableField=_Duel.SelectDisableField
Duel.SelectField=s.SelectField Duel.SelectField=_Duel.SelectField
Duel.SelectEffectYesNo=s.SelectEffectYesNo Duel.SelectEffectYesNo=_Duel.SelectEffectYesNo
Duel.SelectYesNo=s.SelectYesNo Duel.SelectYesNo=_Duel.SelectYesNo
Duel.SelectOption=s.SelectOption Duel.SelectOption=_Duel.SelectOption
Duel.SelectPosition=s.SelectPosition Duel.SelectPosition=_Duel.SelectPosition
Duel.AnnounceCoin=s.AnnounceCoin Duel.AnnounceCoin=_Duel.AnnounceCoin
Duel.AnnounceCard=s.AnnounceCard Duel.AnnounceCard=_Duel.AnnounceCard
Duel.AnnounceNumber=s.AnnounceNumber Duel.AnnounceNumber=_Duel.AnnounceNumber
Duel.ConfirmCards=s.ConfirmCards Duel.ConfirmCards=_Duel.ConfirmCards
Duel.Hint=s.Hint Duel.Hint=_Duel.Hint
for _,eff in ipairs(s.controltable) do for _,eff in ipairs(s.controltable) do
eff:Reset() eff:Reset()
...@@ -1751,14 +1732,19 @@ function s.change_effect(effect,c,mp) ...@@ -1751,14 +1732,19 @@ function s.change_effect(effect,c,mp)
eff:SetCondition(s.mindcon2) eff:SetCondition(s.mindcon2)
eff:SetRange(LOCATION_HAND+LOCATION_SZONE) eff:SetRange(LOCATION_HAND+LOCATION_SZONE)
if cardtype&(TYPE_QUICKPLAY+TYPE_TRAP)~=0 then if cardtype&(TYPE_QUICKPLAY+TYPE_TRAP)~=0 then
if effect:GetCode()==EVENT_FREE_CHAIN then
eff:SetCode(EVENT_FREE_CHAIN) eff:SetCode(EVENT_FREE_CHAIN)
eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_QUICK_O) eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_QUICK_O)
eff:SetTarget(s.mindtg2) eff:SetTarget(s.mindtg2)
return eff
else
return 0
end
else else
eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_IGNITION) eff:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_IGNITION)
eff:SetTarget(s.mindtg) eff:SetTarget(s.mindtg)
end
return eff return eff
end
else else
return 0 return 0
end end
...@@ -1980,15 +1966,15 @@ function s.randomop(tp) ...@@ -1980,15 +1966,15 @@ function s.randomop(tp)
end end
else else
Debug.Message("灌铅骰子 关") Debug.Message("灌铅骰子 关")
Group.RandomSelect=s.RandomSelect Group.RandomSelect=_Group.RandomSelect
Duel.TossCoin=s.TossCoin Duel.TossCoin=_Duel.TossCoin
Duel.TossDice=s.TossDice Duel.TossDice=_Duel.TossDice
end end
end end
function s.toolop(tp) function s.toolop(tp)
local op=s.SelectOption(tp,aux.Stringid(id+1,11),aux.Stringid(id+1,12),aux.Stringid(id+1,13),aux.Stringid(id+1,14),aux.Stringid(id+1,15)) local op=_Duel.SelectOption(tp,aux.Stringid(id+1,11),aux.Stringid(id+1,12),aux.Stringid(id+1,13),aux.Stringid(id+1,14),aux.Stringid(id+1,15))
if op==0 then if op==0 then
local p=s.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 and tp or 1-tp local p=_Duel.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 and tp or 1-tp
local lp=s.AnnounceNumber(tp,80000,16000,8000,4000,2000,1000,500,100,1) local lp=s.AnnounceNumber(tp,80000,16000,8000,4000,2000,1000,500,100,1)
Duel.SetLP(p,lp) Duel.SetLP(p,lp)
elseif op==1 then elseif op==1 then
...@@ -2034,9 +2020,9 @@ function s.toolop(tp) ...@@ -2034,9 +2020,9 @@ function s.toolop(tp)
end end
end end
elseif op==2 then elseif op==2 then
local p=s.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 and tp or 1-tp local p=_Duel.SelectOption(tp,aux.Stringid(id+1,1),aux.Stringid(id+1,2))==0 and tp or 1-tp
if p==1-tp then Duel.ConfirmCards(tp,Duel.GetFieldGroup(p,LOCATION_DECK,0)) end if p==1-tp then Duel.ConfirmCards(tp,Duel.GetFieldGroup(p,LOCATION_DECK,0)) end
local sg=s.SelectMatchingCard(tp,aux.TRUE,p,LOCATION_DECK,0,1,16,nil) local sg=_Duel.SelectMatchingCard(tp,aux.TRUE,p,LOCATION_DECK,0,1,16,nil)
for tc in aux.Next(sg) do for tc in aux.Next(sg) do
Duel.MoveSequence(tc,SEQ_DECKTOP) Duel.MoveSequence(tc,SEQ_DECKTOP)
end end
......
...@@ -81,7 +81,7 @@ function s.setop(e,tp,eg,ep,ev,re,r,rp) ...@@ -81,7 +81,7 @@ function s.setop(e,tp,eg,ep,ev,re,r,rp)
e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
e1:SetCode(EFFECT_QP_ACT_IN_SET_TURN) e1:SetCode(EFFECT_QP_ACT_IN_SET_TURN)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
dc:RegisterEffect(e1) tc:RegisterEffect(e1)
end end
if tc:IsType(TYPE_TRAP) then if tc:IsType(TYPE_TRAP) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -89,7 +89,7 @@ function s.setop(e,tp,eg,ep,ev,re,r,rp) ...@@ -89,7 +89,7 @@ function s.setop(e,tp,eg,ep,ev,re,r,rp)
e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN)
e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
dc:RegisterEffect(e1) tc:RegisterEffect(e1)
end end
end end
end end
\ No newline at end of file
...@@ -39,10 +39,10 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp) ...@@ -39,10 +39,10 @@ function s.checkop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tc:GetControler(),id,nil,0,1) Duel.RegisterFlagEffect(tc:GetControler(),id,nil,0,1)
tc=eg:GetNext() tc=eg:GetNext()
end end
Duel.GetFieldGroup(0,0xff,0xff):Filter(s.checkfilter,nil):ForEach(s.hintop) local g=Duel.GetFieldGroup(0,0xff,0xff):Filter(s.checkfilter,nil)
end for tc in aux.Next(g) do
function s.hintop(c) tc:SetHint(CHINT_NUMBER,Duel.GetFlagEffect(c:GetControler(),id))
c:SetHint(CHINT_NUMBER,Duel.GetFlagEffect(c:GetControler(),id)) end
end end
function s.filter(c,dam) function s.filter(c,dam)
return c:IsFaceup() and c:IsAttackBelow(dam) return c:IsFaceup() and c:IsAttackBelow(dam)
......
...@@ -130,7 +130,6 @@ function s.eqop(e,tp,eg,ep,ev,re,r,rp) ...@@ -130,7 +130,6 @@ function s.eqop(e,tp,eg,ep,ev,re,r,rp)
eqg2:AddCard(tc) eqg2:AddCard(tc)
tc=eqg:GetNext() tc=eqg:GetNext()
end end
Duel.RaiseEvent(eqg2,EVENT_SSET,e,REASON_EFFECT,tp,tp,0)
end end
local e0=Effect.CreateEffect(c) local e0=Effect.CreateEffect(c)
e0:SetDescription(aux.Stringid(id,0)) e0:SetDescription(aux.Stringid(id,0))
...@@ -170,7 +169,9 @@ function s.efcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -170,7 +169,9 @@ function s.efcon(e,tp,eg,ep,ev,re,r,rp)
end end
function s.efop(e,tp,eg,ep,ev,re,r,rp) function s.efop(e,tp,eg,ep,ev,re,r,rp)
local dg=eg:Filter(s.effilter,nil,e:GetHandler()) local dg=eg:Filter(s.effilter,nil,e:GetHandler())
dg:ForEach(s.addeffect) for tc in aux.Next(dg) do
s.addeffect(tc)
end
end end
function s.addeffect(c) function s.addeffect(c)
local efft={c:GetActivateEffect()} local efft={c:GetActivateEffect()}
...@@ -188,7 +189,6 @@ function s.addeffect(c) ...@@ -188,7 +189,6 @@ function s.addeffect(c)
e1:SetCondition(s.condition(v)) e1:SetCondition(s.condition(v))
e1:SetTarget(s.target(v)) e1:SetTarget(s.target(v))
e1:SetOperation(s.operation(v)) e1:SetOperation(s.operation(v))
Debug.Message(v:GetHandler():GetCode())
c:RegisterEffect(e1,true) c:RegisterEffect(e1,true)
end end
end end
...@@ -207,10 +207,8 @@ function s.cost(ae) ...@@ -207,10 +207,8 @@ function s.cost(ae)
end end
function s.condition(ae) function s.condition(ae)
return function (e,tp,eg,ep,ev,re,r,rp) return function (e,tp,eg,ep,ev,re,r,rp)
Debug.Message(1)
local c=e:GetHandler() local c=e:GetHandler()
local fcon=ae:GetCondition() local fcon=ae:GetCondition()
Debug.Message(c:IsFacedown() and (not fcon or fcon(e,tp,eg,ep,ev,re,r,rp)))
return c:IsFacedown() and (not fcon or fcon(e,tp,eg,ep,ev,re,r,rp)) return c:IsFacedown() and (not fcon or fcon(e,tp,eg,ep,ev,re,r,rp))
end end
end end
......
--种子雨
function c65830045.initial_effect(c)
--检索
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(65830045,0))
e1:SetCategory(CATEGORY_SEARCH)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCountLimit(1,65830045+EFFECT_COUNT_CODE_OATH)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetOperation(c65830045.activate)
c:RegisterEffect(e1)
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_HANDES+CATEGORY_SEARCH)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_SZONE)
e3:SetCountLimit(1)
e3:SetTarget(c65830045.drawtg)
e3:SetOperation(c65830045.drawop)
c:RegisterEffect(e3)
end
function c65830045.thfilter(c)
return c:IsSetCard(0xa33) and c:IsAbleToHand()
end
function c65830045.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c65830045.thfilter,tp,LOCATION_DECK,0,nil)
if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(65830045,0)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:Select(tp,1,1,nil)
Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
end
end
function c65830045.filter2(e,c)
return c:IsSetCard(0xa33) and c:IsAbleToHand()
end
function c65830045.filter1(c)
return c:IsDiscardable(REASON_EFFECT)
end
function c65830045.drawtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.IsExistingMatchingCard(c65830045.filter2,tp,LOCATION_DECK,0,1,nil,c) and Duel.IsExistingMatchingCard(c65830045.filter1,tp,LOCATION_HAND,0,1,nil,c) end
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,1,tp,LOCATION_HAND)
Duel.SetOperationInfo(0,CATEGORY_SEARCH,nil,1,tp,LOCATION_DECK)
end
function c65830045.drawop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,c65830045.thfilter,tp,LOCATION_DECK,0,1,1,nil,c)
if g:GetCount()>0 and Duel.SendtoHand(g,nil,REASON_EFFECT)~=0 and g:GetFirst():IsLocation(LOCATION_HAND) then
Duel.ConfirmCards(1-tp,g)
Duel.ShuffleHand(tp)
Duel.BreakEffect()
Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD,nil,c)
end
end
\ No newline at end of file
--超乎寻常的压力
function c65830055.initial_effect(c)
c:SetUniqueOnField(1,0,65830055)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--negate
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_SOLVING)
e2:SetRange(LOCATION_SZONE)
e2:SetCountLimit(1)
e2:SetCondition(c65830055.negcon)
e2:SetOperation(c65830055.negop)
c:RegisterEffect(e2)
end
function c65830055.cfilter(c)
return c:IsFaceup() and c:IsSetCard(0xa33) and c:IsType(TYPE_MONSTER)
end
function c65830055.negcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c65830055.cfilter,tp,LOCATION_MZONE,0,1,nil)
and rp==1-tp and (re:IsActiveType(TYPE_TRAP) or re:IsActiveType(TYPE_SPELL))
end
function c65830055.negop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,65830055)
local rc=re:GetHandler()
if Duel.NegateEffect(ev,true) and rc:IsRelateToEffect(re) then
Duel.Destroy(rc,REASON_EFFECT)
end
end
\ No newline at end of file
...@@ -85,7 +85,7 @@ function c67200901.setop(e,tp,eg,ep,ev,re,r,rp) ...@@ -85,7 +85,7 @@ function c67200901.setop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS)
local tg=g:Filter(Card.IsRelateToEffect,nil,e) local tg=g:Filter(Card.IsRelateToEffect,nil,e)
if tg:GetCount()>0 then if tg:GetCount()>0 then
if Duel.MoveToField(tg:GetFirst(),tp,tp,LOCATION_PZONE,POS_FACEUP,true)~=0 and Duel.IsExistingMatchingCard(c67200901.thfilter,tp,LOCATION_DECK,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(67200901,3)) then if Duel.MoveToField(tg:GetFirst(),tp,tp,LOCATION_PZONE,POS_FACEUP,true)~=0 and tg:GetFirst():IsLocation(LOCATION_PZONE) and Duel.IsExistingMatchingCard(c67200901.thfilter,tp,LOCATION_DECK,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(67200901,3)) then
Duel.BreakEffect() Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local gg=Duel.SelectMatchingCard(tp,c67200901.thfilter,tp,LOCATION_DECK,0,1,1,nil) local gg=Duel.SelectMatchingCard(tp,c67200901.thfilter,tp,LOCATION_DECK,0,1,1,nil)
......
--决斗怪兽试验场3
function c98942050.initial_effect(c)
--show
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_INITIAL)
e1:SetCode(EVENT_PREDRAW)
e1:SetRange(0xff)
e1:SetCountLimit(1,98942050+EFFECT_COUNT_CODE_DUEL)
e1:SetOperation(c98942050.op)
c:RegisterEffect(e1)
--adjust
local e01=Effect.CreateEffect(c)
e01:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e01:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e01:SetCode(EVENT_ADJUST)
e01:SetRange(0xff)
e01:SetOperation(c98942050.adjustop)
c:RegisterEffect(e01)
if not c98942050.global_activate_check then
c98942050.global_activate_check=true
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_CHAIN_SOLVED)
ge1:SetOperation(c98942050.checkop)
Duel.RegisterEffect(ge1,0)
end
end
function c98942050.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_CARD,0,98942050)
end
function c98942050.checkop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if re:GetValue()~=98942051 then return end
if rc:IsLocation(LOCATION_MZONE) and rc:GetFlagEffect(98942050)==0 then
rc:RegisterFlagEffect(98942050,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
end
end
function c98942050.actarget(e,te,tp)
--prevent activating
local tc=te:GetHandler()
return ((te:GetValue()==98942050 or te:GetValue()==98942051) and (not Duel.IsPlayerAffectedByEffect(te:GetHandlerPlayer(),98942050) or tc:GetFlagEffect(98942050)~=0))
--prevent normal activating beside S&T on field
or (te:GetValue()==53587968 and Duel.IsPlayerAffectedByEffect(te:GetHandlerPlayer(),98942050) and not (te:IsHasType(EFFECT_TYPE_ACTIVATE) and tc:IsLocation(LOCATION_SZONE)) and not tc:IsLocation(LOCATION_DECK))
--prevent quick activating on field
or (te:GetValue()==53587969 and te:IsHasType(EFFECT_TYPE_QUICK_O) and tc:IsLocation(LOCATION_SZONE))
--unique check
or (te:GetValue()==53587969 and tc:IsCode(32692693) and tc:CheckUniqueOnField(tc:GetControler())==false)
end
function c98942050.adjustop(e,tp,eg,ep,ev,re,r,rp)
--
if not c98942050.globle_check then
local c=e:GetHandler()
--Debug.Message(c:CheckUniqueOnField(tp))
--change effect type
local e01=Effect.CreateEffect(c)
e01:SetType(EFFECT_TYPE_FIELD)
e01:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_PLAYER_TARGET)
e01:SetCode(98942050)
e01:SetTargetRange(1,1)
Duel.RegisterEffect(e01,0)
--
c98942050.globle_check=true
local ge0=Effect.CreateEffect(e:GetHandler())
ge0:SetType(EFFECT_TYPE_FIELD)
ge0:SetCode(EFFECT_ACTIVATE_COST)
ge0:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
ge0:SetCost(aux.FALSE)
ge0:SetTargetRange(1,1)
ge0:SetTarget(c98942050.actarget)
Duel.RegisterEffect(ge0,0)
local g=Duel.GetMatchingGroup(c98942050.filter,0,0xff,0xff,nil)
cregister=Card.RegisterEffect
ecreateeffect=Effect.CreateEffect
esetcountLimit=Effect.SetCountLimit
table_effect={}
table_countlimit_flag=0
table_countlimit_count=0
Ursarctic_unit=nil
Ursarctic_Creating=false
Effect.CreateEffect=function(card)
Ursarctic_Creating=true
return ecreateeffect(card)
end
Effect.SetCountLimit=function(effect,count,flag)
if not Ursarctic_Creating and count==1 and flag~=0 then
local eff=table_effect[#table_effect-1]
return esetcountLimit(eff,1,0)
end
table_countlimit_flag=flag
table_countlimit_count=count
return esetcountLimit(effect,count,flag)
end
Card.RegisterEffect=function(card,effect,flag)
if effect then
local eff=effect:Clone()
local con=eff:GetCondition()
if con and effect:IsHasType(EFFECT_TYPE_QUICK_O) and effect:GetCode()==EVENT_FREE_CHAIN then
eff:SetValue(98942051)
--effect edit
local eff2=effect:Clone()
--spell speed 2
if con and eff2:IsHasType(EFFECT_TYPE_QUICK_O) and eff2:GetCode()==EVENT_FREE_CHAIN then
eff2:SetCondition(
function(e,tp,eg,ep,ev,re,r,rp)
Ursarctic_GetCurrentPhase=Duel.GetCurrentPhase
Duel.GetCurrentPhase=function() return PHASE_MAIN1 end
local Ursarctic_boolean=con(e,tp,eg,ep,ev,re,r,rp)
Duel.GetCurrentPhase=Ursarctic_GetCurrentPhase
return Ursarctic_boolean
end)
eff2:SetHintTiming(TIMING_DRAW_PHASE+TIMING_END_PHASE+TIMINGS_CHECK_MONSTER,TIMING_DRAW_PHASE+TIMING_END_PHASE+TIMINGS_CHECK_MONSTER)
end
table.insert(table_effect,eff2)
end
table.insert(table_effect,eff)
end
table_countlimit_flag=0
table_countlimit_count=0
Ursarctic_Creating=false
return
end
for tc in aux.Next(g) do
table_effect={}
Ursarctic_Counter=0
Ursarctic_Unique=false
tc:ReplaceEffect(98942050,0)
Duel.CreateToken(0,tc:GetOriginalCode())
for key,eff in ipairs(table_effect) do
cregister(tc,eff)
end
end
Card.RegisterEffect=cregister
Effect.CreateEffect=ecreateeffect
Effect.SetCountLimit=esetcountLimit
end
e:Reset()
end
function c98942050.filter(c)
return not c:IsCode(98942050)
end
\ No newline at end of file
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
!setname 0xe714 幻异梦像 !setname 0xe714 幻异梦像
!setname 0x7714 构异梦境 !setname 0x7714 构异梦境
!setname 0xd714 构异梦像 !setname 0xd714 构异梦像
!setname 0x715 气泡方块
#Viola 011 0xe10-0xe1f #Viola 011 0xe10-0xe1f
...@@ -683,7 +684,7 @@ ...@@ -683,7 +684,7 @@
!setname 0x680 UESTC !setname 0x680 UESTC
!setname 0x3680 UESTCer !setname 0x3680 UESTCer
#阳羽(耻辱柱) #阳羽(表彰柱)
!setname 0x823 混沌病毒 !setname 0x823 混沌病毒
#Mio 345 #Mio 345
...@@ -849,6 +850,8 @@ ...@@ -849,6 +850,8 @@
!setname 0x3a7b 璇姬 !setname 0x3a7b 璇姬
!setname 0x6a7b 天之杯 !setname 0x6a7b 天之杯
!setname 0x9a7b 狩猎游戏 !setname 0x9a7b 狩猎游戏
!setname 0x3a7c 25
!setname 0x6a7c Miku
!counter 0xa7f 好感指示物 !counter 0xa7f 好感指示物
#真正的光 164 #真正的光 164
...@@ -987,6 +990,7 @@ ...@@ -987,6 +990,7 @@
!setname 0x7ccd 熊猫头 !setname 0x7ccd 熊猫头
!setname 0x7cdd 魅魔娘 !setname 0x7cdd 魅魔娘
!setname 0x8cdd 虫融姬战国 !setname 0x8cdd 虫融姬战国
!setname 0xf008 魔心英雄
#逸轩 #逸轩
!setname 0xe51 颜彩 !setname 0xe51 颜彩
...@@ -1060,6 +1064,9 @@ ...@@ -1060,6 +1064,9 @@
!setname 0x48d 微元 !setname 0x48d 微元
!setname 0x48f 净化 !setname 0x48f 净化
#会变的不幸rua 519
!setname 0x510 《遥远·传说》
#sch 258 0x210-0x21f #sch 258 0x210-0x21f
!setname 0x211 舰娘 !setname 0x211 舰娘
!setname 0x3211 御三家(舰娘) !setname 0x3211 御三家(舰娘)
...@@ -1163,6 +1170,8 @@ ...@@ -1163,6 +1170,8 @@
#July 211 0x910-0x90f #July 211 0x910-0x90f
!setname 0x910 阿巴阿巴 !setname 0x910 阿巴阿巴
!counter 0x1910 阿巴阿巴指示物 !counter 0x1910 阿巴阿巴指示物
!setname 0x3917 幻想时间
!setname 0x91b 幻想时间
#玄羽 #玄羽
!setname 0xdc1 花信 !setname 0xdc1 花信
...@@ -1226,6 +1235,7 @@ ...@@ -1226,6 +1235,7 @@
!setname 0x375c 罪秽装束 !setname 0x375c 罪秽装束
!setname 0x75e 忍法帖|非「忍法」 !setname 0x75e 忍法帖|非「忍法」
!setname 0x75f 纹章呼唤 !setname 0x75f 纹章呼唤
!counter 0x1750 寒冷指示物
!counter 0x757 梦指示物 !counter 0x757 梦指示物
#Tierra 117 #Tierra 117
...@@ -1357,13 +1367,11 @@ ...@@ -1357,13 +1367,11 @@
!setname 0x389 神隐 !setname 0x389 神隐
!counter 0x389 神隐指示物 !counter 0x389 神隐指示物
#??? #澪 519
!setname 0x3256 暗月 !setname 0x3256 暗月
!setname 0x5256 /已腐蚀 !setname 0x5256 /已腐蚀
!counter 0x1750 寒冷指示物
!setname 0x3a7c 25 #王道遊老子 894
!setname 0x6a7c Miku
!setname 0x715 气泡方块
!setname 0x6708 灵形代 !setname 0x6708 灵形代
#TYGOC Submissions #TYGOC Submissions
......
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