Commit 1d7ece2e authored by Nemo Ma's avatar Nemo Ma

Update special.lua

parent 5d1c4f8e
function Auxiliary.PreloadUds() function Auxiliary.PreloadUds()
PreloadUds_Done=true PreloadUds_Done=true
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)
EFFECT_FLAG_CANNOT_NEGATE=EFFECT_FLAG_CANNOT_NEGATE or 0x200
function require(str) function require(str)
require_list=require_list or {} require_list=require_list or {}
if not require_list[str] then if not require_list[str] then
...@@ -29,8 +42,10 @@ function Auxiliary.PreloadUds() ...@@ -29,8 +42,10 @@ function Auxiliary.PreloadUds()
return _loadfile(str..".lua") return _loadfile(str..".lua")
end end
end end
local release_set={"CheckReleaseGroup","SelectReleaseGroup"} local release_set={"CheckReleaseGroup","SelectReleaseGroup"}
local release_set2={"CheckReleaseGroupEx","SelectReleaseGroupEx"} local release_set2={"CheckReleaseGroupEx","SelectReleaseGroupEx"}
--(p,f,ct,exc) (p,f,min,max,exc)
for i,fname in pairs(release_set) do for i,fname in pairs(release_set) do
local temp_f=Duel[fname] local temp_f=Duel[fname]
Duel[fname]=function(...) Duel[fname]=function(...)
...@@ -51,6 +66,7 @@ function Auxiliary.PreloadUds() ...@@ -51,6 +66,7 @@ function Auxiliary.PreloadUds()
return temp_f(...) return temp_f(...)
end end
end end
--(p,f,ct,r,bool,exc) (p,f,min,max,r,bool,exc)
for i,fname in pairs(release_set2) do for i,fname in pairs(release_set2) do
local temp_f=Duel[fname] local temp_f=Duel[fname]
Duel[fname]=function(...) Duel[fname]=function(...)
...@@ -71,57 +87,100 @@ function Auxiliary.PreloadUds() ...@@ -71,57 +87,100 @@ function Auxiliary.PreloadUds()
return temp_f(...) return temp_f(...)
end end
end end
Auxiliary=Auxiliary or {}
if not Auxiliary.GetMustMaterialGroup then local _CreateEffect=Effect.CreateEffect
Auxiliary.GetMustMaterialGroup=Duel.GetMustMaterial function Effect.CreateEffect(c,...)
local e=_CreateEffect(c,...)
effect_handler=effect_handler or {}
if e and c then effect_handler[e]=c end
return e
end end
local _SetRange=Effect.SetRange local _SetRange=Effect.SetRange
function Effect.SetRange(e,r,...) function Effect.SetRange(e,r,...)
table_range=table_range or {} table_range=table_range or {}
table_range[e]=r if e and r then table_range[e]=r end
return _SetRange(e,r,...) return _SetRange(e,r,...)
end end
local _Clone=Effect.Clone local _Clone=Effect.Clone
function Effect.Clone(e) function Effect.Clone(e,...)
effect_handler=effect_handler or {}
table_range=table_range or {} table_range=table_range or {}
local clone_e=_Clone(e) local clone_e=_Clone(e,...)
table_range[clone_e]=r if e and clone_e then
effect_handler[clone_e]=effect_handler[e]
table_range[clone_e]=table_range[e]
end
return clone_e return clone_e
end end
local _CRegisterEffect=Card.RegisterEffect
function Card.RegisterEffect(c,e,...)
local eid=_CRegisterEffect(c,e,...)
effect_registered=effect_registered or {}
if e and eid then effect_registered[e]=true end
return eid
end
local _DRegisterEffect=Duel.RegisterEffect
function Duel.RegisterEffect(e,p,...)
_DRegisterEffect(e,p,...)
effect_registered=effect_registered or {}
if e then effect_registered[e]=true end
end
local _GetHandler=Effect.GetHandler
function Effect.GetHandler(e,...)
--warning!!!
effect_registered=effect_registered or {}
if _Effect.IsHasType(e,EFFECT_TYPE_XMATERIAL) and not effect_registered[e] then return effect_handler[e] end
local c=_GetHandler(e,...)
if not c then return effect_handler[e] end
return c
end
local _IsCanTurnSet=Card.IsCanTurnSet local _IsCanTurnSet=Card.IsCanTurnSet
function Card.IsCanTurnSet(c) function Card.IsCanTurnSet(c,...)
return (c:IsSSetable(true) and c:IsLocation(LOCATION_SZONE)) or ((_IsCanTurnSet(c) and not c:IsLocation(LOCATION_SZONE))) return (c:IsLocation(LOCATION_SZONE) and c:IsSSetable(true)) or (not c:IsLocation(LOCATION_SZONE) and _IsCanTurnSet(c,...))
end end
EFFECT_FLAG_CANNOT_NEGATE=EFFECT_FLAG_CANNOT_NEGATE or 0x200
function Group.ForEach(group,func,...) --From REIKAI
if aux.GetValueType(group)=="Group" and group:GetCount()>0 then if not Group.ForEach then
local d_group=group:Clone() function Group.ForEach(group,func,...)
for tc in aux.Next(d_group) do if aux.GetValueType(group)=="Group" and group:GetCount()>0 then
func(tc,...) local d_group=group:Clone()
for tc in aux.Next(d_group) do
func(tc,...)
end
end end
end end
end end
function Auxiliary.AddPlaceToPZoneIfDestroyEffect(c)
--pendulum Auxiliary=Auxiliary or {}
local e1=Effect.CreateEffect(c) if not Auxiliary.GetMustMaterialGroup then
e1:SetDescription(aux.Stringid(13331639,3)) Auxiliary.GetMustMaterialGroup=Duel.GetMustMaterial
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) end
e1:SetCode(EVENT_DESTROYED) if not Auxiliary.AddPlaceToPZoneIfDestroyEffect then
e1:SetProperty(EFFECT_FLAG_DELAY) function Auxiliary.AddPlaceToPZoneIfDestroyEffect(c)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) --pendulum
local c=e:GetHandler() local e1=Effect.CreateEffect(c)
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() e1:SetDescription(aux.Stringid(13331639,3))
end) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk) e1:SetCode(EVENT_DESTROYED)
if chk==0 then return Duel.CheckLocation(tp,LOCATION_PZONE,0) or Duel.CheckLocation(tp,LOCATION_PZONE,1) end e1:SetProperty(EFFECT_FLAG_DELAY)
end) e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler()
local c=e:GetHandler() return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup()
if c:IsRelateToEffect(e) then end)
Duel.MoveToField(c,tp,tp,LOCATION_PZONE,POS_FACEUP,true) e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk)
end if chk==0 then return Duel.CheckLocation(tp,LOCATION_PZONE,0) or Duel.CheckLocation(tp,LOCATION_PZONE,1) end
end) end)
c:RegisterEffect(e1) e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.MoveToField(c,tp,tp,LOCATION_PZONE,POS_FACEUP,true)
end
end)
c:RegisterEffect(e1)
end
end end
--require("script/procedure.lua") --require("script/procedure.lua")
end end
\ No newline at end of file
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