Commit d4dd5ec3 authored by TanakaKotoha's avatar TanakaKotoha

fix

parent a290296b
......@@ -133,6 +133,7 @@ function rsef.GetRegisterRange(reg_list)
for idx,card_type in pairs(type_list) do
if reg_handler:IsType(card_type) then
reg_range=reg_list[idx]
break
end
end
--after begain duel
......@@ -396,7 +397,7 @@ end
function rsef.SV(reg_list,code,val,range,con,reset_list,flag,desc_list,lim_list)
local reg_owner,reg_handler=rsef.GetRegisterCard(reg_list)
local flag2=rsef.GetRegisterProperty(flag)
local flag_list1={ EFFECT_IMMUNE_EFFECT,EFFECT_CANNOT_BE_BATTLE_TARGET,EFFECT_CANNOT_BE_EFFECT_TARGET,EFFECT_CHANGE_CODE,EFFECT_ADD_CODE,EFFECT_CHANGE_RACE,EFFECT_ADD_RACE,EFFECT_CHANGE_ATTRIBUTE,EFFECT_ADD_ATTRIBUTE,EFFECT_UPDATE_ATTACK,EFFECT_UPDATE_DEFENSE,rscode.Utility_Xyz_Material,rscode.Extra_Synchro_Material,rscode.Extra_Xyz_Material,EFFECT_EXTRA_LINK_MATERIAL }
local flag_list1={ EFFECT_IMMUNE_EFFECT,EFFECT_CANNOT_BE_BATTLE_TARGET,EFFECT_CANNOT_BE_EFFECT_TARGET,EFFECT_CHANGE_CODE,EFFECT_ADD_CODE,EFFECT_CHANGE_RACE,EFFECT_ADD_RACE,EFFECT_CHANGE_ATTRIBUTE,EFFECT_ADD_ATTRIBUTE,EFFECT_UPDATE_ATTACK,EFFECT_UPDATE_DEFENSE,rscode.Utility_Xyz_Material,rscode.Extra_Synchro_Material,rscode.Extra_Xyz_Material,EFFECT_EXTRA_LINK_MATERIAL,EFFECT_INDESTRUCTABLE,EFFECT_INDESTRUCTABLE_BATTLE,EFFECT_INDESTRUCTABLE_COUNT,EFFECT_INDESTRUCTABLE_EFFECT }
local flag_list2={ EFFECT_CHANGE_LEVEL,EFFECT_CHANGE_RANK,EFFECT_UPDATE_LEVEL,EFFECT_UPDATE_RANK }
local tf1=rsof.Table_List(flag_list1,code)
local tf2=rsof.Table_List(flag_list2,code)
......@@ -785,8 +786,8 @@ function rsef.FV_INDESTRUCTABLE(reg_list,inds_list,val_list,tg,tg_range_list,con
end
--Field Val Effect: Other Limit
function rsef.FV_LIMIT(reg_list,lim_list,val_list,tg,tg_range_list,con,reset_list,flag,desc_list)
local code_list_1={"dis","dise","tri","atk","atkan","datk","res","ress","resns","td","th","cp","cpe","ctrl","distm"}
local code_list_2={ EFFECT_DISABLE,EFFECT_DISABLE_EFFECT,EFFECT_CANNOT_TRIGGER,EFFECT_CANNOT_ATTACK,EFFECT_CANNOT_ATTACK_ANNOUNCE,EFFECT_CANNOT_DIRECT_ATTACK,EFFECT_CANNOT_RELEASE,EFFECT_UNRELEASABLE_SUM,EFFECT_UNRELEASABLE_NONSUM,EFFECT_CANNOT_TO_DECK,EFFECT_CANNOT_TO_HAND,EFFECT_CANNOT_CHANGE_POSITION,EFFECT_CANNOT_CHANGE_POS_E,EFFECT_CANNOT_CHANGE_CONTROL,EFFECT_DISABLE_TRAPMONSTER }
local code_list_1={"dis","dise","tri","atk","atkan","datk","res","ress","resns","td","th","cp","cpe","ctrl","distm","rm"}
local code_list_2={ EFFECT_DISABLE,EFFECT_DISABLE_EFFECT,EFFECT_CANNOT_TRIGGER,EFFECT_CANNOT_ATTACK,EFFECT_CANNOT_ATTACK_ANNOUNCE,EFFECT_CANNOT_DIRECT_ATTACK,EFFECT_CANNOT_RELEASE,EFFECT_UNRELEASABLE_SUM,EFFECT_UNRELEASABLE_NONSUM,EFFECT_CANNOT_TO_DECK,EFFECT_CANNOT_TO_HAND,EFFECT_CANNOT_CHANGE_POSITION,EFFECT_CANNOT_CHANGE_POS_E,EFFECT_CANNOT_CHANGE_CONTROL,EFFECT_DISABLE_TRAPMONSTER,EFFECT_CANNOT_REMOVE }
local code_list,val_list2=rsof.Table_Suit(lim_list,code_list_1,code_list_2,val_list)
local eff_list={}
local range=rsef.GetRegisterRange(reg_list)
......@@ -2762,7 +2763,7 @@ function rsop.SelectMoveToField_Activate(sp,filter,tp,loc_self,loc_oppo,minct,ma
solve_parama[1]=solve_parama[1] or sp
maxct=1
rsop.nohint=true
return rsop.SelectSolve(rshint.act2,sp,filter,tp,loc_self,loc_oppo,minct,maxct,except_obj,{rsop.MoveToField_Activate,table.unpack(solve_parama)},...)
return rsop.SelectSolve(rshint.act,sp,filter,tp,loc_self,loc_oppo,minct,maxct,except_obj,{rsop.MoveToField_Activate,table.unpack(solve_parama)},...)
end
--Function:Select card and SSet
function rsop.SelectSSet(sp,filter,tp,loc_self,loc_oppo,minct,maxct,except_obj,solve_parama,...)
......@@ -2952,18 +2953,16 @@ function rsop.MoveToField(corg,movep,targetp,loc,pos,enable,zone,hint,confirm)
end
--Operation function:MoveToField and treat activate and hint
--if you don't neet hint, best use normal Duel.MoveToField
function rsop.MoveToField_Activate(tc,movep,targetp,loc,pos,enable,zone,hint)
if aux.GetValueType(tc)~="Card" then
Debug.Message("rsop.Activate can only activate 1 card, don't use group as the first parameter!")
return false
end
function rsop.MoveToField_Activate(corg,movep,targetp,loc,pos,enable,zone,hint)
local g=rsgf.Mix2(corg)
local tc=g:GetFirst()
targetp=targetp or movep
pos=POS_FACEUP
rsop.CheckOperationHint(g,hint)
if tc:IsType(TYPE_PENDULUM) then
ploc=loc or LOCATION_PZONE
else
ploc=loc or rsef.GetRegisterRange(tc)
ploc=loc or rsef.GetRegisterRange(tc)
end
if ploc==LOCATION_MZONE then
Debug.Message("rsop.Activate can only activate Spell/Trap!")
......@@ -2997,7 +2996,11 @@ function rsop.MoveToField_Activate(tc,movep,targetp,loc,pos,enable,zone,hint)
end
--Function: Select Yes or No
function rsop.SelectYesNo(p,par,hintcode)
local string=type(par)=="table" and aux.Stringid(par[1],par[2]) or par
local string
if type(par)=="table" then string = aux.Stringid(par[1],par[2])
elseif type(par)=="number" then string = par
elseif type(par)=="string" then string = rshint["w"..par]
end
local res=Duel.SelectYesNo(p,string)
if res and type(hintcode)=="number" then
rshint.Card(hintcode)
......@@ -3014,6 +3017,7 @@ function rsop.SelectOption(p,...)
if rsof.Check_Boolean(val) and idx~=#functionlist then
local sel_hint=functionlist[idx+1]
if type(sel_hint)=="table" then ops[off]=aux.Stringid(sel_hint[1],sel_hint[2])
elseif type(sel_hint)=="string" then ops[off]=rshint[sel_hint]
else
ops[off]=sel_hint
end
......@@ -3472,21 +3476,26 @@ function rscf.DefineCard(code,setcode)
return code,ccodem
end
--Card function: rsxx.IsXSetXX
function rscf.DefineSet(setmeta,seriesstring,suffix)
function rscf.DefineSet(setmeta,seriesstring,type_int)
local prefixlist1={"","Fus","Link","Pre","Ori"}
local prefixlist1_fun={"","Fusion","Link","Previous","Original"}
local prefixlist2={"","M","S","T","ST"}
local prefixlist2_fun={ nil,TYPE_MONSTER,TYPE_SPELL,TYPE_TRAP,TYPE_SPELL+TYPE_TRAP }
suffix=suffix or ""
local suffixlist1={"","_th","_tg","_td","_rm","_sp1","_sp2"}
local suffixlist1_fun={ nil,Card.IsAbleToHand,Card.IsAbleToGrave,Card.IsAbleToDeck,Card.IsAbleToRemove,rscf.spfilter(),rscf.spfilter2}
type_int=type_int or ""
for idx1,prefix1 in pairs(prefixlist1) do
for idx2,prefix2 in pairs(prefixlist2) do
setmeta["Is"..prefix1.."Set"..prefix2..suffix]=rscf.DefineSet_Fun(prefixlist1_fun[idx1],prefixlist2_fun[idx2],seriesstring)
for idx3,suffix1 in pairs(suffixlist1) do
setmeta["Is"..prefix1.."Set"..prefix2..type_int..suffix1]=rscf.DefineSet_Fun(prefixlist1_fun[idx1],prefixlist2_fun[idx2],suffixlist1_fun[idx3],seriesstring)
end
end
end
end
function rscf.DefineSet_Fun(prefix1,prefix2,seriesstring)
return function(c)
function rscf.DefineSet_Fun(prefix1,prefix2,suffix1,seriesstring)
return function(c,...)
return rscf["Check"..prefix1.."SetCard"](c,seriesstring) and (not prefix2 or c:IsType(prefix2))
and (not suffix1 or suffix1(c,...))
end
end
--Register qucik attribute buff in cards
......
......@@ -101,7 +101,7 @@ function cm.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return c:IsAbleToRemoveAsCost() and Duel.IsExistingMatchingCard(cm.thcostfilter,tp,LOCATION_GRAVE,0,1,c) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local tt=Duel.SelectMatchingCard(tp,cm.thcostfilter,tp,LOCATION_GRAVE,0,1,1,c)
Duel.Remove(c+tt,REASON_COST)
Duel.Remove(c+tt,POS_FACEUP,REASON_COST)
end
function cm.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -94,7 +94,7 @@ function cm.thop(e,tp,eg,ep,ev,re,r,rp)
e5:SetLabelObject(sc)
e:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e5,tp)
sc=g:GetNext()
sc=og:GetNext()
end
end
end
......
......@@ -38,7 +38,7 @@ function cm.cop(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x3a81)
local sc=sg:GetFirst()
if zc:IsImmuneToEffect(e) then return end
if zc and sc and then
if zc and sc then
Duel.Overlay(zc,sc)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_XMATERIAL)
......
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