Commit b5af970b authored by Tachibana's avatar Tachibana

得得得得得

parent 541fcdba
Pipeline #12675 passed with stages
in 27 minutes and 35 seconds
No preview for this file type
--库函数
BiAn={}
--
------------------------------------------------------public--------------------------------------------------
public={}
public.loaded_metatable_list={}
function public.load_metatable(code)
local m1=_G["c"..code]
if m1 then return m1 end
local m2=public.loaded_metatable_list[code]
if m2 then return m2 end
_G["c"..code]={}
if pcall(function() dofile("expansions/script/c"..code..".lua") end) or pcall(function() dofile("script/c"..code..".lua") end) then
local mt=_G["c"..code]
_G["c"..code]=nil
if mt then
public.loaded_metatable_list[code]=mt
return mt
end
else
_G["c"..code]=nil
end
end
--------------------返回自己场上的属性种类数
function public.getattcount(e,c)
local tp=e:GetHandlerPlayer()
local att=0
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)
local tc=g:GetFirst()
while tc do
att=bit.bor(att,tc:GetAttribute())
tc=g:GetNext()
end
local ct=0
while att~=0 do
if bit.band(att,0x1)~=0 then ct=ct+1 end
att=bit.rshift(att,1)
end
return ct
end
-------------------------------------------------------alice--------------------------------------------------
alice={}
alice.loaded_metatable_list={}
......@@ -212,7 +248,7 @@ function tarot.spcon1(e,c)
end
function tarot.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g=Duel.SelectReleaseGroup(tp,tarot.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
......
......@@ -21,28 +21,6 @@ function cm.initial_effect(c)
e3:SetOperation(cm.dop)
c:RegisterEffect(e3)
end
--SpecialSummon
function cm.rfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon1(e,c)
if c==nil then return true end
local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(tp,cm.rfilter,1,nil,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectReleaseGroup(tp,cm.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function cm.cfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon2(e)
return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,10060001)
end
--double
function cm.dcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m)==0
......@@ -60,14 +38,14 @@ function cm.dop(e,tp,eg,ep,ev,re,r,rp)
if tc:IsRelateToEffect(e) then
--atk up
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,3))
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE)
e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CLIENT_HINT)
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1)
e2:SetCondition(cm.atkcon)
e2:SetOperation(cm.atkop)
tc:RegisterEffect(e2)
local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(cm.thfilter),tp,LOCATION_GRAVE,0,nil,tc:GetLevel(),tc:GetAttribute())
......@@ -88,8 +66,7 @@ function cm.thfilter(c,lv,att)
end
function cm.atkcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local bc=c:GetBattleTarget()
return c==Duel.GetAttacker() and bc
return c==Duel.GetAttacker() or c==Duel.GetAttackTarget()
end
function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -99,7 +76,7 @@ function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL)
e1:SetValue(c:GetAttack()*2)
c:RegisterEffect(e1,true)
c:RegisterEffect(e1)
end
......
--教室的年幼支配者 小缪
local m=10060021
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c10000100") end,function() require("script/c10000100") end)
function cm.initial_effect(c)
aux.AddCodeList(c,10060001)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m)
e1:SetCondition(cm.spcon1)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.spcon2)
c:RegisterEffect(e2)
local e1,e2=tarot.sp(c,m)
--destroy
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,2))
......@@ -45,28 +28,6 @@ function cm.initial_effect(c)
e4:SetOperation(cm.tgop)
c:RegisterEffect(e4)
end
--SpecialSummon
function cm.rfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon1(e,c)
if c==nil then return true end
local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(tp,cm.rfilter,1,nil,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectReleaseGroup(tp,cm.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function cm.cfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon2(e)
return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,10060001)
end
--Destroy
function cm.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_GRAVE)<10
......@@ -93,7 +54,7 @@ end
function cm.tgtg(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 chk==0 then return Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0)
end
......
--梦物语的魔法少女 夏芽
local m=10060031
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c10000100") end,function() require("script/c10000100") end)
function cm.initial_effect(c)
aux.AddCodeList(c,10060001)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m)
e1:SetCondition(cm.spcon1)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.spcon2)
c:RegisterEffect(e2)
local e1,e2=tarot.sp(c,m)
--double
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,2))
e3:SetCategory(CATEGORY_TOHAND)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON)
e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetCode(EVENT_FREE_CHAIN)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
......@@ -38,28 +21,6 @@ function cm.initial_effect(c)
e3:SetOperation(cm.dop)
c:RegisterEffect(e3)
end
--SpecialSummon
function cm.rfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon1(e,c)
if c==nil then return true end
local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(tp,cm.rfilter,1,nil,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectReleaseGroup(tp,cm.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function cm.cfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon2(e)
return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,10060001)
end
--double
function cm.dcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m)==0
......@@ -77,14 +38,14 @@ function cm.dop(e,tp,eg,ep,ev,re,r,rp)
if tc:IsRelateToEffect(e) then
--atk up
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,3))
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE)
e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CLIENT_HINT)
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1)
e2:SetCondition(cm.atkcon)
e2:SetOperation(cm.atkop)
tc:RegisterEffect(e2)
local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(cm.thfilter),tp,LOCATION_GRAVE,0,nil,tc:GetLevel(),e,tp)
......@@ -104,8 +65,7 @@ function cm.thfilter(c,lv,e,tp)
end
function cm.atkcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local bc=c:GetBattleTarget()
return c==Duel.GetAttacker() and bc
return c==Duel.GetAttacker() or c==Duel.GetAttackTarget()
end
function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
--无法醒来的现实 梦魇
local m=10060041
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c10000100") end,function() require("script/c10000100") end)
function cm.initial_effect(c)
aux.AddCodeList(c,10060001)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m)
e1:SetCondition(cm.spcon1)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.spcon2)
c:RegisterEffect(e2)
local e1,e2=tarot.sp(c,m)
--to grave and tohand
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,2))
......@@ -38,28 +21,6 @@ function cm.initial_effect(c)
e3:SetOperation(cm.tgop)
c:RegisterEffect(e3)
end
--SpecialSummon
function cm.rfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon1(e,c)
if c==nil then return true end
local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(tp,cm.rfilter,1,nil,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectReleaseGroup(tp,cm.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function cm.cfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon2(e)
return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,10060001)
end
--tograve
function cm.tgcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m)==0
......@@ -75,7 +36,7 @@ function cm.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and cm.tfilter(chkc,tp) end
if chk==0 then return Duel.IsExistingTarget(cm.tfilter,tp,0,LOCATION_ONFIELD,1,nil,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_ONFIELD,1,1,nil)
local g=Duel.SelectTarget(tp,cm.tfilter,tp,0,LOCATION_ONFIELD,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0)
end
function cm.tgop(e,tp,eg,ep,ev,re,r,rp)
......
--消失在天空的祈祷 里昂
local m=10060051
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c10000100") end,function() require("script/c10000100") end)
function c10060051.initial_effect(c)
aux.AddCodeList(c,10060001)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m)
e1:SetCondition(cm.spcon1)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.spcon2)
c:RegisterEffect(e2)
local e1,e2=tarot.sp(c,m)
--indes
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,0))
......@@ -37,28 +20,6 @@ function c10060051.initial_effect(c)
e3:SetOperation(cm.indop)
c:RegisterEffect(e3)
end
--SpecialSummon
function cm.rfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon1(e,c)
if c==nil then return true end
local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(tp,cm.rfilter,1,nil,tp)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectReleaseGroup(tp,cm.rfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function cm.cfilter(c,tp)
return Duel.GetMZoneCount(tp,c)>0
end
function cm.spcon2(e)
return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,10060001)
end
--indes
function cm.indcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(m)==0
......
......@@ -39,7 +39,7 @@ function cm.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmDecktop(tp,3)
local g=Duel.GetDecktopGroup(tp,3)
if g:GetCount()>0 then
if Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil):GetClassCount(Card.GetAttribute)>=5 then
if public.getattcount(e,e:GetHandler())>=5 then
Duel.DisableShuffleCheck()
Duel.SendtoHand(g,nil,REASON_EFFECT)
elseif g:IsExists(cm.thfilter,1,nil,tp) then
......
......@@ -29,7 +29,7 @@ function cm.atktg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil):GetClassCount(Card.GetAttribute)>=5 then
if public.getattcount(e,e:GetHandler())>=5 then
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)
local tc=g:GetFirst()
while tc do
......
......@@ -43,7 +43,7 @@ function cm.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(tp,g)
Duel.ConfirmCards(1-tp,g)
local ct=g:Filter(Card.IsSetCard,nil,0x3421):GetClassCount(Card.GetCode)
if ct>0 and c:IsRelateToEffect(e) then Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) end
if ct>0 and c:IsRelateToEffect(e) and Duel.GetMZoneCount(tp)>0 then Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) end
if ct>2 and Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local hg=Duel.SelectMatchingCard(tp,cm.thfilter,tp,LOCATION_DECK,0,1,1,nil)
......
......@@ -306,3 +306,13 @@ function Tenka.FlowerKnightGirl(c)
c:RegisterEffect(ea)
end
--
--
function Tenka.Chiyuu(c,m)
c:SetSPSummonOnce(m)
aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x581f),4,2,Tenka.Chiyuufilter,aux.Stringid(81066000,0))
c:EnableReviveLimit()
end
function Tenka.Chiyuufilter(c)
return c:IsFaceup() and c:IsType(TYPE_LINK) and c:IsSetCard(0x581f)
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