diff --git a/script/c12117532.lua b/script/c12117532.lua new file mode 100644 index 00000000..51da363a --- /dev/null +++ b/script/c12117532.lua @@ -0,0 +1,53 @@ +--罅割れゆく斧 +function c12117532.initial_effect(c) + aux.AddPersistentProcedure(c,nil,aux.FilterBoolFunction(Card.IsFaceup),CATEGORY_DISABLE,nil,nil,TIMING_END_PHASE,nil,nil,c12117532.target) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c12117532.descon) + e2:SetOperation(c12117532.desop) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c12117532.atkcon) + e3:SetOperation(c12117532.atkop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(aux.PersistentTargetFilter) + e4:SetValue(c12117532.val) + c:RegisterEffect(e4) +end +function c12117532.target(e,tp,eg,ep,ev,re,r,rp,tc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,tc,1,0,0) +end +function c12117532.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c12117532.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c12117532.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetFirstCardTarget()~=nil +end +function c12117532.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc then + tc:RegisterFlagEffect(12117532,RESET_EVENT+0x1fe0000,0,0) + end +end +function c12117532.val(e,c) + return c:GetFlagEffect(12117532)*-500 +end diff --git a/script/c12503902.lua b/script/c12503902.lua new file mode 100644 index 00000000..075b4c36 --- /dev/null +++ b/script/c12503902.lua @@ -0,0 +1,81 @@ +--レアメタル化・魔法反射装甲 +function c12503902.initial_effect(c) + aux.AddPersistentProcedure(c,0,c12503902.filter,CATEGORY_ATKCHANGE,EFFECT_FLAG_DAMAGE_STEP,nil,TIMING_DAMAGE_STEP,c12503902.condition,nil,nil,c12503902.operation) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + e1:SetValue(500) + c:RegisterEffect(e1) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c12503902.descon2) + e3:SetOperation(c12503902.desop2) + c:RegisterEffect(e3) +end +function c12503902.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c12503902.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c12503902.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c12503902.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c12503902.tfilter1(c,tc) + return c:IsType(TYPE_SPELL) and c:IsHasCardTarget(tc) +end +function c12503902.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c12503902.filter(tc) and tc:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c12503902.tfilter1,tp,LOCATION_SZONE,LOCATION_SZONE,nil,tc) + if g:GetCount()>0 then + local sg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetCondition(c12503902.discon) + e1:SetTarget(c12503902.distg) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetCondition(c12503902.discon2) + e1:SetOperation(c12503902.disop2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + end + end +end +function c12503902.discon(e) + return e:GetHandler():GetCardTargetCount()>0 +end +function c12503902.distg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsHasCardTarget(e:GetHandler():GetFirstCardTarget()) and c:IsType(TYPE_SPELL) +end +function c12503902.discon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if not tc or not re:IsActiveType(TYPE_SPELL) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g:IsContains(tc) +end +function c12503902.disop2(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + e:Reset() +end diff --git a/script/c14005031.lua b/script/c14005031.lua new file mode 100644 index 00000000..4526f805 --- /dev/null +++ b/script/c14005031.lua @@ -0,0 +1,64 @@ +--ムーンダンスの儀式 +function c14005031.initial_effect(c) + aux.AddPersistentProcedure(c,0,c14005031.filter,nil,nil,nil,0x1e0,nil,nil,nil,c14005031.activate) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14005031,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c14005031.matcon) + e1:SetOperation(c14005031.matop) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c14005031.disable) + e2:SetCondition(c14005031.discon) + e2:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c14005031.descon) + e3:SetOperation(c14005031.desop) + c:RegisterEffect(e3) +end +function c14005031.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 and c:IsAttribute(ATTRIBUTE_WIND) +end +function c14005031.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + c:RegisterFlagEffect(14005031,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c14005031.disable(e,c) + return c:IsType(TYPE_EFFECT) +end +function c14005031.discon(e) + return e:GetHandler():GetFirstCardTarget()~=nil +end +function c14005031.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c14005031.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c14005031.matcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFirstCardTarget()~=nil and e:GetHandler():GetFlagEffect(14005031)>0 +end +function c14005031.matop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if tc then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c16278116.lua b/script/c16278116.lua new file mode 100644 index 00000000..0885dc84 --- /dev/null +++ b/script/c16278116.lua @@ -0,0 +1,37 @@ +--竜の束縛 +function c16278116.initial_effect(c) + aux.AddPersistentProcedure(c,0,c16278116.filter,nil,nil,nil,0x1c0) + --cannot spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetTarget(c16278116.splimit) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c16278116.descon) + e4:SetOperation(c16278116.desop) + c:RegisterEffect(e4) +end +function c16278116.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttackBelow(2500) and c:IsDefenseBelow(2500) +end +function c16278116.splimit(e,c,tp,sumtp,sumpos) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and c:IsAttackBelow(tc:GetBaseAttack()) +end +function c16278116.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c16278116.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c16308000.lua b/script/c16308000.lua new file mode 100644 index 00000000..886b3bdd --- /dev/null +++ b/script/c16308000.lua @@ -0,0 +1,43 @@ +--神の威光 +function c16308000.initial_effect(c) + aux.AddPersistentProcedure(c,0,c16308000.filter,nil,nil,0x1c0,0x1c1,nil,nil,nil,c16308000.operation) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c16308000.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4b) +end +function c16308000.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetLabel(2) + e2:SetLabelObject(tc) + e2:SetCondition(c16308000.tgcon) + e2:SetOperation(c16308000.tgop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e2) + end +end +function c16308000.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c16308000.tgop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct==0 and e:GetHandler():IsHasCardTarget(e:GetLabelObject()) then + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c17787975.lua b/script/c17787975.lua new file mode 100644 index 00000000..e9dc7a25 --- /dev/null +++ b/script/c17787975.lua @@ -0,0 +1,58 @@ +--ディメンション・スフィンクス +function c17787975.initial_effect(c) + aux.AddPersistentProcedure(c,0,aux.FilterBoolFunction(Card.IsPosition,POS_FACEUP_ATTACK)) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17787975,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetHintTiming(TIMING_BATTLE_PHASE) + e3:SetCondition(c17787975.damcon) + e3:SetTarget(c17787975.damtg) + e3:SetOperation(c17787975.damop) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c17787975.descon) + e4:SetOperation(c17787975.desop) + c:RegisterEffect(e4) +end +function c17787975.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE_STEP +end +function c17787975.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + local at=Duel.GetAttacker() + if chk==0 then return tc and Duel.GetAttackTarget()==tc + and at and at:IsControler(1-tp) and at:GetAttack()>tc:GetAttack() + and c:GetFlagEffect(17787975)==0 end + local dam=math.abs(at:GetAttack()-tc:GetAttack()) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) + c:RegisterFlagEffect(17787975,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c17787975.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if not tc then return false end + local at=Duel.GetAttacker() + if at:IsRelateToBattle() then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,math.abs(at:GetAttack()-tc:GetAttack()),REASON_EFFECT) + end +end +function c17787975.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c17787975.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c18807108.lua b/script/c18807108.lua new file mode 100644 index 00000000..b9f3784d --- /dev/null +++ b/script/c18807108.lua @@ -0,0 +1,31 @@ +--六芒星の呪縛 +function c18807108.initial_effect(c) + aux.AddPersistentProcedure(c,1,nil,CATEGORY_POSITION,nil,nil,nil,nil,nil,nil,nil,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c18807108.descon) + e3:SetOperation(c18807108.desop) + c:RegisterEffect(e3) +end +function c18807108.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) and c:IsRelateToCard(tc) +end +function c18807108.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c25542642.lua b/script/c25542642.lua new file mode 100644 index 00000000..889045b7 --- /dev/null +++ b/script/c25542642.lua @@ -0,0 +1,87 @@ +--幻影霧剣 +function c25542642.initial_effect(c) + aux.AddPersistentProcedure(c,nil,c25542642.filter,CATEGORY_DISABLE,nil,nil,0x1c0,nil,nil,c25542642.target) + --cannot attack/disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e3) + local e5=e3:Clone() + e5:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e5) + --cannot be battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetValue(aux.PersistentTargetFilter) + c:RegisterEffect(e4) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetCondition(c25542642.descon) + e6:SetOperation(c25542642.desop) + c:RegisterEffect(e6) + --spsummon + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(25542642,0)) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetProperty(EFFECT_FLAG_CARD_TARGET) + e7:SetType(EFFECT_TYPE_QUICK_O) + e7:SetCode(EVENT_FREE_CHAIN) + e7:SetRange(LOCATION_GRAVE) + e7:SetCountLimit(1,25542642) + e7:SetCost(c25542642.spcost) + e7:SetTarget(c25542642.sptg) + e7:SetOperation(c25542642.spop) + c:RegisterEffect(e7) +end +function c25542642.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c25542642.target(e,tp,eg,ep,ev,re,r,rp,tc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,tc,1,0,0) +end +function c25542642.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c25542642.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c25542642.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c25542642.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25542642.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c25542642.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c25542642.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c25542642.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c25542642.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c29267084.lua b/script/c29267084.lua new file mode 100644 index 00000000..c5aff809 --- /dev/null +++ b/script/c29267084.lua @@ -0,0 +1,39 @@ +--闇の呪縛 +function c29267084.initial_effect(c) + aux.AddPersistentProcedure(c,1,aux.FilterBoolFunction(Card.IsFaceup),CATEGORY_POSITION,EFFECT_FLAG_DAMAGE_STEP,TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP,c29267084.condition) + --eff + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-700) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c29267084.descon) + e4:SetOperation(c29267084.desop) + c:RegisterEffect(e4) +end +function c29267084.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c29267084.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c29267084.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c34815282.lua b/script/c34815282.lua new file mode 100644 index 00000000..b7af273b --- /dev/null +++ b/script/c34815282.lua @@ -0,0 +1,40 @@ +--ミニチュアライズ +function c34815282.initial_effect(c) + aux.AddPersistentProcedure(c,nil,c34815282.filter,CATEGORY_ATKCHANGE,EFFECT_FLAG_DAMAGE_STEP,TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0,c34815282.condition) + --eff + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + e1:SetValue(-1000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_LEVEL) + e2:SetValue(-1) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c34815282.descon) + e3:SetOperation(c34815282.desop) + c:RegisterEffect(e3) +end +function c34815282.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c34815282.filter(c) + return c:IsFaceup() and c:GetBaseAttack()>1000 and c:GetLevel()>0 +end +function c34815282.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c34815282.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c38296564.lua b/script/c38296564.lua new file mode 100644 index 00000000..6dfc9ac5 --- /dev/null +++ b/script/c38296564.lua @@ -0,0 +1,84 @@ +--安全地帯 +function c38296564.initial_effect(c) + aux.AddPersistentProcedure(c,nil,c38296564.filter,nil,nil,nil,0x1e0,nil,nil,nil,c38296564.op) + --eff + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(c38296564.efilter) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(c38296564.tgval) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetCondition(c38296564.acon) + c:RegisterEffect(e4) + --Destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetCode(EVENT_LEAVE_FIELD_P) + e5:SetOperation(c38296564.checkop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetOperation(c38296564.desop) + e6:SetLabelObject(e5) + c:RegisterEffect(e6) + --Destroy2 + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetProperty(EFFECT_FLAG_DELAY) + e7:SetCondition(c38296564.descon2) + e7:SetOperation(c38296564.desop2) + c:RegisterEffect(e7) +end +function c38296564.filter(c) + return c:IsFaceup() and c:IsAttackPos() +end +function c38296564.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:RegisterFlagEffect(38296564,RESET_EVENT+0x1fe0000,0,1,tp) + end +end +function c38296564.acon(e) + return e:GetHandler():GetFlagEffect(38296564)>0 and e:GetHandler():GetFlagEffectLabel(38296564)==e:GetHandler():GetFirstCardTarget():GetControler() +end +function c38296564.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end +function c38296564.tgval(e,re,rp) + return rp~=e:GetOwnerPlayer() +end +function c38296564.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c38296564.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c38296564.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c38296564.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c40736921.lua b/script/c40736921.lua new file mode 100644 index 00000000..8c915f3c --- /dev/null +++ b/script/c40736921.lua @@ -0,0 +1,44 @@ +--心鎮壷のレプリカ +function c40736921.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c40736921.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(aux.PersistentTgCon) + e2:SetOperation(c40736921.tgop) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e3:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e3) +end +function c40736921.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(40736921,0)) + local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c40736921.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc and tc:IsFacedown() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end diff --git a/script/c42167046.lua b/script/c42167046.lua new file mode 100644 index 00000000..e22cfedb --- /dev/null +++ b/script/c42167046.lua @@ -0,0 +1,68 @@ +--グレイモヤ不発弾 +function c42167046.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c42167046.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(aux.PersistentTgCon) + e2:SetOperation(c42167046.tgop) + c:RegisterEffect(e2) + --Destroy1 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c42167046.descon1) + e3:SetOperation(c42167046.desop1) + c:RegisterEffect(e3) + --Destroy2 + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c42167046.descon2) + e4:SetOperation(c42167046.desop2) + c:RegisterEffect(e4) +end +function c42167046.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,2,2,nil,POS_FACEUP_ATTACK) +end +function c42167046.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(re) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,re) + local tc=g:GetFirst() + while tc do + c:SetCardTarget(tc) + tc=g:GetNext() + end +end +function c42167046.descon1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c42167046.desop1(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetCardTarget():Filter(Card.IsLocation,nil,LOCATION_MZONE) + Duel.Destroy(g,REASON_EFFECT) +end +function c42167046.descon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCardTargetCount()==0 then return false end + local g=c:GetCardTarget() + local tc1=g:GetFirst() + local tc2=g:GetNext() + return eg:IsContains(tc1) or (tc2 and eg:IsContains(tc2)) +end +function c42167046.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c42233477.lua b/script/c42233477.lua new file mode 100644 index 00000000..d470e6e0 --- /dev/null +++ b/script/c42233477.lua @@ -0,0 +1,38 @@ +--バーバリアン・レイジ +function c42233477.initial_effect(c) + aux.AddPersistentProcedure(c,0,c42233477.filter,CATEGORY_ATKCHANGE,EFFECT_FLAG_DAMAGE_STEP,TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP,c42233477.condition) + --eff + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + e1:SetValue(1000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_BATTLE_DESTROY_REDIRECT) + e2:SetValue(LOCATION_HAND) + c:RegisterEffect(e2) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c42233477.descon) + e2:SetOperation(c42233477.desop) + c:RegisterEffect(e2) +end +function c42233477.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c42233477.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c42233477.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c42233477.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c42776855.lua b/script/c42776855.lua new file mode 100644 index 00000000..e55b7fae --- /dev/null +++ b/script/c42776855.lua @@ -0,0 +1,72 @@ +--追走の翼 +function c42776855.initial_effect(c) + aux.AddPersistentProcedure(c,0,c42776855.filter,nil,nil,nil,0x1e0) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c42776855.efilter) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(42776855,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_START) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c42776855.atkcon) + e5:SetOperation(c42776855.atkop) + c:RegisterEffect(e5) + --Destroy2 + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetProperty(EFFECT_FLAG_DELAY) + e7:SetCondition(c42776855.descon2) + e7:SetOperation(c42776855.desop2) + c:RegisterEffect(e7) +end +function c42776855.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c42776855.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end +function c42776855.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + return tc:IsLocation(LOCATION_MZONE) and bc and bc:IsFaceup() and bc:IsLocation(LOCATION_MZONE) and bc:IsLevelAbove(5) +end +function c42776855.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + local atk=bc:GetBaseAttack() + if bc:IsRelateToBattle() and Duel.Destroy(bc,REASON_EFFECT)~=0 and bc:IsType(TYPE_MONSTER) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c42776855.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c42776855.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c50078509.lua b/script/c50078509.lua new file mode 100644 index 00000000..8dfc3328 --- /dev/null +++ b/script/c50078509.lua @@ -0,0 +1,39 @@ +--デモンズ・チェーン +function c50078509.initial_effect(c) + aux.AddPersistentProcedure(c,nil,c50078509.filter,CATEGORY_DISABLE,nil,nil,0x1c0,nil,nil,c50078509.target) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e3) + --cannot attack + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e4) + --Destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c50078509.descon) + e5:SetOperation(c50078509.desop) + c:RegisterEffect(e5) +end +function c50078509.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c50078509.target(e,tp,eg,ep,ev,re,r,rp,tc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,tc,1,0,0) +end +function c50078509.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c50078509.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c54175023.lua b/script/c54175023.lua new file mode 100644 index 00000000..2be34406 --- /dev/null +++ b/script/c54175023.lua @@ -0,0 +1,31 @@ +--ディメンション・ガーディアン +function c54175023.initial_effect(c) + aux.AddPersistentProcedure(c,0,aux.FilterBoolFunction(Card.IsPosition,POS_FACEUP_ATTACK)) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetValue(1) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c54175023.descon) + e5:SetOperation(c54175023.desop) + c:RegisterEffect(e5) +end +function c54175023.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c54175023.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c54704216.lua b/script/c54704216.lua new file mode 100644 index 00000000..34f11dbe --- /dev/null +++ b/script/c54704216.lua @@ -0,0 +1,59 @@ +--拷問車輪 +function c54704216.initial_effect(c) + aux.AddPersistentProcedure(c,1,nil,CATEGORY_DISABLE,nil,TIMING_STANDBY_PHASE,0x1c0,nil,nil,nil,nil,true) + --eff + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54704216,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c54704216.damcon) + e3:SetTarget(c54704216.damtg) + e3:SetOperation(c54704216.damop) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c54704216.descon) + e4:SetOperation(c54704216.desop) + c:RegisterEffect(e4) +end +function c54704216.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and c:IsRelateToCard(tc) +end +function c54704216.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c54704216.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFirstCardTarget()~=nil +end +function c54704216.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c54704216.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c59258334.lua b/script/c59258334.lua new file mode 100644 index 00000000..4b689247 --- /dev/null +++ b/script/c59258334.lua @@ -0,0 +1,94 @@ +--洗脳光線 +function c59258334.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c59258334.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(aux.PersistentTgCon) + e2:SetOperation(c59258334.tgop) + c:RegisterEffect(e2) + --control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_CONTROL) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + e3:SetValue(c59258334.tg) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c59258334.descon) + c:RegisterEffect(e4) + --destroy2 + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c59258334.descon2) + e5:SetOperation(c59258334.desop2) + c:RegisterEffect(e5) + --remove counter + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetCountLimit(1) + e6:SetCondition(c59258334.rccon) + e6:SetOperation(c59258334.rcop) + c:RegisterEffect(e6) +end +function c59258334.filter(c) + return c:GetCounter(0x100e)>0 and c:IsControlerCanBeChanged() +end +function c59258334.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c59258334.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c59258334.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c59258334.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c59258334.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc and tc:IsFaceup() and tc:GetCounter(0x100e)>0 and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c59258334.tg(e,c) + return e:GetHandlerPlayer() +end +function c59258334.descon(e) + local c=e:GetHandler() + if c:GetCardTargetCount()==0 then return false end + return c:GetFirstCardTarget():GetCounter(0x100e)==0 +end +function c59258334.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c59258334.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c59258334.rccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetFirstCardTarget() +end +function c59258334.rcop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + tc:RemoveCounter(tp,0x100e,1,REASON_EFFECT) + Duel.RaiseEvent(e:GetHandler(),EVENT_REMOVE_COUNTER+0x100e,e,REASON_EFFECT,tp,tp,1) +end diff --git a/script/c61936647.lua b/script/c61936647.lua new file mode 100644 index 00000000..f6d8631e --- /dev/null +++ b/script/c61936647.lua @@ -0,0 +1,100 @@ +--幻影剣 +function c61936647.initial_effect(c) + aux.AddPersistentProcedure(c,nil,aux.FilterBoolFunction(Card.IsFaceup),CATEGORY_ATKCHANGE,EFFECT_FLAG_DAMAGE_STEP,TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP,c61936647.condition) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + e3:SetValue(800) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c61936647.reptg) + e4:SetValue(c61936647.repval) + e4:SetOperation(c61936647.repop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c61936647.descon) + e5:SetOperation(c61936647.desop) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(61936647,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_FREE_CHAIN) + e6:SetRange(LOCATION_GRAVE) + e6:SetCountLimit(1,61936647) + e6:SetCost(c61936647.spcost) + e6:SetTarget(c61936647.sptg) + e6:SetOperation(c61936647.spop) + c:RegisterEffect(e6) +end +function c61936647.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c61936647.target(e,tp,eg,ep,ev,re,r,rp,tc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,tc,1,0,0) +end +function c61936647.repfilter(c,e) + return aux.PersistentTargetFilter(e,c) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c61936647.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable(e) and eg:IsExists(c61936647.repfilter,1,nil,e) end + return Duel.SelectYesNo(tp,aux.Stringid(61936647,0)) +end +function c61936647.repval(e,c) + return c61936647.repfilter(c,e) +end +function c61936647.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c61936647.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c61936647.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c61936647.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c61936647.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61936647.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c61936647.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c61936647.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c61936647.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c61936647.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c76515293.lua b/script/c76515293.lua new file mode 100644 index 00000000..d04c95f3 --- /dev/null +++ b/script/c76515293.lua @@ -0,0 +1,47 @@ +--心鎮壷 +function c76515293.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c76515293.target) + e1:SetOperation(c76515293.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(aux.PersistentTgCon) + e2:SetOperation(c76515293.tgop) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e3:SetTarget(aux.PersistentTargetFilter) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c76515293.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,2,2,e:GetHandler()) +end +function c76515293.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(re) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,re) + local tc=g:GetFirst() + while tc do + c:SetCardTarget(tc) + tc=g:GetNext() + end +end diff --git a/script/c80560728.lua b/script/c80560728.lua new file mode 100644 index 00000000..464a4823 --- /dev/null +++ b/script/c80560728.lua @@ -0,0 +1,61 @@ +--ディメンション・ミラージュ +function c80560728.initial_effect(c) + aux.AddPersistentProcedure(c,1,aux.FilterBoolFunction(Card.IsPosition,POS_FACEUP_ATTACK)) + --mulit attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(80560728,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c80560728.atcon) + e3:SetCost(c80560728.atcost) + e3:SetOperation(c80560728.atop) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c80560728.descon) + e4:SetOperation(c80560728.desop) + c:RegisterEffect(e4) +end +function c80560728.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + local at=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return at==tc and d and d:IsRelateToBattle() +end +function c80560728.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c80560728.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c80560728.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c80560728.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c80560728.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_FIRST_ATTACK) + tc:RegisterEffect(e2) + Duel.ChainAttack() + end +end +function c80560728.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c80560728.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c89628781.lua b/script/c89628781.lua new file mode 100644 index 00000000..e073b363 --- /dev/null +++ b/script/c89628781.lua @@ -0,0 +1,16 @@ +--忍法 空蝉の術 +function c89628781.initial_effect(c) + aux.AddPersistentProcedure(c,0,c89628781.filter) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.PersistentTargetFilter) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c89628781.filter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end diff --git a/script/c94463200.lua b/script/c94463200.lua new file mode 100644 index 00000000..8c873d8a --- /dev/null +++ b/script/c94463200.lua @@ -0,0 +1,50 @@ +--血の刻印 +function c94463200.initial_effect(c) + aux.AddPersistentProcedure(c,0,c94463200.filter,nil,nil,TIMING_STANDBY_PHASE) + --lpcost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PAY_LPCOST) + e2:SetCondition(c94463200.lpcon) + e2:SetOperation(c94463200.lpop) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c94463200.descon) + e3:SetOperation(c94463200.desop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c94463200.desop2) + c:RegisterEffect(e4) +end +function c94463200.filter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c94463200.lpcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_STANDBY and ep==tp + and re:GetHandler()==e:GetHandler():GetFirstCardTarget() +end +function c94463200.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(1-ep,ev) +end +function c94463200.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c94463200.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end +function c94463200.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c94933468.lua b/script/c94933468.lua new file mode 100644 index 00000000..65e1bb3f --- /dev/null +++ b/script/c94933468.lua @@ -0,0 +1,79 @@ +--Vain-裏切りの嘲笑 +function c94933468.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c94933468.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(aux.PersistentTgCon) + e2:SetOperation(aux.PersistentTgOp(false)) + c:RegisterEffect(e2) + --eff + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.PersistentTargetFilter) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c94933468.descon) + e5:SetOperation(c94933468.desop) + c:RegisterEffect(e5) + --discard deck + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(94933468,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCategory(CATEGORY_DECKDES) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c94933468.deckcon) + e6:SetTarget(c94933468.decktg) + e6:SetOperation(c94933468.deckop) + c:RegisterEffect(e6) +end +function c94933468.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local at=Duel.GetAttacker() + if chkc then return false end + if chk==0 then return at:IsControler(1-tp) and at:IsType(TYPE_XYZ) and at:IsOnField() and at:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,at,1,0,0) +end +function c94933468.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c94933468.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c94933468.deckcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and e:GetHandler():GetFirstCardTarget()~=nil +end +function c94933468.decktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,3) +end +function c94933468.deckop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.DiscardDeck(1-tp,3,REASON_EFFECT) +end