Skip to content

Commit 0f484ba

Browse files
committed
added new rush cards
1 parent 0ace8d5 commit 0f484ba

13 files changed

Lines changed: 582 additions & 3 deletions

proc_maximum.lua

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,9 +456,18 @@ function Maximum.battlecon(e,tp,eg,ep,ev,re,r,rp)
456456
local c=e:GetHandler()
457457
return c:IsReason(REASON_BATTLE) and eg:IsContains(c)
458458
end
459+
function Maximum.GetSidePieces(c,tc)
460+
return c:HasFlagEffect(FLAG_MAXIMUM_SIDE_RELATION+tc:GetCardID())
461+
end
459462
function Maximum.battleop(e,tp,eg,ep,ev,re,r,rp)
460-
local g=Duel.GetMatchingGroup(Card.IsMaximumMode,e:GetHandler():GetPreviousControler(),LOCATION_MZONE,0,nil)
461-
Duel.Sendto(g,e:GetHandler():GetDestination(),0)
463+
local g=Duel.GetMatchingGroup(Maximum.GetSidePieces,e:GetHandler():GetPreviousControler(),LOCATION_ALL,LOCATION_ALL,nil,e:GetHandler())
464+
if e:GetHandler():GetDestination()==LOCATION_DECK then
465+
--We assume that the monsters are placed on the bottom of the Deck. We need to find another way if the monsters should be shuffled into the Deck instead.
466+
Duel.SendtoDeck(g,nil,SEQ_DECKBOTTOM,REASON_EFFECT)
467+
Duel.SortDeckbottom(e:GetHandler():GetOwner(),e:GetHandler():GetOwner(),3)
468+
else
469+
Duel.Sendto(g,e:GetHandler():GetDestination(),0)
470+
end
462471
for tc in aux.Next(g) do
463472
tc:SetReason(eg:GetFirst():GetReason())
464473
end

proc_rush.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ local LEGEND_LIST={160001000,160205001,160418001,160002000,160421015,160404001,1
1111
160320038,160018036,160212004,160212003,160402044,160212075,160212001,160402045,160019063,160019064,160019065,
1212
160213078,160213082,160402047,160213084,160020059,160213076,160020001,160020040,160020000,160214052,160323029,
1313
160214020,160021065,160021027,160402052,160215086,160324001,160402055,160324022,160023000,160217058,160024000,
14-
160024029,160402062,160402064,160219001,160402065}
14+
160024029,160402062,160402064,160219001,160402065,160459002,160459004}
1515
-- Returns if a card is a Legend. Can be updated if a GetOT function is added to the core
1616
function Card.IsLegend(c)
1717
return c:IsHasEffect(EFFECT_IS_LEGEND) or c:IsOriginalCode(table.unpack(LEGEND_LIST))

rush/c160459001.lua

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
--混沌の黒魔術師
2+
--Dark Magician of Chaos
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--Add 1 Equip Spell card to hand
7+
local e1=Effect.CreateEffect(c)
8+
e1:SetDescription(aux.Stringid(id,0))
9+
e1:SetCategory(CATEGORY_TOHAND+CATEGORY_ATKCHANGE)
10+
e1:SetType(EFFECT_TYPE_IGNITION)
11+
e1:SetRange(LOCATION_MZONE)
12+
e1:SetCountLimit(1)
13+
e1:SetCondition(function(e)return e:GetHandler():IsStatus(STATUS_SUMMON_TURN)end)
14+
e1:SetTarget(s.target)
15+
e1:SetOperation(s.operation)
16+
c:RegisterEffect(e1)
17+
end
18+
function s.thfilter(c)
19+
return c:IsSpell() and not c:IsLegend() and c:IsAbleToHand()
20+
end
21+
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
22+
if chk==0 then return Duel.IsExistingMatchingCard(aux.NecroValleyFilter(s.thfilter),tp,LOCATION_GRAVE,0,1,nil) end
23+
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
24+
end
25+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
26+
local c=e:GetHandler()
27+
--Effect
28+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
29+
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.thfilter),tp,LOCATION_GRAVE,0,1,1,nil)
30+
if #g>0 then
31+
Duel.SendtoHand(g,nil,REASON_EFFECT)
32+
Duel.ConfirmCards(1-tp,g)
33+
--to deck
34+
local e1=Effect.CreateEffect(c)
35+
e1:SetType(EFFECT_TYPE_SINGLE)
36+
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
37+
e1:SetRange(LOCATION_MZONE)
38+
e1:SetCode(EFFECT_BATTLE_DESTROY_REDIRECT)
39+
e1:SetValue(LOCATION_DECKBOT)
40+
e1:SetReset(RESETS_STANDARD_PHASE_END)
41+
c:RegisterEffect(e1)
42+
end
43+
local e2=Effect.CreateEffect(e:GetHandler())
44+
e2:SetDescription(aux.Stringid(id,1))
45+
e2:SetType(EFFECT_TYPE_FIELD)
46+
e2:SetCode(EFFECT_CANNOT_ACTIVATE)
47+
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
48+
e2:SetTargetRange(1,0)
49+
e2:SetValue(s.aclimit)
50+
e2:SetReset(RESET_PHASE|PHASE_END)
51+
Duel.RegisterEffect(e2,tp)
52+
end
53+
function s.aclimit(e,re,tp)
54+
return re:GetHandler():IsCode(40737112)
55+
end

rush/c160459002.lua

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
--魔導戦士 ブレイカー
2+
--Breaker the Magical Warrior
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--Send to GY
7+
local e1=Effect.CreateEffect(c)
8+
e1:SetDescription(aux.Stringid(id,0))
9+
e1:SetCategory(CATEGORY_TOGRAVE)
10+
e1:SetType(EFFECT_TYPE_IGNITION)
11+
e1:SetRange(LOCATION_MZONE)
12+
e1:SetCountLimit(1)
13+
e1:SetCondition(function(e)return e:GetHandler():IsStatus(STATUS_SUMMON_TURN)end)
14+
e1:SetTarget(s.atktg)
15+
e1:SetOperation(s.atkop)
16+
c:RegisterEffect(e1)
17+
--Destroy 1 Spell/Trap
18+
local e2=Effect.CreateEffect(c)
19+
e2:SetDescription(aux.Stringid(id,1))
20+
e2:SetCategory(CATEGORY_DESTROY)
21+
e2:SetType(EFFECT_TYPE_IGNITION)
22+
e2:SetRange(LOCATION_MZONE)
23+
e2:SetCountLimit(1)
24+
e2:SetCondition(function(e)return e:GetHandler():IsStatus(STATUS_SUMMON_TURN)end)
25+
e2:SetTarget(s.destg)
26+
e2:SetOperation(s.desop)
27+
c:RegisterEffect(e2)
28+
end
29+
function s.atktg(e,tp,eg,ep,ev,re,r,rp,chk)
30+
if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end
31+
end
32+
function s.atkop(e,tp,eg,ep,ev,re,r,rp)
33+
local c=e:GetHandler()
34+
--Effect
35+
if Duel.DiscardDeck(tp,1,REASON_EFFECT)==0 then return end
36+
--Gains ATK
37+
local e1=Effect.CreateEffect(c)
38+
e1:SetType(EFFECT_TYPE_SINGLE)
39+
e1:SetCode(EFFECT_UPDATE_ATTACK)
40+
e1:SetValue(300)
41+
e1:SetReset(RESET_EVENT|RESETS_STANDARD)
42+
c:RegisterEffect(e1)
43+
end
44+
function s.destg(e,tp,eg,ep,ev,re,r,rp,chk)
45+
local dg=Duel.GetMatchingGroup(Card.IsSpellTrap,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
46+
if chk==0 then return #dg>0 end
47+
end
48+
function s.desop(e,tp,eg,ep,ev,re,r,rp)
49+
--Effect
50+
local dg=Duel.GetMatchingGroup(Card.IsSpellTrap,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
51+
if #dg>0 then
52+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
53+
local sg=dg:Select(tp,1,1,nil)
54+
Duel.HintSelection(sg)
55+
Duel.Destroy(sg,REASON_EFFECT)
56+
end
57+
end

rush/c160459004.lua

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
--奈落の落とし穴
2+
--Bottomless Trap Hole
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--Activate
7+
local e1=Effect.CreateEffect(c)
8+
e1:SetDescription(aux.Stringid(id,0))
9+
e1:SetCategory(CATEGORY_DESTROY)
10+
e1:SetType(EFFECT_TYPE_ACTIVATE)
11+
e1:SetCode(EVENT_SUMMON_SUCCESS)
12+
e1:SetCondition(s.condition)
13+
e1:SetOperation(s.activate)
14+
c:RegisterEffect(e1)
15+
local e2=e1:Clone()
16+
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
17+
c:RegisterEffect(e2)
18+
end
19+
function s.cfilter(c,tp)
20+
return c:IsSummonPlayer(1-tp) and c:IsAttackAbove(1500) and c:IsFaceup()
21+
end
22+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
23+
return eg:IsExists(s.cfilter,1,nil,tp)
24+
end
25+
function s.activate(e,tp,eg,ep,ev,re,r,rp)
26+
--Effect
27+
local sg=eg:Select(tp,1,1,nil)
28+
Duel.HintSelection(sg)
29+
sg=sg:AddMaximumCheck()
30+
for tc in sg:Iter() do
31+
local e1=Effect.CreateEffect(e:GetHandler())
32+
e1:SetType(EFFECT_TYPE_SINGLE)
33+
e1:SetCode(EFFECT_TO_GRAVE_REDIRECT)
34+
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
35+
e1:SetReset(RESET_CHAIN)
36+
e1:SetValue(LOCATION_DECKBOT)
37+
tc:RegisterEffect(e1,true)
38+
end
39+
if Duel.Destroy(sg,REASON_EFFECT)<1 then return end
40+
if #sg>1 then
41+
Duel.SortDeckbottom(1-tp,1-tp,#sg)
42+
end
43+
end

rush/c160459006.lua

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
--聖なる魔術師
2+
--Magician of Faith
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--flip
7+
local e0=Effect.CreateEffect(c)
8+
e0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
9+
e0:SetCode(EVENT_FLIP)
10+
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
11+
e0:SetOperation(s.flipop)
12+
c:RegisterEffect(e0)
13+
--Add to the hand
14+
local e1=Effect.CreateEffect(c)
15+
e1:SetDescription(aux.Stringid(id,0))
16+
e1:SetCategory(CATEGORY_TOHAND)
17+
e1:SetType(EFFECT_TYPE_IGNITION)
18+
e1:SetRange(LOCATION_MZONE)
19+
e1:SetCountLimit(1)
20+
e1:SetCondition(s.condition)
21+
e1:SetTarget(s.target)
22+
e1:SetOperation(s.operation)
23+
c:RegisterEffect(e1)
24+
end
25+
function s.flipop(e,tp,eg,ep,ev,re,r,rp)
26+
if Duel.IsMainPhase() then
27+
e:GetHandler():RegisterFlagEffect(id,RESET_EVENT|RESETS_STANDARD|RESET_PHASE|PHASE_END,0,1)
28+
end
29+
end
30+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
31+
return e:GetHandler():GetFlagEffect(id)~=0
32+
end
33+
function s.thfilter(c)
34+
return c:IsSpell() and not c:IsLegend() and c:IsAbleToHand()
35+
end
36+
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
37+
if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_GRAVE,0,1,nil) end
38+
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
39+
end
40+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
41+
--Effect
42+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
43+
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.thfilter),tp,LOCATION_GRAVE,0,1,1,nil)
44+
if #g>0 then
45+
Duel.SendtoHand(g,nil,REASON_EFFECT)
46+
Duel.ConfirmCards(1-tp,g)
47+
end
48+
local e1=Effect.CreateEffect(e:GetHandler())
49+
e1:SetDescription(aux.Stringid(id,1))
50+
e1:SetType(EFFECT_TYPE_FIELD)
51+
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
52+
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
53+
e1:SetTargetRange(1,0)
54+
e1:SetValue(s.aclimit)
55+
e1:SetReset(RESET_PHASE|PHASE_END)
56+
Duel.RegisterEffect(e1,tp)
57+
end
58+
function s.aclimit(e,re,tp)
59+
return re:GetHandler():IsCode(31560081)
60+
end

rush/c160459007.lua

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
--闇の仮面
2+
--Mask of Darkness
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--flip
7+
local e0=Effect.CreateEffect(c)
8+
e0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
9+
e0:SetCode(EVENT_FLIP)
10+
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
11+
e0:SetOperation(s.flipop)
12+
c:RegisterEffect(e0)
13+
--Add to the hand
14+
local e1=Effect.CreateEffect(c)
15+
e1:SetDescription(aux.Stringid(id,0))
16+
e1:SetCategory(CATEGORY_TOHAND)
17+
e1:SetType(EFFECT_TYPE_IGNITION)
18+
e1:SetRange(LOCATION_MZONE)
19+
e1:SetCountLimit(1)
20+
e1:SetCondition(s.condition)
21+
e1:SetTarget(s.target)
22+
e1:SetOperation(s.operation)
23+
c:RegisterEffect(e1)
24+
end
25+
function s.flipop(e,tp,eg,ep,ev,re,r,rp)
26+
if Duel.IsMainPhase() then
27+
e:GetHandler():RegisterFlagEffect(id,RESET_EVENT|RESETS_STANDARD|RESET_PHASE|PHASE_END,0,1)
28+
end
29+
end
30+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
31+
return e:GetHandler():GetFlagEffect(id)~=0
32+
end
33+
function s.thfilter(c)
34+
return c:IsTrap() and not c:IsLegend() and c:IsAbleToHand()
35+
end
36+
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
37+
if chk==0 then return Duel.IsExistingMatchingCard(s.thfilter,tp,LOCATION_GRAVE,0,1,nil) end
38+
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
39+
end
40+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
41+
--Effect
42+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
43+
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.thfilter),tp,LOCATION_GRAVE,0,1,1,nil)
44+
if #g>0 then
45+
Duel.SendtoHand(g,nil,REASON_EFFECT)
46+
Duel.ConfirmCards(1-tp,g)
47+
end
48+
local e1=Effect.CreateEffect(e:GetHandler())
49+
e1:SetDescription(aux.Stringid(id,1))
50+
e1:SetType(EFFECT_TYPE_FIELD)
51+
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
52+
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
53+
e1:SetTargetRange(1,0)
54+
e1:SetValue(s.aclimit)
55+
e1:SetReset(RESET_PHASE|PHASE_END)
56+
Duel.RegisterEffect(e1,tp)
57+
end
58+
function s.aclimit(e,re,tp)
59+
return re:GetHandler():IsCode(28933734)
60+
end

rush/c160459008.lua

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
--レスキューキャット
2+
--Rescue Cat
3+
--scripted by YoshiDuels
4+
local s,id=GetID()
5+
function s.initial_effect(c)
6+
--Special Summon
7+
local e1=Effect.CreateEffect(c)
8+
e1:SetDescription(aux.Stringid(id,1))
9+
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
10+
e1:SetType(EFFECT_TYPE_IGNITION)
11+
e1:SetRange(LOCATION_MZONE)
12+
e1:SetCountLimit(1,0,EFFECT_COUNT_CODE_SINGLE)
13+
e1:SetCost(s.cost)
14+
e1:SetTarget(s.target)
15+
e1:SetOperation(s.operation)
16+
c:RegisterEffect(e1)
17+
end
18+
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
19+
if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end
20+
end
21+
function s.spfilter(c,e,tp)
22+
return c:IsRace(RACE_BEAST) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
23+
end
24+
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
25+
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,CARD_BLUEEYES_SPIRIT)
26+
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
27+
and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end
28+
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE)
29+
end
30+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
31+
--Requirement
32+
local c=e:GetHandler()
33+
if Duel.SendtoGrave(c,REASON_COST)<1 then return end
34+
--Effect
35+
if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,CARD_BLUEEYES_SPIRIT) then return end
36+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
37+
local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp)
38+
local fid=c:GetFieldID()
39+
for tc in g:Iter() do
40+
Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)
41+
tc:RegisterFlagEffect(id,RESET_EVENT|RESETS_STANDARD,0,1,fid)
42+
end
43+
Duel.SpecialSummonComplete()
44+
g:KeepAlive()
45+
--Destroy them during the End Phase
46+
local e1=Effect.CreateEffect(c)
47+
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
48+
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
49+
e1:SetCode(EVENT_PHASE+PHASE_END)
50+
e1:SetCountLimit(1)
51+
e1:SetLabel(fid)
52+
e1:SetLabelObject(g)
53+
e1:SetCondition(s.descon)
54+
e1:SetOperation(s.desop)
55+
Duel.RegisterEffect(e1,tp)
56+
local e2=Effect.CreateEffect(e:GetHandler())
57+
e2:SetDescription(aux.Stringid(id,1))
58+
e2:SetType(EFFECT_TYPE_FIELD)
59+
e2:SetCode(EFFECT_CANNOT_ACTIVATE)
60+
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
61+
e2:SetTargetRange(1,0)
62+
e2:SetValue(s.aclimit)
63+
e2:SetReset(RESET_PHASE|PHASE_END)
64+
Duel.RegisterEffect(e2,tp)
65+
end
66+
function s.desfilter(c,fid)
67+
return c:GetFlagEffectLabel(id)==fid
68+
end
69+
function s.descon(e,tp,eg,ep,ev,re,r,rp)
70+
local g=e:GetLabelObject()
71+
if not g:IsExists(s.desfilter,1,nil,e:GetLabel()) then
72+
g:DeleteGroup()
73+
e:Reset()
74+
return false
75+
else return true end
76+
end
77+
function s.desop(e,tp,eg,ep,ev,re,r,rp)
78+
local g=e:GetLabelObject()
79+
local tg=g:Filter(s.desfilter,nil,e:GetLabel())
80+
Duel.Destroy(tg,REASON_EFFECT)
81+
end
82+
function s.aclimit(e,re,tp)
83+
return re:GetHandler():IsCode(14878871)
84+
end

0 commit comments

Comments
 (0)