Commit 575b8c4f authored by mercury233's avatar mercury233

Merge branch 'patch-v1362' into 'master'

Patch v1362

See merge request !7
parents 79c7623c 368a1319
Pipeline #40304 passed with stages
in 140 minutes and 45 seconds
using System;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public static class Config
{
public static uint ClientVersion = 0x1361;
public static uint ClientVersion = 0x1362;
private static readonly List<oneString> translations = new List<oneString>();
......
......@@ -44,6 +44,7 @@ public static class TcpHelper
networkStream = tcpClient.GetStream();
var t = new Thread(receiver);
t.Start();
CtosMessage_ExternalAddress(ipString);
CtosMessage_PlayerInfo(name);
CtosMessage_JoinGame(pswString, version);
}
......@@ -310,6 +311,15 @@ public static class TcpHelper
Send(message);
}
public static void CtosMessage_ExternalAddress(string hostname)
{
var message = new Package();
message.Fuction = (int) CtosMessage.ExternalAddress;
message.Data.writer.Write((UInt32)0);
message.Data.writer.WriteUnicode(hostname, hostname.Length + 1);
Send(message);
}
public static void CtosMessage_PlayerInfo(string name)
{
var message = new Package();
......
......@@ -30,6 +30,7 @@ public class Effect
public string desc;
public int flag;
public int ptr;
public bool forced = false;
}
public class gameCard : OCGobject
......
......@@ -59,6 +59,7 @@ public class Ocgcore : ServantWithCardDescription
private arrow Arrow;
private autoForceChainHandlerType autoForceChainHandler = autoForceChainHandlerType.manDoAll;
private List<gameCard> chainCards = new List<gameCard>();
private float camera_max = -17.5f;
......@@ -1048,11 +1049,20 @@ public class Ocgcore : ServantWithCardDescription
r.ReadChar();
int count = r.ReadByte();
int spcount = r.ReadByte();
int forced = r.ReadByte();
var hint0 = r.ReadInt32();
var hint1 = r.ReadInt32();
var ignore = false;
if (forced == 0)
bool forced = false;
for (int i = 0; i < count; i++)
{
r.ReadByte(); // flag
int f = r.ReadByte(); // forced
if (f == 1) forced = true;
r.ReadInt32(); // card id
r.ReadGPS();
r.ReadInt32(); // desc
}
if (!forced)
{
var condition = gameInfo.get_condition();
if (condition == gameInfo.chainCondition.no)
......@@ -2023,6 +2033,7 @@ public class Ocgcore : ServantWithCardDescription
break;
case GameMessage.ConfirmCards:
player = localPlayer(r.ReadByte());
bool skip_panel = r.ReadByte() == 1;
count = r.ReadByte();
for (var i = 0; i < count; i++)
{
......@@ -3106,14 +3117,15 @@ public class Ocgcore : ServantWithCardDescription
player = localPlayer(r.ReadChar());
count = r.ReadByte();
int spcount = r.ReadByte();
int forced = r.ReadByte();
var hint0 = r.ReadInt32();
var hint1 = r.ReadInt32();
var chainCards = new List<gameCard>();
chainCards = new List<gameCard>();
var forceCount = 0;
for (var i = 0; i < count; i++)
{
var flag = 0;
if (length_of_message % 12 != 0) flag = r.ReadChar();
var flag = r.ReadChar();
var forced = r.ReadByte();
forceCount += forced;
code = r.ReadInt32() % 1000000000;
gps = r.ReadGPS();
desc = GameStringManager.get(r.ReadInt32());
......@@ -3127,13 +3139,14 @@ public class Ocgcore : ServantWithCardDescription
eff.flag = flag;
eff.ptr = i;
eff.desc = desc;
eff.forced = forced > 0;
card.effects.Add(eff);
}
}
var chain_condition = gameInfo.get_condition();
var handle_flag = 0;
if (forced == 0)
if (forceCount == 0)
{
//无强制发动的卡
if (spcount == 0)
......@@ -3302,8 +3315,21 @@ public class Ocgcore : ServantWithCardDescription
if (handle_flag == 4)
{
//有一张强制发动的卡 回应--
var answer = -1;
foreach (var ccard in chainCards)
{
foreach (var effect in ccard.effects)
{
if (effect.forced)
{
answer = effect.ptr;
break;
}
}
if (answer >= 0) break;
}
binaryMaster = new BinaryMaster();
binaryMaster.writer.Write(chainCards[0].effects[0].ptr);
binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get());
}
......@@ -3457,6 +3483,11 @@ public class Ocgcore : ServantWithCardDescription
card.selectPtr = i;
card.levelForSelect_1 = para & 0xffff;
card.levelForSelect_2 = para >> 16;
if ((para & 0x80000000) > 0)
{
card.levelForSelect_1 = para & 0x7fffffff;
card.levelForSelect_2 = card.levelForSelect_1;
}
if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1;
allCardsInSelectMessage.Add(card);
cardsMustBeSelected.Add(card);
......@@ -3478,6 +3509,11 @@ public class Ocgcore : ServantWithCardDescription
card.selectPtr = i;
card.levelForSelect_1 = para & 0xffff;
card.levelForSelect_2 = para >> 16;
if ((para & 0x80000000) > 0)
{
card.levelForSelect_1 = para & 0x7fffffff;
card.levelForSelect_2 = card.levelForSelect_1;
}
if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1;
allCardsInSelectMessage.Add(card);
card.forSelect = true;
......@@ -3734,6 +3770,7 @@ public class Ocgcore : ServantWithCardDescription
break;
case GameMessage.ConfirmCards:
player = localPlayer(r.ReadByte());
var skip_panel = r.ReadByte() == 1;
count = r.ReadByte();
var t2 = 0;
var t3 = 0;
......@@ -3823,6 +3860,12 @@ public class Ocgcore : ServantWithCardDescription
t2 = 0;
clearResponse();
}
else if (skip_panel)
{
Sleep(t2);
t2 = 0;
clearResponse();
}
}
Sleep(t2);
......@@ -7434,8 +7477,21 @@ public class Ocgcore : ServantWithCardDescription
autoForceChainHandler = autoForceChainHandlerType.autoHandleAll;
try
{
var answer = -1;
foreach (var card in chainCards)
{
foreach (var effect in card.effects)
{
if (effect.forced)
{
answer = effect.ptr;
break;
}
}
if (answer >= 0) break;
}
binaryMaster = new BinaryMaster();
binaryMaster.writer.Write(0);
binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get());
}
catch (Exception e)
......
......@@ -738,11 +738,11 @@ namespace Percy
move(1);
count = move(1);
move(1);
move(1);
move(4);
move(4);
for (var i = 0; i < count; i++)
{
move(1);
move(1);
move(4);
move(4);
......@@ -779,6 +779,7 @@ namespace Percy
move(move(1) * 7);
break;
case GameMessage.ConfirmCards:
move(1);
move(1);
move(move(1) * 7);
break;
......
......@@ -13,6 +13,7 @@
Surrender = 0x14,
TimeConfirm = 0x15,
Chat = 0x16,
ExternalAddress = 0x17,
HsToDuelist = 0x20,
HsToObserver = 0x21,
HsReady = 0x22,
......
......@@ -940,7 +940,7 @@ MonoBehaviour:
keepCrispWhenShrunk: 1
mTrueTypeFont: {fileID: 12800000, guid: f775853fdfd14bb47934543e95c3bae3, type: 3}
mFont: {fileID: 0}
mText: YGOPro2 v2.5.1 1.036.1
mText: YGOPro2 v2.5.2 1.036.2
mFontSize: 18
mFontStyle: 0
mAlignment: 1
......
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