Commit f147b547 authored by Fluorohydride's avatar Fluorohydride

fix

parent 207333cf
......@@ -2648,11 +2648,12 @@ int32 scriptlib::duel_is_player_affected_by_effect(lua_State *L) {
duel* pduel = interpreter::get_duel_info(L);
int32 playerid = lua_tointeger(L, 1);
if(playerid != 0 && playerid != 1) {
lua_pushboolean(L, 0);
lua_pushnil(L);
return 1;
}
int32 code = lua_tointeger(L, 2);
lua_pushboolean(L, pduel->game_field->is_player_affected_by_effect(playerid, code) ? 1 : 0);
effect* peffect = pduel->game_field->is_player_affected_by_effect(playerid, code);
interpreter::effect2value(L, peffect);
return 1;
}
int32 scriptlib::duel_is_player_can_draw(lua_State * L) {
......
......@@ -31,6 +31,7 @@ function c67556500.lvtg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c67556500.lvop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local fid=0
if c:IsFaceup() and c:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......@@ -38,6 +39,7 @@ function c67556500.lvop(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(e:GetLabel())
e1:SetReset(RESET_EVENT+0x1ff0000)
c:RegisterEffect(e1)
fid=c:GetRealFieldID()
end
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
......@@ -46,16 +48,19 @@ function c67556500.lvop(e,tp,eg,ep,ev,re,r,rp)
e2:SetTargetRange(1,0)
e2:SetReset(RESET_PHASE+PHASE_END)
e2:SetTarget(c67556500.splimit)
e2:SetLabel(fid)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_MUST_BE_SMATERIAL)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetTargetRange(1,0)
e3:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END)
c:RegisterEffect(e3)
end
function c67556500.splimit(e,c,sump,sumtype,sumpos,targetp,se)
return sumtype~=SUMMON_TYPE_SYNCHRO
return sumtype~=SUMMON_TYPE_SYNCHRO or e:GetOwner():GetRealFieldID()~=e:GetLabel() or e:GetOwner():IsFacedown()
end
function c67556500.regop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -74,27 +74,43 @@ function c93157004.syncon(e,c,tuner)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end
local g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel()
if tuner then
local tlv=tuner:GetLevel()
if lv-tlv<=0 then return false end
local f1=tuner.tuner_filter
return g1:IsExists(c93157004.synfilter2,1,tuner,lv-tlv,g2,f1,tuner)
if not pe then
return g1:IsExists(c93157004.synfilter2,1,tuner,lv-tlv,g2,f1,tuner)
else
return c93157004.synfilter2(pe:GetOwner(),lv-tlv,g2,f1,tuner)
end
end
if not pe then
return g1:IsExists(c93157004.synfilter1,1,nil,lv,g1,g2)
else
return c93157004.synfilter1(pe:GetOwner(),lv,g1,g2)
end
return g1:IsExists(c93157004.synfilter1,1,nil,lv,g1,g2)
end
function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
local g=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel()
if tuner then
g:AddCard(tuner)
local lv1=tuner:GetLevel()
local f1=tuner.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,lv-lv1,g2,f1,tuner)
local tuner2=t2:GetFirst()
local tuner2=nil
if not pe then
local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,lv-lv1,g2,f1,tuner)
tuner2=t2:GetFirst()
else
tuner2=pe:GetOwner()
Group.FromCards(tuner2):Select(tp,1,1,nil)
end
g:AddCard(tuner2)
local lv2=tuner2:GetLevel()
local f2=tuner2.tuner_filter
......@@ -103,8 +119,14 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
g:Merge(m3)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,lv,g1,g2)
local tuner1=t1:GetFirst()
local tuner1=nil
if not pe then
local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,lv,g1,g2)
tuner1=t1:GetFirst()
else
tuner1=pe:GetOwner()
Group.FromCards(tuner1):Select(tp,1,1,nil)
end
g:AddCard(tuner1)
local lv1=tuner1:GetLevel()
local f1=tuner1.tuner_filter
......
......@@ -81,27 +81,43 @@ function c97489701.syncon(e,c,tuner)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end
local g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel()
if tuner then
local tlv=tuner:GetLevel()
if lv-tlv<=0 then return false end
local f1=tuner.tuner_filter
return g1:IsExists(c97489701.synfilter2,1,tuner,lv-tlv,g2,f1,tuner)
if not pe then
return g1:IsExists(c97489701.synfilter2,1,tuner,lv-tlv,g2,f1,tuner)
else
return c97489701.synfilter2(pe:GetOwner(),lv-tlv,g2,f1,tuner)
end
end
if not pe then
return g1:IsExists(c97489701.synfilter1,1,nil,lv,g1,g2)
else
return c97489701.synfilter1(pe:GetOwner(),lv,g1,g2)
end
return g1:IsExists(c97489701.synfilter1,1,nil,lv,g1,g2)
end
function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
local g=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel()
if tuner then
g:AddCard(tuner)
local lv1=tuner:GetLevel()
local f1=tuner.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,lv-lv1,g2,f1,tuner)
local tuner2=t2:GetFirst()
local tuner2=nil
if not pe then
local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,lv-lv1,g2,f1,tuner)
tuner2=t2:GetFirst()
else
tuner2=pe:GetOwner()
Group.FromCards(tuner2):Select(tp,1,1,nil)
end
g:AddCard(tuner2)
local lv2=tuner2:GetLevel()
local f2=tuner2.tuner_filter
......@@ -110,8 +126,14 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
g:Merge(m3)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t1=g1:FilterSelect(tp,c97489701.synfilter1,1,1,nil,lv,g1,g2)
local tuner1=t1:GetFirst()
local tuner1=nil
if not pe then
local t1=g1:FilterSelect(tp,c97489701.synfilter1,1,1,nil,lv,g1,g2)
tuner1=t1:GetFirst()
else
tuner1=pe:GetOwner()
Group.FromCards(tuner1):Select(tp,1,1,nil)
end
g:AddCard(tuner1)
local lv1=tuner1:GetLevel()
local f1=tuner1.tuner_filter
......
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