Commit cf8c6d59 authored by VanillaSalt's avatar VanillaSalt

update

parent bfecda5d
......@@ -1881,7 +1881,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} else {
if (!(pl & 0x80) && !(cl & 0x80)) {
ClientCard* pcard = mainGame->dField.GetCard(pc, pl, ps);
if (code != 0 && pcard->code != code)
if (pcard->code != code && (code != 0 || cl == 0x40))
pcard->SetCode(code);
pcard->cHint = 0;
pcard->chValue = 0;
......
......@@ -932,7 +932,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break;
}
case LOCATION_EXTRA: {
if(extra[hovered_controler].size() == 0 || hovered_controler != 0)
if(extra[hovered_controler].size() == 0)
break;
ShowMenu(COMMAND_LIST, x, y);
break;
......@@ -996,8 +996,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break;
for(size_t i = 0; i < extra[hovered_controler].size(); ++i)
command_flag |= extra[hovered_controler][i]->cmdFlag;
if(hovered_controler == 0 || mainGame->dInfo.isSingleMode)
command_flag |= COMMAND_LIST;
command_flag |= COMMAND_LIST;
list_command = 1;
ShowMenu(command_flag, x, y);
break;
......
......@@ -168,7 +168,7 @@ public:
irr::gui::IGUIStaticText* stInfo;
irr::gui::IGUIStaticText* stDataInfo;
irr::gui::IGUIStaticText* stText;
irr::gui::IGUIScrollBar *scrCardText;
irr::gui::IGUIScrollBar* scrCardText;
irr::gui::IGUICheckBox* chkAutoPos;
irr::gui::IGUICheckBox* chkRandomPos;
irr::gui::IGUICheckBox* chkAutoChain;
......
......@@ -33,7 +33,7 @@ public:
static bool ReplayAnalyze(char* msg, unsigned int len);
static void ReplayRefresh(int flag = 0x781fff);
static void ReplayRefreshHand(int player, int flag = 0x181fff);
static void ReplayRefreshHand(int player, int flag = 0x781fff);
static void ReplayRefreshGrave(int player, int flag = 0x181fff);
static void ReplayRefreshDeck(int player, int flag = 0x181fff);
static void ReplayRefreshExtra(int player, int flag = 0x181fff);
......
......@@ -869,20 +869,12 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
int cs = pbuf[10];
int cp = pbuf[11];
pbuf += 16;
if(cl == LOCATION_REMOVED && (cp & POS_FACEDOWN)) {
NetServer::SendBufferToPlayer(players[cc], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::SendBufferToPlayer(players[cc], STOC_GAME_MSG, offset, pbuf - offset);
if (!(cl & (LOCATION_GRAVE + LOCATION_OVERLAY)) && ((cl & (LOCATION_DECK + LOCATION_HAND)) || (cp & POS_FACEDOWN)))
BufferIO::WriteInt32(pbufw, 0);
NetServer::SendBufferToPlayer(players[1 - cc], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
} else {
NetServer::SendBufferToPlayer(players[cc], STOC_GAME_MSG, offset, pbuf - offset);
if (!(cl & 0xb0) && !((cl & 0xc) && (cp & POS_FACEUP)))
BufferIO::WriteInt32(pbufw, 0);
NetServer::SendBufferToPlayer(players[1 - cc], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
}
NetServer::SendBufferToPlayer(players[1 - cc], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
if (cl != 0 && (cl & 0x80) == 0 && (cl != pl || pc != cc))
RefreshSingle(cc, cl, cs);
break;
......
......@@ -832,24 +832,14 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
int cs = pbuf[10];
int cp = pbuf[11];
pbuf += 16;
if(cl == LOCATION_REMOVED && (cp & POS_FACEDOWN)) {
NetServer::SendBufferToPlayer(cur_player[cc], STOC_GAME_MSG, offset, pbuf - offset);
if (!(cl & (LOCATION_GRAVE + LOCATION_OVERLAY)) && ((cl & (LOCATION_DECK + LOCATION_HAND)) || (cp & POS_FACEDOWN)))
BufferIO::WriteInt32(pbufw, 0);
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
NetServer::ReSendToPlayer(players[2]);
NetServer::ReSendToPlayer(players[3]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
} else {
NetServer::SendBufferToPlayer(cur_player[cc], STOC_GAME_MSG, offset, pbuf - offset);
if (!(cl & 0xb0) && !((cl & 0xc) && (cp & POS_FACEUP)))
BufferIO::WriteInt32(pbufw, 0);
for(int i = 0; i < 4; ++i)
if(players[i] != cur_player[cc])
NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
}
for(int i = 0; i < 4; ++i)
if(players[i] != cur_player[cc])
NetServer::SendBufferToPlayer(players[i], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
if (cl != 0 && (cl & 0x80) == 0 && (cl != pl || pc != cc))
RefreshSingle(cc, cl, cs);
break;
......
......@@ -2147,7 +2147,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) {
pduel->write_buffer8(pcard->current.location);
pduel->write_buffer8(pcard->current.sequence);
pduel->write_buffer8(pcard->current.position);
core.special_summoning.erase(pcard);
if(pgroup->it != pgroup->container.end())
core.units.begin()->step = 22;
return FALSE;
......
......@@ -27,7 +27,7 @@ function c29223325.desfilter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable()
end
function c29223325.desfilter2(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() and c:GetSequence()~=5
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() and c:GetSequence()<5
end
function c29223325.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and c29223325.desfilter(chkc) and chkc~=e:GetHandler() end
......
......@@ -22,7 +22,7 @@ function c47766694.initial_effect(c)
c:RegisterEffect(e2)
end
function c47766694.filter(c)
return c:IsFaceup() and c:GetSequence()~=5 and c:IsDestructable()
return c:IsFaceup() and c:GetSequence()<5 and c:IsDestructable()
end
function c47766694.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_SZONE) and c47766694.filter(chkc) end
......
......@@ -11,7 +11,7 @@ function c48800175.initial_effect(c)
c:RegisterEffect(e1)
end
function c48800175.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST)
end
function c48800175.filter(c)
......
......@@ -19,7 +19,7 @@ function c48995978.initial_effect(c)
end
c48995978.xyz_number=88
function c48995978.filter(c)
return c:GetSequence()~=5
return c:GetSequence()<5
end
function c48995978.condition(e,tp,eg,ep,ev,re,r,rp)
return not Duel.IsExistingMatchingCard(c48995978.filter,tp,LOCATION_SZONE,0,1,nil)
......
......@@ -34,7 +34,6 @@ function c99070951.rmop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1)
local tc=g:GetFirst()
if not tc or not tc:IsAbleToRemove() then return end
Duel.ConfirmCards(tp,tc)
Duel.DisableShuffleCheck()
Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT)
tc:RegisterFlagEffect(99070951,RESET_EVENT+0x1fe0000,0,1)
......
......@@ -113,6 +113,7 @@ SUMMON_TYPE_FUSION =0x43000000
SUMMON_TYPE_RITUAL =0x45000000
SUMMON_TYPE_SYNCHRO =0x46000000
SUMMON_TYPE_XYZ =0x49000000
SUMMON_TYPE_PENDULUM =0x4a000000
--Status
STATUS_DISABLED =0x0001 --
STATUS_TO_ENABLE =0x0002 --
......@@ -429,7 +430,7 @@ EFFECT_OVERLAY_REMOVE_REPLACE =245
EFFECT_SCRAP_CHIMERA =246
EFFECT_SPSUM_EFFECT_ACTIVATED =250
EFFECT_MATERIAL_CHECK =251
EFFECT_DISABLE_FIELD =260
EFFECT_DISABLE_FIELD =260
EFFECT_USE_EXTRA_MZONE =261
EFFECT_USE_EXTRA_SZONE =262
EFFECT_MAX_MZONE =263
......
......@@ -164,6 +164,7 @@
!system 1071 反转
!system 1072 卡通
!system 1073 超量
!system 1074 钟摆
!system 1080 (N/A)
#GUI
!system 1100 魔陷破坏
......
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