Commit 6affed97 authored by Fluorohydride's avatar Fluorohydride

effect count limit

parent 51855b2b
...@@ -1431,7 +1431,7 @@ int32 card::filter_summon_procedure(uint8 playerid, effect_set* peset, uint8 ign ...@@ -1431,7 +1431,7 @@ int32 card::filter_summon_procedure(uint8 playerid, effect_set* peset, uint8 ign
return FALSE; return FALSE;
if(eset.count) { if(eset.count) {
proc = eset[0]; proc = eset[0];
if(is_summonable(proc) && pduel->game_field->is_player_can_summon(proc->get_value(this), playerid, this)) { if(proc->check_count_limit(playerid) && is_summonable(proc) && pduel->game_field->is_player_can_summon(proc->get_value(this), playerid, this)) {
peset->add_item(eset[0]); peset->add_item(eset[0]);
return -1; return -1;
} }
...@@ -1440,7 +1440,7 @@ int32 card::filter_summon_procedure(uint8 playerid, effect_set* peset, uint8 ign ...@@ -1440,7 +1440,7 @@ int32 card::filter_summon_procedure(uint8 playerid, effect_set* peset, uint8 ign
eset.clear(); eset.clear();
filter_effect(EFFECT_SUMMON_PROC, &eset); filter_effect(EFFECT_SUMMON_PROC, &eset);
for(int32 i = 0; i < eset.count; ++i) for(int32 i = 0; i < eset.count; ++i)
if(is_summonable(eset[i]) && pduel->game_field->is_player_can_summon(eset[i]->get_value(this), playerid, this)) if(eset[i]->check_count_limit(playerid) && is_summonable(eset[i]) && pduel->game_field->is_player_can_summon(eset[i]->get_value(this), playerid, this))
peset->add_item(eset[i]); peset->add_item(eset[i]);
if(!pduel->game_field->is_player_can_summon(SUMMON_TYPE_NORMAL, playerid, this)) if(!pduel->game_field->is_player_can_summon(SUMMON_TYPE_NORMAL, playerid, this))
return FALSE; return FALSE;
...@@ -1468,7 +1468,7 @@ int32 card::filter_set_procedure(uint8 playerid, effect_set* peset, uint8 ignore ...@@ -1468,7 +1468,7 @@ int32 card::filter_set_procedure(uint8 playerid, effect_set* peset, uint8 ignore
return FALSE; return FALSE;
if(eset.count) { if(eset.count) {
proc = eset[0]; proc = eset[0];
if(is_summonable(proc) && pduel->game_field->is_player_can_mset(proc->get_value(this), playerid, this)) { if(proc->check_count_limit(playerid) && is_summonable(proc) && pduel->game_field->is_player_can_mset(proc->get_value(this), playerid, this)) {
peset->add_item(eset[0]); peset->add_item(eset[0]);
return -1; return -1;
} }
...@@ -1477,7 +1477,7 @@ int32 card::filter_set_procedure(uint8 playerid, effect_set* peset, uint8 ignore ...@@ -1477,7 +1477,7 @@ int32 card::filter_set_procedure(uint8 playerid, effect_set* peset, uint8 ignore
eset.clear(); eset.clear();
filter_effect(EFFECT_SET_PROC, &eset); filter_effect(EFFECT_SET_PROC, &eset);
for(int32 i = 0; i < eset.count; ++i) for(int32 i = 0; i < eset.count; ++i)
if(is_summonable(eset[i]) && pduel->game_field->is_player_can_mset(eset[i]->get_value(this), playerid, this)) if(eset[i]->check_count_limit(playerid) && is_summonable(eset[i]) && pduel->game_field->is_player_can_mset(eset[i]->get_value(this), playerid, this))
peset->add_item(eset[i]); peset->add_item(eset[i]);
if(!pduel->game_field->is_player_can_mset(SUMMON_TYPE_NORMAL, playerid, this)) if(!pduel->game_field->is_player_can_mset(SUMMON_TYPE_NORMAL, playerid, this))
return FALSE; return FALSE;
...@@ -1514,7 +1514,7 @@ void card::filter_spsummon_procedure(uint8 playerid, effect_set* peset) { ...@@ -1514,7 +1514,7 @@ void card::filter_spsummon_procedure(uint8 playerid, effect_set* peset) {
topos = POS_FACEUP; topos = POS_FACEUP;
toplayer = playerid; toplayer = playerid;
} }
if(peffect->is_available() && is_summonable(peffect) if(peffect->is_available() && peffect->check_count_limit(playerid) && is_summonable(peffect)
&& pduel->game_field->is_player_can_spsummon(peffect, peffect->get_value(this), topos, playerid, toplayer, this)) && pduel->game_field->is_player_can_spsummon(peffect, peffect->get_value(this), topos, playerid, toplayer, this))
peset->add_item(pr.first->second); peset->add_item(pr.first->second);
} }
......
...@@ -120,10 +120,10 @@ int32 effect::check_count_limit(uint8 playerid) { ...@@ -120,10 +120,10 @@ int32 effect::check_count_limit(uint8 playerid) {
if((reset_count & 0xf00) == 0) if((reset_count & 0xf00) == 0)
return FALSE; return FALSE;
} else { } else {
uint32 code = count_code & 0x7fffffff; uint32 code = count_code & 0xfffffff;
uint32 count = (reset_count >> 12) & 0xf; uint32 count = (reset_count >> 12) & 0xf;
if(code == 1) { if(code == 1) {
if(pduel->game_field->get_effect_code((count_code & 0x80000000) | handler->fieldid, PLAYER_NONE) >= count) if(pduel->game_field->get_effect_code((count_code & 0xf0000000) | handler->fieldid, PLAYER_NONE) >= count)
return FALSE; return FALSE;
} else { } else {
if(pduel->game_field->get_effect_code(count_code, playerid) >= count) if(pduel->game_field->get_effect_code(count_code, playerid) >= count)
...@@ -491,9 +491,9 @@ void effect::dec_count(uint32 playerid) { ...@@ -491,9 +491,9 @@ void effect::dec_count(uint32 playerid) {
return; return;
reset_count -= 0x100; reset_count -= 0x100;
} else { } else {
uint32 code = count_code & 0x7fffffff; uint32 code = count_code & 0xfffffff;
if(code == 1) if(code == 1)
pduel->game_field->add_effect_code((count_code & 0x80000000) | handler->fieldid, PLAYER_NONE); pduel->game_field->add_effect_code((count_code & 0xf0000000) | handler->fieldid, PLAYER_NONE);
else else
pduel->game_field->add_effect_code(count_code, playerid); pduel->game_field->add_effect_code(count_code, playerid);
} }
......
...@@ -89,6 +89,9 @@ public: ...@@ -89,6 +89,9 @@ public:
//status //status
#define EFFECT_STATUS_AVAILABLE 0x0001 #define EFFECT_STATUS_AVAILABLE 0x0001
#define EFFECT_COUNT_CODE_OATH 0x10000000
#define EFFECT_COUNT_CODE_DUEL 0x20000000
//========== Reset ========== //========== Reset ==========
#define RESET_DRAW PHASE_DRAW #define RESET_DRAW PHASE_DRAW
#define RESET_STANDBY PHASE_STANDBY #define RESET_STANDBY PHASE_STANDBY
......
...@@ -818,17 +818,20 @@ void field::reset_chain() { ...@@ -818,17 +818,20 @@ void field::reset_chain() {
} }
} }
void field::add_effect_code(uint32 code, uint32 playerid) { void field::add_effect_code(uint32 code, uint32 playerid) {
core.effect_count_code[code + (playerid << 30)]++; auto& count_map = (code & EFFECT_COUNT_CODE_DUEL) ? core.effect_count_code_duel : core.effect_count_code;
count_map[code + (playerid << 30)]++;
} }
uint32 field::get_effect_code(uint32 code, uint32 playerid) { uint32 field::get_effect_code(uint32 code, uint32 playerid) {
auto iter = core.effect_count_code.find(code + (playerid << 30)); auto& count_map = (code & EFFECT_COUNT_CODE_DUEL) ? core.effect_count_code_duel : core.effect_count_code;
if(iter == core.effect_count_code.end()) auto iter = count_map.find(code + (playerid << 30));
if(iter == count_map.end())
return 0; return 0;
return iter->second; return iter->second;
} }
void field::dec_effect_code(uint32 code, uint32 playerid) { void field::dec_effect_code(uint32 code, uint32 playerid) {
auto iter = core.effect_count_code.find(code + (playerid << 30)); auto& count_map = (code & EFFECT_COUNT_CODE_DUEL) ? core.effect_count_code_duel : core.effect_count_code;
if(iter == core.effect_count_code.end()) auto iter = count_map.find(code + (playerid << 30));
if(iter == count_map.end())
return; return;
if(iter->second > 0) if(iter->second > 0)
iter->second--; iter->second--;
......
...@@ -213,6 +213,7 @@ struct processor { ...@@ -213,6 +213,7 @@ struct processor {
std::unordered_map<card*, uint32> readjust_map; std::unordered_map<card*, uint32> readjust_map;
std::unordered_set<card*> unique_cards[2]; std::unordered_set<card*> unique_cards[2];
std::unordered_map<uint32, uint32> effect_count_code; std::unordered_map<uint32, uint32> effect_count_code;
std::unordered_map<uint32, uint32> effect_count_code_duel;
std::multimap<int32, card*, std::greater<int32> > xmaterial_lst; std::multimap<int32, card*, std::greater<int32> > xmaterial_lst;
ptr temp_var[4]; ptr temp_var[4];
uint32 global_flag; uint32 global_flag;
......
...@@ -1290,6 +1290,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1290,6 +1290,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
core.sub_solving_event.push_back(nil_event); core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, sumplayer, 0); add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, sumplayer, 0);
} }
proc->dec_count(sumplayer);
return FALSE; return FALSE;
} }
case 5: { case 5: {
...@@ -1693,6 +1694,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui ...@@ -1693,6 +1694,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
pduel->lua->add_param(target, PARAM_TYPE_CARD); pduel->lua->add_param(target, PARAM_TYPE_CARD);
core.sub_solving_event.push_back(nil_event); core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, setplayer, 0); add_process(PROCESSOR_EXECUTE_OPERATION, 0, proc, 0, setplayer, 0);
proc->dec_count(setplayer);
return FALSE; return FALSE;
} }
case 5: { case 5: {
...@@ -1974,6 +1976,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) { ...@@ -1974,6 +1976,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) {
core.sub_solving_event.push_back(nil_event); core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_EXECUTE_OPERATION, 0, peffect, 0, sumplayer, 0); add_process(PROCESSOR_EXECUTE_OPERATION, 0, peffect, 0, sumplayer, 0);
} }
peffect->dec_count(sumplayer);
return FALSE; return FALSE;
} }
case 3: { case 3: {
......
...@@ -4336,7 +4336,7 @@ int32 field::solve_chain(uint16 step, uint32 skip_new) { ...@@ -4336,7 +4336,7 @@ int32 field::solve_chain(uint16 step, uint32 skip_new) {
if((peffect->flag & EFFECT_FLAG_REPEAT)) if((peffect->flag & EFFECT_FLAG_REPEAT))
peffect->reset_count += 0x100; peffect->reset_count += 0x100;
} else { } else {
if(peffect->count_code & 0x80000000) if(peffect->count_code & EFFECT_COUNT_CODE_OATH)
dec_effect_code(peffect->count_code, cait->triggering_player); dec_effect_code(peffect->count_code, cait->triggering_player);
} }
} }
......
...@@ -6,8 +6,8 @@ function c1003028.initial_effect(c) ...@@ -6,8 +6,8 @@ function c1003028.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,1003028)
e1:SetCondition(c1003028.spcon) e1:SetCondition(c1003028.spcon)
e1:SetOperation(c1003028.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--xyzlimit --xyzlimit
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -23,15 +23,11 @@ end ...@@ -23,15 +23,11 @@ end
function c1003028.spcon(e,c) function c1003028.spcon(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.GetFlagEffect(tp,1003028)==0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0
and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0
and not Duel.IsExistingMatchingCard(c1003028.cfilter,tp,LOCATION_MZONE,0,1,nil) and not Duel.IsExistingMatchingCard(c1003028.cfilter,tp,LOCATION_MZONE,0,1,nil)
end end
function c1003028.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,1003028,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
function c1003028.xyzlimit(e,c) function c1003028.xyzlimit(e,c)
if not c then return false end if not c then return false end
return not c:IsRace(RACE_WARRIOR) return not c:IsRace(RACE_WARRIOR)
......
...@@ -6,6 +6,7 @@ function c11747708.initial_effect(c) ...@@ -6,6 +6,7 @@ function c11747708.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,11747708+EFFECT_COUNT_CODE_DUEL)
e1:SetCost(c11747708.cost) e1:SetCost(c11747708.cost)
e1:SetTarget(c11747708.target) e1:SetTarget(c11747708.target)
e1:SetOperation(c11747708.operation) e1:SetOperation(c11747708.operation)
...@@ -22,11 +23,9 @@ function c11747708.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -22,11 +23,9 @@ function c11747708.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(g:GetFirst():GetLevel()) e:SetLabel(g:GetFirst():GetLevel())
end end
function c11747708.target(e,tp,eg,ep,ev,re,r,rp,chk) function c11747708.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
if chk==0 then return Duel.GetFlagEffect(tp,11747708)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
Duel.RegisterFlagEffect(tp,11747708,0,0,0)
end end
function c11747708.operation(e,tp,eg,ep,ev,re,r,rp) function c11747708.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -6,6 +6,7 @@ function c14785765.initial_effect(c) ...@@ -6,6 +6,7 @@ function c14785765.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,14785765+EFFECT_COUNT_CODE_DUEL)
e1:SetCost(c14785765.cost) e1:SetCost(c14785765.cost)
e1:SetTarget(c14785765.target) e1:SetTarget(c14785765.target)
e1:SetOperation(c14785765.operation) e1:SetOperation(c14785765.operation)
...@@ -17,7 +18,7 @@ end ...@@ -17,7 +18,7 @@ end
function c14785765.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c14785765.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if chk==0 then if chk==0 then
if Duel.GetFlagEffect(tp,14785765)~=0 or ft<0 then return false end if ft<0 then return false end
if ft==0 then if ft==0 then
return Duel.IsExistingMatchingCard(c14785765.costfilter,tp,LOCATION_MZONE,0,1,nil) return Duel.IsExistingMatchingCard(c14785765.costfilter,tp,LOCATION_MZONE,0,1,nil)
else else
...@@ -32,7 +33,6 @@ function c14785765.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -32,7 +33,6 @@ function c14785765.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.SelectMatchingCard(tp,c14785765.costfilter,tp,LOCATION_ONFIELD,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c14785765.costfilter,tp,LOCATION_ONFIELD,0,1,1,nil)
Duel.SendtoHand(g,nil,REASON_COST) Duel.SendtoHand(g,nil,REASON_COST)
end end
Duel.RegisterFlagEffect(tp,14785765,0,0,0)
end end
function c14785765.target(e,tp,eg,ep,ev,re,r,rp,chk) function c14785765.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
......
...@@ -6,18 +6,14 @@ function c15310033.initial_effect(c) ...@@ -6,18 +6,14 @@ function c15310033.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,15310033+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c15310033.spcon) e1:SetCondition(c15310033.spcon)
e1:SetOperation(c15310033.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c15310033.spcon(e,c) function c15310033.spcon(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.GetFlagEffect(tp,15310033)==0 return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)==0
and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)==0
and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE,nil)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE,nil)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
end end
function c15310033.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,15310033,0,0,0)
end
...@@ -8,14 +8,14 @@ function c3072808.initial_effect(c) ...@@ -8,14 +8,14 @@ function c3072808.initial_effect(c)
e1:SetCode(EVENT_BATTLE_DAMAGE) e1:SetCode(EVENT_BATTLE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,3072808) e1:SetCountLimit(1,3072808+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c3072808.condition) e1:SetCondition(c3072808.condition)
e1:SetTarget(c3072808.target) e1:SetTarget(c3072808.target)
e1:SetOperation(c3072808.operation) e1:SetOperation(c3072808.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c3072808.condition(e,tp,eg,ep,ev,re,r,rp) function c3072808.condition(e,tp,eg,ep,ev,re,r,rp)
return ep==tp and ev>=2000 and Duel.GetAttackTarget()==nil and Duel.GetFlagEffect(tp,3072808)==0 return ep==tp and ev>=2000 and Duel.GetAttackTarget()==nil
end end
function c3072808.filter(c,e,tp) function c3072808.filter(c,e,tp)
return c:IsLevelBelow(3) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsLevelBelow(3) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
...@@ -29,7 +29,6 @@ function c3072808.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -29,7 +29,6 @@ function c3072808.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local g=Duel.SelectTarget(tp,c3072808.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) local g=Duel.SelectTarget(tp,c3072808.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp)
g:AddCard(e:GetHandler()) g:AddCard(e:GetHandler())
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0)
Duel.RegisterFlagEffect(tp,3072808,0,0,0)
end end
function c3072808.operation(e,tp,eg,ep,ev,re,r,rp) function c3072808.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
......
...@@ -6,6 +6,7 @@ function c34710660.initial_effect(c) ...@@ -6,6 +6,7 @@ function c34710660.initial_effect(c)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,34710660+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c34710660.condition) e1:SetCondition(c34710660.condition)
e1:SetCost(c34710660.cost) e1:SetCost(c34710660.cost)
e1:SetOperation(c34710660.operation) e1:SetOperation(c34710660.operation)
...@@ -15,9 +16,8 @@ function c34710660.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,9 +16,8 @@ function c34710660.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE
end end
function c34710660.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c34710660.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,34710660)==0 and 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)
Duel.RegisterFlagEffect(tp,34710660,0,0,0)
end end
function c34710660.operation(e,tp,eg,ep,ev,re,r,rp) function c34710660.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1)
......
...@@ -9,15 +9,15 @@ function c43586926.initial_effect(c) ...@@ -9,15 +9,15 @@ function c43586926.initial_effect(c)
end end
function c43586926.regop(e,tp,eg,ep,ev,re,r,rp) function c43586926.regop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if Duel.GetFlagEffect(tp,43586926)==0 and c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 then if c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 then
--spsummon --spsummon
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(43586926,0)) e1:SetDescription(aux.Stringid(43586926,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1) e1:SetCountLimit(1,43586926+EFFECT_COUNT_CODE_DUEL)
e1:SetTarget(c43586926.sptg) e1:SetTarget(c43586926.sptg)
e1:SetOperation(c43586926.spop) e1:SetOperation(c43586926.spop)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END)
...@@ -25,9 +25,8 @@ function c43586926.regop(e,tp,eg,ep,ev,re,r,rp) ...@@ -25,9 +25,8 @@ function c43586926.regop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c43586926.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c43586926.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,43586926)==0 end if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
Duel.RegisterFlagEffect(tp,43586926,0,0,0)
end end
function c43586926.spop(e,tp,eg,ep,ev,re,r,rp) function c43586926.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -6,8 +6,8 @@ function c45651298.initial_effect(c) ...@@ -6,8 +6,8 @@ function c45651298.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,45651298)
e1:SetCondition(c45651298.spcon) e1:SetCondition(c45651298.spcon)
e1:SetOperation(c45651298.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c45651298.filter(c) function c45651298.filter(c)
...@@ -16,11 +16,7 @@ end ...@@ -16,11 +16,7 @@ end
function c45651298.spcon(e,c) function c45651298.spcon(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.GetFlagEffect(tp,45651298)==0 return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE,nil)>0
and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE,nil)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c45651298.filter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c45651298.filter,tp,LOCATION_MZONE,0,1,nil)
end end
function c45651298.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,45651298,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
...@@ -17,7 +17,7 @@ function c50789693.initial_effect(c) ...@@ -17,7 +17,7 @@ function c50789693.initial_effect(c)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(50789693,1)) e2:SetDescription(aux.Stringid(50789693,1))
e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetCountLimit(1) e2:SetCountLimit(1,50789693+EFFECT_COUNT_CODE_DUEL)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCode(EVENT_FREE_CHAIN) e2:SetCode(EVENT_FREE_CHAIN)
e2:SetHintTiming(TIMING_BATTLE_PHASE) e2:SetHintTiming(TIMING_BATTLE_PHASE)
...@@ -54,10 +54,8 @@ function c50789693.btcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -54,10 +54,8 @@ function c50789693.btcon(e,tp,eg,ep,ev,re,r,rp)
return bt and bt:IsControler(tp) return bt and bt:IsControler(tp)
end end
function c50789693.btcost(e,tp,eg,ep,ev,re,r,rp,chk) function c50789693.btcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,50789693)==0 if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end
and Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD)
Duel.RegisterFlagEffect(tp,50789693,0,0,0)
end end
function c50789693.btop(e,tp,eg,ep,ev,re,r,rp) function c50789693.btop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
......
...@@ -6,6 +6,7 @@ function c55204071.initial_effect(c) ...@@ -6,6 +6,7 @@ function c55204071.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,55204071)
e1:SetCondition(c55204071.spcon) e1:SetCondition(c55204071.spcon)
e1:SetOperation(c55204071.spop) e1:SetOperation(c55204071.spop)
e1:SetValue(1) e1:SetValue(1)
...@@ -34,14 +35,12 @@ function c55204071.cfilter(c) ...@@ -34,14 +35,12 @@ function c55204071.cfilter(c)
end end
function c55204071.spcon(e,c) function c55204071.spcon(e,c)
if c==nil then return true end if c==nil then return true end
return Duel.GetFlagEffect(c:GetControler(),55204071)==0 return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1
and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1
and Duel.CheckReleaseGroup(c:GetControler(),c55204071.cfilter,1,nil) and Duel.CheckReleaseGroup(c:GetControler(),c55204071.cfilter,1,nil)
end end
function c55204071.spop(e,tp,eg,ep,ev,re,r,rp,c) function c55204071.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.SelectReleaseGroup(c:GetControler(),c55204071.cfilter,1,1,nil) local g=Duel.SelectReleaseGroup(c:GetControler(),c55204071.cfilter,1,1,nil)
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
Duel.RegisterFlagEffect(tp,55204071,RESET_PHASE+PHASE_END,0,1)
end end
function c55204071.spcon2(e,tp,eg,ep,ev,re,r,rp) function c55204071.spcon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1
......
...@@ -13,6 +13,7 @@ function c61901281.initial_effect(c) ...@@ -13,6 +13,7 @@ function c61901281.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_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,61901281)
e2:SetCondition(c61901281.spcon) e2:SetCondition(c61901281.spcon)
e2:SetOperation(c61901281.spop) e2:SetOperation(c61901281.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -35,14 +36,12 @@ function c61901281.spcon(e,c) ...@@ -35,14 +36,12 @@ function c61901281.spcon(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.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetFlagEffect(tp,61901281)==0
and Duel.IsExistingMatchingCard(c61901281.spfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsExistingMatchingCard(c61901281.spfilter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c61901281.spop(e,tp,eg,ep,ev,re,r,rp,c) function c61901281.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,c61901281.spfilter,tp,LOCATION_GRAVE,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c61901281.spfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
Duel.RegisterFlagEffect(tp,61901281,RESET_PHASE+PHASE_END,0,1)
end end
function c61901281.condition(e,tp,eg,ep,ev,re,r,rp) function c61901281.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
......
...@@ -6,17 +6,17 @@ function c67441435.initial_effect(c) ...@@ -6,17 +6,17 @@ function c67441435.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,67441435+EFFECT_COUNT_CODE_DUEL)
e1:SetTarget(c67441435.target) e1:SetTarget(c67441435.target)
e1:SetOperation(c67441435.operation) e1:SetOperation(c67441435.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c67441435.target(e,tp,eg,ep,ev,re,r,rp,chk) function c67441435.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return Duel.GetFlagEffect(tp,67441435)==0 and Duel.IsPlayerCanDiscardDeck(tp,1) if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
Duel.RegisterFlagEffect(tp,67441435,0,0,0)
end end
function c67441435.operation(e,tp,eg,ep,ev,re,r,rp) function c67441435.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end
......
...@@ -6,8 +6,8 @@ function c67692580.initial_effect(c) ...@@ -6,8 +6,8 @@ function c67692580.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,67692580)
e1:SetCondition(c67692580.spcon) e1:SetCondition(c67692580.spcon)
e1:SetOperation(c67692580.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c67692580.filter(c) function c67692580.filter(c)
...@@ -16,10 +16,6 @@ end ...@@ -16,10 +16,6 @@ end
function c67692580.spcon(e,c) function c67692580.spcon(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.GetFlagEffect(tp,67692580)==0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c67692580.filter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c67692580.filter,tp,LOCATION_MZONE,0,1,nil)
end end
function c67692580.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,67692580,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
...@@ -6,6 +6,7 @@ function c68371799.initial_effect(c) ...@@ -6,6 +6,7 @@ function c68371799.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,68371799)
e1:SetCondition(c68371799.spcon) e1:SetCondition(c68371799.spcon)
e1:SetOperation(c68371799.spop) e1:SetOperation(c68371799.spop)
e1:SetValue(1) e1:SetValue(1)
...@@ -39,12 +40,10 @@ end ...@@ -39,12 +40,10 @@ end
function c68371799.spcon(e,c) function c68371799.spcon(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.GetFlagEffect(tp,68371799)==0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c68371799.filter,tp,LOCATION_ONFIELD,0,1,nil) and Duel.IsExistingMatchingCard(c68371799.filter,tp,LOCATION_ONFIELD,0,1,nil)
end end
function c68371799.spop(e,tp,eg,ep,ev,re,r,rp,c) function c68371799.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,68371799,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_ATTACK) e1:SetCode(EFFECT_CANNOT_ATTACK)
......
...@@ -7,15 +7,12 @@ function c72502414.initial_effect(c) ...@@ -7,15 +7,12 @@ function c72502414.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,72502414+EFFECT_COUNT_CODE_DUEL)
e1:SetCost(c72502414.cost) e1:SetCost(c72502414.cost)
e1:SetTarget(c72502414.target) e1:SetTarget(c72502414.target)
e1:SetOperation(c72502414.operation) e1:SetOperation(c72502414.operation)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c72502414.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,72502414)==0 end
Duel.RegisterFlagEffect(tp,72502414,0,0,0)
end
function c72502414.filter(c) function c72502414.filter(c)
return c:IsFaceup() and c:IsSetCard(0x7f) and c:IsType(TYPE_XYZ) return c:IsFaceup() and c:IsSetCard(0x7f) and c:IsType(TYPE_XYZ)
end end
......
...@@ -6,8 +6,8 @@ function c7409792.initial_effect(c) ...@@ -6,8 +6,8 @@ function c7409792.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,7409792)
e1:SetCondition(c7409792.spcon) e1:SetCondition(c7409792.spcon)
e1:SetOperation(c7409792.spop)
e1:SetValue(1) e1:SetValue(1)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon success --spsummon success
...@@ -30,10 +30,7 @@ end ...@@ -30,10 +30,7 @@ end
function c7409792.spcon(e,c) function c7409792.spcon(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.GetFlagEffect(tp,7409792)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
end
function c7409792.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,7409792,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end end
function c7409792.trigop(e,tp,eg,ep,ev,re,r,rp) function c7409792.trigop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 then if e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 then
......
...@@ -7,8 +7,8 @@ function c75214390.initial_effect(c) ...@@ -7,8 +7,8 @@ function c75214390.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM)
e1:SetTargetRange(POS_FACEUP_DEFENCE,0) e1:SetTargetRange(POS_FACEUP_DEFENCE,0)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,75214390)
e1:SetCondition(c75214390.spcon) e1:SetCondition(c75214390.spcon)
e1:SetOperation(c75214390.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--atkup --atkup
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -28,13 +28,9 @@ end ...@@ -28,13 +28,9 @@ end
function c75214390.spcon(e,c) function c75214390.spcon(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.GetFlagEffect(tp,75214390)==0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c75214390.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c75214390.cfilter,tp,LOCATION_MZONE,0,1,nil)
end end
function c75214390.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,75214390,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end
function c75214390.atkcon(e,tp,eg,ep,ev,re,r,rp) function c75214390.atkcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() return e:GetHandler():GetTurnID()~=Duel.GetTurnCount()
end end
......
...@@ -7,6 +7,7 @@ function c82593786.initial_effect(c) ...@@ -7,6 +7,7 @@ function c82593786.initial_effect(c)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_BATTLE_PHASE) e1:SetHintTiming(TIMING_BATTLE_PHASE)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,82593786+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c82593786.condition) e1:SetCondition(c82593786.condition)
e1:SetCost(c82593786.cost) e1:SetCost(c82593786.cost)
e1:SetOperation(c82593786.operation) e1:SetOperation(c82593786.operation)
...@@ -16,9 +17,8 @@ function c82593786.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -16,9 +17,8 @@ function c82593786.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttacker()~=nil return Duel.GetAttacker()~=nil
end end
function c82593786.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c82593786.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,82593786)==0 and 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)
Duel.RegisterFlagEffect(tp,82593786,0,0,0)
end end
function c82593786.operation(e,tp,eg,ep,ev,re,r,rp) function c82593786.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateAttack() Duel.NegateAttack()
......
...@@ -7,6 +7,7 @@ function c86039057.initial_effect(c) ...@@ -7,6 +7,7 @@ function c86039057.initial_effect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_ATTACK_ANNOUNCE) e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,86039057+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c86039057.condition) e1:SetCondition(c86039057.condition)
e1:SetTarget(c86039057.target) e1:SetTarget(c86039057.target)
e1:SetOperation(c86039057.operation) e1:SetOperation(c86039057.operation)
...@@ -17,10 +18,8 @@ function c86039057.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,10 +18,8 @@ function c86039057.condition(e,tp,eg,ep,ev,re,r,rp)
return at:GetControler()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 return at:GetControler()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0
end end
function c86039057.target(e,tp,eg,ep,ev,re,r,rp,chk) function c86039057.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
if chk==0 then return Duel.GetFlagEffect(tp,86039057)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.RegisterFlagEffect(tp,86039057,0,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end end
function c86039057.operation(e,tp,eg,ep,ev,re,r,rp) function c86039057.operation(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -16,7 +16,7 @@ function c9260791.initial_effect(c) ...@@ -16,7 +16,7 @@ function c9260791.initial_effect(c)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetRange(LOCATION_GRAVE) e2:SetRange(LOCATION_GRAVE)
e2:SetCost(c9260791.cost) e2:SetCountLimit(1,9260791+EFFECT_COUNT_CODE_DUEL)
e2:SetTarget(c9260791.target) e2:SetTarget(c9260791.target)
e2:SetOperation(c9260791.operation) e2:SetOperation(c9260791.operation)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -43,10 +43,6 @@ function c9260791.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -43,10 +43,6 @@ function c9260791.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end end
end end
function c9260791.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,9260792)==0 end
Duel.RegisterFlagEffect(tp,9260792,0,0,0)
end
function c9260791.filter(c) function c9260791.filter(c)
return c:IsFaceup() and c:IsSetCard(0x107b) and c:IsType(TYPE_XYZ) return c:IsFaceup() and c:IsSetCard(0x107b) and c:IsType(TYPE_XYZ)
end end
......
...@@ -6,8 +6,8 @@ function c92841002.initial_effect(c) ...@@ -6,8 +6,8 @@ function c92841002.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,92841002)
e1:SetCondition(c92841002.spcon) e1:SetCondition(c92841002.spcon)
e1:SetOperation(c92841002.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c92841002.spfilter(c) function c92841002.spfilter(c)
...@@ -17,9 +17,5 @@ function c92841002.spcon(e,c) ...@@ -17,9 +17,5 @@ function c92841002.spcon(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.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetFlagEffect(tp,92841002)==0
and Duel.IsExistingMatchingCard(c92841002.spfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c92841002.spfilter,tp,LOCATION_MZONE,0,1,nil)
end end
function c92841002.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.RegisterFlagEffect(tp,92841002,RESET_PHASE+PHASE_END,0,1)
end
...@@ -16,9 +16,8 @@ function c94220427.initial_effect(c) ...@@ -16,9 +16,8 @@ function c94220427.initial_effect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetRange(LOCATION_GRAVE) e2:SetRange(LOCATION_GRAVE)
e2:SetCountLimit(1,94220427) e2:SetCountLimit(1,94220427+EFFECT_COUNT_CODE_DUEL)
e2:SetCondition(c94220427.thcon) e2:SetCondition(c94220427.thcon)
e2:SetCost(c94220427.thcost)
e2:SetTarget(c94220427.thtg) e2:SetTarget(c94220427.thtg)
e2:SetOperation(c94220427.thop) e2:SetOperation(c94220427.thop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -64,10 +63,6 @@ end ...@@ -64,10 +63,6 @@ end
function c94220427.thcon(e,tp,eg,ep,ev,re,r,rp) function c94220427.thcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c94220427.cfilter,1,nil,tp) return eg:IsExists(c94220427.cfilter,1,nil,tp)
end end
function c94220427.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,94220427)==0 end
Duel.RegisterFlagEffect(tp,94220427,0,0,0)
end
function c94220427.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c94220427.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToHand() end if chk==0 then return e:GetHandler():IsAbleToHand() end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0)
......
...@@ -7,7 +7,7 @@ function c9861795.initial_effect(c) ...@@ -7,7 +7,7 @@ function c9861795.initial_effect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_TO_GRAVE) e1:SetCode(EVENT_TO_GRAVE)
e1:SetCountLimit(1,9861795) e1:SetCountLimit(1,9861795+EFFECT_COUNT_CODE_DUEL)
e1:SetCondition(c9861795.condition) e1:SetCondition(c9861795.condition)
e1:SetTarget(c9861795.target) e1:SetTarget(c9861795.target)
e1:SetOperation(c9861795.operation) e1:SetOperation(c9861795.operation)
...@@ -17,9 +17,8 @@ function c9861795.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,9 +17,8 @@ function c9861795.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
end end
function c9861795.target(e,tp,eg,ep,ev,re,r,rp,chk) function c9861795.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,9861795)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.RegisterFlagEffect(tp,9861795,0,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end end
function c9861795.operation(e,tp,eg,ep,ev,re,r,rp) function c9861795.operation(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -13,6 +13,7 @@ function c99234526.initial_effect(c) ...@@ -13,6 +13,7 @@ function c99234526.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_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,99234526)
e2:SetCondition(c99234526.spcon) e2:SetCondition(c99234526.spcon)
e2:SetOperation(c99234526.spop) e2:SetOperation(c99234526.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -35,14 +36,12 @@ function c99234526.spcon(e,c) ...@@ -35,14 +36,12 @@ function c99234526.spcon(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.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.GetFlagEffect(tp,99234526)==0
and Duel.IsExistingMatchingCard(c99234526.spfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsExistingMatchingCard(c99234526.spfilter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c99234526.spop(e,tp,eg,ep,ev,re,r,rp,c) function c99234526.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,c99234526.spfilter,tp,LOCATION_GRAVE,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c99234526.spfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
Duel.RegisterFlagEffect(tp,99234526,RESET_PHASE+PHASE_END,0,1)
end end
function c99234526.condition(e,tp,eg,ep,ev,re,r,rp) function c99234526.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
......
...@@ -646,7 +646,8 @@ GLOBALFLAG_MUST_BE_SMATERIAL =0x20 ...@@ -646,7 +646,8 @@ GLOBALFLAG_MUST_BE_SMATERIAL =0x20
GLOBALFLAG_SPSUMMON_COUNT =0x40 GLOBALFLAG_SPSUMMON_COUNT =0x40
GLOBALFLAG_XMAT_COUNT_LIMIT =0x80 GLOBALFLAG_XMAT_COUNT_LIMIT =0x80
-- --
EFFECT_COUNT_CODE_OATH =-0x80000000 EFFECT_COUNT_CODE_OATH =0x10000000
EFFECT_COUNT_CODE_DUEL =0x20000000
EFFECT_COUNT_CODE_SINGLE =0x1 EFFECT_COUNT_CODE_SINGLE =0x1
-- --
DUEL_TEST_MODE =0x01 DUEL_TEST_MODE =0x01
......
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