Commit d847a4e5 authored by argon.sun's avatar argon.sun

fix

parent 4946107b
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include <stdio.h> #include <stdio.h>
namespace ygo { namespace ygo {
const wchar_t* DataManager::unknown_string = L"???"; const wchar_t* DataManager::unknown_string = L"???";
wchar_t DataManager::strBuffer[2048]; wchar_t DataManager::strBuffer[2048];
DataManager dataManager; DataManager dataManager;
...@@ -233,7 +233,8 @@ const wchar_t* DataManager::FormatType(int type) { ...@@ -233,7 +233,8 @@ const wchar_t* DataManager::FormatType(int type) {
return tpBuffer; return tpBuffer;
} }
int DataManager::CardReader(int code, void* pData) { int DataManager::CardReader(int code, void* pData) {
dataManager.GetData(code, (CardData*)pData); if(!dataManager.GetData(code, (CardData*)pData))
memset(pData, 0, sizeof(CardData));
return 0; return 0;
} }
......
...@@ -1470,7 +1470,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1470,7 +1470,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->lstLog->addItem(textBuffer); mainGame->lstLog->addItem(textBuffer);
mainGame->logParam.push_back(code); mainGame->logParam.push_back(code);
if (l & 0x41) { if (l & 0x41) {
if(count <= 3) { if(count == 1) {
float shift = -0.15f; float shift = -0.15f;
if (c == 0 && l == 0x40) shift = 0.15f; if (c == 0 && l == 0x40) shift = 0.15f;
pcard->dPos = irr::core::vector3df(shift, 0, 0); pcard->dPos = irr::core::vector3df(shift, 0, 0);
...@@ -1482,8 +1482,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1482,8 +1482,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->WaitFrameSignal(45); mainGame->WaitFrameSignal(45);
mainGame->dField.MoveCard(pcard, 5); mainGame->dField.MoveCard(pcard, 5);
mainGame->WaitFrameSignal(5); mainGame->WaitFrameSignal(5);
} else } else {
panel_confirm.push_back(pcard); if(!mainGame->dInfo.isReplay)
panel_confirm.push_back(pcard);
}
} else } else
field_confirm.push_back(pcard); field_confirm.push_back(pcard);
} }
...@@ -1523,6 +1525,8 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1523,6 +1525,8 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
std::sort(panel_confirm.begin(), panel_confirm.end(), ClientCard::client_card_sort); std::sort(panel_confirm.begin(), panel_confirm.end(), ClientCard::client_card_sort);
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->dField.selectable_cards = panel_confirm; mainGame->dField.selectable_cards = panel_confirm;
myswprintf(textBuffer, dataManager.GetSysString(208), panel_confirm.size());
mainGame->wCardSelect->setText(textBuffer);
mainGame->dField.ShowSelectCard(true); mainGame->dField.ShowSelectCard(true);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
...@@ -1564,7 +1568,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1564,7 +1568,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf)); int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int count = BufferIO::ReadInt8(pbuf); int count = BufferIO::ReadInt8(pbuf);
mainGame->WaitFrameSignal(5); mainGame->WaitFrameSignal(5);
if(player == 1 && !mainGame->dInfo.isReplay) { if(player == 1 && !mainGame->dInfo.isReplay && !mainGame->dInfo.isSingleMode) {
bool flip = false; bool flip = false;
for (auto cit = mainGame->dField.hand[player].begin(); cit != mainGame->dField.hand[player].end(); ++cit) for (auto cit = mainGame->dField.hand[player].begin(); cit != mainGame->dField.hand[player].end(); ++cit)
if((*cit)->code) { if((*cit)->code) {
......
...@@ -301,7 +301,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -301,7 +301,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 7; pbuf += count * 7;
pauseable = false; DuelClient::ClientAnalyze(offset, pbuf - offset);
break; break;
} }
case MSG_SHUFFLE_DECK: { case MSG_SHUFFLE_DECK: {
......
...@@ -277,6 +277,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -277,6 +277,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 7; pbuf += count * 7;
DuelClient::ClientAnalyze(offset, pbuf - offset);
break; break;
} }
case MSG_SHUFFLE_DECK: { case MSG_SHUFFLE_DECK: {
......
...@@ -1425,7 +1425,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) { ...@@ -1425,7 +1425,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
BufferIO::WriteInt8(qbuf, LOCATION_MZONE); BufferIO::WriteInt8(qbuf, LOCATION_MZONE);
int len = query_field_card(pduel, player, LOCATION_MZONE, flag, (unsigned char*)qbuf, use_cache); int len = query_field_card(pduel, player, LOCATION_MZONE, flag, (unsigned char*)qbuf, use_cache);
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, query_buffer, len + 3); int pid = (player == 0) ? 0 : 2;
NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 3);
NetServer::ReSendToPlayer(players[pid + 1]);
for (int i = 0; i < 5; ++i) { for (int i = 0; i < 5; ++i) {
int clen = BufferIO::ReadInt32(qbuf); int clen = BufferIO::ReadInt32(qbuf);
if (clen == 4) if (clen == 4)
...@@ -1434,9 +1436,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) { ...@@ -1434,9 +1436,9 @@ void TagDuel::RefreshMzone(int player, int flag, int use_cache) {
memset(qbuf, 0, clen - 4); memset(qbuf, 0, clen - 4);
qbuf += clen - 4; qbuf += clen - 4;
} }
for(int i = 0; i < 4; ++i) pid = 2 - pid;
if(players[i] != cur_player[player]) NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 3);
NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, query_buffer, len + 3); NetServer::ReSendToPlayer(players[pid + 1]);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} }
...@@ -1447,7 +1449,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) { ...@@ -1447,7 +1449,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
BufferIO::WriteInt8(qbuf, player); BufferIO::WriteInt8(qbuf, player);
BufferIO::WriteInt8(qbuf, LOCATION_SZONE); BufferIO::WriteInt8(qbuf, LOCATION_SZONE);
int len = query_field_card(pduel, player, LOCATION_SZONE, flag, (unsigned char*)qbuf, use_cache); int len = query_field_card(pduel, player, LOCATION_SZONE, flag, (unsigned char*)qbuf, use_cache);
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, query_buffer, len + 3); int pid = (player == 0) ? 0 : 2;
NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 3);
NetServer::ReSendToPlayer(players[pid + 1]);
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
int clen = BufferIO::ReadInt32(qbuf); int clen = BufferIO::ReadInt32(qbuf);
if (clen == 4) if (clen == 4)
...@@ -1456,9 +1460,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) { ...@@ -1456,9 +1460,9 @@ void TagDuel::RefreshSzone(int player, int flag, int use_cache) {
memset(qbuf, 0, clen - 4); memset(qbuf, 0, clen - 4);
qbuf += clen - 4; qbuf += clen - 4;
} }
for(int i = 0; i < 4; ++i) pid = 2 - pid;
if(players[i] != cur_player[player]) NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 3);
NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, query_buffer, len + 3); NetServer::ReSendToPlayer(players[pid + 1]);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} }
...@@ -1518,13 +1522,24 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) { ...@@ -1518,13 +1522,24 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
int len = query_card(pduel, player, location, sequence, flag, (unsigned char*)qbuf, 0); int len = query_card(pduel, player, location, sequence, flag, (unsigned char*)qbuf, 0);
if(location == LOCATION_REMOVED && (qbuf[15] & POS_FACEDOWN)) if(location == LOCATION_REMOVED && (qbuf[15] & POS_FACEDOWN))
return; return;
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, query_buffer, len + 4); if(location & LOCATION_ONFIELD) {
if ((location & 0x90) || ((location & 0x2c) && (qbuf[15] & POS_FACEUP))) { int pid = (player == 0) ? 0 : 2;
for(int i = 0; i < 4; ++i) NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 4);
if(players[i] != cur_player[player]) NetServer::ReSendToPlayer(players[pid + 1]);
NetServer::ReSendToPlayer(players[i]); if(qbuf[15] & POS_FACEUP) {
for(auto pit = observers.begin(); pit != observers.end(); ++pit) pid = 2 - pid;
NetServer::ReSendToPlayer(*pit); NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, query_buffer, len + 4);
NetServer::ReSendToPlayer(players[pid + 1]);
}
} else {
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, query_buffer, len + 4);
if (location & 0x90) {
for(int i = 0; i < 4; ++i)
if(players[i] != cur_player[player])
NetServer::ReSendToPlayer(players[i]);
for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit);
}
} }
} }
int TagDuel::MessageHandler(long fduel, int type) { int TagDuel::MessageHandler(long fduel, int type) {
......
...@@ -928,6 +928,8 @@ int32 scriptlib::duel_pay_lp_cost(lua_State *L) { ...@@ -928,6 +928,8 @@ int32 scriptlib::duel_pay_lp_cost(lua_State *L) {
if(playerid != 0 && playerid != 1) if(playerid != 0 && playerid != 1)
return 0; return 0;
uint32 cost = lua_tointeger(L, 2); uint32 cost = lua_tointeger(L, 2);
if(cost == 0)
return 0;
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
pduel->game_field->add_process(PROCESSOR_PAY_LPCOST, 0, 0, 0, playerid, cost); pduel->game_field->add_process(PROCESSOR_PAY_LPCOST, 0, 0, 0, playerid, cost);
return lua_yield(L, 0); return lua_yield(L, 0);
......
...@@ -387,6 +387,17 @@ int32 field::select_position(uint16 step, uint8 playerid, uint32 code, uint8 pos ...@@ -387,6 +387,17 @@ int32 field::select_position(uint16 step, uint8 playerid, uint32 code, uint8 pos
returns.ivalue[0] = positions; returns.ivalue[0] = positions;
return TRUE; return TRUE;
} }
if((playerid == 1) && (core.duel_options & DUEL_SIMPLE_AI)) {
if(positions & 0x4)
returns.ivalue[0] = 0x4;
else if(positions & 0x1)
returns.ivalue[0] = 0x1;
else if(positions & 0x8)
returns.ivalue[0] = 0x8;
else
returns.ivalue[0] = 0x2;
return TRUE;
}
pduel->write_buffer8(MSG_SELECT_POSITION); pduel->write_buffer8(MSG_SELECT_POSITION);
pduel->write_buffer8(playerid); pduel->write_buffer8(playerid);
pduel->write_buffer32(code); pduel->write_buffer32(code);
......
...@@ -17,6 +17,8 @@ function c10875327.initial_effect(c) ...@@ -17,6 +17,8 @@ function c10875327.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c10875327.sdcon) e4:SetCondition(c10875327.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -34,6 +34,8 @@ function c10979723.initial_effect(c) ...@@ -34,6 +34,8 @@ function c10979723.initial_effect(c)
c:RegisterEffect(e5) c:RegisterEffect(e5)
local e6=Effect.CreateEffect(c) local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_SINGLE) e6:SetType(EFFECT_TYPE_SINGLE)
e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e6:SetRange(LOCATION_MZONE)
e6:SetCode(EFFECT_SELF_DESTROY) e6:SetCode(EFFECT_SELF_DESTROY)
e6:SetCondition(c10979723.descon) e6:SetCondition(c10979723.descon)
c:RegisterEffect(e6) c:RegisterEffect(e6)
......
--エクゾディア·ネクロス --エクゾディア·ネクロス
function c12600382.initial_effect(c) function c12600382.initial_effect(c)
c:EnableReviveLimit()
--cannot destroy --cannot destroy
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
...@@ -36,10 +37,11 @@ function c12600382.initial_effect(c) ...@@ -36,10 +37,11 @@ function c12600382.initial_effect(c)
--selfdes --selfdes
local e5=Effect.CreateEffect(c) local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE) e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e5:SetRange(LOCATION_MZONE)
e5:SetCode(EFFECT_SELF_DESTROY) e5:SetCode(EFFECT_SELF_DESTROY)
e5:SetCondition(c12600382.descondition) e5:SetCondition(c12600382.descondition)
c:RegisterEffect(e5) c:RegisterEffect(e5)
c:EnableReviveLimit()
end end
function c12600382.efdes(e,re) function c12600382.efdes(e,re)
return not re:GetHandler():IsType(TYPE_MONSTER) return not re:GetHandler():IsType(TYPE_MONSTER)
......
...@@ -10,6 +10,8 @@ function c13474291.initial_effect(c) ...@@ -10,6 +10,8 @@ function c13474291.initial_effect(c)
--selfdes --selfdes
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_MZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c13474291.sdcon) e2:SetCondition(c13474291.sdcon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -17,6 +17,8 @@ function c15187079.initial_effect(c) ...@@ -17,6 +17,8 @@ function c15187079.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c15187079.sdcon) e4:SetCondition(c15187079.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -3,6 +3,8 @@ function c16008155.initial_effect(c) ...@@ -3,6 +3,8 @@ function c16008155.initial_effect(c)
--self destroy --self destroy
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_SELF_DESTROY) e1:SetCode(EFFECT_SELF_DESTROY)
e1:SetCondition(c16008155.sdcon) e1:SetCondition(c16008155.sdcon)
c:RegisterEffect(e1) c:RegisterEffect(e1)
......
...@@ -24,6 +24,8 @@ function c16886617.initial_effect(c) ...@@ -24,6 +24,8 @@ function c16886617.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c16886617.sdcon) e4:SetCondition(c16886617.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -36,6 +36,8 @@ function c1710476.initial_effect(c) ...@@ -36,6 +36,8 @@ function c1710476.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c1710476.descon) e7:SetCondition(c1710476.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -79,6 +79,7 @@ function c18631392.retop(code1,code2,code3) ...@@ -79,6 +79,7 @@ function c18631392.retop(code1,code2,code3)
if c:IsRelateToEffect(e) then if c:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_COPY_INHERIT)
e1:SetCode(EFFECT_SET_ATTACK) e1:SetCode(EFFECT_SET_ATTACK)
e1:SetValue(hg:GetCount()*1000) e1:SetValue(hg:GetCount()*1000)
e1:SetReset(RESET_EVENT+0x1ff0000) e1:SetReset(RESET_EVENT+0x1ff0000)
......
...@@ -9,6 +9,8 @@ function c19312169.initial_effect(c) ...@@ -9,6 +9,8 @@ function c19312169.initial_effect(c)
--destroy --destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c19312169.descon) e2:SetCondition(c19312169.descon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -37,7 +37,7 @@ function c1953925.initial_effect(c) ...@@ -37,7 +37,7 @@ function c1953925.initial_effect(c)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
function c1953925.distg(e,c) function c1953925.distg(e,c)
if not c:IsType(TYPE_TRAP) and c:GetCardTargetCount()==0 then return false end if not c:IsType(TYPE_TRAP) or c:GetCardTargetCount()==0 then return false end
return c:GetCardTarget():IsContains(e:GetHandler()) return c:GetCardTarget():IsContains(e:GetHandler())
end end
function c1953925.disop(e,tp,eg,ep,ev,re,r,rp) function c1953925.disop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -19,6 +19,8 @@ function c23205979.initial_effect(c) ...@@ -19,6 +19,8 @@ function c23205979.initial_effect(c)
--self des --self des
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c23205979.sdcon) e3:SetCondition(c23205979.sdcon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -3,6 +3,8 @@ function c2333365.initial_effect(c) ...@@ -3,6 +3,8 @@ function c2333365.initial_effect(c)
--self destroy --self destroy
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_SELF_DESTROY) e1:SetCode(EFFECT_SELF_DESTROY)
e1:SetCondition(c2333365.descon) e1:SetCondition(c2333365.descon)
c:RegisterEffect(e1) c:RegisterEffect(e1)
......
--冥王竜ヴァンダルギオン --冥王竜ヴァンダルギオン
function c24857466.initial_effect(c) function c24857466.initial_effect(c)
--counter
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetRange(LOCATION_HAND)
e1:SetOperation(c24857466.chop1)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_NEGATED) e2:SetCode(EVENT_CHAIN_NEGATED)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetOperation(c24857466.chop2) e2:SetOperation(c24857466.chop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
e1:SetLabelObject(e2)
--special summon --special summon
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(24857466,0)) e3:SetDescription(aux.Stringid(24857466,0))
...@@ -22,10 +14,9 @@ function c24857466.initial_effect(c) ...@@ -22,10 +14,9 @@ function c24857466.initial_effect(c)
e3:SetProperty(EFFECT_FLAG_DELAY) e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetCode(EVENT_CHAIN_END) e3:SetCode(EVENT_CHAIN_END)
e3:SetRange(LOCATION_HAND) e3:SetRange(LOCATION_HAND)
e3:SetCondition(c24857466.sumcon) e3:SetCondition(c24857466.hspcon)
e3:SetTarget(c24857466.sumtg) e3:SetTarget(c24857466.hsptg)
e3:SetOperation(c24857466.sumop) e3:SetOperation(c24857466.hspop)
e3:SetLabelObject(e2)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--spell:damage --spell:damage
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
...@@ -33,11 +24,10 @@ function c24857466.initial_effect(c) ...@@ -33,11 +24,10 @@ function c24857466.initial_effect(c)
e4:SetCategory(CATEGORY_DAMAGE) e4:SetCategory(CATEGORY_DAMAGE)
e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e4:SetCode(EVENT_SPSUMMON_SUCCESS) e4:SetCode(24857466)
e4:SetCondition(c24857466.damcon) e4:SetCondition(c24857466.damcon)
e4:SetTarget(c24857466.damtg) e4:SetTarget(c24857466.damtg)
e4:SetOperation(c24857466.damop) e4:SetOperation(c24857466.damop)
e4:SetLabelObject(e3)
c:RegisterEffect(e4) c:RegisterEffect(e4)
--trap:Destroy --trap:Destroy
local e5=Effect.CreateEffect(c) local e5=Effect.CreateEffect(c)
...@@ -45,11 +35,10 @@ function c24857466.initial_effect(c) ...@@ -45,11 +35,10 @@ function c24857466.initial_effect(c)
e5:SetCategory(CATEGORY_DESTROY) e5:SetCategory(CATEGORY_DESTROY)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e5:SetProperty(EFFECT_FLAG_CARD_TARGET) e5:SetProperty(EFFECT_FLAG_CARD_TARGET)
e5:SetCode(EVENT_SPSUMMON_SUCCESS) e5:SetCode(24857466)
e5:SetCondition(c24857466.descon) e5:SetCondition(c24857466.descon)
e5:SetTarget(c24857466.destg) e5:SetTarget(c24857466.destg)
e5:SetOperation(c24857466.desop) e5:SetOperation(c24857466.desop)
e5:SetLabelObject(e3)
c:RegisterEffect(e5) c:RegisterEffect(e5)
--monster:spsummon --monster:spsummon
local e6=Effect.CreateEffect(c) local e6=Effect.CreateEffect(c)
...@@ -57,53 +46,56 @@ function c24857466.initial_effect(c) ...@@ -57,53 +46,56 @@ function c24857466.initial_effect(c)
e6:SetCategory(CATEGORY_SPECIAL_SUMMON) e6:SetCategory(CATEGORY_SPECIAL_SUMMON)
e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e6:SetProperty(EFFECT_FLAG_CARD_TARGET) e6:SetProperty(EFFECT_FLAG_CARD_TARGET)
e6:SetCode(EVENT_SPSUMMON_SUCCESS) e6:SetCode(24857466)
e6:SetCondition(c24857466.spcon) e6:SetCondition(c24857466.spcon)
e6:SetTarget(c24857466.sptg) e6:SetTarget(c24857466.sptg)
e6:SetOperation(c24857466.spop) e6:SetOperation(c24857466.spop)
e6:SetLabelObject(e3)
c:RegisterEffect(e6) c:RegisterEffect(e6)
end end
function c24857466.chop1(e,tp,eg,ep,ev,re,r,rp) function c24857466.chop(e,tp,eg,ep,ev,re,r,rp)
e:GetLabelObject():SetLabel(0) local c=e:GetHandler()
e:GetLabelObject():SetLabelObject(nil)
end
function c24857466.chop2(e,tp,eg,ep,ev,re,r,rp)
if rp==tp then return end if rp==tp then return end
local de,dp=Duel.GetChainInfo(ev,CHAININFO_DISABLE_REASON,CHAININFO_DISABLE_PLAYER) local de,dp=Duel.GetChainInfo(ev,CHAININFO_DISABLE_REASON,CHAININFO_DISABLE_PLAYER)
if de and dp==tp and de:GetHandler():IsType(TYPE_COUNTER) then if de and dp==tp and de:GetHandler():IsType(TYPE_COUNTER) then
local flag=e:GetLabel() local ty=re:GetActiveType()
if de~=e:GetLabelObject() then local flag=c:GetFlagEffectLabel(24857466)
if not flag then
c:RegisterFlagEffect(24857466,RESET_EVENT+0x1fe0000,0,0,ty)
e:SetLabelObject(de)
elseif de~=e:GetLabelObject() then
e:SetLabelObject(de) e:SetLabelObject(de)
flag=0 c:SetFlagEffectLabel(24857466,ty)
else
c:SetFlagEffectLabel(24857466,bit.bor(flag,ty))
end end
local ty=re:GetActiveType()
if bit.band(ty,TYPE_SPELL)~=0 then flag=bit.bor(flag,0x1)
elseif bit.band(ty,TYPE_TRAP)~=0 then flag=bit.bor(flag,0x2)
else flag=bit.bor(flag,0x4) end
e:SetLabel(flag)
end end
end end
function c24857466.sumcon(e,tp,eg,ep,ev,re,r,rp) function c24857466.hspcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetLabelObject():GetLabel()~=0 local c=e:GetHandler()
end local label=c:GetFlagEffectLabel(24857466)
function c24857466.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) if label~=nil then
c:ResetFlagEffect(24857466)
e:SetLabel(label)
return true
else return false end
end
function c24857466.hsptg(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
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.ConfirmCards(1-tp,e:GetHandler()) Duel.ConfirmCards(1-tp,e:GetHandler())
Duel.ShuffleHand(tp) Duel.ShuffleHand(tp)
e:SetLabel(e:GetLabelObject():GetLabel()) Duel.SetTargetParam(e:GetLabel())
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end end
function c24857466.sumop(e,tp,eg,ep,ev,re,r,rp) function c24857466.hspop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) then if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then
Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP) local tpe=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)
Duel.RaiseSingleEvent(c,24857466,e,0,0,tp,tpe)
end end
end end
function c24857466.damcon(e,tp,eg,ep,ev,re,r,rp) function c24857466.damcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 return bit.band(ev,TYPE_SPELL)~=0
and bit.band(e:GetLabelObject():GetLabel(),0x1)~=0
end end
function c24857466.damtg(e,tp,eg,ep,ev,re,r,rp,chk) function c24857466.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
...@@ -116,8 +108,7 @@ function c24857466.damop(e,tp,eg,ep,ev,re,r,rp) ...@@ -116,8 +108,7 @@ function c24857466.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.Damage(p,d,REASON_EFFECT) Duel.Damage(p,d,REASON_EFFECT)
end end
function c24857466.descon(e,tp,eg,ep,ev,re,r,rp) function c24857466.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 return bit.band(ev,TYPE_TRAP)~=0
and bit.band(e:GetLabelObject():GetLabel(),0x2)~=0
end end
function c24857466.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c24857466.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and chkc:IsDestructable() end if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and chkc:IsDestructable() end
...@@ -133,8 +124,7 @@ function c24857466.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -133,8 +124,7 @@ function c24857466.desop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c24857466.spcon(e,tp,eg,ep,ev,re,r,rp) function c24857466.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 return bit.band(ev,TYPE_MONSTER)~=0
and bit.band(e:GetLabelObject():GetLabel(),0x4)~=0
end end
function c24857466.spfilter(c,e,tp) function c24857466.spfilter(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......
...@@ -17,6 +17,8 @@ function c33537328.initial_effect(c) ...@@ -17,6 +17,8 @@ function c33537328.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c33537328.sdcon) e4:SetCondition(c33537328.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -42,18 +42,24 @@ function c35781051.arcanareg(c,coin) ...@@ -42,18 +42,24 @@ function c35781051.arcanareg(c,coin)
e1:SetOperation(c35781051.spop) e1:SetOperation(c35781051.spop)
e1:SetReset(RESET_EVENT+0x1ff0000) e1:SetReset(RESET_EVENT+0x1ff0000)
c:RegisterEffect(e1) c:RegisterEffect(e1)
-- local e2=e1:Clone()
local e2=Effect.CreateEffect(c) e2:SetCode(EVENT_MSET)
e2:SetDescription(aux.Stringid(35781051,2))
e2:SetCategory(CATEGORY_TOGRAVE)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c35781051.tgcon)
e2:SetTarget(c35781051.tgtg)
e2:SetOperation(c35781051.tgop)
e2:SetReset(RESET_EVENT+0x1ff0000)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(35781051,2))
e3:SetCategory(CATEGORY_TOGRAVE)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_SUMMON_SUCCESS)
e3:SetRange(LOCATION_MZONE)
e3:SetCondition(c35781051.tgcon)
e3:SetTarget(c35781051.tgtg)
e3:SetOperation(c35781051.tgop)
e3:SetReset(RESET_EVENT+0x1ff0000)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EVENT_MSET)
c:RegisterEffect(e4)
c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c35781051.spcon(e,tp,eg,ep,ev,re,r,rp) function c35781051.spcon(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -36,6 +36,8 @@ function c36521459.initial_effect(c) ...@@ -36,6 +36,8 @@ function c36521459.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c36521459.descon) e7:SetCondition(c36521459.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -40,6 +40,8 @@ function c37115575.initial_effect(c) ...@@ -40,6 +40,8 @@ function c37115575.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c37115575.descon) e7:SetCondition(c37115575.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -16,6 +16,8 @@ function c39168895.initial_effect(c) ...@@ -16,6 +16,8 @@ function c39168895.initial_effect(c)
--destroy --destroy
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c39168895.descon) e3:SetCondition(c39168895.descon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -17,6 +17,8 @@ function c41181774.initial_effect(c) ...@@ -17,6 +17,8 @@ function c41181774.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c41181774.sdcon) e4:SetCondition(c41181774.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -32,9 +32,7 @@ function c41420027.condition1(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,9 +32,7 @@ function c41420027.condition1(e,tp,eg,ep,ev,re,r,rp)
end end
function c41420027.cost1(e,tp,eg,ep,ev,re,r,rp,chk) function c41420027.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
local lp=Duel.GetLP(tp) Duel.PayLPCost(tp,Duel.GetLP(tp)/2)
local costlp=math.floor((lp+1)/2)
Duel.PayLPCost(tp,costlp)
end end
function c41420027.target1(e,tp,eg,ep,ev,re,r,rp,chk) function c41420027.target1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
...@@ -50,9 +48,7 @@ function c41420027.condition2(e,tp,eg,ep,ev,re,r,rp) ...@@ -50,9 +48,7 @@ function c41420027.condition2(e,tp,eg,ep,ev,re,r,rp)
end end
function c41420027.cost2(e,tp,eg,ep,ev,re,r,rp,chk) function c41420027.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
local lp=Duel.GetLP(tp) Duel.PayLPCost(tp,Duel.GetLP(tp)/2)
local costlp=math.floor((lp+1)/2)
Duel.PayLPCost(tp,costlp)
end end
function c41420027.target2(e,tp,eg,ep,ev,re,r,rp,chk) function c41420027.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -20,6 +20,8 @@ function c45358284.initial_effect(c) ...@@ -20,6 +20,8 @@ function c45358284.initial_effect(c)
--destroy --destroy
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c45358284.descon) e3:SetCondition(c45358284.descon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -17,6 +17,8 @@ function c46263076.initial_effect(c) ...@@ -17,6 +17,8 @@ function c46263076.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c46263076.sdcon) e4:SetCondition(c46263076.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -18,6 +18,8 @@ function c48357738.initial_effect(c) ...@@ -18,6 +18,8 @@ function c48357738.initial_effect(c)
--des --des
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c48357738.descon) e3:SetCondition(c48357738.descon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -36,6 +36,8 @@ function c55343236.initial_effect(c) ...@@ -36,6 +36,8 @@ function c55343236.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c55343236.descon) e7:SetCondition(c55343236.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -13,6 +13,8 @@ function c55982698.initial_effect(c) ...@@ -13,6 +13,8 @@ function c55982698.initial_effect(c)
--self destroy --self destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_MZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c55982698.sdcon) e2:SetCondition(c55982698.sdcon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
--エクシーズ熱戦!!
function c57319935.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DAMAGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_BATTLE_DESTROYED)
e1:SetCondition(c57319935.condition)
e1:SetCost(c57319935.cost)
e1:SetTarget(c57319935.target)
e1:SetOperation(c57319935.activate)
c:RegisterEffect(e1)
end
function c57319935.cfilter(c,tp)
return c:IsType(TYPE_XYZ) and c:GetPreviousControler()==tp
end
function c57319935.condition(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst()
if c57319935.cfilter(tc,tp) then
e:SetLabel(tc:GetRank())
return true
end
tc=eg:GetNext()
if tc and c57319935.cfilter(tc,tp) then
e:SetLabel(tc:GetRank())
return true
end
return false
end
function c57319935.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckLPCost(tp,1000) end
Duel.PayLPCost(tp,1000)
end
function c57319935.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsRankBelow,tp,LOCATION_EXTRA,0,1,nil,e:GetLabel())
and Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 end
end
function c57319935.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(57319935,0))
local tc1=Duel.SelectMatchingCard(tp,Card.IsRankBelow,tp,LOCATION_EXTRA,0,1,1,nil,e:GetLabel()):GetFirst()
Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(57319935,0))
local tc2=Duel.SelectMatchingCard(1-tp,Card.IsRankBelow,1-tp,LOCATION_EXTRA,0,1,1,nil,e:GetLabel()):GetFirst()
if tc1 and tc2 then
Duel.ConfirmCards(1-tp,tc1)
Duel.ConfirmCards(tp,tc2)
local atk1=tc1:GetAttack()
local atk2=tc2:GetAttack()
if atk1>atk2 then
Duel.Damage(1-tp,atk1-atk2,REASON_EFFECT)
elseif atk1<atk2 then
Duel.Damage(tp,atk2-atk1,REASON_EFFECT)
end
elseif tc1 then
Duel.ConfirmCards(1-tp,tc1)
local g=Duel.GetFieldGroup(1-tp,LOCATION_EXTRA,0)
Duel.ConfirmCards(tp,g)
Duel.Damage(1-tp,tc1:GetAttack(),REASON_EFFECT)
elseif tc2 then
Duel.ConfirmCards(tp,tc2)
local g=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0)
Duel.ConfirmCards(1-tp,g)
Duel.Damage(tp,tc2:GetAttack(),REASON_EFFECT)
else
local g1=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0)
local g2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0)
Duel.ConfirmCards(tp,g2)
Duel.ConfirmCards(1-tp,g1)
end
end
...@@ -12,6 +12,8 @@ function c59258334.initial_effect(c) ...@@ -12,6 +12,8 @@ function c59258334.initial_effect(c)
--destroy --destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c59258334.descon) e2:SetCondition(c59258334.descon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -36,6 +36,8 @@ function c598988.initial_effect(c) ...@@ -36,6 +36,8 @@ function c598988.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c598988.descon) e7:SetCondition(c598988.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -10,6 +10,8 @@ function c60627999.initial_effect(c) ...@@ -10,6 +10,8 @@ function c60627999.initial_effect(c)
--destroy --destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c60627999.descon) e2:SetCondition(c60627999.descon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -14,12 +14,14 @@ function c61314842.filter(c,e,tp) ...@@ -14,12 +14,14 @@ function c61314842.filter(c,e,tp)
return c:IsSetCard(0x76) and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsSetCard(0x76) and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function c61314842.xyzfilter(c,mg) function c61314842.xyzfilter(c,mg)
if c.xyz_count~=2 then return false end
return c:IsXyzSummonable(mg) return c:IsXyzSummonable(mg)
end end
function c61314842.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c61314842.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end if chkc then return false end
local mg=Duel.GetMatchingGroup(c61314842.filter,tp,LOCATION_GRAVE,0,nil,e,tp) local mg=Duel.GetMatchingGroup(c61314842.filter,tp,LOCATION_GRAVE,0,nil,e,tp)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and mg:GetCount()>1 end if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and mg:GetCount()>1
and Duel.IsExistingMatchingCard(c61314842.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=mg:Select(tp,2,2,nil) local g=mg:Select(tp,2,2,nil)
Duel.SetTargetCard(g) Duel.SetTargetCard(g)
......
...@@ -17,6 +17,8 @@ function c69931927.initial_effect(c) ...@@ -17,6 +17,8 @@ function c69931927.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c69931927.sdcon) e4:SetCondition(c69931927.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -9,6 +9,8 @@ function c71983925.initial_effect(c) ...@@ -9,6 +9,8 @@ function c71983925.initial_effect(c)
--destroy --destroy
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EFFECT_SELF_DESTROY) e2:SetCode(EFFECT_SELF_DESTROY)
e2:SetCondition(c71983925.descon) e2:SetCondition(c71983925.descon)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -14,7 +14,8 @@ function c72926163.initial_effect(c) ...@@ -14,7 +14,8 @@ function c72926163.initial_effect(c)
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_SPSUMMON_SUCCESS) e3:SetCode(EVENT_SPSUMMON_SUCCESS)
e3:SetOperation(c72926163.sucop) e3:SetCondition(c72926163.atkcon)
e3:SetOperation(c72926163.atkop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--multiatk --multiatk
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
...@@ -33,7 +34,10 @@ c72926163.material={89943723} ...@@ -33,7 +34,10 @@ c72926163.material={89943723}
function c72926163.splimit(e,se,sp,st) function c72926163.splimit(e,se,sp,st)
return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end end
function c72926163.sucop(e,tp,eg,ep,ev,re,r,rp) function c72926163.atkcon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end
function c72926163.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=c:GetMaterial() local g=c:GetMaterial()
local tc=g:GetFirst() local tc=g:GetFirst()
......
...@@ -17,6 +17,8 @@ function c79798060.initial_effect(c) ...@@ -17,6 +17,8 @@ function c79798060.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE) e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EFFECT_SELF_DESTROY) e4:SetCode(EFFECT_SELF_DESTROY)
e4:SetCondition(c79798060.sdcon) e4:SetCondition(c79798060.sdcon)
c:RegisterEffect(e4) c:RegisterEffect(e4)
......
...@@ -22,6 +22,8 @@ function c85684223.initial_effect(c) ...@@ -22,6 +22,8 @@ function c85684223.initial_effect(c)
--self des --self des
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c85684223.sdcon) e3:SetCondition(c85684223.sdcon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -3,6 +3,8 @@ function c89194033.initial_effect(c) ...@@ -3,6 +3,8 @@ function c89194033.initial_effect(c)
--selfdestroy --selfdestroy
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_SELF_DESTROY) e1:SetCode(EFFECT_SELF_DESTROY)
e1:SetCondition(c89194033.descon) e1:SetCondition(c89194033.descon)
c:RegisterEffect(e1) c:RegisterEffect(e1)
......
...@@ -17,6 +17,8 @@ function c91107093.initial_effect(c) ...@@ -17,6 +17,8 @@ function c91107093.initial_effect(c)
--self destroy --self destroy
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_SELF_DESTROY)
e3:SetCondition(c91107093.descon) e3:SetCondition(c91107093.descon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
......
...@@ -3,7 +3,7 @@ function c91895091.initial_effect(c) ...@@ -3,7 +3,7 @@ function c91895091.initial_effect(c)
--xyz summon --xyz summon
aux.AddXyzProcedure(c,c91895091.xyzfilter,2) aux.AddXyzProcedure(c,c91895091.xyzfilter,2)
c:EnableReviveLimit() c:EnableReviveLimit()
--addown --actlimit
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(91895091,0)) e1:SetDescription(aux.Stringid(91895091,0))
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
...@@ -34,10 +34,10 @@ function c91895091.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -34,10 +34,10 @@ function c91895091.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST)
end end
function c91895091.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c91895091.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsFacedown() end if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and chkc:IsFacedown() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,0,LOCATION_SZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(91895091,2)) Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(91895091,2))
Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) Duel.SelectTarget(tp,Card.IsFacedown,tp,0,LOCATION_SZONE,1,1,nil)
end end
function c91895091.operation(e,tp,eg,ep,ev,re,r,rp) function c91895091.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -21,7 +21,7 @@ function c94081496.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -21,7 +21,7 @@ function c94081496.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local tc=eg:GetFirst() local tc=eg:GetFirst()
if chkc then return chkc==tc end if chkc then return chkc==tc end
if chk==0 then return eg:GetCount()==1 and tc:IsFaceup() and tc:IsType(TYPE_SYNCHRO) and tc:IsOnField() if chk==0 then return eg:GetCount()==1 and tc:IsFaceup() and tc:IsType(TYPE_SYNCHRO) and tc:IsOnField()
and tc:IsCanBeEffectTarget(e) and tc:IsDestructable() end and tc:IsControler(1-tp) and tc:IsCanBeEffectTarget(e) and tc:IsDestructable() end
Duel.SetTargetCard(eg) Duel.SetTargetCard(eg)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0)
end end
......
...@@ -36,6 +36,8 @@ function c9433350.initial_effect(c) ...@@ -36,6 +36,8 @@ function c9433350.initial_effect(c)
--selfdes --selfdes
local e7=Effect.CreateEffect(c) local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_SINGLE) e7:SetType(EFFECT_TYPE_SINGLE)
e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e7:SetRange(LOCATION_MZONE)
e7:SetCode(EFFECT_SELF_DESTROY) e7:SetCode(EFFECT_SELF_DESTROY)
e7:SetCondition(c9433350.descon) e7:SetCondition(c9433350.descon)
c:RegisterEffect(e7) c:RegisterEffect(e7)
......
...@@ -158,6 +158,12 @@ function Auxiliary.AddSynchroProcedure2(c,f1,f2) ...@@ -158,6 +158,12 @@ function Auxiliary.AddSynchroProcedure2(c,f1,f2)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function Auxiliary.AddXyzProcedure(c,f,ct,alterf,desc) function Auxiliary.AddXyzProcedure(c,f,ct,alterf,desc)
if c.xyz_filter==nil then
local code=c:GetOriginalCode()
local mt=_G["c" .. code]
mt.xyz_filter=f
mt.xyz_count=ct
end
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
......
#config file #config file
#nickname & gamename should be less than 20 characters #nickname & gamename should be less than 20 characters
use_d3d = 1 use_d3d = 0
antialias = 2 antialias = 2
errorlog = 1 errorlog = 1
nickname = Player nickname = Player
......
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