Commit b413df16 authored by mercury233's avatar mercury233
parents 0b5801b5 55e5ffaa
......@@ -184,18 +184,8 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
break;
}
case LOCATION_EXTRA: {
if (sequence != 0 || extra[controler].size() == 0) {
extra[controler].push_back(pcard);
pcard->sequence = extra[controler].size() - 1;
} else {
extra[controler].push_back(0);
for(int i = extra[controler].size() - 1; i > 0; --i) {
extra[controler][i] = extra[controler][i - 1];
extra[controler][i]->sequence++;
}
extra[controler][0] = pcard;
pcard->sequence = 0;
}
extra[controler].push_back(pcard);
pcard->sequence = extra[controler].size() - 1;
if ((pcard->type & TYPE_PENDULUM) && (pcard->position & POS_FACEUP))
extra_p_count[controler]++;
break;
......
......@@ -423,8 +423,9 @@ void Game::DrawMisc() {
adFont->draw(pcard->rscstring, recti(464, 246, 496, 266), 0xffffffff, true, false, 0);
}
if(dField.extra[0].size()) {
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), recti(320, 562, 371, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), recti(320, 563, 373, 553), 0xffffff00, true, false, 0);
int offset = (dField.extra[0].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width;
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), recti(320 + offset, 562, 371, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), recti(320 + offset, 563, 373, 553), 0xffffff00, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[0], true), recti(340, 562, 391, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[0], true), recti(340, 563, 393, 553), 0xffffff00, true, false, 0);
}
......@@ -441,8 +442,9 @@ void Game::DrawMisc() {
numFont->draw(dataManager.GetNumString(dField.remove[0].size()), recti(1015, 376, 959, 381), 0xffffff00, true, false, 0);
}
if(dField.extra[1].size()) {
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), recti(808, 207, 898, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), recti(808, 208, 900, 233), 0xffffff00, true, false, 0);
int offset = (dField.extra[1].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width;
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), recti(808 + offset, 207, 898, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), recti(808 + offset, 208, 900, 233), 0xffffff00, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[1], true), recti(828, 207, 918, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[1], true), recti(828, 208, 920, 233), 0xffffff00, true, false, 0);
}
......
......@@ -27,7 +27,7 @@ field::field(duel* pduel) {
this->pduel = pduel;
infos.field_id = 1;
infos.copy_id = 1;
infos.shuffle_count = 0;
infos.can_shuffle = TRUE;
infos.turn_id = 0;
infos.card_id = 1;
infos.phase = 0;
......@@ -150,7 +150,6 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
return;
if((pcard->data.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ)) && (location & (LOCATION_HAND | LOCATION_DECK))) {
location = LOCATION_EXTRA;
sequence = 1;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
}
pcard->current.controler = playerid;
......@@ -196,13 +195,8 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
pcard->current.sequence = player[playerid].list_remove.size() - 1;
break;
case LOCATION_EXTRA:
if (sequence == 1) {
player[playerid].list_extra.insert(player[playerid].list_extra.begin(), pcard);
reset_sequence(playerid, LOCATION_EXTRA);
} else {
player[playerid].list_extra.push_back(pcard);
pcard->current.sequence = player[playerid].list_extra.size() - 1;
}
player[playerid].list_extra.push_back(pcard);
pcard->current.sequence = player[playerid].list_extra.size() - 1;
break;
}
pcard->apply_field_effect();
......@@ -268,7 +262,6 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
uint8 presequence = pcard->current.sequence;
if((pcard->data.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ)) && (location & (LOCATION_HAND | LOCATION_DECK))) {
location = LOCATION_EXTRA;
sequence = 1;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
}
if (pcard->current.location) {
......@@ -376,7 +369,6 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
&& (((pcard->current.location == LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED))
|| ((pcard->current.location == LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) {
location = LOCATION_EXTRA;
sequence = 0;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24);
}
remove_card(pcard);
......
......@@ -115,7 +115,7 @@ struct field_info {
uint8 phase;
uint8 turn_player;
uint8 priorities[2];
uint8 shuffle_count;
uint8 can_shuffle;
};
struct lpcost {
int32 count;
......
......@@ -243,11 +243,7 @@ void field::send_to(card_set* targets, effect* reason_effect, uint32 reason, uin
pcard->current.reason_effect = reason_effect;
pcard->current.reason_player = reason_player;
p = playerid;
/*
* if playerid not given, will send card from Deck to Hand,
* also that card is in Triggering Player's Deck,
* then send it to Triggering Player's Hand, insdead of Owner's Hand.
*/
// send to hand from deck & playerid not given => send to the hand of controler
if(p == PLAYER_NONE && (destination & LOCATION_HAND) && (pcard->current.location & LOCATION_DECK) && pcard->current.controler == reason_player)
p = reason_player;
if(destination & (LOCATION_GRAVE + LOCATION_REMOVED) || p == PLAYER_NONE)
......
......@@ -139,7 +139,7 @@ int32 field::select_idle_command(uint16 step, uint8 playerid) {
pduel->write_buffer8(1);
else
pduel->write_buffer8(0);
if(infos.shuffle_count < 1 && player[playerid].list_hand.size() > 1)
if(infos.can_shuffle && player[playerid].list_hand.size() > 1)
pduel->write_buffer8(1);
else
pduel->write_buffer8(0);
......@@ -156,7 +156,7 @@ int32 field::select_idle_command(uint16 step, uint8 playerid) {
|| (t == 5 && s >= core.select_chains.size())
|| (t == 6 && (infos.phase != PHASE_MAIN1 || !core.to_bp))
|| (t == 7 && !core.to_ep)
|| (t == 8 && !(infos.shuffle_count < 1 && player[playerid].list_hand.size() > 1))) {
|| (t == 8 && !(infos.can_shuffle && player[playerid].list_hand.size() > 1))) {
pduel->write_buffer8(MSG_RETRY);
return FALSE;
}
......
......@@ -2575,7 +2575,7 @@ int32 field::process_idle_command(uint16 step) {
} else if (ctype == 8) {
core.units.begin()->step = -1;
shuffle(infos.turn_player, LOCATION_HAND);
infos.shuffle_count++;
infos.can_shuffle = FALSE;
return FALSE;
} else {
core.units.begin()->step = 9;
......@@ -2679,7 +2679,7 @@ int32 field::process_idle_command(uint16 step) {
}
case 11: {
returns.ivalue[0] = core.units.begin()->arg1;
infos.shuffle_count = 0;
infos.can_shuffle = TRUE;
return TRUE;
}
case 12: {
......@@ -4045,6 +4045,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
core.delayed_quick_tmp.clear();
pduel->write_buffer8(MSG_NEW_PHASE);
pduel->write_buffer8(infos.phase);
add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0);
return FALSE;
}
......@@ -4128,6 +4129,7 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
core.delayed_quick_tmp.clear();
pduel->write_buffer8(MSG_NEW_PHASE);
pduel->write_buffer8(infos.phase);
infos.can_shuffle = TRUE;
add_process(PROCESSOR_IDLE_COMMAND, 0, 0, 0, 0, 0);
return FALSE;
}
......
......@@ -14,7 +14,7 @@ function c10117149.initial_effect(c)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetCondition(c10117149.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c10117149.splimit)
c:RegisterEffect(e2)
--destroy
......@@ -49,9 +49,6 @@ function c10117149.initial_effect(c)
e6:SetOperation(c10117149.spop)
c:RegisterEffect(e6)
end
function c10117149.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c10117149.splimit(e,c,tp,sumtp,sumpos)
return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
......
......@@ -20,12 +20,14 @@ function c10691144.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,10691144,RESET_PHASE+PHASE_END,0,1)
end
function c10691144.rmcon(e,tp,eg,ep,ev,re,r,rp)
if not (re:GetOwnerPlayer()==1-tp and re:IsActiveType(TYPE_MONSTER) and re:IsActivated()) then
return false
end
local flag=0
local tc=eg:GetFirst()
while tc do
local ploc=tc:GetPreviousLocation()
if tc:IsReason(REASON_EFFECT) and not tc:IsReason(REASON_REDIRECT) and bit.band(ploc,0x1e)~=0
and tc:GetPreviousControler()==tp and tc:GetReasonEffect():GetOwner():IsType(TYPE_MONSTER) then
if tc:GetPreviousControler()==tp and bit.band(ploc,0x1e)~=0 then
flag=bit.bor(flag,ploc)
end
tc=eg:GetNext()
......
......@@ -14,7 +14,7 @@ function c11609969.initial_effect(c)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetCondition(c11609969.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c11609969.splimit)
c:RegisterEffect(e2)
--scale change
......@@ -42,9 +42,6 @@ function c11609969.initial_effect(c)
e5:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e5)
end
function c11609969.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c11609969.splimit(e,c,tp,sumtp,sumpos)
return not c:IsSetCard(0xaf) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
......
......@@ -15,7 +15,7 @@ function c20773176.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c20773176.splimit)
e2:SetCondition(c20773176.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
......@@ -34,9 +34,6 @@ function c20773176.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c20773176.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c20773176.filter(c,tp)
return c:IsReason(REASON_BATTLE+REASON_EFFECT)
and (c:IsSetCard(0xb4) or c:IsSetCard(0xc4)) and not c:IsCode(20773176)
......
......@@ -15,7 +15,7 @@ function c21495657.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c21495657.splimit)
e2:SetCondition(c21495657.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon success
local e3=Effect.CreateEffect(c)
......@@ -32,9 +32,6 @@ function c21495657.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c21495657.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c21495657.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM or e:GetHandler():IsPreviousLocation(LOCATION_DECK)
end
......
......@@ -15,7 +15,7 @@ function c22617205.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c22617205.splimit)
e2:SetCondition(c22617205.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--destroy
local e3=Effect.CreateEffect(c)
......@@ -39,9 +39,6 @@ function c22617205.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9c) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c22617205.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c22617205.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -16,7 +16,7 @@ function c23166823.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c23166823.splimit)
e2:SetCondition(c23166823.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--to hand
local e3=Effect.CreateEffect(c)
......@@ -35,9 +35,6 @@ function c23166823.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c23166823.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c23166823.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -10,7 +10,7 @@ function c3280747.initial_effect(c)
c:RegisterEffect(e1)
end
function c3280747.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=6 end
Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,2)
end
function c3280747.activate(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -14,7 +14,7 @@ function c37991342.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c37991342.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c37991342.splimit)
c:RegisterEffect(e2)
--atk down
......@@ -64,9 +64,6 @@ function c37991342.initial_effect(c)
e8:SetOperation(c37991342.desop)
c:RegisterEffect(e8)
end
function c37991342.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c37991342.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -14,7 +14,7 @@ function c40318957.initial_effect(c)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetCondition(c40318957.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c40318957.splimit)
c:RegisterEffect(e2)
--search
......@@ -30,9 +30,6 @@ end
function c40318957.filter(c)
return c:IsSetCard(0x9f) or (c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99)
end
function c40318957.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c40318957.splimit(e,c,tp,sumtp,sumpos)
return not c40318957.filter(c) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
......
......@@ -29,7 +29,7 @@ function c40817915.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
and Duel.IsExistingTarget(c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil)
and Duel.IsExistingMatchingCard(c40817915.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
Duel.Hint(HINT_SELECTMSG,tp,532)
local g=Duel.SelectTarget(tp,c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end
......
......@@ -14,7 +14,7 @@ function c51194046.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c51194046.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c51194046.splimit)
c:RegisterEffect(e2)
--draw
......@@ -57,9 +57,6 @@ function c51194046.initial_effect(c)
Duel.RegisterEffect(ge4,0)
end
end
function c51194046.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c51194046.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -14,7 +14,7 @@ function c55106249.initial_effect(c)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetCondition(c55106249.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c55106249.splimit)
c:RegisterEffect(e2)
--pos
......@@ -49,9 +49,6 @@ function c55106249.initial_effect(c)
e6:SetOperation(c55106249.thop)
c:RegisterEffect(e6)
end
function c55106249.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c55106249.splimit(e,c,tp,sumtp,sumpos)
return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
......
......@@ -16,7 +16,7 @@ function c57777714.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c57777714.splimit)
e2:SetCondition(c57777714.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
......@@ -36,9 +36,6 @@ function c57777714.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c57777714.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c57777714.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -15,7 +15,7 @@ function c58016954.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c58016954.splimit)
e2:SetCondition(c58016954.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
......@@ -37,9 +37,6 @@ function c58016954.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c58016954.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c58016954.condition1(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -15,7 +15,7 @@ function c58990362.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c58990362.splimit)
e2:SetCondition(c58990362.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--search
local e3=Effect.CreateEffect(c)
......@@ -37,9 +37,6 @@ function c58990362.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c58990362.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c58990362.condition1(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -19,5 +19,12 @@ function c59644958.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 c59644958.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.RemoveOverlayCard(tp,1,1,1,1,REASON_EFFECT)
local sg=Duel.GetMatchingGroup(Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp,1,REASON_EFFECT)
if sg:GetCount()==0 then return end
if sg:GetCount()>1 then
Duel.Hint(HINT_SELECTMSG,tp,532)
sg=sg:Select(tp,1,1,nil)
Duel.HintSelection(sg)
end
sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT)
end
......@@ -23,7 +23,9 @@ function c63323539.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=eg:FilterSelect(tp,c63323539.filter,1,1,nil,e,tp)
local tc=g:GetFirst()
local atk=tc:GetAttack()
if atk<0 or tc:IsFacedown() then atk=0 end
if tc and Duel.Destroy(tc,REASON_EFFECT)~=0 then
Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT)
Duel.Damage(1-tp,atk,REASON_EFFECT)
end
end
......@@ -14,7 +14,7 @@ function c64496451.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c64496451.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c64496451.splimit)
c:RegisterEffect(e2)
--atk up
......@@ -72,9 +72,6 @@ function c64496451.initial_effect(c)
e9:SetLabelObject(e8)
c:RegisterEffect(e9)
end
function c64496451.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c64496451.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -14,7 +14,7 @@ function c65518099.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c65518099.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c65518099.splimit)
c:RegisterEffect(e2)
--tohand
......@@ -29,9 +29,6 @@ function c65518099.initial_effect(c)
e3:SetOperation(c65518099.operation)
c:RegisterEffect(e3)
end
function c65518099.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c65518099.splimit(e,c,tp,sumtp,sumpos)
return not c:IsSetCard(0xaa)
end
......
......@@ -15,7 +15,7 @@ function c69176131.activate(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp,1,REASON_EFFECT)
if sg:GetCount()==0 then return end
if sg:GetCount()>1 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(69176131,0))
Duel.Hint(HINT_SELECTMSG,tp,532)
sg=sg:Select(tp,1,1,nil)
Duel.HintSelection(sg)
end
......
......@@ -15,7 +15,7 @@ function c74605254.initial_effect(c)
e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetCondition(c74605254.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c74605254.splimit)
c:RegisterEffect(e2)
--scale change
......@@ -43,9 +43,6 @@ function c74605254.initial_effect(c)
e4:SetOperation(c74605254.thop)
c:RegisterEffect(e4)
end
function c74605254.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c74605254.splimit(e,c,sump,sumtype,sumpos,targetp)
return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
......
......@@ -16,7 +16,7 @@ function c84388461.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c84388461.splimit)
e2:SetCondition(c84388461.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
......@@ -34,9 +34,6 @@ function c84388461.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c84388461.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c84388461.filter(c,e,tp,m)
if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81
or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end
......
......@@ -14,7 +14,7 @@ function c87588741.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c87588741.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c87588741.splimit)
c:RegisterEffect(e2)
--atk down
......@@ -72,9 +72,6 @@ function c87588741.initial_effect(c)
e9:SetLabelObject(e8)
c:RegisterEffect(e9)
end
function c87588741.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c87588741.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -14,7 +14,7 @@ function c90885155.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c90885155.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c90885155.splimit)
c:RegisterEffect(e2)
--atk down
......@@ -70,9 +70,6 @@ function c90885155.initial_effect(c)
e9:SetLabelObject(e8)
c:RegisterEffect(e9)
end
function c90885155.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c90885155.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -14,7 +14,7 @@ function c91907707.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetCondition(c91907707.splimcon)
e2:SetCondition(aux.nfbdncon)
e2:SetTarget(c91907707.splimit)
c:RegisterEffect(e2)
--atk up
......@@ -65,9 +65,6 @@ function c91907707.initial_effect(c)
e8:SetOperation(c91907707.thop)
c:RegisterEffect(e8)
end
function c91907707.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c91907707.splimit(e,c)
return not c:IsSetCard(0xaa)
end
......
......@@ -15,7 +15,7 @@ function c95401059.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetTargetRange(1,0)
e2:SetTarget(c95401059.splimit)
e2:SetCondition(c95401059.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--spsummon
local e3=Effect.CreateEffect(c)
......@@ -37,9 +37,6 @@ function c95401059.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c95401059.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c95401059.condition1(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -15,7 +15,7 @@ function c96223501.initial_effect(c)
e2:SetRange(LOCATION_PZONE)
e2:SetTargetRange(1,0)
e2:SetTarget(c96223501.splimit)
e2:SetCondition(c96223501.splimcon)
e2:SetCondition(aux.nfbdncon)
c:RegisterEffect(e2)
--destroy
local e3=Effect.CreateEffect(c)
......@@ -39,9 +39,6 @@ function c96223501.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsSetCard(0x9c) or c:IsSetCard(0xc4) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
function c96223501.splimcon(e)
return not e:GetHandler():IsForbidden()
end
function c96223501.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM
end
......
......@@ -1180,6 +1180,10 @@ function Auxiliary.bdogcon(e,tp,eg,ep,ev,re,r,rp)
local bc=c:GetBattleTarget()
return c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER)
end
--condition of "cannot be negated"
function Auxiliary.nfbdncon(e)
return not e:GetHandler():IsForbidden()
end
--flag effect for spell counter
function Auxiliary.chainreg(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetFlagEffect(1)==0 then
......
......@@ -94,6 +94,7 @@
!system 529 请选择自己的卡
!system 530 请选择对方的卡
!system 531 请选择上级召唤用需要解放的怪兽:
!system 532 请选择要取除超量素材的怪兽
!system 550 请选择要发动的效果
!system 551 请选择效果的对象
!system 552 请选择硬币的正反面
......
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