Skip to content

Commit a21aeb0

Browse files
committed
Latest editions of Action Duel related scripts
1 parent 9a536b2 commit a21aeb0

File tree

110 files changed

+4804
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+4804
-0
lines changed

unofficial/c150000000.lua

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
--地縛原
2+
--Earthbound Tundra
3+
--Scripted by Larry126
4+
function s.initial_effect(c)
5+
--cannot summon in def
6+
local e1=Effect.CreateEffect(c)
7+
e1:SetType(EFFECT_TYPE_FIELD)
8+
e1:SetRange(LOCATION_FZONE)
9+
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
10+
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
11+
e1:SetTargetRange(1,1)
12+
e1:SetTarget(s.splimit)
13+
c:RegisterEffect(e1)
14+
local e2=e1:Clone()
15+
e2:SetCode(EFFECT_CANNOT_SUMMON)
16+
c:RegisterEffect(e2)
17+
local e3=e1:Clone()
18+
e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON)
19+
c:RegisterEffect(e3)
20+
--cannot change position
21+
local e4=Effect.CreateEffect(c)
22+
e4:SetType(EFFECT_TYPE_FIELD)
23+
e4:SetRange(LOCATION_FZONE)
24+
e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION)
25+
e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
26+
e4:SetTarget(s.poslimit)
27+
c:RegisterEffect(e4)
28+
--send
29+
local e5=Effect.CreateEffect(c)
30+
e5:SetCategory(CATEGORY_TOGRAVE)
31+
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
32+
e5:SetRange(LOCATION_FZONE)
33+
e5:SetCode(EVENT_TO_HAND)
34+
e5:SetCondition(s.tgcon)
35+
e5:SetTarget(s.tgtg)
36+
e5:SetOperation(s.tgop)
37+
c:RegisterEffect(e5)
38+
--action card
39+
local e5=Effect.CreateEffect(c)
40+
e5:SetType(EFFECT_TYPE_FIELD)
41+
e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
42+
e5:SetCode(id)
43+
e5:SetRange(LOCATION_FZONE)
44+
e5:SetTargetRange(1,1)
45+
e5:SetValue(1)
46+
c:RegisterEffect(e5)
47+
end
48+
function s.splimit(e,c,sump,sumtype,sumpos,targetp,se)
49+
return sumpos&POS_DEFENSE>0
50+
end
51+
function s.poslimit(e,c)
52+
return c:IsPosition(POS_FACEUP_ATTACK)
53+
end
54+
function s.tgfilter(c)
55+
return c:IsType(TYPE_ACTION)
56+
end
57+
function s.tgcon(e,tp,eg,ep,ev,re,r,rp)
58+
return eg:IsExists(s.tgfilter,1,nil)
59+
end
60+
function s.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
61+
if chk==0 then return true end
62+
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,0,1-ep,LOCATION_HAND)
63+
Duel.SetChainLimit(s.limit(ep))
64+
end
65+
function s.limit(ep)
66+
return function (e,lp,tp)
67+
return not (e:GetHandler():IsType(TYPE_ACTION) and tp~=1-ep)
68+
end
69+
end
70+
function s.tgop(e,tp,eg,ep,ev,re,r,rp)
71+
if not e:GetHandler():IsRelateToEffect(e) then return end
72+
local g=Duel.GetMatchingGroup(s.tgfilter,1-ep,LOCATION_HAND,0,nil)
73+
Duel.SendtoGrave(g,REASON_EFFECT)
74+
end

unofficial/c150000001.lua

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
--加速
2+
--Acceleration
3+
local s,id=GetID()
4+
function s.initial_effect(c)
5+
--reflect
6+
local e1=Effect.CreateEffect(c)
7+
e1:SetType(EFFECT_TYPE_ACTIVATE)
8+
e1:SetCode(EVENT_CHAINING)
9+
e1:SetCondition(s.condition)
10+
e1:SetOperation(s.operation)
11+
c:RegisterEffect(e1)
12+
--become action card
13+
local e2=Effect.CreateEffect(c)
14+
e2:SetType(EFFECT_TYPE_SINGLE)
15+
e2:SetCode(EFFECT_BECOME_QUICK)
16+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
17+
c:RegisterEffect(e2)
18+
end
19+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
20+
local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE)
21+
if ex then return true end
22+
ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER)
23+
return ex
24+
end
25+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
26+
local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID)
27+
local e1=Effect.CreateEffect(e:GetHandler())
28+
e1:SetType(EFFECT_TYPE_FIELD)
29+
e1:SetCode(EFFECT_CHANGE_DAMAGE)
30+
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
31+
e1:SetTargetRange(1,0)
32+
e1:SetLabel(cid)
33+
e1:SetValue(s.refcon)
34+
e1:SetReset(RESET_CHAIN)
35+
Duel.RegisterEffect(e1,tp)
36+
end
37+
function s.refcon(e,re,val,r,rp,rc)
38+
local cc=Duel.GetCurrentChain()
39+
local cc=Duel.GetCurrentChain()
40+
if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end
41+
local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID)
42+
if cid==e:GetLabel() then return 0 end
43+
return val
44+
end

unofficial/c150000002.lua

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
--突撃
2+
--Assault
3+
local s,id=GetID()
4+
function s.initial_effect(c)
5+
--Activate
6+
local e1=Effect.CreateEffect(c)
7+
e1:SetType(EFFECT_TYPE_ACTIVATE)
8+
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
9+
e1:SetCondition(s.condition)
10+
e1:SetOperation(s.activate)
11+
c:RegisterEffect(e1)
12+
--become action card
13+
local e2=Effect.CreateEffect(c)
14+
e2:SetType(EFFECT_TYPE_SINGLE)
15+
e2:SetCode(EFFECT_BECOME_QUICK)
16+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
17+
c:RegisterEffect(e2)
18+
end
19+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
20+
local tc=Duel.GetAttacker()
21+
local at=Duel.GetAttackTarget()
22+
if not at or tc:IsFacedown() or at:IsFacedown() then return false end
23+
if tc:IsControler(1-tp) then tc=at end
24+
e:SetLabelObject(tc)
25+
return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE)
26+
end
27+
function s.activate(e,tp,eg,ep,ev,re,r,rp)
28+
local c=e:GetHandler()
29+
local tc=e:GetLabelObject()
30+
if tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then
31+
local e1=Effect.CreateEffect(c)
32+
e1:SetType(EFFECT_TYPE_SINGLE)
33+
e1:SetCode(EFFECT_UPDATE_ATTACK)
34+
e1:SetValue(600)
35+
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
36+
tc:RegisterEffect(e1)
37+
end
38+
end

unofficial/c150000003.lua

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
--アタック・フォース
2+
--Attack Force
3+
local s,id=GetID()
4+
function s.initial_effect(c)
5+
--Activate
6+
local e1=Effect.CreateEffect(c)
7+
e1:SetType(EFFECT_TYPE_ACTIVATE)
8+
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
9+
e1:SetCondition(s.condition)
10+
e1:SetOperation(s.activate)
11+
c:RegisterEffect(e1)
12+
--become action card
13+
local e2=Effect.CreateEffect(c)
14+
e2:SetType(EFFECT_TYPE_SINGLE)
15+
e2:SetCode(EFFECT_BECOME_QUICK)
16+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
17+
c:RegisterEffect(e2)
18+
end
19+
function s.condition(e,tp,eg,ep,ev,re,r,rp)
20+
local tc=Duel.GetAttacker()
21+
local at=Duel.GetAttackTarget()
22+
if not at or tc:IsFacedown() or at:IsFacedown() then return false end
23+
if tc:IsControler(1-tp) then
24+
tc=Duel.GetAttackTarget()
25+
at=Duel.GetAttacker()
26+
end
27+
e:SetLabelObject(tc)
28+
return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) and tc:GetAttack()>at:GetAttack()
29+
end
30+
function s.activate(e,tp,eg,ep,ev,re,r,rp)
31+
local c=e:GetHandler()
32+
local tc=e:GetLabelObject()
33+
if tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then
34+
local e1=Effect.CreateEffect(c)
35+
e1:SetType(EFFECT_TYPE_SINGLE)
36+
e1:SetCode(EFFECT_UPDATE_ATTACK)
37+
e1:SetValue(600)
38+
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
39+
tc:RegisterEffect(e1)
40+
end
41+
end

unofficial/c150000004.lua

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
--バトル・バーナー
2+
--Battle Burner
3+
local s,id=GetID()
4+
function s.initial_effect(c)
5+
--Activate
6+
local e1=Effect.CreateEffect(c)
7+
e1:SetDescription(aux.Stringid(id,0))
8+
e1:SetCategory(CATEGORY_ATKCHANGE)
9+
e1:SetType(EFFECT_TYPE_ACTIVATE)
10+
e1:SetCode(EVENT_ATTACK_DISABLED)
11+
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
12+
e1:SetTarget(s.target)
13+
e1:SetOperation(s.operation)
14+
c:RegisterEffect(e1)
15+
--become action card
16+
local e2=Effect.CreateEffect(c)
17+
e2:SetType(EFFECT_TYPE_SINGLE)
18+
e2:SetCode(EFFECT_BECOME_QUICK)
19+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
20+
c:RegisterEffect(e2)
21+
end
22+
function s.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
23+
if chkc then return chkc==eg:GetFirst() end
24+
if chk==0 then return eg:GetFirst():IsFaceup() and eg:GetFirst():IsCanBeEffectTarget(e) end
25+
Duel.SetTargetCard(eg:GetFirst())
26+
end
27+
function s.operation(e,tp,eg,ep,ev,re,r,rp)
28+
local c=e:GetHandler()
29+
local tc=Duel.GetFirstTarget()
30+
if tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:GetFlagEffect(id)==0 then
31+
tc:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
32+
local e1=Effect.CreateEffect(c)
33+
e1:SetType(EFFECT_TYPE_SINGLE)
34+
e1:SetCode(EFFECT_EXTRA_ATTACK)
35+
e1:SetValue(1)
36+
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
37+
tc:RegisterEffect(e1)
38+
local e2=Effect.CreateEffect(c)
39+
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
40+
e2:SetCode(EVENT_BATTLE_START)
41+
e2:SetCountLimit(1)
42+
e2:SetOperation(s.atkop)
43+
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
44+
tc:RegisterEffect(e2)
45+
local e3=Effect.CreateEffect(c)
46+
e3:SetDescription(aux.Stringid(id,`))
47+
e3:SetProperty(EFFECT_FLAG_CLIENT_HINT)
48+
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
49+
tc:RegisterEffect(e3)
50+
end
51+
end
52+
function s.atkop(e,tp,eg,ep,ev,re,r,rp)
53+
local e1=Effect.CreateEffect(e:GetOwner())
54+
e1:SetDescription(aux.Stringid(id,2))
55+
e1:SetCategory(CATEGORY_DESTROY)
56+
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
57+
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
58+
e1:SetCode(EVENT_BATTLE_DESTROYING)
59+
e1:SetCondition(aux.bdgcon)
60+
e1:SetTarget(s.destg)
61+
e1:SetOperation(s.desop)
62+
e:GetHandler():RegisterEffect(e1)
63+
end
64+
function s.filter(c)
65+
return c:IsAttackPos() and c:IsDestructable()
66+
end
67+
function s.destg(e,tp,eg,ep,ev,re,r,rp,chk)
68+
if chk==0 then return Duel.IsExistingMatchingCard(s.filter,tp,0,LOCATION_MZONE,1,nil) end
69+
local g=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_MZONE,nil)
70+
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
71+
end
72+
function s.desop(e,tp,eg,ep,ev,re,r,rp)
73+
local g=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_MZONE,nil)
74+
if g:GetCount()>0 then
75+
Duel.Destroy(g,REASON_EFFECT)
76+
end
77+
end

unofficial/c150000005.lua

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
--Battle Change
2+
function c150000005.initial_effect(c)
3+
--Activate
4+
local e1=Effect.CreateEffect(c)
5+
e1:SetType(EFFECT_TYPE_ACTIVATE)
6+
e1:SetCode(EVENT_FREE_CHAIN)
7+
e1:SetCondition(c150000005.condition)
8+
e1:SetOperation(c150000005.activate)
9+
c:RegisterEffect(e1)
10+
--become action card
11+
local e2=Effect.CreateEffect(c)
12+
e2:SetType(EFFECT_TYPE_SINGLE)
13+
e2:SetCode(EFFECT_BECOME_QUICK)
14+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
15+
c:RegisterEffect(e2)
16+
local e3=e2:Clone()
17+
e3:SetCode(EFFECT_REMOVE_TYPE)
18+
e3:SetValue(TYPE_QUICKPLAY)
19+
c:RegisterEffect(e3)
20+
end
21+
function c150000005.actcondition(e,tp,eg,ep,ev,re,r,rp)
22+
return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE
23+
end
24+
function c150000005.activate(e,tp,eg,ep,ev,re,r,rp)
25+
local e1=Effect.CreateEffect(e:GetHandler())
26+
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
27+
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
28+
e1:SetCondition(c150000005.condition)
29+
e1:SetOperation(c150000005.operation)
30+
e1:SetReset(RESET_PHASE+PHASE_END)
31+
Duel.RegisterEffect(e1,tp)
32+
end
33+
function c150000005.condition(e,tp,eg,ep,ev,re,r,rp)
34+
return tp~=Duel.GetTurnPlayer() and Duel.GetAttacker():GetFlagEffect(150000005)==0
35+
end
36+
function c150000005.operation(e,tp,eg,ep,ev,re,r,rp)
37+
local ats=eg:GetFirst():GetAttackableTarget()
38+
local at=Duel.GetAttackTarget()
39+
if ats:GetCount()==0 or (at and ats:GetCount()==1) then return end
40+
if Duel.SelectYesNo(tp,aux.Stringid(150000005,0)) then
41+
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(150000005,1))
42+
local g=ats:Select(tp,1,1,at)
43+
Duel.Hint(HINT_CARD,0,150000005)
44+
Duel.HintSelection(g)
45+
Duel.ChangeAttackTarget(g:GetFirst())
46+
Duel.GetAttacker():RegisterFlagEffect(150000005,RESET_EVENT+0x1fe0000,0,1)
47+
end
48+
end

unofficial/c150000006.lua

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
--Battle Lock
2+
function c150000006.initial_effect(c)
3+
--Activate
4+
local e1=Effect.CreateEffect(c)
5+
e1:SetType(EFFECT_TYPE_ACTIVATE)
6+
e1:SetCode(EVENT_FREE_CHAIN)
7+
e1:SetHintTiming(0,TIMING_MAIN_END)
8+
e1:SetCondition(c150000006.condition)
9+
e1:SetOperation(c150000006.activate)
10+
c:RegisterEffect(e1)
11+
--become action card
12+
local e2=Effect.CreateEffect(c)
13+
e2:SetType(EFFECT_TYPE_SINGLE)
14+
e2:SetCode(EFFECT_BECOME_QUICK)
15+
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE)
16+
c:RegisterEffect(e2)
17+
local e3=e2:Clone()
18+
e3:SetCode(EFFECT_REMOVE_TYPE)
19+
e3:SetValue(TYPE_QUICKPLAY)
20+
c:RegisterEffect(e3)
21+
end
22+
function c150000006.condition(e,tp,eg,ep,ev,re,r,rp)
23+
local ph=Duel.GetCurrentPhase()
24+
return tp~=Duel.GetTurnPlayer() and bit.band(ph,PHASE_MAIN2+PHASE_END)==0
25+
end
26+
function c150000006.activate(e,tp,eg,ep,ev,re,r,rp)
27+
local e1=Effect.CreateEffect(e:GetHandler())
28+
e1:SetType(EFFECT_TYPE_FIELD)
29+
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
30+
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
31+
e1:SetReset(RESET_PHASE+PHASE_END)
32+
e1:SetTargetRange(0,1)
33+
Duel.RegisterEffect(e1,tp)
34+
end

0 commit comments

Comments
 (0)