Commit df693213 authored by Tachibana's avatar Tachibana

tnndx

parent 6be85944
Pipeline #2918 passed with stages
in 30 minutes and 29 seconds
This diff is collapsed.
......@@ -160,24 +160,26 @@ function rsof.Get_Cate_Hint_Op_List()
, ["sum"] = { CATEGORY_SUMMON, HINTMSG_SUMMON, aux.Stringid(65247798,0), aux.Stringid(41139112,0) }
, ["sp"] = { CATEGORY_SPECIAL_SUMMON, HINTMSG_SPSUMMON, aux.Stringid(74892653,2), aux.Stringid(17535764,1) }
, ["tk"] = { CATEGORY_TOKEN, 0 }
, ["tk"] = { CATEGORY_TOKEN, 0, aux.Stringid(9929398,0), aux.Stringid(2625939,0) }
, ["pos"] = { CATEGORY_POSITION, HINTMSG_POSCHANGE, aux.Stringid(3648368,0), aux.Stringid(m,2) }
, ["upa"] = { CATEGORY_POSITION, HINTMSG_POSCHANGE, aux.Stringid(359563,0), aux.Stringid(m,2), rsop.OperationPos(POS_FACEUP_ATTACK), Card.IsCanChangePosition }
, ["upd"] = { CATEGORY_POSITION, HINTMSG_POSCHANGE, aux.Stringid(52158283,1), aux.Stringid(m,2), rsop.OperationPos(POS_FACEUP_DEFENSE), Card.IsCanChangePosition }
, ["dpd"] = { CATEGORY_POSITION, HINTMSG_SET, aux.Stringid(359563,0), aux.Stringid(m,2), rsop.OperationPos(POS_FACEDOWN_DEFENSE), Card.IsCanTurnSet }
, ["dpd"] = { CATEGORY_POSITION, HINTMSG_SET, aux.Stringid(359563,0), aux.Stringid(m,2), rsop.OperationPos(POS_FACEDOWN_DEFENSE), Card.IsCanTurnSet }
, ["pos"] = { CATEGORY_POSITION, HINTMSG_POSCHANGE, aux.Stringid(3648368,0) }
, ["upa"] = { CATEGORY_POSITION, HINTMSG_SET, aux.Stringid(359563,0), nil, rsop.OperationPos(POS_FACEUP_ATTACK), Card.IsCanChangePosition }
, ["upd"] = { CATEGORY_POSITION, HINTMSG_POSCHANGE, aux.Stringid(52158283,1), nil, rsop.OperationPos(POS_FACEUP_DEFENSE), Card.IsCanChangePosition }
, ["dpd"] = { CATEGORY_POSITION, HINTMSG_SET, aux.Stringid(359563,0), nil, rsop.OperationPos(POS_FACEDOWN_DEFENSE), Card.IsCanTurnSet }
, ["ctrl"] = { CATEGORY_CONTROL, HINTMSG_CONTROL, aux.Stringid(4941482,0) }
, ["sctrl"] = { CATEGORY_CONTROL, HINTMSG_CONTROL, aux.Stringid(36331074,0) }
, ["dis"] = { CATEGORY_DISABLE, HINTMSG_DISABLE, aux.Stringid(39185163,1), aux.Stringid(25166510,2) }
, ["diss"] = { CATEGORY_DISABLE_SUMMON, 0, aux.Stringid(m+1,1) }
, ["diss"] = { CATEGORY_DISABLE_SUMMON, 0, aux.Stringid(m,1) }
, ["neg"] = { CATEGORY_NEGATE, 0, aux.Stringid(19502505,1) }
, ["eq"] = { CATEGORY_EQUIP, HINTMSG_EQUIP, aux.Stringid(68184115,0), aux.Stringid(35100834,0) }
, ["atk"] = { CATEGORY_ATKCHANGE, aux.Stringid(m,2), aux.Stringid(7194917,0) }
, ["def"] = { CATEGORY_DEFCHANGE, aux.Stringid(m,2), aux.Stringid(7194917,0) }
, ["atk"] = { CATEGORY_ATKCHANGE, HINTMSG_FACEUP, aux.Stringid(7194917,0) }
, ["def"] = { CATEGORY_DEFCHANGE, HINTMSG_FACEUP, aux.Stringid(7194917,0) }
, ["ct"] = { CATEGORY_COUNTER, HINTMSG_COUNTER, aux.Stringid(3070049,0) }
, ["pct"] = { CATEGORY_COUNTER, HINTMSG_COUNTER, aux.Stringid(3070049,0) }
......@@ -198,9 +200,9 @@ function rsof.Get_Cate_Hint_Op_List()
, ["cf"] = { 0, HINTMSG_CONFIRM, nil, nil, rsop.OperationConfirm }
, ["tf"] = { 0, HINTMSG_TOFIELD, aux.Stringid(m,7) }
, ["rf"] = { 0, aux.Stringid(80335817,0) }
, ["rf"] = { 0, aux.Stringid(80335817,0), nil, nil, rsop.OperationReturnToField() }
, ["act"] = { 0, aux.Stringid(m,1), aux.Stringid(m,0) }
, ["act"] = { 0, HINTMSG_RESOLVEEFFECT, aux.Stringid(m,0) }
, ["set"] = { 0, HINTMSG_SET, aux.Stringid(2521011,0), aux.Stringid(30741503,1) }
, ["sset"] = { 0, HINTMSG_SET, aux.Stringid(2521011,0), aux.Stringid(30741503,1), rsop.OperationSSet}
......@@ -458,7 +460,7 @@ function rsof.Escape_Old_Functions()
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
return rscon.disneg("neg", dn_filter, pl_fun and 0 or 1)(...)
return rscon.disneg("neg", dn_filter, pl_fun and 1 or 0)(...)
end
end
rscon.discon = function(dn_filter, pl_fun)
......@@ -467,7 +469,7 @@ function rsof.Escape_Old_Functions()
if type(dn_filter) == "number" then
dn_filter = dn_list[dn_filter]
end
return rscon.disneg("dis", dn_filter, pl_fun and 0 or 1)(...)
return rscon.disneg("dis", dn_filter, pl_fun and 1 or 0)(...)
end
end
rsef.QO_NEGATE = function(reg_list, dn_type, lim_list, dn_str, range, con, cost, desc_list, cate, flag, reset_list)
......
......@@ -29,10 +29,10 @@ function cm.efop(e,tp,eg,ep,ev,re,r,rp)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_DESTROYED)
--e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCountLimit(1)
e1:SetTarget(cm.thtg)
e1:SetOperation(cm.thop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
rc:RegisterEffect(e1,true)
rc:RegisterFlagEffect(0,reset_flag,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,5))
if not rc:IsType(TYPE_EFFECT) then
......@@ -45,35 +45,58 @@ function cm.efop(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.repfilter(c,tp)
return c:IsLocation(LOCATION_ONFIELD)
and c:IsReason(REASON_BATTLE+REASON_EFFECT) and not c:IsReason(REASON_REPLACE)
local a1=c:IsPreviousLocation(LOCATION_ONFIELD)
local a2=c:IsReason(REASON_EFFECT) or c:IsReason(REASON_BATTLE)
local a3=not c:IsReason(REASON_REPLACE)
local a4=Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil,c)
return a1 and a2 and a3 and a4
end
function cm.repfilter1(c,tp)
local a1=c:IsPreviousLocation(LOCATION_ONFIELD)
local a2=c:IsReason(REASON_EFFECT) or c:IsReason(REASON_BATTLE)
local a3=not c:IsReason(REASON_REPLACE)
local g=Group.CreateGroup()
if a1 and a2 and a3 then
g=Duel.GetMatchingGroup(cm.thfilter1,tp,LOCATION_DECK,0,nil,c)
end
return g:GetCount()>0
end
function cm.thfilter(c,ec)
return c:IsType(bit.band(ec:GetType(),0x7)) and c:IsAbleToHand() and c:IsSetCard(0xccc)
return ( (c:IsType(TYPE_MONSTER) and ec:IsType(TYPE_MONSTER)) or (c:IsType(TYPE_SPELL) and ec:IsType(TYPE_SPELL)) or (c:IsType(TYPE_TRAP) and ec:IsType(TYPE_TRAP)) ) and c:IsAbleToHand() and c:IsSetCard(0xccc)
end
function cm.thfilter1(c,ec)
if ( (c:IsType(TYPE_MONSTER) and ec:IsType(TYPE_MONSTER)) or (c:IsType(TYPE_SPELL) and ec:IsType(TYPE_SPELL)) or (c:IsType(TYPE_TRAP) and ec:IsType(TYPE_TRAP)) ) and c:IsAbleToHand() and c:IsSetCard(0xccc) then
c:RegisterFlagEffect(m,0,0,0)
return true
else
return false
end
end
function cm.thfilter2(c)
return c:GetFlagEffect(m)>0
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_GRAVE,0,1,nil,eg:GetFirst()) and eg:IsExists(cm.repfilter,1,nil,tp) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE)
if chk==0 then return eg:IsExists(cm.repfilter,1,nil,tp) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function cm.thop(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst()
local mon=0
local spe=0
local tra=0
for tc in aux.Next(eg) do
if tc:IsType(TYPE_MONSTER) then mon=1 end
if tc:IsType(TYPE_SPELL) then spe=1 end
if tc:IsType(TYPE_TRAP) then tra=1 end
end
local ct=mon+spe+tra
local tg=eg:Filter(cm.repfilter1,nil,tp)
local g=Duel.GetMatchingGroup(cm.thfilter2,tp,LOCATION_DECK,0,nil)
for tc in aux.Next(g) do
tc:ResetFlagEffect(m)
end
local sg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg1=g:FilterSelect(tp,Card.IsType,1,1,nil,TYPE_MONSTER)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.GetMatchingGroup(cm.thfilter,tp,LOCATION_DECK,0,nil,e,tp)
local sg=g:SelectSubGroup(tp,cm.thfilter0,false,1,ct)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
local sg2=g:FilterSelect(tp,Card.IsType,1,1,nil,TYPE_SPELL)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg3=g:FilterSelect(tp,Card.IsType,1,1,nil,TYPE_TRAP)
sg:Merge(sg1)
sg:Merge(sg2)
sg:Merge(sg3)
if sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
end
end
function cm.thfilter0(g)
return g:GetClassCount(Card.GetType)==#g
end
\ No newline at end of file
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