Commit cf8c6d59 authored by VanillaSalt's avatar VanillaSalt

update

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