Commit b9a9560d authored by VanillaSalt's avatar VanillaSalt

new

parent a777b9b3
...@@ -3562,6 +3562,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec ...@@ -3562,6 +3562,7 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
case 0: { case 0: {
card_set equipings; card_set equipings;
card_set flips; card_set flips;
card_set ssets;
card_set pos_changed; card_set pos_changed;
uint8 npos, opos, noflip; uint8 npos, opos, noflip;
card_vector cv(targets->container.begin(), targets->container.end()); card_vector cv(targets->container.begin(), targets->container.end());
...@@ -3632,6 +3633,8 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec ...@@ -3632,6 +3633,8 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
if(trapmonster) { if(trapmonster) {
refresh_location_info_instant(); refresh_location_info_instant();
move_to_field(pcard, pcard->current.controler, pcard->current.controler, LOCATION_SZONE, POS_FACEDOWN, FALSE, 2); move_to_field(pcard, pcard->current.controler, pcard->current.controler, LOCATION_SZONE, POS_FACEDOWN, FALSE, 2);
raise_single_event(pcard, 0, EVENT_SSET, reason_effect, 0, reason_player, 0, 0);
ssets.insert(pcard);
} }
} }
} }
...@@ -3639,6 +3642,8 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec ...@@ -3639,6 +3642,8 @@ int32 field::change_position(uint16 step, group * targets, effect * reason_effec
process_single_event(); process_single_event();
if(flips.size()) if(flips.size())
raise_event(&flips, EVENT_FLIP, reason_effect, 0, reason_player, 0, 0); raise_event(&flips, EVENT_FLIP, reason_effect, 0, reason_player, 0, 0);
if(ssets.size())
raise_event(&ssets, EVENT_SSET, reason_effect, 0, reason_player, 0, 0);
if(pos_changed.size()) if(pos_changed.size())
raise_event(&pos_changed, EVENT_CHANGE_POS, reason_effect, 0, reason_player, 0, 0); raise_event(&pos_changed, EVENT_CHANGE_POS, reason_effect, 0, reason_player, 0, 0);
process_instant_event(); process_instant_event();
......
--アルティマヤ・ツィオルキン
function c1686814.initial_effect(c)
c:EnableReviveLimit()
--spsummon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
c:RegisterEffect(e1)
--special summon rule
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_EXTRA)
e2:SetCondition(c1686814.sprcon)
e2:SetOperation(c1686814.sprop)
c:RegisterEffect(e2)
--special summon
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_SSET)
e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1)
e3:SetCondition(c1686814.spcon)
e3:SetTarget(c1686814.sptg)
e3:SetOperation(c1686814.spop)
c:RegisterEffect(e3)
--cannot be target
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET)
e4:SetRange(LOCATION_MZONE)
e4:SetCondition(c1686814.tgcon)
e4:SetValue(1)
c:RegisterEffect(e4)
local e5=e4:Clone()
e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
c:RegisterEffect(e5)
end
function c1686814.sprfilter1(c,tp)
local lv=c:GetLevel()
return lv>4 and c:IsFaceup() and c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c1686814.sprfilter2,tp,LOCATION_MZONE,0,1,nil,lv)
end
function c1686814.sprfilter2(c,lv)
return c:IsFaceup() and c:GetLevel()==lv and not c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost()
end
function c1686814.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2
and Duel.IsExistingMatchingCard(c1686814.sprfilter1,tp,LOCATION_MZONE,0,1,nil,tp)
end
function c1686814.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=Duel.SelectMatchingCard(tp,c1686814.sprfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c1686814.sprfilter2,tp,LOCATION_MZONE,0,1,1,nil,g1:GetFirst():GetLevel())
g1:Merge(g2)
Duel.SendtoGrave(g1,REASON_COST)
end
function c1686814.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsControler,1,nil,tp)
end
function c1686814.spfilter(c,e,tp)
return (c:IsSetCard(0xc2) or (c:GetLevel()==7 or c:GetLevel()==8))
and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c1686814.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c1686814.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function c1686814.spop(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,c1686814.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
end
function c1686814.tgfilter(c)
return c:IsFaceup() and c:IsType(TYPE_SYNCHRO)
end
function c1686814.tgcon(e)
return Duel.IsExistingMatchingCard(c1686814.tgfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler())
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