--飘零之幻 local m=33701423 local cm=_G["c"..m] function cm.initial_effect(c) c:SetUniqueOnField(1,0,m) --activate local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e2:SetCode(EFFECT_CHANGE_DAMAGE) e2:SetRange(LOCATION_SZONE) e2:SetTargetRange(1,0) e2:SetCondition(cm.cacon) e2:SetValue(cm.caval) c:RegisterEffect(e2) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e3:SetCode(EVENT_PHASE+PHASE_MAIN1) e3:SetRange(LOCATION_SZONE) e3:SetCountLimit(1) e3:SetCondition(cm.damcon) e3:SetTarget(cm.damtg) e3:SetOperation(cm.damop) c:RegisterEffect(e3) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetCode(EVENT_CHAINING) e4:SetProperty(EFFECT_FLAG_BOTH_SIDE) e4:SetRange(LOCATION_SZONE) e4:SetLabelObject(e3) e4:SetCondition(cm.damcon1) e4:SetCost(cm.damcost1) e4:SetOperation(cm.damop1) c:RegisterEffect(e4) local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e5:SetCode(EFFECT_DESTROY_REPLACE) e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_BOTH_SIDE) e5:SetRange(LOCATION_SZONE) e5:SetTarget(cm.reptg) c:RegisterEffect(e5) end function cm.cacon(e) return e:GetHandlerPlayer()~=Duel.GetTurnPlayer() end function cm.caval(e,re,val,r,rp,rc) local tp=e:GetHandlerPlayer() if Duel.GetFlagEffectLabel(tp,m)==0 then Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_MAIN1+RESET_SELF_TURN,0,1,val) else local label=Duel.GetFlagEffectLabel(tp,m) Duel.SetFlagEffectLabel(tp,m,label+val) end return 0 end function cm.damcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end function cm.damtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end local dam=Duel.GetFlagEffectLabel(tp,m) Duel.SetTargetPlayer(tp) Duel.SetTargetParam(dam) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,dam) end function cm.damop(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():IsRelateToEffect(e) then local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) Duel.Damage(p,d,REASON_EFFECT) end end function cm.damcon1(e,tp,eg,ep,ev,re,r,rp) return re=e:GetLabelObject() and e:GetHandlerPlayer()~=tp end function cm.damcost1(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) g:RemoveCard(e:GetHandler()) return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() end local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) end function cm.damop1(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():IsRelateToEffect(e) then local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CHANGE_DAMAGE) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetTargetRange(0,1) e1:SetLabel(cid) e1:SetValue(cm.damval) e1:SetReset(RESET_CHAIN) Duel.RegisterEffect(e1,tp) end end function cm.damval(e,re,val,r,rp,rc) local cc=Duel.GetCurrentChain() if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) if cid~=e:GetLabel() then return val end return DOUBLE_DAMAGE end function cm.reptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return c:GetControler()~=tp and rp==tp not c:IsReason(REASON_REPLACE) and Duel.GetLocationCount(tp,LOCATION_SZONE,tp,LOCATION_REASON_CONTROL) end if Duel.SelectEffectYesNo(tp,e:GetHandler(),96) then Duel.GetControl(c,tp) return true else Duel.Recover(c:GetControler(),3000) return false end end