Commit 43c06752 authored by salix5's avatar salix5

Merge branch 'master' into patch

parents c8eaafd6 4f764d10
...@@ -1238,16 +1238,18 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1238,16 +1238,18 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
filter = (mainGame->dField.selectable_field >> 30) & 0x3; filter = (mainGame->dField.selectable_field >> 30) & 0x3;
pzone = 1; pzone = 1;
} }
if(mainGame->chkRandomPos->isChecked()) { if(!pzone) {
respbuf[2] = rnd.real() * 5; if(mainGame->chkRandomPos->isChecked()) {
while(!(filter & (1 << respbuf[2])))
respbuf[2] = rnd.real() * 5; respbuf[2] = rnd.real() * 5;
} else if(!pzone) { while(!(filter & (1 << respbuf[2])))
if (filter & 0x4) respbuf[2] = 2; respbuf[2] = rnd.real() * 5;
else if (filter & 0x2) respbuf[2] = 1; } else {
else if (filter & 0x8) respbuf[2] = 3; if (filter & 0x4) respbuf[2] = 2;
else if (filter & 0x1) respbuf[2] = 0; else if (filter & 0x2) respbuf[2] = 1;
else if (filter & 0x10) respbuf[2] = 4; else if (filter & 0x8) respbuf[2] = 3;
else if (filter & 0x1) respbuf[2] = 0;
else if (filter & 0x10) respbuf[2] = 4;
}
} else { } else {
if (filter & 0x1) respbuf[2] = 6; if (filter & 0x1) respbuf[2] = 6;
else if (filter & 0x2) respbuf[2] = 7; else if (filter & 0x2) respbuf[2] = 7;
......
...@@ -153,6 +153,11 @@ int ReplayMode::ReplayThread(void* param) { ...@@ -153,6 +153,11 @@ int ReplayMode::ReplayThread(void* param) {
is_continuing = ReplayAnalyze(engineBuffer, len); is_continuing = ReplayAnalyze(engineBuffer, len);
} }
} }
if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.isReplaySkiping = false;
mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock();
}
end_duel(pduel); end_duel(pduel);
if(!is_closing) { if(!is_closing) {
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
...@@ -196,6 +201,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -196,6 +201,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
switch (mainGame->dInfo.curMsg) { switch (mainGame->dInfo.curMsg) {
case MSG_RETRY: { case MSG_RETRY: {
if(mainGame->dInfo.isReplaySkiping) { if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.isReplaySkiping = false;
mainGame->dField.RefreshAllCards(); mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
} }
...@@ -214,6 +220,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -214,6 +220,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
} }
case MSG_WIN: { case MSG_WIN: {
if(mainGame->dInfo.isReplaySkiping) { if(mainGame->dInfo.isReplaySkiping) {
mainGame->dInfo.isReplaySkiping = false;
mainGame->dField.RefreshAllCards(); mainGame->dField.RefreshAllCards();
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
} }
......
...@@ -144,8 +144,8 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence ...@@ -144,8 +144,8 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24); pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEDOWN_DEFENCE << 24);
} }
if ((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE) if ((pcard->data.type & TYPE_PENDULUM) && (location == LOCATION_GRAVE)
&& (((pcard->previous.location & LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED)) && (((pcard->previous.location == LOCATION_MZONE) && !pcard->is_status(STATUS_SUMMON_DISABLED))
|| ((pcard->previous.location & LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) { || ((pcard->previous.location == LOCATION_SZONE) && !pcard->is_status(STATUS_ACTIVATE_DISABLED)))) {
location = LOCATION_EXTRA; location = LOCATION_EXTRA;
pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24); pcard->operation_param = (pcard->operation_param & 0x00ffffff) | (POS_FACEUP_DEFENCE << 24);
} }
......
...@@ -341,6 +341,7 @@ static const struct luaL_Reg duellib[] = { ...@@ -341,6 +341,7 @@ static const struct luaL_Reg duellib[] = {
{ "RaiseSingleEvent", scriptlib::duel_raise_single_event }, { "RaiseSingleEvent", scriptlib::duel_raise_single_event },
{ "CheckTiming", scriptlib::duel_check_timing }, { "CheckTiming", scriptlib::duel_check_timing },
{ "GetEnvironment", scriptlib::duel_get_environment }, { "GetEnvironment", scriptlib::duel_get_environment },
{ "IsEnvironment", scriptlib::duel_is_environment },
{ "Win", scriptlib::duel_win }, { "Win", scriptlib::duel_win },
{ "Draw", scriptlib::duel_draw }, { "Draw", scriptlib::duel_draw },
{ "Damage", scriptlib::duel_damage }, { "Damage", scriptlib::duel_damage },
......
...@@ -811,6 +811,40 @@ int32 scriptlib::duel_get_environment(lua_State *L) { ...@@ -811,6 +811,40 @@ int32 scriptlib::duel_get_environment(lua_State *L) {
lua_pushinteger(L, p); lua_pushinteger(L, p);
return 2; return 2;
} }
int32 scriptlib::duel_is_environment(lua_State *L) {
check_param_count(L, 1);
uint32 code = lua_tointeger(L, 1);
uint32 playerid = PLAYER_ALL;
if(lua_gettop(L) >= 2)
playerid = lua_tointeger(L, 2);
if(playerid != 0 && playerid != 1 && playerid != PLAYER_ALL)
return 0;
duel* pduel = interpreter::get_duel_info(L);
int32 ret = 0, fc = 0;
card* pcard = pduel->game_field->player[0].list_szone[5];
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) {
fc = 1;
if(code == pcard->get_code() && (playerid == 0 || playerid == PLAYER_ALL))
ret = 1;
}
pcard = pduel->game_field->player[1].list_szone[5];
if(pcard && pcard->is_position(POS_FACEUP) && pcard->get_status(STATUS_EFFECT_ENABLED)) {
fc = 1;
if(code == pcard->get_code() && (playerid == 1 || playerid == PLAYER_ALL))
ret = 1;
}
if(!fc) {
effect_set eset;
pduel->game_field->filter_field_effect(EFFECT_CHANGE_ENVIRONMENT, &eset);
if(eset.count) {
effect* peffect = eset.get_last();
if(code == peffect->get_value() && (playerid == peffect->get_handler_player() || playerid == PLAYER_ALL))
ret = 1;
}
}
lua_pushboolean(L, ret);
return 1;
}
int32 scriptlib::duel_win(lua_State *L) { int32 scriptlib::duel_win(lua_State *L) {
check_param_count(L, 2); check_param_count(L, 2);
uint32 playerid = lua_tointeger(L, 1); uint32 playerid = lua_tointeger(L, 1);
......
...@@ -337,6 +337,7 @@ public: ...@@ -337,6 +337,7 @@ public:
static int32 duel_raise_single_event(lua_State *L); static int32 duel_raise_single_event(lua_State *L);
static int32 duel_check_timing(lua_State *L); static int32 duel_check_timing(lua_State *L);
static int32 duel_get_environment(lua_State *L); static int32 duel_get_environment(lua_State *L);
static int32 duel_is_environment(lua_State *L);
static int32 duel_win(lua_State *L); static int32 duel_win(lua_State *L);
static int32 duel_draw(lua_State *L); static int32 duel_draw(lua_State *L);
......
...@@ -10,7 +10,7 @@ function c11136371.initial_effect(c) ...@@ -10,7 +10,7 @@ function c11136371.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c11136371.plfilter(c) function c11136371.plfilter(c)
return c:GetSequence()~=5 and c:IsAbleToGraveAsCost() return c:GetSequence()<5 and c:IsAbleToGraveAsCost()
end end
function c11136371.plcost(e,tp,eg,ep,ev,re,r,rp,chk) function c11136371.plcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c11136371.plfilter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(c11136371.plfilter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end
......
...@@ -39,6 +39,5 @@ function c12171659.operation(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -39,6 +39,5 @@ function c12171659.operation(e,tp,eg,ep,ev,re,r,rp,chk)
end end
end end
function c12171659.descon(e) function c12171659.descon(e)
local ev,ep=Duel.GetEnvironment() return not Duel.IsEnvironment(56433456)
return Duel.GetEnvironment()~=56433456
end end
...@@ -59,7 +59,7 @@ function c12510878.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -59,7 +59,7 @@ function c12510878.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(p,d,REASON_EFFECT) Duel.Draw(p,d,REASON_EFFECT)
end end
function c12510878.val(e,c) function c12510878.val(e,c)
if Duel.GetEnvironment()~=56433456 then return 0 end if not Duel.IsEnvironment(56433456) then return 0 end
local v=Duel.GetLP(c:GetControler())-Duel.GetLP(1-c:GetControler()) local v=Duel.GetLP(c:GetControler())-Duel.GetLP(1-c:GetControler())
if v>0 then return v else return 0 end if v>0 then return v else return 0 end
end end
...@@ -13,7 +13,7 @@ function c16241441.initial_effect(c) ...@@ -13,7 +13,7 @@ function c16241441.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c16241441.spcon(e,tp,eg,ep,ev,re,r,rp) function c16241441.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c16241441.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c16241441.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c16241441.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c16241441.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c16241441.spop(e,tp,eg,ep,ev,re,r,rp) function c16241441.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c16241441.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c16241441.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -13,7 +13,7 @@ function c17363041.initial_effect(c) ...@@ -13,7 +13,7 @@ function c17363041.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c17363041.spcon(e,tp,eg,ep,ev,re,r,rp) function c17363041.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c17363041.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c17363041.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c17363041.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c17363041.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c17363041.spop(e,tp,eg,ep,ev,re,r,rp) function c17363041.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c17363041.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c17363041.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -29,7 +29,7 @@ function c18605135.filter(c) ...@@ -29,7 +29,7 @@ function c18605135.filter(c)
end end
function c18605135.check() function c18605135.check()
return Duel.IsExistingMatchingCard(c18605135.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c18605135.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
function c18605135.actcon(e,tp,eg,ep,ev,re,r,rp) function c18605135.actcon(e,tp,eg,ep,ev,re,r,rp)
return c18605135.check() return c18605135.check()
......
...@@ -43,7 +43,7 @@ function c20630765.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -43,7 +43,7 @@ function c20630765.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RemoveCounter(tp,1,0,0x16,1,REASON_COST) Duel.RemoveCounter(tp,1,0,0x16,1,REASON_COST)
end end
function c20630765.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c20630765.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end
if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil) local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil)
......
...@@ -41,10 +41,10 @@ function c21698716.repoperation(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -41,10 +41,10 @@ function c21698716.repoperation(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RaiseEvent(c,47408488,e,0,tp,0,0) Duel.RaiseEvent(c,47408488,e,0,tp,0,0)
end end
function c21698716.filter(c) function c21698716.filter(c)
return c:IsSetCard(0x34) and c:IsAbleToDeck() and c:IsFaceup() return c:IsSetCard(0x34) and c:IsAbleToDeck() and c:IsFaceup()
end end
function c21698716.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c21698716.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and c21698716.filter(chkc) end if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c21698716.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c21698716.filter,tp,LOCATION_ONFIELD,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c21698716.filter,tp,LOCATION_ONFIELD,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectTarget(tp,c21698716.filter,tp,LOCATION_ONFIELD,0,1,1,nil) local g=Duel.SelectTarget(tp,c21698716.filter,tp,LOCATION_ONFIELD,0,1,1,nil)
......
...@@ -34,7 +34,7 @@ function c23693634.filter(c,e,tp) ...@@ -34,7 +34,7 @@ function c23693634.filter(c,e,tp)
return c:IsRace(RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsRace(RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function c23693634.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c23693634.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c23693634.filter(chkc,e,tp) end if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c23693634.filter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c23693634.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end and Duel.IsExistingTarget(c23693634.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
......
...@@ -11,7 +11,7 @@ function c23927567.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function c23927567.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_FIELD) local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_FIELD)
local tc=g:GetFirst() local tc=g:GetFirst()
if tc then if tc then
if Duel.GetEnvironment()==47355498 and tc:IsAbleToHand() and Duel.SelectYesNo(tp,aux.Stringid(23927567,0)) then if Duel.IsEnvironment(47355498) and tc:IsAbleToHand() and Duel.SelectYesNo(tp,aux.Stringid(23927567,0)) then
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc) Duel.ConfirmCards(1-tp,tc)
else else
......
...@@ -48,7 +48,7 @@ function c2407234.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -48,7 +48,7 @@ function c2407234.cost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RegisterFlagEffect(tp,2407234,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(tp,2407234,RESET_PHASE+PHASE_END,0,1)
end end
function c2407234.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c2407234.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and c2407234.filter(chkc) end if chkc then return chkc:IsLocation(LOCATION_MZONE) and c2407234.filter(chkc) and chkc~=e:GetHandler() end
if chk==0 then return Duel.IsExistingTarget(c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingTarget(c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) Duel.SelectTarget(tp,c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler())
......
...@@ -15,7 +15,7 @@ function c24128274.filter(c) ...@@ -15,7 +15,7 @@ function c24128274.filter(c)
end end
function c24128274.econ(e) function c24128274.econ(e)
return Duel.IsExistingMatchingCard(c24128274.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c24128274.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
function c24128274.efilter(e,te) function c24128274.efilter(e,te)
return te:IsActiveType(TYPE_SPELL) return te:IsActiveType(TYPE_SPELL)
......
...@@ -11,7 +11,7 @@ function c24140059.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function c24140059.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_TRAP) local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_TRAP)
local tc=g:GetFirst() local tc=g:GetFirst()
if tc then if tc then
if Duel.GetEnvironment()==47355498 and tc:IsAbleToHand() and Duel.SelectYesNo(tp,aux.Stringid(24140059,0)) then if Duel.IsEnvironment(47355498) and tc:IsAbleToHand() and Duel.SelectYesNo(tp,aux.Stringid(24140059,0)) then
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc) Duel.ConfirmCards(1-tp,tc)
else else
......
...@@ -12,5 +12,5 @@ function c24435369.filter(c) ...@@ -12,5 +12,5 @@ function c24435369.filter(c)
end end
function c24435369.dircon(e) function c24435369.dircon(e)
return Duel.IsExistingMatchingCard(c24435369.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c24435369.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
...@@ -25,14 +25,14 @@ function c24731453.splimit(e,c) ...@@ -25,14 +25,14 @@ function c24731453.splimit(e,c)
return not c:IsRace(RACE_MACHINE) return not c:IsRace(RACE_MACHINE)
end end
function c24731453.cfilter(c) function c24731453.cfilter(c)
return c:GetSequence()~=5 return c:GetSequence()<5
end end
function c24731453.spcon(e,tp,eg,ep,ev,re,r,rp) function c24731453.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil
and Duel.IsExistingMatchingCard(c24731453.cfilter,tp,LOCATION_SZONE,0,1,nil) and Duel.IsExistingMatchingCard(c24731453.cfilter,tp,LOCATION_SZONE,0,1,nil)
end end
function c24731453.filter(c) function c24731453.filter(c)
return c:GetSequence()~=5 and c:IsDestructable() return c:GetSequence()<5 and c:IsDestructable()
end end
function c24731453.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c24731453.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
......
...@@ -16,7 +16,7 @@ function c25173686.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -16,7 +16,7 @@ function c25173686.condition(e,tp,eg,ep,ev,re,r,rp)
return ct==6 or (ct==5 and Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)==nil) return ct==6 or (ct==5 and Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)==nil)
end end
function c25173686.filter(c) function c25173686.filter(c)
return c:GetSequence()~=5 and c:IsDestructable() return c:GetSequence()<5 and c:IsDestructable()
end end
function c25173686.target(e,tp,eg,ep,ev,re,r,rp,chk) function c25173686.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c25173686.filter,tp,0,LOCATION_SZONE,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(c25173686.filter,tp,0,LOCATION_SZONE,1,nil) end
......
...@@ -13,7 +13,7 @@ function c25262697.initial_effect(c) ...@@ -13,7 +13,7 @@ function c25262697.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c25262697.poscon(e,tp,eg,ep,ev,re,r,rp) function c25262697.poscon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==47355498 return Duel.IsEnvironment(47355498)
end end
function c25262697.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c25262697.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
......
...@@ -16,7 +16,7 @@ function c25847467.descon(e,tp,eg,ep,ev,re,r,rp) ...@@ -16,7 +16,7 @@ function c25847467.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetPreviousLocation()==LOCATION_HAND and bit.band(r,0x4040)==0x4040 return e:GetHandler():GetPreviousLocation()==LOCATION_HAND and bit.band(r,0x4040)==0x4040
end end
function c25847467.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c25847467.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsDestructable() end if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end
if chk==0 then return true end if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
......
...@@ -47,7 +47,7 @@ function c26533075.desfilter(c) ...@@ -47,7 +47,7 @@ function c26533075.desfilter(c)
return c:IsDestructable() return c:IsDestructable()
end end
function c26533075.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c26533075.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and c26533075.desfilter(chkc) end if chkc then return chkc:IsLocation(LOCATION_MZONE) and c26533075.desfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c26533075.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(c26533075.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c26533075.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) local g=Duel.SelectTarget(tp,c26533075.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
......
...@@ -57,7 +57,7 @@ function c28573958.atop(e,tp,eg,ep,ev,re,r,rp) ...@@ -57,7 +57,7 @@ function c28573958.atop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c28573958.spcon(e,tp,eg,ep,ev,re,r,rp) function c28573958.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==56433456 return Duel.IsEnvironment(56433456)
end end
function c28573958.cfilter2(c) function c28573958.cfilter2(c)
return c:IsRace(RACE_FAIRY) and c:IsDiscardable() return c:IsRace(RACE_FAIRY) and c:IsDiscardable()
...@@ -78,7 +78,7 @@ function c28573958.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -78,7 +78,7 @@ function c28573958.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end end
function c28573958.spop(e,tp,eg,ep,ev,re,r,rp) function c28573958.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetEnvironment()~=56433456 then return end if not Duel.IsEnvironment(56433456) then return end
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then if tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
......
...@@ -13,7 +13,7 @@ function c29246354.initial_effect(c) ...@@ -13,7 +13,7 @@ function c29246354.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c29246354.spcon(e,tp,eg,ep,ev,re,r,rp) function c29246354.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c29246354.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c29246354.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c29246354.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c29246354.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c29246354.spop(e,tp,eg,ep,ev,re,r,rp) function c29246354.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c29246354.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c29246354.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -38,7 +38,7 @@ function c31053337.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -38,7 +38,7 @@ function c31053337.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_MAIN1 return Duel.GetCurrentPhase()==PHASE_MAIN1
end end
function c31053337.filter(c) function c31053337.filter(c)
return c:IsAbleToHand() and c:GetSequence()~=5 return c:IsAbleToHand() and c:GetSequence()<5
end end
function c31053337.target(e,tp,eg,ep,ev,re,r,rp,chk) function c31053337.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():GetAttack()>=1000 and Duel.IsExistingMatchingCard(c31053337.filter,tp,0,LOCATION_SZONE,1,nil) end if chk==0 then return e:GetHandler():GetAttack()>=1000 and Duel.IsExistingMatchingCard(c31053337.filter,tp,0,LOCATION_SZONE,1,nil) end
......
...@@ -16,7 +16,7 @@ function c31456110.filter(c) ...@@ -16,7 +16,7 @@ function c31456110.filter(c)
return c:IsFaceup() and c:IsAttribute(0x5f) and c:IsLevelAbove(5) and c:IsDestructable() return c:IsFaceup() and c:IsAttribute(0x5f) and c:IsLevelAbove(5) and c:IsDestructable()
end end
function c31456110.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c31456110.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and c31456110.filter(chkc) end if chkc then return chkc:IsLocation(LOCATION_MZONE) and c31456110.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c31456110.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(c31456110.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,c31456110.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) local g=Duel.SelectTarget(tp,c31456110.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
......
...@@ -19,11 +19,8 @@ function c32907538.initial_effect(c) ...@@ -19,11 +19,8 @@ function c32907538.initial_effect(c)
e2:SetOperation(c32907538.mtop) e2:SetOperation(c32907538.mtop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c32907538.filter(c)
return c:IsFaceup() and c:IsType(TYPE_EFFECT)
end
function c32907538.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c32907538.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c32907538.filter(chkc) end if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end
if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil)
......
...@@ -23,7 +23,7 @@ function c3643300.filter(c) ...@@ -23,7 +23,7 @@ function c3643300.filter(c)
end end
function c3643300.econ(e) function c3643300.econ(e)
return Duel.IsExistingMatchingCard(c3643300.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c3643300.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
function c3643300.efilter(e,te) function c3643300.efilter(e,te)
return te:IsActiveType(TYPE_SPELL) return te:IsActiveType(TYPE_SPELL)
......
...@@ -16,7 +16,7 @@ function c40384720.initial_effect(c) ...@@ -16,7 +16,7 @@ function c40384720.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c40384720.dfilter(c) function c40384720.dfilter(c)
return c:GetSequence()~=5 return c:GetSequence()<5
end end
function c40384720.dircon(e) function c40384720.dircon(e)
return not Duel.IsExistingMatchingCard(c40384720.dfilter,e:GetHandlerPlayer(),0,LOCATION_SZONE,1,nil) return not Duel.IsExistingMatchingCard(c40384720.dfilter,e:GetHandlerPlayer(),0,LOCATION_SZONE,1,nil)
......
...@@ -13,7 +13,7 @@ function c41224658.initial_effect(c) ...@@ -13,7 +13,7 @@ function c41224658.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c41224658.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c41224658.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end
if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,2,nil) local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,2,nil)
......
...@@ -13,7 +13,7 @@ function c42239546.initial_effect(c) ...@@ -13,7 +13,7 @@ function c42239546.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c42239546.spcon(e,tp,eg,ep,ev,re,r,rp) function c42239546.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c42239546.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c42239546.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c42239546.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c42239546.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c42239546.spop(e,tp,eg,ep,ev,re,r,rp) function c42239546.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c42239546.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c42239546.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -13,7 +13,7 @@ function c42682609.initial_effect(c) ...@@ -13,7 +13,7 @@ function c42682609.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c42682609.spcon(e,tp,eg,ep,ev,re,r,rp) function c42682609.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c42682609.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c42682609.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c42682609.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c42682609.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c42682609.spop(e,tp,eg,ep,ev,re,r,rp) function c42682609.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c42682609.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c42682609.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -13,7 +13,7 @@ function c43751755.initial_effect(c) ...@@ -13,7 +13,7 @@ function c43751755.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c43751755.spcon(e,tp,eg,ep,ev,re,r,rp) function c43751755.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==42015635 return Duel.IsEnvironment(42015635)
end end
function c43751755.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c43751755.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
...@@ -29,7 +29,7 @@ function c43751755.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c43751755.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c43751755.spop(e,tp,eg,ep,ev,re,r,rp) function c43751755.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if Duel.GetEnvironment()~=42015635 then return end if not Duel.IsEnvironment(42015635) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c43751755.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c43751755.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -13,7 +13,7 @@ function c44595286.initial_effect(c) ...@@ -13,7 +13,7 @@ function c44595286.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c44595286.condition(e,tp,eg,ep,ev,re,r,rp) function c44595286.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetEnvironment()==56433456 return Duel.IsEnvironment(56433456)
end end
function c44595286.cfilter(c) function c44595286.cfilter(c)
return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsDiscardable() and c:IsAbleToGraveAsCost() return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsDiscardable() and c:IsAbleToGraveAsCost()
......
...@@ -14,5 +14,5 @@ function c46955770.filter(c) ...@@ -14,5 +14,5 @@ function c46955770.filter(c)
end end
function c46955770.con(e) function c46955770.con(e)
return Duel.IsExistingMatchingCard(c46955770.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c46955770.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==47355498 or Duel.IsEnvironment(47355498)
end end
...@@ -39,6 +39,5 @@ function c48675364.operation(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -39,6 +39,5 @@ function c48675364.operation(e,tp,eg,ep,ev,re,r,rp,chk)
end end
end end
function c48675364.descon(e) function c48675364.descon(e)
local ev,ep=Duel.GetEnvironment() return not Duel.IsEnvironment(94585852)
return Duel.GetEnvironment()~=94585852
end end
...@@ -25,7 +25,7 @@ end ...@@ -25,7 +25,7 @@ end
function c48783998.target(e,tp,eg,ep,ev,re,r,rp,chk) function c48783998.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end
if Duel.GetEnvironment()~=56433456 then if not Duel.IsEnvironment(56433456) then
return Duel.IsExistingMatchingCard(c48783998.filter1,tp,LOCATION_DECK,0,1,nil,e,tp) return Duel.IsExistingMatchingCard(c48783998.filter1,tp,LOCATION_DECK,0,1,nil,e,tp)
else else
return Duel.IsExistingMatchingCard(c48783998.filter2,tp,LOCATION_DECK,0,1,nil,e,tp) return Duel.IsExistingMatchingCard(c48783998.filter2,tp,LOCATION_DECK,0,1,nil,e,tp)
...@@ -37,7 +37,7 @@ function c48783998.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -37,7 +37,7 @@ function c48783998.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
local g=nil local g=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
if Duel.GetEnvironment()~=56433456 then if not Duel.IsEnvironment(56433456) then
g=Duel.SelectMatchingCard(tp,c48783998.filter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) g=Duel.SelectMatchingCard(tp,c48783998.filter1,tp,LOCATION_DECK,0,1,1,nil,e,tp)
else else
g=Duel.SelectMatchingCard(tp,c48783998.filter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) g=Duel.SelectMatchingCard(tp,c48783998.filter2,tp,LOCATION_DECK,0,1,1,nil,e,tp)
......
...@@ -12,7 +12,7 @@ function c49905576.drop(e,tp,eg,ep,ev,re,r,rp) ...@@ -12,7 +12,7 @@ function c49905576.drop(e,tp,eg,ep,ev,re,r,rp)
if not re:GetHandler():IsType(TYPE_COUNTER) then return end if not re:GetHandler():IsType(TYPE_COUNTER) then return end
Duel.BreakEffect() Duel.BreakEffect()
Duel.Recover(tp,1000,REASON_EFFECT) Duel.Recover(tp,1000,REASON_EFFECT)
if Duel.GetEnvironment()~=56433456 then return end if not Duel.IsEnvironment(56433456) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil)
Duel.Destroy(g,REASON_EFFECT) Duel.Destroy(g,REASON_EFFECT)
......
...@@ -13,7 +13,7 @@ function c51047350.initial_effect(c) ...@@ -13,7 +13,7 @@ function c51047350.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c51047350.filter(c) function c51047350.filter(c)
return c:GetSequence()~=5 and c:IsAbleToGraveAsCost() return c:GetSequence()<5 and c:IsAbleToGraveAsCost()
end end
function c51047350.spcon(e,c) function c51047350.spcon(e,c)
if c==nil then return true end if c==nil then return true end
......
...@@ -31,7 +31,7 @@ function c52248570.mtop(e,tp,eg,ep,ev,re,r,rp) ...@@ -31,7 +31,7 @@ function c52248570.mtop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c52248570.atkcon(e,tp,eg,ep,ev,re,r,rp) function c52248570.atkcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and Duel.GetEnvironment()==94585852 return Duel.GetTurnPlayer()==tp and Duel.IsEnvironment(94585852)
end end
function c52248570.filter(c) function c52248570.filter(c)
return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_FIEND) return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_FIEND)
...@@ -43,7 +43,7 @@ function c52248570.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -43,7 +43,7 @@ function c52248570.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SelectTarget(tp,c52248570.filter,tp,LOCATION_MZONE,0,1,1,nil) Duel.SelectTarget(tp,c52248570.filter,tp,LOCATION_MZONE,0,1,1,nil)
end end
function c52248570.atkop(e,tp,eg,ep,ev,re,r,rp) function c52248570.atkop(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) or Duel.GetEnvironment()~=94585852 then return end if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsEnvironment(94585852) then return end
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
......
...@@ -19,7 +19,7 @@ function c53025096.damcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,7 +19,7 @@ function c53025096.damcon(e,tp,eg,ep,ev,re,r,rp)
end end
function c53025096.damtg(e,tp,eg,ep,ev,re,r,rp,chk) function c53025096.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
local dam=e:GetHandler():GetBattleTarget():GetAttack() local dam=e:GetHandler():GetBattleTarget():GetAttack()/2
if dam<0 then dam=0 end if dam<0 then dam=0 end
Duel.SetTargetPlayer(1-tp) Duel.SetTargetPlayer(1-tp)
Duel.SetTargetParam(dam) Duel.SetTargetParam(dam)
......
...@@ -45,7 +45,7 @@ function c55794644.hspop(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -45,7 +45,7 @@ function c55794644.hspop(e,tp,eg,ep,ev,re,r,rp,c)
end end
end end
function c55794644.condition(e,tp,eg,ep,ev,re,r,rp) function c55794644.condition(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetEnvironment()==56433456 then return e:GetHandler():GetFlagEffect(55794644)<2 if Duel.IsEnvironment(56433456) then return e:GetHandler():GetFlagEffect(55794644)<2
else return e:GetHandler():GetFlagEffect(55794644)<1 end else return e:GetHandler():GetFlagEffect(55794644)<1 end
end end
function c55794644.costfilter(c) function c55794644.costfilter(c)
......
...@@ -53,7 +53,7 @@ function c58139128.actfilter(c) ...@@ -53,7 +53,7 @@ function c58139128.actfilter(c)
end end
function c58139128.econ(e) function c58139128.econ(e)
return Duel.IsExistingMatchingCard(c58139128.actfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c58139128.actfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==47355498 or Duel.IsEnvironment(47355498)
end end
function c58139128.efilter1(e,re,tp) function c58139128.efilter1(e,re,tp)
return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE)
......
...@@ -13,13 +13,13 @@ function c61068510.initial_effect(c) ...@@ -13,13 +13,13 @@ function c61068510.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c61068510.cfilter(c) function c61068510.cfilter(c)
return c:GetSequence()~=5 return c:GetSequence()<5
end end
function c61068510.condition(e,tp,eg,ep,ev,re,r,rp) function c61068510.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c61068510.cfilter,tp,0,LOCATION_SZONE,3,nil) return Duel.IsExistingMatchingCard(c61068510.cfilter,tp,0,LOCATION_SZONE,3,nil)
end end
function c61068510.filter(c) function c61068510.filter(c)
return c:IsDestructable() and c:GetSequence()~=5 return c:IsDestructable() and c:GetSequence()<5
end end
function c61068510.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c61068510.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c61068510.filter(chkc) end if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c61068510.filter(chkc) end
......
...@@ -11,5 +11,5 @@ function c64342551.filter(c) ...@@ -11,5 +11,5 @@ function c64342551.filter(c)
end end
function c64342551.dircon(e) function c64342551.dircon(e)
return Duel.IsExistingMatchingCard(c64342551.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c64342551.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
...@@ -15,7 +15,7 @@ function c68167124.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,7 +15,7 @@ function c68167124.condition(e,tp,eg,ep,ev,re,r,rp)
return ep~=tp return ep~=tp
end end
function c68167124.filter(c) function c68167124.filter(c)
return c:IsFaceup() and c:GetSequence()~=5 return c:IsFaceup() and c:GetSequence()<5
end end
function c68167124.target(e,tp,eg,ep,ev,re,r,rp,chk) function c68167124.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -22,7 +22,7 @@ function c68875140.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -22,7 +22,7 @@ function c68875140.condition(e,tp,eg,ep,ev,re,r,rp)
return ep~=tp and eg:GetFirst():GetControler()==tp return ep~=tp and eg:GetFirst():GetControler()==tp
end end
function c68875140.filter(c) function c68875140.filter(c)
return c:GetSequence()~=5 and c:IsAbleToHand() return c:GetSequence()<5 and c:IsAbleToHand()
end end
function c68875140.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c68875140.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c68875140.filter(chkc) end if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c68875140.filter(chkc) end
......
...@@ -33,7 +33,7 @@ end ...@@ -33,7 +33,7 @@ end
function c70000776.actcon(e,tp,eg,ep,ev,re,r,rp) function c70000776.actcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c70000776.cfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) return Duel.IsExistingMatchingCard(c70000776.cfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil)
and (Duel.IsExistingMatchingCard(c70000776.cfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) and (Duel.IsExistingMatchingCard(c70000776.cfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==47355498) or Duel.IsEnvironment(47355498))
end end
function c70000776.sumlimit(e,c,sump,sumtype,sumpos,targetp) function c70000776.sumlimit(e,c,sump,sumtype,sumpos,targetp)
return not c:IsSetCard(0x2e) return not c:IsSetCard(0x2e)
...@@ -41,5 +41,5 @@ end ...@@ -41,5 +41,5 @@ end
function c70000776.sdcon(e) function c70000776.sdcon(e)
return not Duel.IsExistingMatchingCard(c70000776.cfilter1,0,LOCATION_MZONE,LOCATION_MZONE,1,nil) return not Duel.IsExistingMatchingCard(c70000776.cfilter1,0,LOCATION_MZONE,LOCATION_MZONE,1,nil)
or (not Duel.IsExistingMatchingCard(c70000776.cfilter2,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) or (not Duel.IsExistingMatchingCard(c70000776.cfilter2,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
and Duel.GetEnvironment()~=47355498) and not Duel.IsEnvironment(47355498))
end end
...@@ -6,16 +6,6 @@ function c71645242.initial_effect(c) ...@@ -6,16 +6,6 @@ function c71645242.initial_effect(c)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--token --token
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetCondition(c71645242.regcon)
e2:SetOperation(c71645242.regop)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(71645242,0)) e4:SetDescription(aux.Stringid(71645242,0))
e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN)
...@@ -35,19 +25,32 @@ function c71645242.initial_effect(c) ...@@ -35,19 +25,32 @@ function c71645242.initial_effect(c)
e5:SetTarget(c71645242.sptg2) e5:SetTarget(c71645242.sptg2)
e5:SetOperation(c71645242.spop2) e5:SetOperation(c71645242.spop2)
c:RegisterEffect(e5) c:RegisterEffect(e5)
if not c71645242.global_check then
c71645242.global_check=true
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_SUMMON_SUCCESS)
ge1:SetCondition(c71645242.regcon)
ge1:SetOperation(c71645242.regop)
Duel.RegisterEffect(ge1,0)
local ge2=ge1:Clone()
ge2:SetCode(EVENT_SPSUMMON_SUCCESS)
Duel.RegisterEffect(ge2,0)
end
end
function c71645242.cfilter(c,tp)
return c:IsControler(tp) and c:GetSummonType()~=SUMMON_TYPE_SPECIAL+0x20
end end
function c71645242.regcon(e,tp,eg,ep,ev,re,r,rp) function c71645242.regcon(e,tp,eg,ep,ev,re,r,rp)
if eg:GetFirst():GetSummonType()~=SUMMON_TYPE_SPECIAL+0x20 then local sf=0
local sf=0 if eg:IsExists(c71645242.cfilter,1,nil,0) then
if eg:IsExists(Card.IsControler,1,nil,tp) then sf=sf+1
sf=sf+1 end
end if eg:IsExists(c71645242.cfilter,1,nil,1) then
if eg:IsExists(Card.IsControler,1,nil,1-tp) then sf=sf+2
sf=sf+2 end
end e:SetLabel(sf)
e:SetLabel(sf) return sf~=0
return true
else return false end
end end
function c71645242.regop(e,tp,eg,ep,ev,re,r,rp) function c71645242.regop(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(eg,71645242,e,r,rp,ep,e:GetLabel()) Duel.RaiseEvent(eg,71645242,e,r,rp,ep,e:GetLabel())
...@@ -67,18 +70,18 @@ function c71645242.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -67,18 +70,18 @@ function c71645242.spop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK_FINAL) e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetValue(tc:GetAttack()/2) e1:SetValue(math.ceil(tc:GetAttack()/2))
e1:SetReset(RESET_EVENT+0x1fe0000) e1:SetReset(RESET_EVENT+0x1fe0000)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
end end
tc=g:GetNext() tc=g:GetNext()
end end
if bit.band(ev,0x1)~=0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 if bit.band(bit.rshift(ev,tp),1)~=0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0
and Duel.IsPlayerCanSpecialSummonMonster(tp,71645243,0,0x4011,800,800,2,RACE_PLANT,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) then and Duel.IsPlayerCanSpecialSummonMonster(tp,71645243,0,0x4011,800,800,2,RACE_PLANT,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) then
local token=Duel.CreateToken(tp,71645243) local token=Duel.CreateToken(tp,71645243)
Duel.SpecialSummonStep(token,0x20,tp,1-tp,false,false,POS_FACEUP_ATTACK) Duel.SpecialSummonStep(token,0x20,tp,1-tp,false,false,POS_FACEUP_ATTACK)
end end
if bit.band(ev,0x2)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if bit.band(bit.rshift(ev,1-tp),1)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsPlayerCanSpecialSummonMonster(tp,71645243,0,0x4011,800,800,2,RACE_PLANT,ATTRIBUTE_DARK) then and Duel.IsPlayerCanSpecialSummonMonster(tp,71645243,0,0x4011,800,800,2,RACE_PLANT,ATTRIBUTE_DARK) then
local token=Duel.CreateToken(1-tp,71645243) local token=Duel.CreateToken(1-tp,71645243)
Duel.SpecialSummonStep(token,0x20,tp,tp,false,false,POS_FACEUP_ATTACK) Duel.SpecialSummonStep(token,0x20,tp,tp,false,false,POS_FACEUP_ATTACK)
......
...@@ -11,8 +11,7 @@ function c72405967.initial_effect(c) ...@@ -11,8 +11,7 @@ function c72405967.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c72405967.condition(e,tp,eg,ep,ev,re,r,rp) function c72405967.condition(e,tp,eg,ep,ev,re,r,rp)
local env,ent=Duel.GetEnvironment() return Duel.IsEnvironment(47355498,tp)
return env==47355498 and ent==tp
end end
function c72405967.target(e,tp,eg,ep,ev,re,r,rp,chk) function c72405967.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end
......
...@@ -14,7 +14,7 @@ function c72992744.atkcon(e) ...@@ -14,7 +14,7 @@ function c72992744.atkcon(e)
return not Duel.IsExistingMatchingCard(nil,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) return not Duel.IsExistingMatchingCard(nil,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler())
end end
function c72992744.filter(c) function c72992744.filter(c)
return c:GetSequence()~=5 return c:GetSequence()<5
end end
function c72992744.atkval(e,c) function c72992744.atkval(e,c)
return Duel.GetMatchingGroupCount(c72992744.filter,0,LOCATION_SZONE,LOCATION_SZONE,nil)*1000 return Duel.GetMatchingGroupCount(c72992744.filter,0,LOCATION_SZONE,LOCATION_SZONE,nil)*1000
......
...@@ -39,6 +39,5 @@ function c80908502.operation(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -39,6 +39,5 @@ function c80908502.operation(e,tp,eg,ep,ev,re,r,rp,chk)
end end
end end
function c80908502.descon(e) function c80908502.descon(e)
local ev,ep=Duel.GetEnvironment() return not Duel.IsEnvironment(63035430)
return Duel.GetEnvironment()~=63035430
end end
...@@ -11,7 +11,7 @@ function c81066751.initial_effect(c) ...@@ -11,7 +11,7 @@ function c81066751.initial_effect(c)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c81066751.condition(e,tp,eg,ep,ev,re,r,rp) function c81066751.condition(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetEnvironment()~=56433456 then return false end if not Duel.IsEnvironment(56433456) then return false end
if not Duel.IsChainNegatable(ev) then return false end if not Duel.IsChainNegatable(ev) then return false end
return re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE) return re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)
end end
......
...@@ -13,8 +13,7 @@ function c84177693.initial_effect(c) ...@@ -13,8 +13,7 @@ function c84177693.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c84177693.reccon(e,tp,eg,ep,ev,re,r,rp) function c84177693.reccon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsReason(REASON_BATTLE) return not e:GetHandler():IsReason(REASON_BATTLE) and Duel.IsEnvironment(56433456)
and Duel.GetEnvironment()==56433456
end end
function c84177693.rectg(e,tp,eg,ep,ev,re,r,rp,chk) function c84177693.rectg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -12,23 +12,32 @@ end ...@@ -12,23 +12,32 @@ end
function c86049351.condition(e,tp,eg,ep,ev,re,r,rp) function c86049351.condition(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetAttacker() local tc=Duel.GetAttacker()
local at=Duel.GetAttackTarget() local at=Duel.GetAttackTarget()
if not at or tc:IsFacedown() or at:IsFacedown() then return false end
if not tc:IsControler(tp) then tc=at end if not tc:IsControler(tp) then tc=at end
e:SetLabelObject(tc) e:SetLabelObject(tc)
return at and tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) and tc:IsSetCard(0x84) return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) and tc:IsSetCard(0x84)
end end
function c86049351.filter(c) function c86049351.filter(c,pos)
return c:IsFaceup() and c:IsSetCard(0x84) return c:IsPosition(pos) and c:IsSetCard(0x84)
end end
function c86049351.target(e,tp,eg,ep,ev,re,r,rp,chk) function c86049351.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c86049351.filter,tp,LOCATION_MZONE,0,1,e:GetLabelObject()) end if chk==0 then
local tc=e:GetLabelObject()
local bc=tc:GetBattleTarget()
local pos=POS_FACEUP
if bc==Duel.GetAttackTarget() then pos=POS_FACEUP_ATTACK end
return Duel.IsExistingMatchingCard(c86049351.filter,tp,LOCATION_MZONE,0,1,tc,pos)
end
end end
function c86049351.activate(e,tp,eg,ep,ev,re,r,rp) function c86049351.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject() local tc=e:GetLabelObject()
local bc=tc:GetBattleTarget() local bc=tc:GetBattleTarget()
if Duel.NegateAttack() and tc:IsRelateToBattle() and bc:IsRelateToBattle() then if Duel.NegateAttack() and tc:IsRelateToBattle() and bc:IsRelateToBattle() and bc:IsFaceup() then
Duel.SendtoGrave(tc,REASON_EFFECT) Duel.SendtoGrave(tc,REASON_EFFECT)
local pos=POS_FACEUP
if bc==Duel.GetAttackTarget() then pos=POS_FACEUP_ATTACK end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectMatchingCard(tp,c86049351.filter,tp,LOCATION_MZONE,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c86049351.filter,tp,LOCATION_MZONE,0,1,1,nil,pos)
local sc=g:GetFirst() local sc=g:GetFirst()
local atk=bc:GetBaseAttack() local atk=bc:GetBaseAttack()
if atk<0 then atk=0 end if atk<0 then atk=0 end
...@@ -38,6 +47,7 @@ function c86049351.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -38,6 +47,7 @@ function c86049351.activate(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(atk) e1:SetValue(atk)
e1:SetReset(RESET_EVENT+0x1fe0000) e1:SetReset(RESET_EVENT+0x1fe0000)
sc:RegisterEffect(e1) sc:RegisterEffect(e1)
if bc==Duel.GetAttackTarget() then bc,sc=sc,bc end
Duel.CalculateDamage(bc,sc) Duel.CalculateDamage(bc,sc)
Duel.BreakEffect() Duel.BreakEffect()
Duel.Damage(tp,atk,REASON_EFFECT) Duel.Damage(tp,atk,REASON_EFFECT)
......
...@@ -15,7 +15,7 @@ function c90337190.filter(c) ...@@ -15,7 +15,7 @@ function c90337190.filter(c)
end end
function c90337190.econ(e) function c90337190.econ(e)
return Duel.IsExistingMatchingCard(c90337190.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c90337190.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
function c90337190.efilter(e,te) function c90337190.efilter(e,te)
return te:IsActiveType(TYPE_SPELL) return te:IsActiveType(TYPE_SPELL)
......
...@@ -20,7 +20,7 @@ end ...@@ -20,7 +20,7 @@ end
function c90434657.condition(e,tp,eg,ep,ev,re,r,rp) function c90434657.condition(e,tp,eg,ep,ev,re,r,rp)
if not Duel.IsExistingMatchingCard(c90434657.cfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) if not Duel.IsExistingMatchingCard(c90434657.cfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil)
or (not Duel.IsExistingMatchingCard(c90434657.cfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) or (not Duel.IsExistingMatchingCard(c90434657.cfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
and Duel.GetEnvironment()~=47355498) then return false end and not Duel.IsEnvironment(47355498)) then return false end
if not Duel.IsChainNegatable(ev) then return false end if not Duel.IsChainNegatable(ev) then return false end
return re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE) return re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)
end end
......
...@@ -24,8 +24,8 @@ function c91123920.efilter(e,te) ...@@ -24,8 +24,8 @@ function c91123920.efilter(e,te)
return te:IsActiveType(TYPE_SPELL) return te:IsActiveType(TYPE_SPELL)
end end
function c91123920.val(e,c) function c91123920.val(e,c)
local ev,ep=Duel.GetEnvironment() local tp=c:GetControler()
if ev~=56433456 or ep~=c:GetControler() then return 0 end if not Duel.IsEnvironment(56433456,tp) then return 0 end
local v=Duel.GetLP(ep)-Duel.GetLP(1-ep) local v=Duel.GetLP(tp)-Duel.GetLP(1-tp)
if v>0 then return v else return 0 end if v>0 then return v else return 0 end
end end
...@@ -18,7 +18,7 @@ function c91188343.filter2(c) ...@@ -18,7 +18,7 @@ function c91188343.filter2(c)
end end
function c91188343.tg(e,tp,eg,ep,ev,re,r,rp,chk) function c91188343.tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
if Duel.GetEnvironment()~=56433456 then if not Duel.IsEnvironment(56433456) then
return Duel.IsExistingMatchingCard(c91188343.filter1,tp,LOCATION_DECK,0,1,nil) end return Duel.IsExistingMatchingCard(c91188343.filter1,tp,LOCATION_DECK,0,1,nil) end
return Duel.IsExistingMatchingCard(c91188343.filter2,tp,LOCATION_DECK,0,1,nil) return Duel.IsExistingMatchingCard(c91188343.filter2,tp,LOCATION_DECK,0,1,nil)
end end
...@@ -27,7 +27,7 @@ end ...@@ -27,7 +27,7 @@ end
function c91188343.op(e,tp,eg,ep,ev,re,r,rp) function c91188343.op(e,tp,eg,ep,ev,re,r,rp)
local g=nil local g=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
if Duel.GetEnvironment()~=56433456 then if not Duel.IsEnvironment(56433456) then
g=Duel.SelectMatchingCard(tp,c91188343.filter1,tp,LOCATION_DECK,0,1,1,nil) g=Duel.SelectMatchingCard(tp,c91188343.filter1,tp,LOCATION_DECK,0,1,1,nil)
else g=Duel.SelectMatchingCard(tp,c91188343.filter2,tp,LOCATION_DECK,0,1,1,nil) end else g=Duel.SelectMatchingCard(tp,c91188343.filter2,tp,LOCATION_DECK,0,1,1,nil) end
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -29,7 +29,7 @@ function c91345518.damtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -29,7 +29,7 @@ function c91345518.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0)
end end
function c91345518.damop(e,tp,eg,ep,ev,re,r,rp) function c91345518.damop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetEnvironment()~=56433456 then return end if not Duel.IsEnvironment(56433456) then return end
local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER)
local val=Duel.GetLP(1-p)-Duel.GetLP(p) local val=Duel.GetLP(1-p)-Duel.GetLP(p)
if val>0 then if val>0 then
......
...@@ -15,7 +15,7 @@ function c95614612.filter(c) ...@@ -15,7 +15,7 @@ function c95614612.filter(c)
end end
function c95614612.econ(e) function c95614612.econ(e)
return Duel.IsExistingMatchingCard(c95614612.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) return Duel.IsExistingMatchingCard(c95614612.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
or Duel.GetEnvironment()==22702055 or Duel.IsEnvironment(22702055)
end end
function c95614612.efilter(e,te) function c95614612.efilter(e,te)
return te:IsActiveType(TYPE_SPELL) return te:IsActiveType(TYPE_SPELL)
......
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