Skip to content

Commit 4234422

Browse files
authored
Various script updates and fixes
- Doomking Balerdroch: Should check that it can be Special Summoned in face-up Defense Position specifically. - Junk Gardna: Shouldn't change the battle position of the target of the first effect if you control it on resolution. - Regenesis Lord: The Setting effect shouldn't be HOPT. - Scrap Fist: Only the piercing damage and the battle protection effects should be applied to the "Junk Warrior". All the effects should be considered the effects of "Scrap Fist". - Updated various cards to use the new constants for "Junk Synchron" and "Junk Warrior". - Updated "Card.UpdateAttack" and "Card.UpdateDefense": Now they no longer check that the monster can lose that amount of ATK/DEF. Effects that need the monster to lose an exact amount of ATK/DEF should specifically check that the monster has at least that much ATK/DEF.
1 parent d9efa04 commit 4234422

11 files changed

Lines changed: 310 additions & 361 deletions

official/c22812963.lua

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,42 @@ function s.initial_effect(c)
66
c:EnableReviveLimit()
77
c:AddMustBeSpecialSummoned()
88
--Must be Special Summoned (from your hand) by banishing 1 face-up monster you control with 2500 original ATK and DEF
9+
local e0=Effect.CreateEffect(c)
10+
e0:SetDescription(aux.Stringid(id,0))
11+
e0:SetType(EFFECT_TYPE_FIELD)
12+
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
13+
e0:SetCode(EFFECT_SPSUMMON_PROC)
14+
e0:SetRange(LOCATION_HAND)
15+
e0:SetCountLimit(1,id,EFFECT_COUNT_CODE_OATH)
16+
e0:SetCondition(s.selfspcon)
17+
e0:SetTarget(s.selfsptg)
18+
e0:SetOperation(s.selfspop)
19+
c:RegisterEffect(e0)
20+
--Set 1 "Regenesis" Spell/Trap from your Deck
921
local e1=Effect.CreateEffect(c)
10-
e1:SetDescription(aux.Stringid(id,0))
11-
e1:SetType(EFFECT_TYPE_FIELD)
12-
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
13-
e1:SetCode(EFFECT_SPSUMMON_PROC)
14-
e1:SetRange(LOCATION_HAND)
15-
e1:SetCountLimit(1,id,EFFECT_COUNT_CODE_OATH)
16-
e1:SetCondition(s.selfspcon)
17-
e1:SetTarget(s.selfsptg)
18-
e1:SetOperation(s.selfspop)
22+
e1:SetDescription(aux.Stringid(id,1))
23+
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
24+
e1:SetProperty(EFFECT_FLAG_DELAY)
25+
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
26+
e1:SetTarget(s.settg)
27+
e1:SetOperation(s.setop)
1928
c:RegisterEffect(e1)
20-
--Set 1 "Regenesis" Spell/Trap from your Deck
29+
--Gains 2500 ATK during the Battle Phase only
2130
local e2=Effect.CreateEffect(c)
22-
e2:SetDescription(aux.Stringid(id,1))
23-
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
24-
e2:SetProperty(EFFECT_FLAG_DELAY)
25-
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
26-
e2:SetCountLimit(1,{id,1})
27-
e2:SetTarget(s.settg)
28-
e2:SetOperation(s.setop)
31+
e2:SetType(EFFECT_TYPE_SINGLE)
32+
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
33+
e2:SetCode(EFFECT_UPDATE_ATTACK)
34+
e2:SetRange(LOCATION_MZONE)
35+
e2:SetCondition(function() return Duel.IsBattlePhase() end)
36+
e2:SetValue(2500)
2937
c:RegisterEffect(e2)
30-
--Gains 2500 ATK during the Battle Phase only
38+
--Inflicts piercing battle damage
3139
local e3=Effect.CreateEffect(c)
3240
e3:SetType(EFFECT_TYPE_SINGLE)
33-
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
34-
e3:SetCode(EFFECT_UPDATE_ATTACK)
35-
e3:SetRange(LOCATION_MZONE)
36-
e3:SetCondition(function() return Duel.IsBattlePhase() end)
37-
e3:SetValue(2500)
41+
e3:SetCode(EFFECT_PIERCE)
3842
c:RegisterEffect(e3)
39-
--Inflicts piercing battle damage
40-
local e4=Effect.CreateEffect(c)
41-
e4:SetType(EFFECT_TYPE_SINGLE)
42-
e4:SetCode(EFFECT_PIERCE)
43-
c:RegisterEffect(e4)
4443
end
44+
s.listed_names={id}
4545
s.listed_series={SET_REGENESIS}
4646
function s.selfspconfilter(c)
4747
return (c:IsBaseAttack(2500) and c:IsBaseDefense(2500)) and c:IsFaceup() and c:IsAbleToRemoveAsCost()
@@ -56,17 +56,16 @@ function s.selfsptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
5656
local rg=Duel.GetMatchingGroup(s.selfspconfilter,tp,LOCATION_MZONE,0,nil)
5757
local g=aux.SelectUnselectGroup(rg,e,tp,1,1,aux.ChkfMMZ(1),1,tp,HINTMSG_REMOVE,nil,nil,true)
5858
if #g>0 then
59-
g:KeepAlive()
6059
e:SetLabelObject(g)
6160
return true
6261
end
6362
return false
6463
end
6564
function s.selfspop(e,tp,eg,ep,ev,re,r,rp,c)
6665
local g=e:GetLabelObject()
67-
if not g then return end
68-
Duel.Remove(g,POS_FACEUP,REASON_COST)
69-
g:DeleteGroup()
66+
if g then
67+
Duel.Remove(g,POS_FACEUP,REASON_COST)
68+
end
7069
end
7170
function s.setfilter(c)
7271
return c:IsSetCard(SET_REGENESIS) and c:IsSpellTrap() and c:IsSSetable()

official/c33750856.lua

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -58,31 +58,31 @@ function s.atkop(e,tp,eg,ep,ev,re,r,rp)
5858
if oc:IsControler(tp) then oc=tg:GetNext() end
5959
if oc and oc:IsFaceup() then
6060
--Change ATK to 0
61-
local e0=Effect.CreateEffect(c)
62-
e0:SetType(EFFECT_TYPE_SINGLE)
63-
e0:SetCode(EFFECT_SET_ATTACK_FINAL)
64-
e0:SetValue(0)
65-
e0:SetReset(RESETS_STANDARD_PHASE_END)
66-
oc:RegisterEffect(e0)
67-
end
68-
--Cannot be destroyed by that battle
69-
for tc in tg:Iter() do
7061
local e1=Effect.CreateEffect(c)
7162
e1:SetType(EFFECT_TYPE_SINGLE)
72-
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
73-
e1:SetValue(1)
74-
e1:SetReset(RESET_EVENT|RESETS_STANDARD|RESET_PHASE|PHASE_DAMAGE)
75-
tc:RegisterEffect(e1)
63+
e1:SetCode(EFFECT_SET_ATTACK_FINAL)
64+
e1:SetValue(0)
65+
e1:SetReset(RESETS_STANDARD_PHASE_END)
66+
oc:RegisterEffect(e1)
67+
end
68+
for tc in tg:Iter() do
69+
--Cannot be destroyed by that battle
70+
local e2=Effect.CreateEffect(c)
71+
e2:SetType(EFFECT_TYPE_SINGLE)
72+
e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
73+
e2:SetValue(1)
74+
e2:SetReset(RESET_EVENT|RESETS_STANDARD|RESET_PHASE|PHASE_DAMAGE)
75+
tc:RegisterEffect(e2)
7676
end
7777
end
7878
--Take no battle damage from that battle
79-
local e2=Effect.CreateEffect(c)
80-
e2:SetType(EFFECT_TYPE_FIELD)
81-
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
82-
e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
83-
e2:SetTargetRange(1,1)
84-
e2:SetReset(RESET_PHASE|PHASE_DAMAGE)
85-
Duel.RegisterEffect(e2,tp)
79+
local e3=Effect.CreateEffect(c)
80+
e3:SetType(EFFECT_TYPE_FIELD)
81+
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
82+
e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
83+
e3:SetTargetRange(1,1)
84+
e3:SetReset(RESET_PHASE|PHASE_DAMAGE)
85+
Duel.RegisterEffect(e3,tp)
8686
end
8787
function s.negcon(e,tp,eg,ep,ev,re,r,rp)
8888
if Duel.GetCurrentPhase()&(PHASE_DAMAGE|PHASE_DAMAGE_CAL)==0 or Duel.IsDamageCalculated() then return false end
@@ -99,12 +99,12 @@ function s.negop(e,tp,eg,ep,ev,re,r,rp)
9999
local tc=Duel.GetFirstTarget()
100100
if tc:IsFaceup() and tc:IsRelateToBattle() then
101101
--Gains 700 ATK
102-
local e0=Effect.CreateEffect(e:GetHandler())
103-
e0:SetType(EFFECT_TYPE_SINGLE)
104-
e0:SetCode(EFFECT_UPDATE_ATTACK)
105-
e0:SetValue(700)
106-
e0:SetReset(RESET_EVENT|RESETS_STANDARD)
107-
tc:RegisterEffect(e0)
102+
local e1=Effect.CreateEffect(e:GetHandler())
103+
e1:SetType(EFFECT_TYPE_SINGLE)
104+
e1:SetCode(EFFECT_UPDATE_ATTACK)
105+
e1:SetValue(700)
106+
e1:SetReset(RESET_EVENT|RESETS_STANDARD)
107+
tc:RegisterEffect(e1)
108108
end
109109
end
110110
end

official/c37993923.lua

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,55 @@
22
--Junk Gardna
33
local s,id=GetID()
44
function s.initial_effect(c)
5-
--synchro summon
6-
Synchro.AddProcedure(c,s.matfilter,1,1,Synchro.NonTuner(nil),1,99)
75
c:EnableReviveLimit()
8-
--pos change quick
6+
--Synchro Summon procedure: "Junk Synchron" + 1+ non-Tuner monsters
7+
Synchro.AddProcedure(c,s.tunerfilter,1,1,Synchro.NonTuner(nil),1,99)
8+
--Change the battle position of 1 monster your opponent controls
99
local e1=Effect.CreateEffect(c)
1010
e1:SetDescription(aux.Stringid(id,0))
1111
e1:SetCategory(CATEGORY_POSITION)
12-
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
1312
e1:SetType(EFFECT_TYPE_QUICK_O)
13+
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
1414
e1:SetCode(EVENT_FREE_CHAIN)
15-
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER_E)
16-
e1:SetCountLimit(1)
1715
e1:SetRange(LOCATION_MZONE)
18-
e1:SetTarget(s.postg1)
19-
e1:SetOperation(s.posop)
16+
e1:SetCountLimit(1)
17+
e1:SetHintTiming(0,TIMING_STANDBY_PHASE|TIMING_MAIN_END|TIMINGS_CHECK_MONSTER_E)
18+
e1:SetTarget(s.postg(true))
19+
e1:SetOperation(s.posop(true))
2020
c:RegisterEffect(e1)
21-
--pos change trigger
21+
--Change the battle position of 1 monster on the field
2222
local e2=Effect.CreateEffect(c)
23-
e2:SetDescription(aux.Stringid(id,0))
23+
e2:SetDescription(aux.Stringid(id,1))
2424
e2:SetCategory(CATEGORY_POSITION)
25-
e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
2625
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
26+
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET)
2727
e2:SetCode(EVENT_TO_GRAVE)
28-
e2:SetCondition(s.poscon)
29-
e2:SetTarget(s.postg2)
30-
e2:SetOperation(s.posop)
28+
e2:SetCondition(function(e) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end)
29+
e2:SetTarget(s.postg(false))
30+
e2:SetOperation(s.posop(false))
3131
c:RegisterEffect(e2)
3232
end
33-
s.material={63977008}
34-
s.listed_names={63977008}
33+
s.material={CARD_JUNK_SYNCHRON}
34+
s.listed_names={CARD_JUNK_SYNCHRON}
3535
s.material_setcode=SET_SYNCHRON
36-
function s.matfilter(c,scard,sumtype,tp)
37-
return c:IsSummonCode(scard,sumtype,tp,63977008) or c:IsHasEffect(20932152)
38-
end
39-
function s.postg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
40-
if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanChangePosition() end
41-
if chk==0 then return Duel.IsExistingTarget(Card.IsCanChangePosition,tp,0,LOCATION_MZONE,1,nil) end
42-
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
43-
local g=Duel.SelectTarget(tp,Card.IsCanChangePosition,tp,0,LOCATION_MZONE,1,1,nil)
44-
Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0)
45-
end
46-
function s.poscon(e,tp,eg,ep,ev,re,r,rp)
47-
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
36+
function s.tunerfilter(c,lc,stype,tp)
37+
return c:IsSummonCode(lc,stype,tp,CARD_JUNK_SYNCHRON) or c:IsHasEffect(20932152)
4838
end
49-
function s.postg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
50-
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanChangePosition() end
51-
if chk==0 then return Duel.IsExistingTarget(Card.IsCanChangePosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
52-
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
53-
local g=Duel.SelectTarget(tp,Card.IsCanChangePosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
54-
Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0)
39+
function s.postg(oppo)
40+
return function(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
41+
if chkc then return (chkc:IsControler(1-tp) or not oppo) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanChangePosition() end
42+
local location=oppo and 0 or LOCATION_MZONE
43+
if chk==0 then return Duel.IsExistingTarget(Card.IsCanChangePosition,tp,location,LOCATION_MZONE,1,nil) end
44+
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
45+
local g=Duel.SelectTarget(tp,Card.IsCanChangePosition,tp,location,LOCATION_MZONE,1,1,nil)
46+
Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,tp,0)
47+
end
5548
end
56-
function s.posop(e,tp,eg,ep,ev,re,r,rp)
57-
local tc=Duel.GetFirstTarget()
58-
if tc and tc:IsRelateToEffect(e) then
59-
Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)
60-
end
49+
function s.posop(oppo)
50+
return function(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
51+
local tc=Duel.GetFirstTarget()
52+
if tc:IsRelateToEffect(e) and (tc:IsControler(1-tp) or not oppo) then
53+
Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)
54+
end
55+
end
6156
end

0 commit comments

Comments
 (0)