Commit 8ad8c5d4 authored by argon.sun's avatar argon.sun

fix $ new scripts

parent bc3aa9ea
...@@ -771,14 +771,14 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -771,14 +771,14 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
if (pcard->overlayTarget->controler == 0) { if (pcard->overlayTarget->controler == 0) {
t->X = 1.75f + 1.1f * oseq - 0.08f + 0.04f * sequence; t->X = 1.75f + 1.1f * oseq - 0.08f + 0.04f * sequence;
t->Y = 1.15f; t->Y = 1.15f;
t->Z = 0.005f; t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f; r->X = 0.0f;
r->Y = 0.0f; r->Y = 0.0f;
r->Z = 0.0f; r->Z = 0.0f;
} else { } else {
t->X = 6.15f - 1.1f * oseq + 0.08f - 0.04f * sequence; t->X = 6.15f - 1.1f * oseq + 0.08f - 0.04f * sequence;
t->Y = -1.15f; t->Y = -1.15f;
t->Z = 0.005f; t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f; r->X = 0.0f;
r->Y = 0.0f; r->Y = 0.0f;
r->Z = 3.1415926f; r->Z = 3.1415926f;
......
...@@ -1174,19 +1174,20 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) { ...@@ -1174,19 +1174,20 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
myswprintf(textBuffer, L"%d[%ls]", i, dataManager.GetName(code)); myswprintf(textBuffer, L"%d[%ls]", i, dataManager.GetName(code));
mainGame->lstLog->addItem(textBuffer); mainGame->lstLog->addItem(textBuffer);
mainGame->logParam.push_back(code); mainGame->logParam.push_back(code);
if (l & 0x40) { if (l & 0x41) {
float shift = -0.15f; if(count <= 3) {
if (c == 0 && l == 0x40) shift = 0.15f; float shift = -0.15f;
pcard->dPos = irr::core::vector3df(shift, 0, 0); if (c == 0 && l == 0x40) shift = 0.15f;
pcard->dRot = irr::core::vector3df(0, 3.14159f / 5.0f, 0); pcard->dPos = irr::core::vector3df(shift, 0, 0);
pcard->is_moving = true; pcard->dRot = irr::core::vector3df(0, 3.14159f / 5.0f, 0);
pcard->aniFrame = 5; pcard->is_moving = true;
mainGame->WaitFrameSignal(45); pcard->aniFrame = 5;
mainGame->dField.MoveCard(pcard, 5); mainGame->WaitFrameSignal(45);
mainGame->WaitFrameSignal(5); mainGame->dField.MoveCard(pcard, 5);
} else if(l & 0x1) mainGame->WaitFrameSignal(5);
panel_confirm.push_back(pcard); } else
else panel_confirm.push_back(pcard);
} else
field_confirm.push_back(pcard); field_confirm.push_back(pcard);
} }
if (field_confirm.size() > 0) { if (field_confirm.size() > 0) {
......
...@@ -3044,6 +3044,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -3044,6 +3044,7 @@ int32 field::process_battle_command(uint16 step) {
} }
case 17: { case 17: {
infos.phase = PHASE_DAMAGE; infos.phase = PHASE_DAMAGE;
core.hint_timing[infos.turn_player] = 0;
core.chain_attack = FALSE; core.chain_attack = FALSE;
if(core.attack_target) { if(core.attack_target) {
core.attacker->battled_cards[core.attack_target->fieldid] = core.attack_target; core.attacker->battled_cards[core.attack_target->fieldid] = core.attack_target;
......
--ヘイト·クレバス
function c20721759.initial_effect(c)
--tograve
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DAMAGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_TO_GRAVE)
e1:SetCondition(c20721759.condition)
e1:SetTarget(c20721759.target)
e1:SetOperation(c20721759.operation)
c:RegisterEffect(e1)
end
function c20721759.condition(e,tp,eg,ep,ev,re,r,rp)
local ec=eg:GetFirst()
return rp~=tp and eg:GetCount()==1 and ec:IsPreviousLocation(LOCATION_MZONE) and ec:GetPreviousControler()==tp
and ec:IsReason(REASON_DESTROY) and ec:IsReason(REASON_EFFECT)
end
function c20721759.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsLopcation(LOCATION_MZONE) end
if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetBaseAttack())
end
function c20721759.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if not tc:IsRelateToEffect(e) then return end
Duel.SendtoGrave(tc,REASON_EFFECT)
if not tc:IsLocation(LOCATION_GRAVE) then return end
local atk=tc:GetBaseAttack()
if atk<0 then atk=0 end
Duel.Damage(1-tp,atk,REASON_EFFECT)
end
...@@ -50,6 +50,7 @@ function c21350571.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -50,6 +50,7 @@ function c21350571.operation(e,tp,eg,ep,ev,re,r,rp)
e2:SetType(EFFECT_TYPE_EQUIP) e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetValue(800) e2:SetValue(800)
e2:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--Equip limit --Equip limit
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
......
--コピー·ナイト
function c21843307.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCondition(c21843307.condition)
e1:SetTarget(c21843307.target)
e1:SetOperation(c21843307.activate)
c:RegisterEffect(e1)
end
function c21843307.condition(e,tp,eg,ep,ev,re,r,rp)
local ec=eg:GetFirst()
return ec:IsLevelBelow(4) and ec:IsRace(RACE_WARRIOR)
end
function c21843307.target(e,tp,eg,ep,ev,re,r,rp,chk)
local ec=eg:GetFirst()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and
Duel.IsPlayerCanSpecialSummonMonster(tp,ec:GetCode(),0,0x11,0,0,ec:GetLevel(),RACE_WARRIOR,ATTRIBUTE_LIGHT) end
ec:CreateEffectRelation(e)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function c21843307.activate(e,tp,eg,ep,ev,re,r,rp)
local ec=eg:GetFirst()
if not ec:IsRelateToEffect(e) then return end
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
if Duel.GetLocationCount(tp,LOCATION_MZONE)==0
or not Duel.IsPlayerCanSpecialSummonMonster(tp,ec:GetCode(),0,0x11,0,0,ec:GetLevel(),RACE_WARRIOR,ATTRIBUTE_LIGHT) then return end
c:AddTrapMonsterAttribute(true,ATTRIBUTE_LIGHT,RACE_WARRIOR,ec:GetLevel(),0,0)
Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)
c:TrapMonsterBlock()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CHANGE_CODE)
e1:SetValue(ec:GetCode())
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1)
end
--破天荒な風
function c22346472.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c22346472.target)
e1:SetOperation(c22346472.activate)
c:RegisterEffect(e1)
end
function c22346472.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
end
function c22346472.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and tc:IsFaceup() then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+RESET_STANDBY+RESET_SELF_TURN)
e1:SetValue(1000)
tc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_DEFENCE)
tc:RegisterEffect(e2)
end
end
...@@ -7,14 +7,10 @@ function c25789292.initial_effect(c) ...@@ -7,14 +7,10 @@ function c25789292.initial_effect(c)
e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCondition(c25789292.condition)
e1:SetTarget(c25789292.target) e1:SetTarget(c25789292.target)
e1:SetOperation(c25789292.activate) e1:SetOperation(c25789292.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c25789292.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()
end
function c25789292.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c25789292.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
......
--闇の閃光
function c29876529.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,0x1e0)
e1:SetCost(c29876529.cost)
e1:SetTarget(c29876529.target)
e1:SetOperation(c29876529.activate)
c:RegisterEffect(e1)
end
function c29876529.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
return true
end
function c29876529.costfilter(c)
return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackAbove(1500)
and Duel.IsExistingMatchingCard(c29876529.dfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,c)
end
function c29876529.dfilter(c)
return c:GetTurnID()==Duel.GetTurnCount() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 and c:IsDestructable()
end
function c29876529.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
if e:GetLabel()~=0 then
e:SetLabel(0)
return Duel.CheckReleaseGroup(tp,c29876529.costfilter,1,nil)
else
return Duel.IsExistingMatchingCard(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil)
end
end
if e:GetLabel()==1 then
e:SetLabel(0)
local rg=Duel.SelectReleaseGroup(tp,c29876529.costfilter,1,1,nil)
Duel.Release(rg,REASON_COST)
end
local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c29876529.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
Duel.Destroy(g,REASON_EFFECT)
end
--痛恨の訴え
function c32065885.initial_effect(c)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_CONTROL)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_DAMAGE)
e1:SetCondition(c32065885.ctlcon)
e1:SetTarget(c32065885.ctltg)
e1:SetOperation(c32065885.ctlop)
c:RegisterEffect(e1)
end
function c32065885.ctlcon(e,tp,eg,ep,ev,re,r,rp)
return ep==tp and bit.band(r,REASON_BATTLE) and Duel.GetAttackTarget()==nil and Duel.GetAttacker():IsControler(1-tp)
end
function c32065885.ctltg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE)
end
function c32065885.ctlop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil)
if g:GetCount()==0 then return end
local sg=g:GetMaxGroup(Card.GetDefence)
if sg:GetCount()>1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL)
sg=sg:Select(tp,1,1,nil)
end
local tc=sg:GetFirst()
if not Duel.GetControl(tc,tp,PHASE_END,2) then
if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then
Duel.Destroy(tc,REASON_EFFECT)
end
else
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,2)
tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DISABLE_EFFECT)
e2:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,2)
tc:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_CANNOT_ATTACK)
e3:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,2)
tc:RegisterEffect(e3)
end
end
...@@ -23,7 +23,7 @@ function c34646691.initial_effect(c) ...@@ -23,7 +23,7 @@ function c34646691.initial_effect(c)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c34646691.target(e,tp,eg,ep,ev,re,r,rp,chk) function c34646691.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return e:GetHandler():IsRelateToEffect(e) end
Duel.SetTargetCard(eg) Duel.SetTargetCard(eg)
Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0)
end end
......
...@@ -19,7 +19,7 @@ function c35631584.initial_effect(c) ...@@ -19,7 +19,7 @@ function c35631584.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c35631584.gfilter(c,tp) function c35631584.gfilter(c,tp)
return c:IsSetCard(0x53) and c:IsType(TYPE_XYZ) return c:IsSetCard(0x53) and c:IsType(TYPE_XYZ) and c:IsControler(tp)
end end
function c35631584.con(e,tp,eg,ep,ev,re,r,rp) function c35631584.con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(35631584)==0 and eg:IsExists(c35631584.gfilter,1,nil,tp) return e:GetHandler():GetFlagEffect(35631584)==0 and eg:IsExists(c35631584.gfilter,1,nil,tp)
......
...@@ -28,7 +28,7 @@ function c37520316.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -28,7 +28,7 @@ function c37520316.activate(e,tp,eg,ep,ev,re,r,rp)
return return
end end
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
local reset=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END local reset=RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UNRELEASEABLE_SUM) e1:SetCode(EFFECT_UNRELEASEABLE_SUM)
e1:SetReset(reset) e1:SetReset(reset)
......
--俊足のギラザウルス
function c45894482.initial_effect(c)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCondition(c45894482.spcon)
e1:SetValue(1)
c:RegisterEffect(e1)
--spsummon success
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetOperation(c45894482.trigop)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetDescription(aux.Stringid(45894482,0))
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_EVENT_PLAYER)
e3:SetCode(45894482)
e3:SetTarget(c45894482.target)
e3:SetOperation(c45894482.operation)
c:RegisterEffect(e3)
end
function c45894482.spcon(e,c)
if c==nil then return true end
return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0
end
function c45894482.trigop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 then
Duel.RaiseSingleEvent(e:GetHandler(),45894482,e,r,rp,1-tp,0)
end
end
function c45894482.filter(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c45894482.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c45894482.filter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c45894482.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c45894482.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c45894482.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end
end
...@@ -55,20 +55,19 @@ end ...@@ -55,20 +55,19 @@ end
function c47355498.conntp(e) function c47355498.conntp(e)
return not Duel.IsPlayerAffectedByEffect(1-e:GetHandler():GetControler(),EFFECT_NECRO_VALLEY_IM) return not Duel.IsPlayerAffectedByEffect(1-e:GetHandler():GetControler(),EFFECT_NECRO_VALLEY_IM)
end end
function c47355498.disfilter1(c,im0,im1,tg) function c47355498.disfilter1(c,im0,im1,targets)
if c:IsControler(0) then return im0 and tg:IsContains(c) and c:IsHasEffect(EFFECT_NECRO_VALLEY) if c:IsControler(0) then return im0 and targets:IsContains(c) and c:IsHasEffect(EFFECT_NECRO_VALLEY)
else return im1 and and tg:IsContains(c) and c:IsHasEffect(EFFECT_NECRO_VALLEY) end else return im1 and targets:IsContains(c) and c:IsHasEffect(EFFECT_NECRO_VALLEY) end
end end
function c47355498.disfilter2(c,im0,im1) function c47355498.disfilter2(c,im0,im1)
if c:IsControler(0) then return im0 and c:IsHasEffect(EFFECT_NECRO_VALLEY) if c:IsControler(0) then return im0 and c:IsHasEffect(EFFECT_NECRO_VALLEY)
else return im1 and c:IsHasEffect(EFFECT_NECRO_VALLEY) end else return im1 and c:IsHasEffect(EFFECT_NECRO_VALLEY) end
end end
function c47355498.discheck(ev,category,re,im0,im1) function c47355498.discheck(ev,category,re,im0,im1,targets)
local ex,tg,ct,p,v=Duel.GetOperationInfo(ev,category) local ex,tg,ct,p,v=Duel.GetOperationInfo(ev,category)
if not ex then return false end if not ex then return false end
if tg and tg:GetCount()>0 then if tg and tg:GetCount()>0 then
if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then if targets then
local targets=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS)
return tg:IsExists(c47355498.disfilter1,1,nil,im0,im1,targets) return tg:IsExists(c47355498.disfilter1,1,nil,im0,im1,targets)
else else
return tg:IsExists(c47355498.disfilter2,1,re:GetHandler(),im0,im1) return tg:IsExists(c47355498.disfilter2,1,re:GetHandler(),im0,im1)
...@@ -84,12 +83,16 @@ function c47355498.disop(e,tp,eg,ep,ev,re,r,rp) ...@@ -84,12 +83,16 @@ function c47355498.disop(e,tp,eg,ep,ev,re,r,rp)
local tc=re:GetHandler() local tc=re:GetHandler()
if not Duel.IsChainDisablable(ev) or tc:IsHasEffect(EFFECT_NECRO_VALLEY_IM) then return end if not Duel.IsChainDisablable(ev) or tc:IsHasEffect(EFFECT_NECRO_VALLEY_IM) then return end
local res=false local res=false
local targets=nil
if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then
targets=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS)
end
local im0=not Duel.IsPlayerAffectedByEffect(0,EFFECT_NECRO_VALLEY_IM) local im0=not Duel.IsPlayerAffectedByEffect(0,EFFECT_NECRO_VALLEY_IM)
local im1=not Duel.IsPlayerAffectedByEffect(1,EFFECT_NECRO_VALLEY_IM) local im1=not Duel.IsPlayerAffectedByEffect(1,EFFECT_NECRO_VALLEY_IM)
if not res and c47355498.discheck(ev,CATEGORY_SPECIAL_SUMMON,re,im0,im1) then res=true end if not res and c47355498.discheck(ev,CATEGORY_SPECIAL_SUMMON,re,im0,im1,targets) then res=true end
if not res and c47355498.discheck(ev,CATEGORY_REMOVE,re,im0,im1) then res=true end if not res and c47355498.discheck(ev,CATEGORY_REMOVE,re,im0,im1,targets) then res=true end
if not res and c47355498.discheck(ev,CATEGORY_TOHAND,re,im0,im1) then res=true end if not res and c47355498.discheck(ev,CATEGORY_TOHAND,re,im0,im1,targets) then res=true end
if not res and c47355498.discheck(ev,CATEGORY_TODECK,re,im0,im1) then res=true end if not res and c47355498.discheck(ev,CATEGORY_TODECK,re,im0,im1,targets) then res=true end
if not res and c47355498.discheck(ev,CATEGORY_LEAVE_GRAVE,re,im0,im1) then res=true end if not res and c47355498.discheck(ev,CATEGORY_LEAVE_GRAVE,re,im0,im1,targets) then res=true end
if res then Duel.NegateEffect(ev) end if res then Duel.NegateEffect(ev) end
end end
--アイスバーン
function c54059040.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--pos
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(54059040,0))
e2:SetCategory(CATEGORY_POSITION)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetRange(LOCATION_SZONE)
e2:SetTarget(c54059040.target)
e2:SetOperation(c54059040.operation)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e3)
end
function c54059040.cfilter(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER)
end
function c54059040.pfilter(c,e)
return c:IsPosition(POS_FACEUP_ATTACK) and not c:IsAttribute(ATTRIBUTE_WATER) and (not e or c:IsRelateToEffect(e))
end
function c54059040.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsRelateToEffect(e)
and Duel.IsExistingMatchingCard(c54059040.cfilter,tp,LOCATION_MZONE,0,1,nil)
and eg:IsExists(c54059040.pfilter,1,nil) end
Duel.SetTargetCard(eg)
Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0)
end
function c54059040.operation(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local g=eg:Filter(c54059040.pfilter,nil,e)
Duel.ChangePosition(g,POS_FACEUP_DEFENCE)
end
--暴君の自暴自棄
function c55271628.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c55271628.cost)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,1)
e2:SetTarget(c55271628.sumlimit)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EFFECT_CANNOT_SUMMON)
c:RegisterEffect(e3)
end
function c55271628.cfilter(c)
local tpe=c:GetType()
return bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0
end
function c55271628.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,c55271628.cfilter,2,nil) end
local rg=Duel.SelectReleaseGroup(tp,c55271628.cfilter,2,2,nil)
Duel.Release(rg,REASON_COST)
end
function c55271628.sumlimit(e,c,sump,sumtype,sumpos,targetp)
return c:IsLocation(LOCATION_MZONE) or c:IsType(TYPE_EFFECT)
end
...@@ -17,7 +17,7 @@ function c58577036.target(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -17,7 +17,7 @@ function c58577036.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK)
end end
function c58577036.operation(e,tp,eg,ep,ev,re,r,rp) function c58577036.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(58577036,0)) Duel.Hint(HINT_SELECTMSG,1-tp,567)
local lv=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12) local lv=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12)
local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil) local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil)
local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)
......
--森のざわめき
function c60398723.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_POSITION+CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c60398723.target)
e1:SetOperation(c60398723.activate)
c:RegisterEffect(e1)
end
function c60398723.filter(c)
return c:IsFaceup() and c:IsCanTurnSet()
end
function c60398723.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c60398723.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c60398723.filter,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectTarget(tp,c60398723.filter,tp,0,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0)
end
function c60398723.rfilter(c)
return c:GetSequence()==5 and c:IsAbleToHand()
end
function c60398723.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and tc:IsControler(1-tp) and tc:IsFaceup() then
Duel.ChangePosition(tc,POS_FACEDOWN_DEFENCE)
local rg=Duel.GetMatchingGroup(c60398723.rfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil)
if rg:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(60398723,0)) then
Duel.BreakEffect()
Duel.SendtoHand(rg,nil,REASON_EFFECT)
end
end
end
--ゴゴゴゴーレム
function c62476815.initial_effect(c)
--battle des rep
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DESTROY_REPLACE)
e1:SetCountLimit(1)
e1:SetTarget(c62476815.reptg)
c:RegisterEffect(e1)
end
function c62476815.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDefence()
and e:GetHandler():IsReason(REASON_BATTLE) end
return true
end
--ドラゴラド
function c65737274.initial_effect(c)
--spsummon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(65737274,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetTarget(c65737274.sptg)
e1:SetOperation(c65737274.spop)
c:RegisterEffect(e1)
--lvatkup
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(65737274,1))
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetCost(c65737274.lvcost)
e2:SetTarget(c65737274.lvtg)
e2:SetOperation(c65737274.lvop)
c:RegisterEffect(e2)
end
function c65737274.spfilter(c,e,tp)
return c:IsAttackBelow(1000) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c65737274.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c65737274.spfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c65737274.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c65737274.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c65737274.spop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENCE)
end
end
function c65737274.cfilter(c,tp)
return c:IsRace(RACE_DRAGON) and Duel.IsExistingTarget(c65737274.lvfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c65737274.lvfilter(c)
local lv=c:GetLevel()
return c:IsFaceup() and lv>0 and lv~=8
end
function c65737274.lvcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,c65737274.cfilter,1,nil,tp) end
local g=Duel.SelectReleaseGroup(tp,c65737274.cfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function c65737274.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c65737274.lvfilter(chkc) end
if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,c65737274.lvfilter,tp,LOCATION_MZONE,0,1,1,nil)
end
function c65737274.lvop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetLevel()~=8 then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCode(EFFECT_CHANGE_LEVEL)
e1:SetValue(8)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetValue(800)
tc:RegisterEffect(e2)
end
end
--聖なる鎧 -ミラーメール-
function c67232306.initial_effect(c)
--atk
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_BE_BATTLE_TARGET)
e1:SetTarget(c67232306.target)
e1:SetOperation(c67232306.operation)
c:RegisterEffect(e1)
end
function c67232306.target(e,tp,eg,ep,ev,re,r,rp,chk)
local at=eg:GetFirst()
local a=Duel.GetAttacker()
if chk==0 then return at:IsControler(tp) and at:IsOnField() and at:IsFaceup() and a:IsOnField() end
at:CreateEffectRelation(e)
a:CreateEffectRelation(e)
end
function c67232306.operation(e,tp,eg,ep,ev,re,r,rp)
local at=eg:GetFirst()
local a=Duel.GetAttacker()
if not a:IsRelateToEffect(e) or not at:IsRelateToEffect(e) or a:IsFacedown() or at:IsFacedown() then return end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetValue(a:GetAttack())
e1:SetReset(RESET_EVENT+0x1fe0000)
at:RegisterEffect(e1)
end
--燃える闘志
function c68054593.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_EQUIP)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c68054593.condition)
e1:SetTarget(c68054593.target)
e1:SetOperation(c68054593.operation)
c:RegisterEffect(e1)
end
function c68054593.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()
end
function c68054593.filter(c)
return c:IsFaceup()
end
function c68054593.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c68054593.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c68054593.filter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
local g=Duel.SelectTarget(tp,c68054593.filter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0)
end
function c68054593.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c:IsLocation(LOCATION_SZONE) then return end
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
c:CancelToGrave()
--Atkup
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_EQUIP)
e1:SetCode(EFFECT_SET_ATTACK)
e1:SetCondition(c68054593.atkcon)
e1:SetValue(c68054593.atkval)
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1)
--Equip limit
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_EQUIP_LIMIT)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetValue(c68054593.eqlimit)
e2:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e2)
end
end
function c68054593.eqlimit(e,c)
return c:GetControler()==e:GetOwnerPlayer()
end
function c68054593.atkfilter(c)
return c:IsFaceup() and c:GetAttack()>c:GetBaseAttack()
end
function c68054593.atkcon(e)
return (Duel.GetCurrentPhase()==PHASE_DAMAGE or Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL)
and Duel.IsExistingMatchingCard(c68054593.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil)
end
function c68054593.atkval(e,c)
return c:GetBaseAttack()*2
end
--スペース·サイクロン
function c69176131.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c69176131.target)
e1:SetOperation(c69176131.activate)
c:RegisterEffect(e1)
end
function c69176131.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) end
end
function c69176131.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.RemoveOverlayCard(tp,1,1,1,1,REASON_EFFECT)
end
--エクシーズ·ギフト
function c72355441.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DRAW)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCondition(c72355441.condition)
e1:SetTarget(c72355441.target)
e1:SetOperation(c72355441.activate)
c:RegisterEffect(e1)
end
function c72355441.cfilter(c)
return c:IsFaceup() and c:IsType(TYPE_XYZ)
end
function c72355441.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c72355441.cfilter,tp,LOCATION_MZONE,0,2,nil)
end
function c72355441.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,2) and Duel.CheckRemoveOverlayCard(tp,1,0,2,REASON_EFFECT) end
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2)
end
function c72355441.activate(e,tp,eg,ep,ev,re,r,rp)
if not Duel.CheckRemoveOverlayCard(tp,1,0,2,REASON_EFFECT) then return end
Duel.RemoveOverlayCard(tp,1,0,2,2,REASON_EFFECT)
Duel.Draw(tp,2,REASON_EFFECT)
end
--Gladiator Beast Essedarii --Gladiator Beast Essedarii
function c73285660.initial_effect(c) function c73285669.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
--spsummon condition --spsummon condition
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION) e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetValue(c73285660.splimit) e1:SetValue(c73285669.splimit)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--special summon rule --special summon rule
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -14,27 +14,27 @@ function c73285660.initial_effect(c) ...@@ -14,27 +14,27 @@ function c73285660.initial_effect(c)
e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_EXTRA) e2:SetRange(LOCATION_EXTRA)
e2:SetCondition(c73285660.sprcon) e2:SetCondition(c73285669.sprcon)
e2:SetOperation(c73285660.sprop) e2:SetOperation(c73285669.sprop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c73285660.splimit(e,se,sp,st) function c73285669.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c73285660.spfilter(c) function c73285669.spfilter(c)
local tpe=c:GetOriginalType() local tpe=c:GetOriginalType()
return c:IsSetCard(0x19) and c:IsCanBeFusionMaterial() and return c:IsSetCard(0x19) and c:IsCanBeFusionMaterial() and
((bit.band(tpe,TYPE_FUSION)>0 and c:IsAbleToExtraAsCost()) or ((bit.band(tpe,TYPE_FUSION)>0 and c:IsAbleToExtraAsCost()) or
(bit.band(tpe,TYPE_FUSION)==0 and c:IsAbleToDeckAsCost())) (bit.band(tpe,TYPE_FUSION)==0 and c:IsAbleToDeckAsCost()))
end end
function c73285660.sprcon(e,c) function c73285669.sprcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.IsExistingMatchingCard(c73285660.spfilter,tp,LOCATION_MZONE,0,2,nil) return Duel.IsExistingMatchingCard(c73285669.spfilter,tp,LOCATION_MZONE,0,2,nil)
end end
function c73285660.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c73285669.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,c73285660.spfilter,tp,LOCATION_MZONE,0,2,2,nil) local g=Duel.SelectMatchingCard(tp,c73285669.spfilter,tp,LOCATION_MZONE,0,2,2,nil)
local tc=g:GetFirst() local tc=g:GetFirst()
while tc do while tc do
if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end
......
--エクストラゲート
function c7405310.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_REMOVE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c7405310.target)
e1:SetOperation(c7405310.operation)
c:RegisterEffect(e1)
end
function c7405310.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=0
and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_EXTRA,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,567)
local lv=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12)
e:SetLabel(lv)
end
function c7405310.filter(c,lv)
return c:GetLevel()==lv
end
function c7405310.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c7405310.filter,1-tp,LOCATION_EXTRA,0,nil,e:GetLabel())
if g:GetCount()~=0 then
Duel.Hint(HINT_SELECTMSG,1-tp,REMOVE)
local rg=g:FilterSelect(1-tp,Card.IsAbleToRemove,1,1,nil)
if rg:GetCount()~=0 then
Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)
else
local cg=Duel.GetFieldGroup(1-tp,LOCATION_EXTRA,0)
Duel.ConfirmCards(tp,cg)
end
else
local cg=Duel.GetFieldGroup(1-tp,LOCATION_EXTRA,0)
Duel.ConfirmCards(tp,cg)
Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD)
end
end
--水遁封印式
function c81443745.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:SetTarget(c81443745.target1)
e1:SetOperation(c81443745.operation)
c:RegisterEffect(e1)
--remove
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(81443745,0))
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetHintTiming(0,TIMING_END_PHASE)
e2:SetCost(c81443745.cost2)
e2:SetTarget(c81443745.target2)
e2:SetOperation(c81443745.operation)
c:RegisterEffect(e2)
end
function c81443745.cfilter(c)
return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToGraveAsCost()
end
function c81443745.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCAITON_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end
if chk==0 then return true end
if Duel.IsExistingMatchingCard(c81443745.cfilter,tp,LOCATION_HAND,0,1,nil)
and Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(81443745,1)) then
e:SetProperty(EFFECT_FLAG_CARD_TARGET)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local cg=Duel.SelectMatchingCard(tp,c81443745.cfilter,tp,LOCATION_HAND,0,1,1,nil)
Duel.Remove(cg,POS_FACEUP,REASON_COST)
local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0)
e:GetHandler():RegisterFlagEffect(81443745,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1)
else e:SetProperty(0) end
end
function c81443745.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c81443745.cfilter,tp,LOCATION_HAND,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local cg=Duel.SelectMatchingCard(tp,c81443745.cfilter,tp,LOCATION_HAND,0,1,1,nil)
Duel.Remove(cg,POS_FACEUP,REASON_COST)
end
function c81443745.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCAITON_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end
if chk==0 then return e:GetHandler():GetFlagEffect(81443745)==0
and Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end
local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0)
e:GetHandler():RegisterFlagEffect(81443745,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1)
end
function c81443745.operation(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local tc=Duel.GetFirstTarget()
if tc and tc:IsRelateToEffect(e) then
Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)
end
end
--撤収命令
function c81665333.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c81665333.target)
e1:SetOperation(c81665333.activate)
c:RegisterEffect(e1)
end
function c81665333.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,nil) end
local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,0,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0)
end
function c81665333.activate(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,0,nil)
Duel.SendtoHand(sg,nil,REASON_EFFECT)
end
--王者の看破
function c82382815.initial_effect(c)
--Activate(summon)
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_SUMMON)
e1:SetCondition(c82382815.condition1)
e1:SetTarget(c82382815.target1)
e1:SetOperation(c82382815.activate1)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_FLIP_SUMMON)
c:RegisterEffect(e2)
local e3=e1:Clone()
e3:SetCode(EVENT_SPSUMMON)
c:RegisterEffect(e3)
--Activate(effect)
local e4=Effect.CreateEffect(c)
e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY)
e4:SetType(EFFECT_TYPE_ACTIVATE)
e4:SetCode(EVENT_CHAINING)
e4:SetCondition(c82382815.condition2)
e4:SetTarget(c82382815.target2)
e4:SetOperation(c82382815.activate2)
c:RegisterEffect(e4)
end
function c82382815.cfilter(c)
return c:IsFaceup() and c:IsLevelAbove(7) and c:IsType(TYPE_NORMAL)
end
function c82382815.condition1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentChain()==0 and Duel.IsExistingMatchingCard(c82382815.cfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c82382815.target1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0)
end
function c82382815.activate1(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateSummon(eg:GetFirst())
Duel.Destroy(eg,REASON_EFFECT)
end
function c82382815.condition2(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainInactivatable(ev)
and Duel.IsExistingMatchingCard(c82382815.cfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c82382815.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0)
if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then
Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0)
end
end
function c82382815.activate2(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateActivation(ev)
if re:GetHandler():IsRelateToEffect(re) then
Duel.Destroy(eg,REASON_EFFECT)
end
end
--ファラオの化身
function c83903521.initial_effect(c)
--spsummon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(83903521,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_BE_MATERIAL)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY)
e1:SetCondition(c83903521.spcon)
e1:SetTarget(c83903521.sptg)
e1:SetOperation(c83903521.spop)
c:RegisterEffect(e1)
end
function c83903521.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO
end
function c83903521.filter(c,e,tp)
return c:IsLevelBelow(4) and c:IsRace(RACE_ZOMBIE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c83903521.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c83903521.filter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c83903521.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c83903521.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c83903521.spop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end
end
\ No newline at end of file
--傀儡虫 --傀儡虫
function c87514539.initial_effect(c) function c87514539.initial_effect(c)
--control --control
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
......
--マジック·ストライカー
function c93187568.initial_effect(c)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCondition(c93187568.spcon)
e1:SetOperation(c93187568.spop)
c:RegisterEffect(e1)
--diratk
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DIRECT_ATTACK)
c:RegisterEffect(e2)
--dam
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
e3:SetValue(1)
c:RegisterEffect(e3)
end
function c93187568.spfilter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToRemoveAsCost()
end
function c93187568.spcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c93187568.spfilter,tp,LOCATION_GRAVE,0,1,nil)
end
function c93187568.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,c93187568.spfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.Remove(g,POS_FACEUP,REASON_COST)
end
...@@ -22,7 +22,7 @@ function c93830681.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -22,7 +22,7 @@ function c93830681.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end
Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST)
end end
function c93830681.target(e,tp,eg,ep,ev,re,r,rp,chk) function c93830681.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local tg=Duel.GetAttacker() local tg=Duel.GetAttacker()
if chkc then return chkc==tg end if chkc then return chkc==tg end
if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end
......
--フィッシュ·レイン
function c94626050.initial_effect(c)
--spsummon
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_REMOVE)
e1:SetCondition(c94626050.condition)
e1:SetTarget(c94626050.target)
e1:SetOperation(c94626050.operation)
c:RegisterEffect(e1)
end
function c94626050.cfilter(c)
return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP)
and c:IsRace(RACE_FISH+RACE_SEASERPENT+RACE_AQUA)
end
function c94626050.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c94626050.cfilter,1,nil)
end
function c94626050.spfilter(c,e,tp)
return c:IsLevelBelow(3) and c:IsRace(RACE_FISH+RACE_SEASERPENT+RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c94626050.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)~=0
and Duel.IsExistingMatchingCard(c94626050.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c94626050.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,c94626050.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp)
if g:GetCount()~=0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
end
--ダメージ·ダイエット
function c95448692.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetOperation(c95448692.activate)
c:RegisterEffect(e1)
--effect damage
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetRange(LOCATION_GRAVE)
e2:SetCost(c95448692.cost2)
e2:SetOperation(c95448692.activate2)
c:RegisterEffect(e2)
end
c95448692[0]=0
c95448692[1]=0
function c95448692.activate(e,tp,eg,ep,ev,re,r,rp)
c95448692[tp]=1
if Duel.GetFlagEffect(tp,95448692)~=0 then return end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CHANGE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(c95448692.val)
e1:SetReset(RESET_PHASE+PHASE_END,1)
Duel.RegisterEffect(e1,tp)
Duel.RegisterFlagEffect(tp,95448692,RESET_PHASE+PHASE_END,0,1)
end
function c95448692.cost2(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_EFFECT)
end
function c95448692.activate2(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,95448692)~=0 then return end
c95448692[tp]=0
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CHANGE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(c95448692.val)
e1:SetReset(RESET_PHASE+PHASE_END,1)
Duel.RegisterEffect(e1,tp)
Duel.RegisterFlagEffect(tp,95448692,RESET_PHASE+PHASE_END,0,1)
end
function c95448692.val(e,re,dam,r,rp,rc)
if c95448692[e:GetOwnerPlayer()]==1 or bit.band(r,REASON_EFFECT)~=0 then
return dam/2
else return dam end
end
--猛毒の風
function c95561280.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--atk down
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetRange(LOCATION_SZONE)
e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e2:SetTarget(c95561280.tg)
e2:SetValue(-500)
c:RegisterEffect(e2)
--disable spsummon
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EFFECT_CANNOT_SUMMON)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetTargetRange(1,1)
e3:SetTarget(c95561280.tg)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
c:RegisterEffect(e4)
end
function c95561280.tg(e,c)
return c:IsAttribute(ATTRIBUTE_WIND)
end
...@@ -94,6 +94,7 @@ ...@@ -94,6 +94,7 @@
!system 564 请宣言一个卡名 !system 564 请宣言一个卡名
!system 565 请选择一个数字 !system 565 请选择一个数字
!system 566 请选择要发动效果的卡 !system 566 请选择要发动效果的卡
!system 567 请宣言一个等级
!system 1000 卡组 !system 1000 卡组
!system 1001 手牌 !system 1001 手牌
!system 1002 怪兽区 !system 1002 怪兽区
......
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