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,28 +87,62 @@ function Auxiliary.PreloadUds() ...@@ -71,28 +87,62 @@ 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
--From REIKAI
if not Group.ForEach then
function Group.ForEach(group,func,...) function Group.ForEach(group,func,...)
if aux.GetValueType(group)=="Group" and group:GetCount()>0 then if aux.GetValueType(group)=="Group" and group:GetCount()>0 then
local d_group=group:Clone() local d_group=group:Clone()
...@@ -101,6 +151,13 @@ function Auxiliary.PreloadUds() ...@@ -101,6 +151,13 @@ function Auxiliary.PreloadUds()
end end
end end
end end
end
Auxiliary=Auxiliary or {}
if not Auxiliary.GetMustMaterialGroup then
Auxiliary.GetMustMaterialGroup=Duel.GetMustMaterial
end
if not Auxiliary.AddPlaceToPZoneIfDestroyEffect then
function Auxiliary.AddPlaceToPZoneIfDestroyEffect(c) function Auxiliary.AddPlaceToPZoneIfDestroyEffect(c)
--pendulum --pendulum
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -123,5 +180,7 @@ function Auxiliary.PreloadUds() ...@@ -123,5 +180,7 @@ function Auxiliary.PreloadUds()
end) end)
c:RegisterEffect(e1) 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