Commit 4f533571 authored by argon.sun's avatar argon.sun

fix

parent e33d4b1b
......@@ -419,7 +419,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
irr::gui::IGUIElement* ele = dev->getGUIEnvironment()->getFocus();
if(!ele)
break;
irr::core::position2di pos = ele->getAbsolutePosition().getCenter();
irr::core::position2di pos = ele->getAbsolutePosition().UpperLeftCorner;
CANDIDATEFORM cd;
cd.dwIndex = 0;
cd.dwStyle = CFS_CANDIDATEPOS;
......
......@@ -207,6 +207,9 @@ bool Game::Initialize() {
chkAutoChain = env->addCheckBox(false, rect<s32>(20, 80, 280, 105), tabSystem, -1, dataManager.GetSysString(1276));
chkAutoChain->setChecked(true);
chkWaitChain = env->addCheckBox(false, rect<s32>(20, 110, 280, 135), tabSystem, -1, dataManager.GetSysString(1277));
chkIgnore1 = env->addCheckBox(false, rect<s32>(20, 170, 280, 195), tabSystem, -1, dataManager.GetSysString(1290));
chkIgnore2 = env->addCheckBox(false, rect<s32>(20, 200, 280, 225), tabSystem, -1, dataManager.GetSysString(1291));
chkIgnore2->setChecked(true);
//
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand->getCloseButton()->setVisible(false);
......@@ -434,6 +437,13 @@ bool Game::Initialize() {
btnReplayStep = env->addButton(rect<s32>(5, 55, 85, 75), wReplayControl, BUTTON_REPLAY_STEP, dataManager.GetSysString(1345));
btnReplaySwap = env->addButton(rect<s32>(5, 80, 85, 100), wReplayControl, BUTTON_REPLAY_SWAP, dataManager.GetSysString(1346));
btnReplayExit = env->addButton(rect<s32>(5, 105, 85, 125), wReplayControl, BUTTON_REPLAY_EXIT, dataManager.GetSysString(1347));
//chat
wChat = env->addWindow(rect<s32>(305, 615, 1020, 640), false, L"");
wChat->getCloseButton()->setVisible(false);
wChat->setDraggable(false);
// wChat->setDrawBackground(false);
wChat->setDrawTitlebar(false);
ebChatInput = env->addEditBox(L"", rect<s32>(3, 2, 710, 22), true, wChat, EDITBOX_CHAT);
//
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
btnLeaveGame->setVisible(false);
......@@ -780,6 +790,7 @@ void Game::CloseDuelWindow() {
stHintMsg->setVisible(false);
btnSideOK->setVisible(false);
btnLeaveGame->setVisible(false);
wChat->setVisible(false);
lstLog->clear();
logParam.clear();
lstHostList->clear();
......
......@@ -368,6 +368,7 @@ extern Game* mainGame;
#define LISTBOX_REPLAY_LIST 130
#define BUTTON_LOAD_REPLAY 131
#define BUTTON_CANCEL_REPLAY 132
#define EDITBOX_CHAT 140
#define BUTTON_MSG_OK 200
#define BUTTON_YES 201
#define BUTTON_NO 202
......
......@@ -61,7 +61,7 @@ irr::video::ITexture* ImageManager::GetTexture(int code) {
img = driver->getTexture(file);
}
if(img == NULL) {
tMap[code] = tUnknown;
tMap[code] = NULL;
return tUnknown;
} else {
tMap[code] = img;
......@@ -86,7 +86,7 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) {
img = driver->getTexture(file);
}
if(img == NULL) {
tThumb[code] = tUnknown;
tThumb[code] = NULL;
return tUnknown;
} else {
tThumb[code] = img;
......
......@@ -359,6 +359,7 @@ public:
#define EVENT_CHAIN_END 1026
#define EVENT_CHAINING 1027
#define EVENT_BECOME_TARGET 1028
#define EVENT_DESTROYED 1029
#define EVENT_ADJUST 1040
#define EVENT_SUMMON_SUCCESS 1100
#define EVENT_FLIP_SUMMON_SUCCESS 1101
......
......@@ -1433,7 +1433,9 @@ int32 scriptlib::card_add_counter(lua_State *L) {
card* pcard = *(card**) lua_touserdata(L, 1);
uint32 countertype = lua_tointeger(L, 2);
uint32 count = lua_tointeger(L, 3);
lua_pushboolean(L, pcard->add_counter(countertype, count));
if(pcard->is_affect_by_effect(pcard->pduel->game_field->core.reason_effect))
lua_pushboolean(L, pcard->add_counter(countertype, count));
else lua_pushboolean(L, 0);
return 1;
}
int32 scriptlib::card_remove_counter(lua_State *L) {
......
......@@ -2410,7 +2410,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
}
case 5: {
uint8 nloc;
card_set tohand, todeck, tograve, remove, released;
card_set tohand, todeck, tograve, remove, released, destroyed;
card_set equipings, overlays;
for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) {
card* pcard = *cit;
......@@ -2451,6 +2451,10 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
released.insert(pcard);
raise_single_event(pcard, 0, EVENT_RELEASE, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
}
if(pcard->current.reason & REASON_DESTROY) {
destroyed.insert(pcard);
raise_single_event(pcard, 0, EVENT_DESTROYED, pcard->current.reason_effect, pcard->current.reason, pcard->current.reason_player, 0, 0);
}
if(pcard->xyz_materials.size()) {
for(auto clit = pcard->xyz_materials.begin(); clit != pcard->xyz_materials.end(); ++clit)
overlays.insert(*clit);
......@@ -2466,6 +2470,8 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
raise_event(&remove, EVENT_REMOVE, reason_effect, reason, reason_player, 0, 0);
if(released.size())
raise_event(&released, EVENT_RELEASE, reason_effect, reason, reason_player, 0, 0);
if(destroyed.size())
raise_event(&released, EVENT_DESTROYED, reason_effect, reason, reason_player, 0, 0);
process_single_event();
process_instant_event();
if(equipings.size())
......
......@@ -27,20 +27,10 @@ function c12652643.initial_effect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e4:SetCode(EVENT_DESTROY)
e4:SetCondition(c12652643.spcon)
e4:SetCode(EVENT_DESTROYED)
e4:SetTarget(c12652643.sptg)
e4:SetOperation(c12652643.spop)
c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(12652643,0))
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetProperty(EFFECT_FLAG_CARD_TARGET)
e5:SetCode(EVENT_BATTLE_DESTROYED)
e5:SetTarget(c12652643.sptg)
e5:SetOperation(c12652643.spop)
c:RegisterEffect(e5)
end
c12652643.material_count=1
c12652643.material={83104731}
......@@ -63,9 +53,6 @@ end
function c12652643.spfilter(c,e,tp)
return c:IsCode(83104731) and c:IsCanBeSpecialSummoned(e,0,tp,true,false)
end
function c12652643.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_EFFECT)
end
function c12652643.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12652643.spfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
......
......@@ -47,7 +47,7 @@ function c131182.initial_effect(c)
e7:SetCategory(CATEGORY_DESTROY)
e7:SetProperty(EFFECT_FLAG_CARD_TARGET)
e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e7:SetCode(EVENT_DESTROY)
e7:SetCode(EVENT_DESTROYED)
e7:SetCondition(c131182.descon)
e7:SetTarget(c131182.destg)
e7:SetOperation(c131182.desop)
......@@ -82,7 +82,7 @@ function c131182.spop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c131182.descon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(r,REASON_EFFECT) and re:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP)
return not bit.band(r,REASON_BATTLE) and re:IsActiveType(TYPE_SPELL+TYPE_TRAP)
end
function c131182.destg(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:IsDestructable() end
......
......@@ -8,15 +8,14 @@ function c13995824.initial_effect(c)
e1:SetDescription(aux.Stringid(13995824,0))
e1:SetCategory(CATEGORY_DECKDES)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_DESTROYED)
e1:SetCondition(c13995824.ddcon)
e1:SetTarget(c13995824.ddtg)
e1:SetOperation(c13995824.ddop)
c:RegisterEffect(e1)
end
function c13995824.ddcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetOwner()==c:GetControler() and rp~=tp
return rp~=tp and e:GetHandler():GetPreviousControler()==tp
end
function c13995824.ddtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -40,7 +40,7 @@ function c14553285.initial_effect(c)
e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e5:SetCode(EVENT_DESTROY)
e5:SetCode(EVENT_LEAVE_FIELD)
e5:SetCondition(c14553285.spcon)
e5:SetTarget(c14553285.sptg)
e5:SetOperation(c14553285.spop)
......@@ -72,7 +72,7 @@ function c14553285.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(g,REASON_EFFECT)
end
function c14553285.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c14553285.spfilter(c,e,tp)
return c:IsCode(31924889) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -11,9 +11,7 @@ function c16067089.initial_effect(c)
c:RegisterEffect(e1)
end
function c16067089.cfilter(c,tp)
return c:IsCode(72677437) and c:GetPreviousControler()==tp
and c:IsPreviousLocation(LOCATION_ONFIELD)
and c:IsPreviousPosition(POS_FACEUP)
return c:IsCode(72677437) and c:IsControler(tp) and c:IsOnField() and c:IsFaceup()
end
function c16067089.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c16067089.cfilter,1,nil,tp)
......
......@@ -24,7 +24,7 @@ function c1764972.initial_effect(c)
e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e3:SetCode(EVENT_DESTROY)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetCondition(c1764972.spcon2)
e3:SetTarget(c1764972.sptg2)
e3:SetOperation(c1764972.spop2)
......@@ -88,7 +88,7 @@ function c1764972.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(dg,REASON_EFFECT)
end
function c1764972.spcon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c1764972.spfilter2(c,e,tp)
return c:IsCode(6021033) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -11,9 +11,6 @@ function c25262697.initial_effect(c)
e1:SetOperation(c25262697.posop)
c:RegisterEffect(e1)
end
function c25262697.costfilter(c)
return c:IsFaceup() and c:IsSetCard(0x2e)
end
function c25262697.poscon(e,tp,eg,ep,ev,re,r,rp,chk)
return Duel.GetEnvironment()==47355498
end
......
......@@ -17,6 +17,7 @@ function c25518020.initial_effect(c)
--add counter
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EVENT_DESTROY)
e3:SetCondition(c25518020.ctcon)
......
......@@ -7,7 +7,6 @@ function c26704411.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_BATTLE_DESTROYING)
e1:SetCountLimit(1)
e1:SetCondition(c26704411.con)
e1:SetCost(c26704411.cost)
e1:SetTarget(c26704411.tg)
......
......@@ -41,12 +41,12 @@ function c28124263.filter(c,e,tp)
and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY)
end
function c28124263.tga(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c28124263.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE)
end
function c28124263.opa(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end
if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c28124263.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
......
......@@ -31,7 +31,7 @@ function c29843091.activate(e,tp,eg,ep,ev,re,r,rp)
token:RegisterEffect(e1,true)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_DESTROYED)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetOperation(c29843091.tokendes)
token:RegisterEffect(e2,true)
......
......@@ -36,5 +36,6 @@ function c35059553.value(e)
end
function c35059553.condition(e)
local tp=e:GetHandlerPlayer()
return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)
local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)
return ct~=0 and ct<=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)
end
......@@ -23,7 +23,7 @@ function c37169670.initial_effect(c)
e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e3:SetCode(EVENT_DESTROY)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetCondition(c37169670.spcon)
e3:SetTarget(c37169670.sptg)
e3:SetOperation(c37169670.spop)
......@@ -44,7 +44,7 @@ function c37169670.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.Recover(tp,d2,REASON_EFFECT)
end
function c37169670.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c37169670.spfilter(c,e,tp)
return c:IsCode(95526884) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -14,5 +14,5 @@ function c38033121.val(e,c)
end
function c38033121.filter(c)
local code=c:GetCode()
return code==46986414 or code==40737112
return code==46986414 or code==30208479
end
......@@ -14,5 +14,5 @@ function c38033122.val(e,c)
end
function c38033122.filter(c)
local code=c:GetCode()
return code==46986414 or code==40737112
return code==46986414 or code==30208479
end
......@@ -14,5 +14,5 @@ function c38033123.val(e,c)
end
function c38033123.filter(c)
local code=c:GetCode()
return code==46986414 or code==40737112
return code==46986414 or code==30208479
end
......@@ -14,5 +14,5 @@ function c38033124.val(e,c)
end
function c38033124.filter(c)
local code=c:GetCode()
return code==46986414 or code==40737112
return code==46986414 or code==30208479
end
......@@ -31,7 +31,7 @@ function c38898779.initial_effect(c)
e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e4:SetCode(EVENT_DESTROY)
e4:SetCode(EVENT_LEAVE_FIELD)
e4:SetCondition(c38898779.spcon)
e4:SetTarget(c38898779.sptg)
e4:SetOperation(c38898779.spop)
......@@ -55,7 +55,7 @@ function c38898779.atkval(e,c)
return Duel.GetMatchingGroupCount(Card.IsRace,e:GetHandler():GetControler(),LOCATION_GRAVE,0,nil,RACE_WARRIOR)*-100
end
function c38898779.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c38898779.spfilter(c,e,tp)
return c:IsCode(23693634) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -16,15 +16,10 @@ function c39823987.initial_effect(c)
--spsummon
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(c39823987.regcon)
e2:SetOperation(c39823987.regop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_BATTLE_DESTROYED)
e3:SetOperation(c39823987.regop)
c:RegisterEffect(e3)
end
function c39823987.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE)
......@@ -46,7 +41,7 @@ function c39823987.desop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c39823987.regcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField() and e:GetHandler():IsReason(REASON_EFFECT)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
end
function c39823987.regop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -28,7 +28,7 @@ function c41517968.initial_effect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e4:SetCategory(CATEGORY_DESTROY)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET)
e4:SetCode(EVENT_DESTROY)
e4:SetCode(EVENT_DESTROYED)
e4:SetTarget(c41517968.destg)
e4:SetOperation(c41517968.desop)
c:RegisterEffect(e4)
......
......@@ -4,13 +4,13 @@ function c45801022.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(45801022,0))
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_DESTROYED)
e1:SetCondition(c45801022.condition)
e1:SetOperation(c45801022.operation)
c:RegisterEffect(e1)
end
function c45801022.condition(e,tp,eg,ep,ev,re,r,rp)
return rp~=tp and e:GetHandler():GetOwner()==e:GetHandler():GetControler()
return rp~=tp and e:GetHandler():GetPreviousControler()==tp
end
function c45801022.operation(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -4,13 +4,13 @@ function c46897277.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(46897277,0))
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_DESTROYED)
e1:SetCondition(c46897277.condition)
e1:SetOperation(c46897277.operation)
c:RegisterEffect(e1)
end
function c46897277.condition(e,tp,eg,ep,ev,re,r,rp)
return rp~=tp and e:GetHandler():GetOwner()==e:GetHandler():GetControler()
return rp~=tp and e:GetHandler():GetPreviousControler()==tp
end
function c46897277.operation(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -9,15 +9,14 @@ function c49389523.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_DESTROYED)
e1:SetCondition(c49389523.spcon)
e1:SetTarget(c49389523.sptg)
e1:SetOperation(c49389523.spop)
c:RegisterEffect(e1)
end
function c49389523.spcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetOwner()==c:GetControler() and rp~=tp
return rp~=tp and e:GetHandler():GetPreviousControler()==tp
end
function c49389523.filter(c,e,tp)
local code=c:GetCode()
......
......@@ -14,7 +14,7 @@ function c50078509.initial_effect(c)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_LEAVE_FIELD)
e2:SetCondition(c50078509.descon)
e2:SetOperation(c50078509.desop)
e2:SetLabelObject(e1)
......@@ -36,10 +36,9 @@ function c50078509.operation(e,tp,eg,ep,ev,re,r,rp)
if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then
c:SetCardTarget(tc)
e:SetLabelObject(tc)
tc:CreateRelation(c,RESET_EVENT+0x1fe0000)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+0x1fe0000)
......@@ -51,14 +50,13 @@ function c50078509.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function c50078509.rcon(e)
local c=e:GetOwner()
return c:IsHasCardTarget(e:GetHandler()) and not c:IsDisabled()
return e:GetOwner():IsHasCardTarget(e:GetHandler())
end
function c50078509.descon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end
local tc=e:GetLabelObject():GetLabelObject()
return tc and eg:IsContains(tc) and tc:IsRelateToCard(c) and c:IsHasCardTarget(tc)
return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) and c:IsHasCardTarget(tc)
end
function c50078509.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(e:GetHandler(), REASON_EFFECT)
......
......@@ -18,7 +18,7 @@ function c50433147.initial_effect(c)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(50433147,0))
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_DESTROY)
e3:SetCode(EVENT_DESTROYED)
e3:SetCondition(c50433147.descon)
e3:SetTarget(c50433147.destg)
e3:SetOperation(c50433147.desop)
......@@ -28,7 +28,7 @@ function c50433147.indtg(e,c)
return c:IsSetCard(0x42)
end
function c50433147.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
end
function c50433147.desfilter(c)
return c:IsFaceup() and c:IsSetCard(0x42) and c:IsDestructable()
......
......@@ -8,6 +8,7 @@ function c5973663.initial_effect(c)
--add counter
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_DESTROY)
e2:SetOperation(c5973663.ctop)
......
......@@ -38,7 +38,7 @@ function c61257789.initial_effect(c)
e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e4:SetCode(EVENT_DESTROY)
e4:SetCode(EVENT_LEAVE_FIELD)
e4:SetCondition(c61257789.spcon)
e4:SetTarget(c61257789.sptg)
e4:SetOperation(c61257789.spop)
......@@ -77,7 +77,7 @@ function c61257789.sumop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c61257789.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c61257789.spfilter(c,e,tp)
return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -16,7 +16,7 @@ function c64163367.initial_effect(c)
e2:SetDescription(aux.Stringid(64163367,0))
e2:SetCategory(CATEGORY_COUNTER)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_LEAVE_FIELD)
e2:SetCondition(c64163367.ctcon2)
e2:SetOperation(c64163367.ctop2)
c:RegisterEffect(e2)
......@@ -27,7 +27,7 @@ end
function c64163367.ctcon2(e,tp,eg,ep,ev,re,r,rp)
local ct=e:GetHandler():GetCounter(0xe)
e:SetLabel(ct)
return ct>0
return e:GetHandler():IsReason(REASON_DESTROY) and ct>0
end
function c64163367.ctop2(e,tp,eg,ep,ev,re,r,rp)
local ct=e:GetLabel()
......
......@@ -18,20 +18,11 @@ function c66818682.initial_effect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(c66818682.spcon)
e2:SetTarget(c66818682.sptg)
e2:SetOperation(c66818682.spop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(66818682,1))
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
e3:SetCode(EVENT_BATTLE_DESTROYED)
e3:SetTarget(c66818682.sptg)
e3:SetOperation(c66818682.spop)
c:RegisterEffect(e3)
end
function c66818682.rectg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......@@ -46,7 +37,7 @@ function c66818682.recop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c66818682.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField() and e:GetHandler():IsReason(REASON_EFFECT)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
end
function c66818682.spfilter(c,e,tp)
return c:IsCode(39823987) and c:IsCanBeSpecialSummoned(e,0,tp,true,false)
......
......@@ -24,24 +24,17 @@ function c69243953.initial_effect(c)
c:RegisterEffect(e3)
--tohand
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_DESTROY)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e4:SetOperation(c69243953.checkeq)
e4:SetDescription(aux.Stringid(69243953,0))
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCategory(CATEGORY_TOHAND)
e4:SetCode(EVENT_LEAVE_FIELD)
e4:SetCondition(c69243953.retcon)
e4:SetTarget(c69243953.rettg)
e4:SetOperation(c69243953.retop)
c:RegisterEffect(e4)
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e5:SetCategory(CATEGORY_TOHAND)
e5:SetDescription(aux.Stringid(69243953,0))
e5:SetCode(EVENT_TO_GRAVE)
e5:SetCondition(c69243953.retcon)
e5:SetTarget(c69243953.rettg)
e5:SetOperation(c69243953.retop)
e5:SetLabelObject(e4)
c:RegisterEffect(e5)
end
function c69243953.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsFaceup() end
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
......@@ -61,7 +54,7 @@ function c69243953.checkeq(e,tp,eg,ep,ev,re,r,rp)
end
function c69243953.retcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsPreviousLocation(LOCATION_SZONE) and c:IsReason(REASON_DESTROY) and e:GetLabelObject():GetLabel()==1
return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_DESTROY) and c:GetEquipTarget()~=nil
end
function c69243953.rettg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToHand() end
......
......@@ -24,7 +24,7 @@ function c77336644.initial_effect(c)
e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e3:SetCode(EVENT_DESTROY)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetCondition(c77336644.spcon)
e3:SetTarget(c77336644.sptg)
e3:SetOperation(c77336644.spop)
......@@ -43,7 +43,7 @@ function c77336644.desop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(g,REASON_EFFECT)
end
function c77336644.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsOnField()
return e:GetHandler():IsReason(REASON_DESTROY)
end
function c77336644.spfilter(c,e,tp)
return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -15,20 +15,10 @@ function c7736719.initial_effect(c)
e2:SetCategory(CATEGORY_DRAW)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetCode(EVENT_DESTROY)
e2:SetCondition(c7736719.drcon)
e2:SetCode(EVENT_DESTROYED)
e2:SetTarget(c7736719.drtg)
e2:SetOperation(c7736719.drop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(7736719,1))
e3:SetCategory(CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetCode(EVENT_BATTLE_DESTROYED)
e3:SetTarget(c7736719.drtg)
e3:SetOperation(c7736719.drop)
c:RegisterEffect(e3)
end
function c7736719.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,2)
......@@ -46,9 +36,6 @@ function c7736719.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.BreakEffect()
Duel.Draw(tp,2,REASON_EFFECT)
end
function c7736719.drcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_EFFECT)
end
function c7736719.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetTargetPlayer(tp)
......
......@@ -25,7 +25,7 @@ function c78082039.initial_effect(c)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_DESTROY)
e4:SetCode(EVENT_DESTROYED)
e4:SetOperation(c78082039.desop)
c:RegisterEffect(e4)
end
......
......@@ -35,7 +35,7 @@ function c79229522.spfilter1(c,tp)
and Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,tp)
end
function c79229522.spfilter2(c,tp)
return c:IsRace(RACE_MACHINE) and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup())
return c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup())
end
function c79229522.sprcon(e,c)
if c==nil then return true end
......
......@@ -38,7 +38,7 @@ function c79798060.initial_effect(c)
e7:SetDescription(aux.Stringid(79798060,0))
e7:SetCategory(CATEGORY_DESTROY)
e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e7:SetCode(EVENT_DESTROY)
e7:SetCode(EVENT_DESTROYED)
e7:SetCondition(c79798060.descon)
e7:SetTarget(c79798060.destg)
e7:SetOperation(c79798060.desop)
......@@ -64,7 +64,7 @@ function c79798060.sdcon(e)
end
function c79798060.descon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return (not c:IsOnField() or c:IsFaceup()) and (not re or re:GetHandler()~=c)
return not c:IsReason(REASON_BATTLE) and re and re:GetHandler()~=c
end
function c79798060.destg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -20,7 +20,7 @@ function c80551130.initial_effect(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EVENT_DESTROY)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetCondition(c80551130.descon2)
e3:SetOperation(c80551130.desop2)
c:RegisterEffect(e3)
......
......@@ -14,7 +14,7 @@ function c83039729.initial_effect(c)
e2:SetCategory(CATEGORY_TOHAND)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e2:SetCode(EVENT_DESTROY)
e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(c83039729.thcon)
e2:SetTarget(c83039729.thtg)
e2:SetOperation(c83039729.thop)
......@@ -51,7 +51,7 @@ function c83039729.spcon(e,c)
end
function c83039729.thcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetOwner()==c:GetControler() and bit.band(r,REASON_EFFECT)>0 and rp~=tp and rp~=PLAYER_NONE
return not c:IsReason(REASON_BATTLE) and rp==1-tp and c:GetPreviousControler()==tp
end
function c83039729.filter(c)
return c:IsSetCard(0x3d) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand()
......
......@@ -6,20 +6,22 @@ function c87836938.initial_effect(c)
e1:SetCategory(CATEGORY_DRAW)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_LEAVE_FIELD)
e1:SetCondition(c87836938.drcon)
e1:SetTarget(c87836938.drtg)
e1:SetOperation(c87836938.drop)
c:RegisterEffect(e1)
end
function c87836938.drcon(e,tp,eg,ep,ev,re,r,rp)
local et=e:GetHandler():GetEquipCount()
e:SetLabel(et)
return et>0 and e:GetHandler():IsReason(REASON_EFFECT)
local c=e:GetHandler()
local et=c:GetEquipCount()
if et>0 and c:IsReason(REASON_EFFECT) and c:IsLocation(LOCAITON_GRAVE) then
e:SetLabel(et)
return true
else return false end
end
function c87836938.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsLocation(LOCATION_GRAVE)
and Duel.IsPlayerCanDraw(tp,e:GetLabel()) end
if chk==0 then return Duel.IsPlayerCanDraw(tp,e:GetLabel()) end
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(e:GetLabel())
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel())
......
......@@ -119,5 +119,5 @@ function c90960358.val(e,c)
end
function c90960358.filter(c)
local code=c:GetCode()
return code==46986414 or code==40737112
return code==46986414 or code==30208479
end
......@@ -6,14 +6,14 @@ function c97885363.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_DESTROY)
e1:SetCode(EVENT_DESTROYED)
e1:SetCondition(c97885363.condition)
e1:SetTarget(c97885363.target)
e1:SetOperation(c97885363.operation)
c:RegisterEffect(e1)
end
function c97885363.condition(e,tp,eg,ep,ev,re,r,rp)
return rp~=tp and e:GetHandler():GetOwner()==e:GetHandler():GetControler()
return rp~=tp and e:GetHandler():GetPreviousControler()==tp
end
function c97885363.filter(c,e,tp)
return c:IsSetCard(0xe) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
......@@ -7,6 +7,7 @@ function c99342953.initial_effect(c)
--counter
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_DESTROY)
e2:SetOperation(c99342953.ctop)
......
......@@ -437,6 +437,7 @@ EVENT_CHAIN_DISABLED =1025
EVENT_CHAIN_END =1026
EVENT_CHAINING =1027
EVENT_BECOME_TARGET =1028
EVENT_DESTROYED =1029
EVENT_ADJUST =1040
EVENT_SUMMON_SUCCESS =1100
EVENT_FLIP_SUMMON_SUCCESS =1101
......
......@@ -262,6 +262,8 @@
!system 1277 没有可连锁的卡时延迟回应
!system 1280 标准对战
!system 1281 自定义
!system 1290 忽略对方发言
!system 1291 忽略观战者发言
!system 1300 禁限卡表:
!system 1301 卡组列表:
!system 1302 保存
......
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