Skip to content

Commit 27a0b8d

Browse files
authored
Update "Jinzo - Lord (Anime)"
- Is a full Nomi monster - Script modernization update
1 parent a655045 commit 27a0b8d

1 file changed

Lines changed: 80 additions & 68 deletions

File tree

unofficial/c513000120.lua

Lines changed: 80 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,120 @@
1-
--人造人間-サイコ・ロード
1+
--人造人間-サイコ・ロード (Anime)
2+
--Jinzo - Lord (Anime)
23
local s,id=GetID()
34
function s.initial_effect(c)
45
c:EnableReviveLimit()
5-
--special summon
6+
c:AddMustBeSpecialSummoned()
7+
--Special Summon this card by sending 1 face-up "Jinzo" you control to the Graveyard
68
local e2=Effect.CreateEffect(c)
79
e2:SetType(EFFECT_TYPE_FIELD)
810
e2:SetCode(EFFECT_SPSUMMON_PROC)
911
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
1012
e2:SetRange(LOCATION_HAND)
11-
e2:SetCondition(s.spcon)
12-
e2:SetTarget(s.sptg)
13-
e2:SetOperation(s.spop)
13+
e2:SetCondition(s.hspcon)
14+
e2:SetTarget(s.hsptg)
15+
e2:SetOperation(s.hspop)
1416
c:RegisterEffect(e2)
15-
--cannot trigger
16-
local e3=Effect.CreateEffect(c)
17-
e3:SetType(EFFECT_TYPE_FIELD)
18-
e3:SetCode(EFFECT_CANNOT_TRIGGER)
19-
e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
20-
e3:SetRange(LOCATION_MZONE)
21-
e3:SetTargetRange(0xa,0xa)
22-
e3:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
23-
c:RegisterEffect(e3)
24-
--disable
17+
--Trap Cards cannot be activated and the effects of all Trap Cards on the field are negated.
18+
local e3a=Effect.CreateEffect(c)
19+
e3a:SetType(EFFECT_TYPE_FIELD)
20+
e3a:SetCode(EFFECT_CANNOT_TRIGGER)
21+
e3a:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
22+
e3a:SetRange(LOCATION_MZONE)
23+
e3a:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
24+
e3a:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
25+
c:RegisterEffect(e3a)
26+
--Negate Trap Effects on the field
27+
local e3b=Effect.CreateEffect(c)
28+
e3b:SetType(EFFECT_TYPE_FIELD)
29+
e3b:SetCode(EFFECT_DISABLE)
30+
e3b:SetRange(LOCATION_MZONE)
31+
e3b:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE)
32+
e3b:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
33+
c:RegisterEffect(e3b)
34+
local e3c=Effect.CreateEffect(c)
35+
e3c:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
36+
e3c:SetCode(EVENT_CHAIN_SOLVING)
37+
e3c:SetRange(LOCATION_MZONE)
38+
e3c:SetOperation(s.disop)
39+
c:RegisterEffect(e3c)
40+
--Negate Trap Monsters and their effects
41+
local e3d=Effect.CreateEffect(c)
42+
e3d:SetType(EFFECT_TYPE_FIELD)
43+
e3d:SetCode(EFFECT_DISABLE_TRAPMONSTER)
44+
e3d:SetRange(LOCATION_MZONE)
45+
e3d:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
46+
e3d:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
47+
c:RegisterEffect(e3d)
48+
--Once per turn: You can destroy as many face-up Traps on the field as possible, and if you do, inflict 300 damage to your opponent for each card destroyed.
2549
local e4=Effect.CreateEffect(c)
26-
e4:SetType(EFFECT_TYPE_FIELD)
27-
e4:SetCode(EFFECT_DISABLE)
50+
e4:SetDescription(aux.Stringid(id,0))
51+
e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE)
52+
e4:SetType(EFFECT_TYPE_IGNITION)
2853
e4:SetRange(LOCATION_MZONE)
29-
e4:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE)
30-
e4:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
54+
e4:SetCountLimit(1)
55+
e4:SetTarget(s.destg)
56+
e4:SetOperation(s.desop)
3157
c:RegisterEffect(e4)
32-
--disable effect
33-
local e5=Effect.CreateEffect(c)
34-
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
35-
e5:SetCode(EVENT_CHAIN_SOLVING)
36-
e5:SetRange(LOCATION_MZONE)
37-
e5:SetOperation(s.disop)
38-
c:RegisterEffect(e5)
39-
--disable trap monster
40-
local e6=Effect.CreateEffect(c)
41-
e6:SetType(EFFECT_TYPE_FIELD)
42-
e6:SetCode(EFFECT_DISABLE_TRAPMONSTER)
43-
e6:SetRange(LOCATION_MZONE)
44-
e6:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
45-
e6:SetTarget(aux.TargetBoolFunction(Card.IsTrap))
46-
c:RegisterEffect(e6)
47-
--destroy
48-
local e7=Effect.CreateEffect(c)
49-
e7:SetDescription(aux.Stringid(35803249,0))
50-
e7:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE)
51-
e7:SetType(EFFECT_TYPE_IGNITION)
52-
e7:SetRange(LOCATION_MZONE)
53-
e7:SetCountLimit(1)
54-
e7:SetTarget(s.destg)
55-
e7:SetOperation(s.desop)
56-
c:RegisterEffect(e7)
57-
end
58-
s.listed_names={77585513}
59-
function s.disop(e,tp,eg,ep,ev,re,r,rp)
60-
local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)
61-
if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) then
62-
Duel.NegateEffect(ev)
63-
end
58+
-- Once per turn: You can look at all cards in your opponent's hand and Spell & Trap Card Zones, and if there are any Trap Cards among them, you can destroy those Trap Cards. Inflict 300 damage to your opponent for each card destroyed by this effect.
59+
local e4=Effect.CreateEffect(c)
60+
e4:SetDescription(aux.Stringid(35803249,0))
61+
e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE)
62+
e4:SetType(EFFECT_TYPE_IGNITION)
63+
e4:SetRange(LOCATION_MZONE)
64+
e4:SetCountLimit(1)
65+
e4:SetTarget(s.destg)
66+
e4:SetOperation(s.desop)
67+
c:RegisterEffect(e4)
68+
--Double Snare validity check
69+
aux.DoubleSnareValidity(c,LOCATION_MZONE)
6470
end
65-
function s.spfilter(c,tp)
66-
return c:IsFaceup() and c:IsCode(77585513) and c:IsAbleToGraveAsCost()
71+
s.listed_names={CARD_JINZO}
72+
function s.hspfilter(c)
73+
return c:IsFaceup() and c:IsCode(CARD_JINZO) and c:IsAbleToGraveAsCost()
6774
end
68-
function s.spcon(e,c)
75+
function s.hspcon(e,c)
6976
if c==nil then return true end
7077
local tp=c:GetControler()
71-
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
72-
local rg=Duel.GetMatchingGroup(s.spfilter,tp,LOCATION_MZONE,0,nil)
73-
return ft>-1 and #rg>0 and aux.SelectUnselectGroup(rg,e,tp,1,1,nil,0)
78+
local rg=Duel.GetMatchingGroup(s.hspfilter,tp,LOCATION_MZONE,0,nil)
79+
return #rg>0 and aux.SelectUnselectGroup(rg,e,tp,1,1,aux.ChkfMMZ(1),0)
7480
end
75-
function s.sptg(e,tp,eg,ep,ev,re,r,rp,c)
81+
function s.hsptg(e,tp,eg,ep,ev,re,r,rp,c)
7682
local c=e:GetHandler()
7783
local g=nil
78-
local rg=Duel.GetMatchingGroup(s.spfilter,tp,LOCATION_MZONE,0,nil)
79-
local g=aux.SelectUnselectGroup(rg,e,tp,1,1,nil,1,tp,HINTMSG_TOGRAVE,nil,nil,true)
84+
local rg=Duel.GetMatchingGroup(s.hspfilter,tp,LOCATION_MZONE,0,nil)
85+
local g=aux.SelectUnselectGroup(rg,e,tp,1,1,aux.ChkfMMZ(1),1,tp,HINTMSG_TOGRAVE,nil,nil,true)
8086
if #g>0 then
8187
g:KeepAlive()
8288
e:SetLabelObject(g)
8389
return true
8490
end
8591
return false
8692
end
87-
function s.spop(e,tp,eg,ep,ev,re,r,rp,c)
93+
function s.hspop(e,tp,eg,ep,ev,re,r,rp,c)
8894
local g=e:GetLabelObject()
8995
if not g then return end
9096
Duel.SendtoGrave(g,REASON_COST)
9197
g:DeleteGroup()
9298
end
99+
function s.disop(e,tp,eg,ep,ev,re,r,rp)
100+
local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)
101+
if tl==LOCATION_SZONE and re:IsTrapEffect() then
102+
Duel.NegateEffect(ev)
103+
end
104+
end
93105
function s.destg(e,tp,eg,ep,ev,re,r,rp,chk)
94106
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,0,LOCATION_SZONE|LOCATION_HAND,1,nil) end
95107
local sg=Duel.GetMatchingGroup(Card.IsTrap,tp,0,LOCATION_SZONE|LOCATION_HAND,nil)
96108
Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,#sg,0,0)
97109
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,#sg*300)
98110
end
99111
function s.desop(e,tp,eg,ep,ev,re,r,rp)
100-
local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND)
101-
local g2=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_SZONE,nil)
102-
g1:Merge(g2)
103-
Duel.ConfirmCards(tp,g1)
112+
local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND)
113+
local sg=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_SZONE,nil)
114+
hg:Merge(sg)
115+
Duel.ConfirmCards(tp,hg)
104116
Duel.ShuffleHand(1-tp)
105-
local sg=Duel.GetMatchingGroup(Card.IsTrap,tp,0,LOCATION_SZONE|LOCATION_HAND,nil)
106-
local ct=Duel.Destroy(sg,REASON_EFFECT)
117+
local dg=hg:Filter(Card.IsTrap,nil)
118+
local ct=Duel.Destroy(dg,REASON_EFFECT)
107119
Duel.Damage(1-tp,ct*300,REASON_EFFECT)
108-
end
120+
end

0 commit comments

Comments
 (0)