Commit e716202b authored by salix5's avatar salix5

Merge pull request #1317 from Tianchenglipu/patch-2

Fix for Xyz Pendulum monsters' summon limit
parents 34e283ae e71aa648
...@@ -1945,6 +1945,34 @@ int32 card::is_can_be_special_summoned(effect * reason_effect, uint32 sumtype, u ...@@ -1945,6 +1945,34 @@ int32 card::is_can_be_special_summoned(effect * reason_effect, uint32 sumtype, u
if(is_status(STATUS_REVIVE_LIMIT) && !is_status(STATUS_PROC_COMPLETE)) { if(is_status(STATUS_REVIVE_LIMIT) && !is_status(STATUS_PROC_COMPLETE)) {
if((!nolimit && (current.location & 0x38)) || (!nocheck && !nolimit && (current.location & 0x3))) if((!nolimit && (current.location & 0x38)) || (!nocheck && !nolimit && (current.location & 0x3)))
return FALSE; return FALSE;
/*
* Xyz Pend is not Pendsumable if proc not completed.
* In this situation, I don't know if we can spsm it "ignoring summoning conditions".
* If we can, should change "!nolimit" to "!nocheck".
* This is minimal impacted modification.
*/
if(!nolimit && current.location == LOCATION_EXTRA && (current.position & POS_FACEUP))
return FALSE;
}
/*
* Xyz Pend is not Xyzsumable if Faceup in Extra, even proc completed.
* In this situation, I don't know if we can Xyzsum it "ignoring summoning conditions".
* If we can, should change "!nolimit" to "!nocheck".
* This is minimal impacted modification.
*/
if(is_status(STATUS_REVIVE_LIMIT) && !nolimit && current.location == LOCATION_EXTRA && (current.position & POS_FACEUP)) {
/*
* Do not really sure for this part. Let's keep it as a note.
*
* if((sumtype & SUMMON_TYPE_RITUAL) == SUMMON_TYPE_RITUAL && (data.type & TYPE_RITUAL))
* return FALSE;
* if((sumtype & SUMMON_TYPE_FUSION) == SUMMON_TYPE_FUSION && (data.type & TYPE_FUSION))
* return FALSE;
*/
if((sumtype & SUMMON_TYPE_SYNCHRO) == SUMMON_TYPE_SYNCHRO && (data.type & TYPE_SYNCHRO))
return FALSE;
if((sumtype & SUMMON_TYPE_XYZ) == SUMMON_TYPE_XYZ && (data.type & TYPE_XYZ))
return FALSE;
} }
if(((sumpos & POS_FACEDOWN) == 0) && pduel->game_field->check_unique_onfield(this, toplayer)) if(((sumpos & POS_FACEDOWN) == 0) && pduel->game_field->check_unique_onfield(this, toplayer))
return FALSE; return FALSE;
......
...@@ -123,6 +123,7 @@ end ...@@ -123,6 +123,7 @@ end
function Auxiliary.SynCondition(f1,f2,minct,maxc) function Auxiliary.SynCondition(f1,f2,minct,maxc)
return function(e,c,smat,mg) return function(e,c,smat,mg)
if c==nil then return true end if c==nil then return true end
if c:IsFaceup() then return false end
local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE) local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)
local ct=-ft local ct=-ft
local minc=minct local minc=minct
...@@ -195,6 +196,7 @@ function Auxiliary.XyzCondition(f,lv,minc,maxc) ...@@ -195,6 +196,7 @@ function Auxiliary.XyzCondition(f,lv,minc,maxc)
--og: use special material --og: use special material
return function(e,c,og) return function(e,c,og)
if c==nil then return true end if c==nil then return true end
if c:IsFaceup() then return false end
local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE) local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)
local ct=-ft local ct=-ft
if minc<=ct then return false end if minc<=ct then return false end
...@@ -232,6 +234,7 @@ end ...@@ -232,6 +234,7 @@ end
function Auxiliary.XyzCondition2(f,lv,minc,maxc,alterf,desc,op) function Auxiliary.XyzCondition2(f,lv,minc,maxc,alterf,desc,op)
return function(e,c,og) return function(e,c,og)
if c==nil then return true end if c==nil then return true end
if c:IsFaceup() then return false end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft local ct=-ft
......
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