Commit 83561e90 authored by Huangnan's avatar Huangnan

fix

parent 1f6df009
No preview for this file type
--铁血·热血·冷血的吸血鬼杀手
function c1000364.initial_effect(c)
local s,id,o=GetID()
function s.initial_effect(c)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc203),aux.FilterBoolFunction(Card.IsFusionSetCard,0xc202,0xc201),true)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_FUSION_MATERIAL)
e0:SetCondition(s.fuscon)
e0:SetOperation(s.fusop)
c:RegisterEffect(e0)
aux.AddContactFusionProcedure(c,Card.IsAbleToGraveAsCost,LOCATION_MZONE,0,Duel.SendtoGrave,POS_FACEUP,REASON_COST)
--spsummon condition
local e1=Effect.CreateEffect(c)
......@@ -12,27 +19,27 @@ function c1000364.initial_effect(c)
c:RegisterEffect(e1)
--disable
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(1000364,0))
e3:SetDescription(aux.Stringid(id,0))
e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DISABLE)
e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetCode(EVENT_CHAINING)
e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1)
e3:SetCondition(c1000364.discon)
e3:SetTarget(c1000364.distg)
e3:SetOperation(c1000364.disop)
e3:SetCondition(s.discon)
e3:SetTarget(s.distg)
e3:SetOperation(s.disop)
c:RegisterEffect(e3)
--spsummon
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(1000364,1))
e4:SetDescription(aux.Stringid(id,1))
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
e4:SetCode(EVENT_TO_GRAVE)
e4:SetCountLimit(1,1000364)
e4:SetCondition(c1000364.condition)
e4:SetTarget(c1000364.target)
e4:SetOperation(c1000364.operation)
e4:SetCountLimit(1,id)
e4:SetCondition(s.condition)
e4:SetTarget(s.target)
e4:SetOperation(s.operation)
c:RegisterEffect(e4)
--cannot be target
local e5=Effect.CreateEffect(c)
......@@ -42,33 +49,82 @@ function c1000364.initial_effect(c)
e5:SetRange(LOCATION_MZONE)
e5:SetValue(1)
c:RegisterEffect(e5)
--disable and atk down
--disable and atk down
local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_FIELD)
e6:SetCode(EFFECT_DISABLE)
e6:SetRange(LOCATION_MZONE)
e6:SetTargetRange(0,LOCATION_MZONE)
e6:SetCondition(c1000364.adcon)
e6:SetTarget(c1000364.adtg)
e6:SetCondition(s.adcon)
e6:SetTarget(s.adtg)
c:RegisterEffect(e6)
local e7=e6:Clone()
e7:SetCode(EFFECT_DISABLE_EFFECT)
c:RegisterEffect(e7)
local e8=e6:Clone()
e8:SetCode(EFFECT_SET_ATTACK_FINAL)
e8:SetValue(c1000364.atkval)
e8:SetValue(s.atkval)
c:RegisterEffect(e8)
end
function c1000364.discon(e,tp,eg,ep,ev,re,r,rp)
function s.fusfilter1(c)
return c:IsSetCard(0xc200) and (c:IsLevel(2) or c:IsLevel(4))
end
function s.fusfilter2(c)
return c:IsSetCard(0xc200) and (c:IsType(TYPE_SYNCHRO) or c:IsType(TYPE_FUSION))
end
function s.fuscon(e,g,gc,chkfnf)
if g==nil then return true end
local c=e:GetHandler()
local chkf=bit.band(chkfnf,0xff)
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,c)
local g1=mg:Filter(s.fusfilter1,nil)
local g2=mg:Filter(s.fusfilter2,nil)
if gc then
if not gc:IsCanBeFusionMaterial(c) then return false end
if s.fusfilter1(gc) then
return g2:IsExists(aux.TRUE,1,gc)
elseif s.fusfilter2(gc) then
return g1:IsExists(aux.TRUE,1,gc)
else return false end
end
return g1:IsExists(aux.TRUE,1,nil) and g2:IsExists(aux.TRUE,1,nil)
end
function s.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local c=e:GetHandler()
local chkf=bit.band(chkfnf,0xff)
local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,c)
local g1=mg:Filter(s.fusfilter1,nil)
local g2=mg:Filter(s.fusfilter2,nil)
local tc1,tc2
if gc then
if s.fusfilter1(gc) then
tc1=gc
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
tc2=g2:SelectUnselect(Group.FromCards(gc),tp,false,false,1,1)
else
tc2=gc
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
tc1=g1:SelectUnselect(Group.FromCards(gc),tp,false,false,1,1)
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
tc1=g1:SelectUnselect(nil,tp,false,false,1,1)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
tc2=g2:SelectUnselect(Group.FromCards(tc1),tp,false,false,1,1)
end
local sg=Group.FromCards(tc1,tc2)
Duel.SetFusionMaterial(sg)
end
function s.discon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev)
end
function c1000364.distg(e,tp,eg,ep,ev,re,r,rp,chk)
function s.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0)
local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0)
end
function c1000364.disop(e,tp,eg,ep,ev,re,r,rp)
function s.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateEffect(ev)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
......@@ -77,42 +133,42 @@ function c1000364.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(g,REASON_EFFECT)
end
end
function c1000364.condition(e,tp,eg,ep,ev,re,r,rp)
function s.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT)
and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp
end
function c1000364.filter(c,e,tp)
return c:IsSetCard(0xc200) and not c:IsCode(1000364) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
function s.filter(c,e,tp)
return c:IsSetCard(0xc200) and not c:IsCode(id) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c1000364.target(e,tp,eg,ep,ev,re,r,rp,chk)
function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c1000364.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_DECK,0,1,nil,e,tp) end
and Duel.IsExistingMatchingCard(s.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_DECK,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_DECK)
local rec=e:GetHandler():GetBaseAttack()
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(rec)
Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec)
end
function c1000364.operation(e,tp,eg,ep,ev,re,r,rp)
function s.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c1000364.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_DECK,0,1,1,nil,e,tp)
local g=Duel.SelectMatchingCard(tp,s.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_DECK,0,1,1,nil,e,tp)
local c=e:GetHandler()
if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then
Duel.BreakEffect()
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Recover(p,d,REASON_EFFECT)
Duel.BreakEffect()
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Recover(p,d,REASON_EFFECT)
end
end
function c1000364.adcon(e)
function s.adcon(e)
local c=e:GetHandler()
return Duel.GetAttacker()==c and c:GetBattleTarget()
and (Duel.GetCurrentPhase()==PHASE_DAMAGE or Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL)
end
function c1000364.adtg(e,c)
function s.adtg(e,c)
return c==e:GetHandler():GetBattleTarget()
end
function c1000364.atkval(e,c)
function s.atkval(e,c)
return math.ceil(c:GetBaseAttack()/2)
end
\ No newline at end of file
......@@ -5,7 +5,7 @@ function s.initial_effect(c)
c:EnableReviveLimit()
--Search
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetDescription(aux.Stringid(id,1))
e3:SetCategory(CATEGORY_TOGRAVE)
e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetCode(EVENT_FREE_CHAIN)
......@@ -83,7 +83,7 @@ end
function s.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) and tc:IsControlerCanBeChanged() then
if tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) and tc:IsControlerCanBeChanged() then
Duel.GetControl(tc,tp,PHASE_END,1)
end
end
......
......@@ -70,7 +70,7 @@ end
--
function s.e1tgfilter(c,e,tp)
return c:IsFaceup() and c:IsSetCard(0x32a1) and c:IsType(TYPE_MONSTER)
and Duel.IsExistingTarget(s.e1tgfilter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c:GetCode(),e,tp)
and Duel.IsExistingMatchingCard(s.e1tgfilter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c:GetCode(),e,tp)
end
function s.e1tgfilter2(c,code,e,tp)
return c:IsType(TYPE_MONSTER) and c:IsCode(code)
......@@ -95,7 +95,7 @@ function s.e1op(e,tp,eg,ep,ev,re,r,rp)
local sg=g:Select(tp,1,1,nil)
local tc2=sg:GetFirst()
Duel.SpecialSummon(tc2,0,tp,tp,false,false,POS_FACEUP)
local g3=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil)
local g3=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,nil)
if g3:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=g3:Select(tp,1,1,nil)
......
......@@ -92,7 +92,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
local g3=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil)
local g3=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,nil)
if g3:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(id,2)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=g3:Select(tp,1,1,nil)
......
......@@ -122,10 +122,8 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,nil)
if g:GetCount()>0 then
if Duel.GetFlagEffect(tp,id+10000)<2 then
local dg=Duel.GetOperatedGroup()
local tc=dg:GetFirst()
local tc=g:GetFirst()
while tc do
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e1=Effect.CreateEffect(c)
......@@ -149,7 +147,7 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e3)
end
tc=dg:GetNext()
tc=g:GetNext()
end
end
Duel.Destroy(g,REASON_EFFECT)
......
......@@ -7,7 +7,7 @@ function c47530105.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetTargetRange(0,LOCATION_MZONE)
e1:SetTarget(c47530105.disable)
e1:SetCode(EFFECT_DISABLE)
c:RegisterEffect(e1)
......@@ -30,7 +30,7 @@ function c47530105.initial_effect(c)
c:RegisterEffect(e3)
end
function c47530105.disable(e,c)
return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_EFFECT) or bit.band(c:GetOriginalType(),TYPE_EFFECT)==TYPE_EFFECT
return c:IsRace(RACE_MACHINE)
end
function c47530105.mtcon(e,tp,eg,ep,ev,re,r,rp)
return r==REASON_SYNCHRO and eg:IsExists(Card.IsRace,1,nil,RACE_MACHINE)
......
......@@ -51,7 +51,9 @@ function c50221305.ptg(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function c50221305.pop(e,tp,eg,ep,ev,re,r,rp)
local zone=e:GetHandler():GetLinkedZone(tp)
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
local zone=c:GetLinkedZone(tp)
if zone~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c50221305.pfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,zone)
......
......@@ -40,12 +40,15 @@ function s.initial_effect(c)
e4:SetValue(1)
c:RegisterEffect(e4)
end
function s.tfilter(c)
return c:IsFaceupEx() and c:IsSetCard(0x62c4)
end
function s.atg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local c=e:GetHandler()
if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsAttackAbove(0) end
if chk==0 then return Duel.IsExistingTarget(Card.IsAttackAbove,tp,LOCATION_GRAVE+LOCATION_MZONE,0,1,nil,0) end
if chk==0 then return Duel.IsExistingTarget(s.tfilter,tp,LOCATION_GRAVE+LOCATION_MZONE,0,1,nil,0) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
Duel.SelectTarget(tp,Card.IsAttackAbove,tp,LOCATION_GRAVE+LOCATION_MZONE,0,1,1,nil,0)
Duel.SelectTarget(tp,s.tfilter,tp,LOCATION_GRAVE+LOCATION_MZONE,0,1,1,nil,0)
end
function s.aop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
......@@ -25,6 +25,7 @@ function cm.initial_effect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetRange(LOCATION_MZONE)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetCountLimit(1)
e3:SetCondition(cm.tgcon)
e3:SetTarget(cm.tgtg)
......@@ -86,7 +87,7 @@ function cm.tgcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.tgfilter,1,nil,tp)
end
function cm.tgfilter(c,tp)
return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp and c:IsLocation(LOCATION_GRAVE)
return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp
end
function cm.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0) and Duel.IsPlayerCanSpecialSummonMonster(tp,81900022,nil,TYPES_TOKEN_MONSTER,0,0,5,RACE_BEAST,ATTRIBUTE_FIRE) end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment