Commit a61b77c4 authored by wind2009's avatar wind2009 Committed by GitHub

Fix special summon limit (#2605)

* Fix special summon limit

* Add EFFECT_FLAG_OATH
parent 3f9a8bbf
...@@ -8,25 +8,17 @@ function c14756848.initial_effect(c) ...@@ -8,25 +8,17 @@ function c14756848.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c14756848.hspcon) e1:SetCondition(c14756848.hspcon)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetOperation(c14756848.hspop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon limit --destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetCategory(CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c14756848.hspcon2) e2:SetCost(c14756848.descost)
e2:SetOperation(c14756848.hspop) e2:SetTarget(c14756848.destg)
e2:SetOperation(c14756848.desop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_DESTROY)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE)
e3:SetCost(c14756848.descost)
e3:SetTarget(c14756848.destg)
e3:SetOperation(c14756848.desop)
c:RegisterEffect(e3)
end end
function c14756848.filter(c) function c14756848.filter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) return c:IsType(TYPE_SPELL+TYPE_TRAP)
...@@ -37,14 +29,11 @@ function c14756848.hspcon(e,c) ...@@ -37,14 +29,11 @@ function c14756848.hspcon(e,c)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and not Duel.IsExistingMatchingCard(c14756848.filter,tp,LOCATION_GRAVE,0,1,nil) and not Duel.IsExistingMatchingCard(c14756848.filter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c14756848.hspcon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
end
function c14756848.hspop(e,tp,eg,ep,ev,re,r,rp) function c14756848.hspop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetTarget(c14756848.splimit) e1:SetTarget(c14756848.splimit)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
......
...@@ -6,23 +6,15 @@ function c36523152.initial_effect(c) ...@@ -6,23 +6,15 @@ function c36523152.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetValue(SUMMON_VALUE_SELF)
e1:SetCondition(c36523152.spcon) e1:SetCondition(c36523152.spcon)
e1:SetOperation(c36523152.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon limit --double tribute
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EFFECT_DOUBLE_TRIBUTE)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetValue(c36523152.condition)
e2:SetCondition(c36523152.limcon)
e2:SetOperation(c36523152.limop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--double tribute
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_DOUBLE_TRIBUTE)
e3:SetValue(c36523152.condition)
c:RegisterEffect(e3)
end end
function c36523152.spcon(e,c) function c36523152.spcon(e,c)
if c==nil then return true end if c==nil then return true end
...@@ -30,14 +22,11 @@ function c36523152.spcon(e,c) ...@@ -30,14 +22,11 @@ function c36523152.spcon(e,c)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP)
end end
function c36523152.limcon(e,tp,eg,ep,ev,re,r,rp) function c36523152.spop(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
end
function c36523152.limop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetTarget(c36523152.splimit) e1:SetTarget(c36523152.splimit)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
......
...@@ -8,27 +8,19 @@ function c41141943.initial_effect(c) ...@@ -8,27 +8,19 @@ function c41141943.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c41141943.hspcon) e1:SetCondition(c41141943.hspcon)
e1:SetValue(SUMMON_VALUE_SELF) e2:SetOperation(c41141943.hspop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon limit --special summon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c41141943.hspcon2) e2:SetCountLimit(1,41141943)
e2:SetOperation(c41141943.hspop) e2:SetCondition(c41141943.spcon)
e2:SetCost(c41141943.spcost)
e2:SetTarget(c41141943.sptg)
e2:SetOperation(c41141943.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--special summon
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1,41141943)
e3:SetCondition(c41141943.spcon)
e3:SetCost(c41141943.spcost)
e3:SetTarget(c41141943.sptg)
e3:SetOperation(c41141943.spop)
c:RegisterEffect(e3)
end end
function c41141943.filter(c) function c41141943.filter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) return c:IsType(TYPE_SPELL+TYPE_TRAP)
...@@ -39,14 +31,11 @@ function c41141943.hspcon(e,c) ...@@ -39,14 +31,11 @@ function c41141943.hspcon(e,c)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil) and not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c41141943.hspcon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
end
function c41141943.hspop(e,tp,eg,ep,ev,re,r,rp) function c41141943.hspop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetTarget(c41141943.splimit) e1:SetTarget(c41141943.splimit)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
......
...@@ -7,26 +7,18 @@ function c64373401.initial_effect(c) ...@@ -7,26 +7,18 @@ function c64373401.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c64373401.hspcon) e1:SetCondition(c64373401.hspcon)
e1:SetValue(SUMMON_VALUE_SELF) e2:SetOperation(c64373401.hspop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon limit --spsummon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetDescription(aux.Stringid(64373401,0))
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCondition(c64373401.hspcon2) e2:SetCode(EVENT_BE_MATERIAL)
e2:SetOperation(c64373401.hspop) e2:SetCondition(c64373401.spcon)
e2:SetTarget(c64373401.sptg)
e2:SetOperation(c64373401.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(64373401,0))
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_BE_MATERIAL)
e3:SetCondition(c64373401.spcon)
e3:SetTarget(c64373401.sptg)
e3:SetOperation(c64373401.spop)
c:RegisterEffect(e3)
end end
function c64373401.filter(c) function c64373401.filter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) return c:IsType(TYPE_SPELL+TYPE_TRAP)
...@@ -37,14 +29,11 @@ function c64373401.hspcon(e,c) ...@@ -37,14 +29,11 @@ function c64373401.hspcon(e,c)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and not Duel.IsExistingMatchingCard(c64373401.filter,tp,LOCATION_GRAVE,0,1,nil) and not Duel.IsExistingMatchingCard(c64373401.filter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c64373401.hspcon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
end
function c64373401.hspop(e,tp,eg,ep,ev,re,r,rp) function c64373401.hspop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetTarget(c64373401.splimit) e1:SetTarget(c64373401.splimit)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_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