Commit 0c7eae59 authored by szefo09's avatar szefo09 Committed by GitHub

Merge pull request #4 from purerosefallen/Android

Android
parents ef14e19f e49b1497
......@@ -715,17 +715,6 @@ public static class BinaryExtensions
{
l2 = r.ReadInt32();
}
if (((flag & (int)Query.Level) != 0) || ((flag & (int)Query.Rank) != 0))
{
if (l1 > l2)
{
data.Level = l1;
}
else
{
data.Level = l2;
}
}
if ((flag & (int)Query.Attribute) != 0)
data.Attribute = r.ReadInt32();
......@@ -741,8 +730,8 @@ public static class BinaryExtensions
r.ReadInt32();
if ((flag & (int)Query.Reason) != 0)
r.ReadInt32();
//if ((flag & (int)Query.ReasonCard) != 0)
// r.ReadInt32();
if ((flag & (int)Query.ReasonCard) != 0)
r.ReadInt32();
if ((flag & (int)Query.EquipCard) != 0)
{
cardToRefresh.addTarget(Program.I().ocgcore.GCS_cardGet(r.ReadGPS(), false));
......@@ -788,6 +777,26 @@ public static class BinaryExtensions
data.LScale = r.ReadInt32();
if ((flag & (int)Query.RScale) != 0)
data.RScale = r.ReadInt32();
int l3 = 0;
if ((flag & (int)Query.Link) != 0)
{
l3 = r.ReadInt32(); //link value
data.rDefense = r.ReadInt32(); //link marker
}
if (((flag & (int)Query.Level) != 0) || ((flag & (int)Query.Rank) != 0) || ((flag & (int)Query.Link) != 0))
{
if (l1 > l2)
{
data.Level = l1;
}
else
{
data.Level = l2;
}
if(l3 > data.Level)
data.Level = l3;
}
cardToRefresh.set_data(data);
//
}
......
......@@ -448,7 +448,7 @@ public class Ocgcore : ServantWithCardDescription
case Condition.duel:
SetBar(Program.I().new_bar_duel, 0, 0);
UIHelper.registEvent(toolBar, "input_", onChat);
UIHelper.registEvent(toolBar, "gg_", onDuelResultConfirmed);
UIHelper.registEvent(toolBar, "gg_", onSurrender);
UIHelper.registEvent(toolBar, "left_", on_left);
UIHelper.registEvent(toolBar, "right_", on_right);
UIHelper.registEvent(toolBar, "rush_", on_rush);
......@@ -769,6 +769,21 @@ public class Ocgcore : ServantWithCardDescription
returnTo();
}
public void onEmergencyExit()
{
if (TcpHelper.tcpClient != null)
{
/*if (TcpHelper.tcpClient.Connected)
{
Program.I().ocgcore.returnServant = Program.I().selectServer;
TcpHelper.tcpClient.Client.Shutdown(0);
TcpHelper.tcpClient.Close();
} */
TcpHelper.tcpClient = null;
}
returnTo();
}
public bool surrended = false;
public void onChat()
......@@ -1303,6 +1318,7 @@ public class Ocgcore : ServantWithCardDescription
logicalClearChain();
surrended = false;
Program.I().room.duelEnded = false;
Program.I().room.joinWithReconnect = false;
turns = 0;
deckReserved = false;
keys.Insert(0, currentMessageIndex);
......@@ -1367,7 +1383,7 @@ public class Ocgcore : ServantWithCardDescription
gameField.currentPhase = GameField.ph.dp;
result = duelResult.disLink;
deckReserved = false;
isFirst = true;
//isFirst = true;
gameInfo.swaped = false;
logicalClearChain();
surrended = false;
......@@ -3402,8 +3418,6 @@ public class Ocgcore : ServantWithCardDescription
cancalable = (r.ReadByte() != 0) || finishable;
ES_min = r.ReadByte();
ES_max = r.ReadByte();
ES_min = finishable ? 0 : 1; // SelectUnselectCard can actually always select 1 card
ES_max = 1; // SelectUnselectCard can actually always select 1 card
ES_level = 0;
count = r.ReadByte();
for (int i = 0; i < count; i++)
......@@ -3420,12 +3434,13 @@ public class Ocgcore : ServantWithCardDescription
allCardsInSelectMessage.Add(card);
}
}
count = r.ReadByte();
for (int i = 0; i < count; i++)
cardsSelected.Clear();
int count2 = r.ReadByte();
for (int i = count; i < count + count2; i++)
{
code = r.ReadInt32();
gps = r.ReadGPS();
/*card = GCS_cardGet(gps, false);
card = GCS_cardGet(gps, false);
if (card != null)
{
card.set_code(code);
......@@ -3433,16 +3448,24 @@ public class Ocgcore : ServantWithCardDescription
card.forSelect = true;
card.selectPtr = i;
allCardsInSelectMessage.Add(card);
}*/
cardsSelected.Add(card);
}
}
if (cancalable && !finishable)
{
gameInfo.addHashedButton("cancleSelected", -1, superButtonType.no, InterString.Get("取消选择@ui"));
}
if (finishable)
{
gameInfo.addHashedButton("sendSelected", 0, superButtonType.yes, InterString.Get("完成选择@ui"));
}
realizeCardsForSelect();
cardsSelected.Clear();
if (ES_selectHint != "")
ES_selectUnselectHint = ES_selectHint;
if (ES_selectUnselectHint != "")
{
gameField.setHint(ES_selectHint + " " + ES_min.ToString() + "-" + ES_max.ToString());
gameField.setHint(ES_selectUnselectHint + " " + ES_min.ToString() + "-" + ES_max.ToString());
}
else
{
......@@ -5649,7 +5672,6 @@ public class Ocgcore : ServantWithCardDescription
}
break;
case GameMessage.SelectCard:
case GameMessage.SelectUnselectCard:
if (cardsSelectable.Count <= ES_min)
{
autoSendCards();
......@@ -5821,18 +5843,6 @@ public class Ocgcore : ServantWithCardDescription
real_send = true;
}
}
if (currentMessage == GameMessage.SelectUnselectCard)
{
if (cardsSelected.Count >= ES_min)
{
sendable = true;
}
if (cardsSelected.Count == ES_max || cardsSelected.Count == cardsSelectable.Count)
{
sendable = true;
real_send = true;
}
}
if (currentMessage == GameMessage.SelectTribute)
{
int all = 0;
......@@ -5879,7 +5889,7 @@ public class Ocgcore : ServantWithCardDescription
}
}
}
else
else if (currentMessage != GameMessage.SelectUnselectCard)
{
gameInfo.removeHashedButton("sendSelected");
}
......@@ -8079,6 +8089,8 @@ public class Ocgcore : ServantWithCardDescription
string ES_phaseString = "";
string ES_selectUnselectHint = "";
void toDefaultHint()
{
gameField.setHint(ES_turnString + ES_phaseString);
......@@ -8486,7 +8498,6 @@ public class Ocgcore : ServantWithCardDescription
}
break;
case GameMessage.SelectCard:
case GameMessage.SelectUnselectCard:
case GameMessage.SelectTribute:
case GameMessage.SelectSum:
if (card.forSelect)
......@@ -8527,6 +8538,16 @@ public class Ocgcore : ServantWithCardDescription
realizeCardsForSelect();
}
break;
case GameMessage.SelectUnselectCard:
if (card.forSelect)
{
cardsSelected.Add(card);
gameInfo.removeHashedButton("sendSelected");
sendSelectedCards();
realize();
toNearest();
}
break;
case GameMessage.SelectChain:
if (card.forSelect)
{
......@@ -8589,16 +8610,9 @@ public class Ocgcore : ServantWithCardDescription
{
BinaryMaster binaryMaster = new BinaryMaster();
for (int i = 0; i < allCardsInSelectMessage.Count; i++)
{
if (Config.ClientVersion>=0x133d)
{
binaryMaster.writer.Write((short)allCardsInSelectMessage[i].counterSELcount);
}
else
{
binaryMaster.writer.Write((byte)allCardsInSelectMessage[i].counterSELcount);
}
}
sendReturn(binaryMaster.get());
}
else
......@@ -8812,8 +8826,9 @@ public class Ocgcore : ServantWithCardDescription
public Dictionary<int, int> sideReference = new Dictionary<int, int>();
void onDuelResultConfirmed()
public void onDuelResultConfirmed()
{
Program.I().room.joinWithReconnect = false;
if (Program.I().room.duelEnded == true || surrended || TcpHelper.tcpClient == null || TcpHelper.tcpClient.Connected == false)
{
......@@ -8845,7 +8860,23 @@ public class Ocgcore : ServantWithCardDescription
return;
}
//RMSshow_yesOrNoForce(InterString.Get("你确定要投降吗?"), new messageSystemValue { value = "yes", hint = "yes" }, new messageSystemValue { value = "no", hint = "no" });
surrended = false;
Program.I().room.duelEnded = false;
Program.I().room.needSide = false;
Program.I().room.sideWaitingObserver = false;
onEmergencyExit();
return;
}
void onSurrender() {
if (Program.I().room.duelEnded == true || surrended || TcpHelper.tcpClient == null || TcpHelper.tcpClient.Connected == false || Program.I().room.needSide == true || condition != Condition.duel)
{
onDuelResultConfirmed();
return;
}
RMSshow_yesOrNoForce(InterString.Get("你确定要投降吗?"), new messageSystemValue { value = "yes", hint = "yes" }, new messageSystemValue { value = "no", hint = "no" });
return;
}
private void sendSorted()
......
......@@ -302,7 +302,7 @@ public class Program : MonoBehaviour
ANDROID_GAME_PATH = jo.Call<string>("GamePath", "/ygocore/");
Screen.sleepTimeout = SleepTimeout.NeverSleep;
if (!File.Exists(ANDROID_GAME_PATH + "updates/version2.0.txt"))
if (!File.Exists(ANDROID_GAME_PATH + "updates/version2.2.txt"))
{
string filePath = Application.streamingAssetsPath + "/ygocore.zip";
var www = new WWW(filePath);
......@@ -327,7 +327,7 @@ public class Program : MonoBehaviour
#elif UNITY_IPHONE //iPhone
string GamePaths = Application.persistentDataPath + "/ygopro2/";
if (!File.Exists(GamePaths + "updates/version2.0.txt"))
if (!File.Exists(GamePaths + "updates/version2.2.txt"))
{
string filePath = Application.streamingAssetsPath + "/ygocore.zip";
ExtractZipFile(System.IO.File.ReadAllBytes(filePath), GamePaths);
......@@ -350,17 +350,38 @@ public class Program : MonoBehaviour
InterString.initialize("config/translation.conf");
GameTextureManager.initialize();
Config.initialize("config/config.conf");
GameStringManager.initialize("strings.conf");//YGOMobile Paths
if (File.Exists("cdb/cards.cdb"))
{
YGOSharp.CardsManager.initialize("cdb/cards.cdb");
}
if (File.Exists("cdb/strings.conf"))
{
GameStringManager.initialize("cdb/strings.conf");
}
if (File.Exists("expansions/strings.conf"))
if (File.Exists("cdb/lflist.conf"))
{
GameStringManager.initialize("expansions/strings.conf");
YGOSharp.BanlistManager.initialize("cdb/lflist.conf");
}
if (File.Exists("strings.conf"))
{
GameStringManager.initialize("strings.conf");//YGOMobile Paths
}
if (File.Exists("lflist.conf"))
{
YGOSharp.BanlistManager.initialize("lflist.conf");//YGOMobile Paths
}
if (File.Exists("cards.cdb"))
{
YGOSharp.CardsManager.initialize("cards.cdb");//YGOMobile Paths
}
if (File.Exists("expansions/lflist.conf"))
{
YGOSharp.BanlistManager.initialize("expansions/lflist.conf");
}
if (File.Exists("expansions/strings.conf"))
{
GameStringManager.initialize("expansions/strings.conf");
}
if (Directory.Exists("expansions"))
{
......@@ -480,10 +501,21 @@ public class Program : MonoBehaviour
{
try
{
if(!Directory.Exists("cdb")) {
Directory.CreateDirectory("cdb");
}
/*if(File.Exists("cdb/cards.cdb"))
File.Delete("cdb/cards.cdb");
if(File.Exists("cdb/lflist.conf"))
File.Delete("cdb/lflist.conf");
if(File.Exists("cdb/strings.conf"))
File.Delete("cdb/strings.conf");*/
HttpDldFile httpDldFile = new HttpDldFile();
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/cards.cdb", Path.Combine("cdb/", "cards.cdb"));
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/lflist.conf", Path.Combine("config/", "lflist.conf"));
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/strings.conf", Path.Combine("config/", "strings.conf"));
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/cards.cdb", "cdb/cards.cdb");
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/lflist.conf", "cdb/lflist.conf");
httpDldFile.Download("http://koishi.222diy.gdn/ygopro/strings.conf", "cdb/strings.conf");
}
catch (Exception e)
{
......
......@@ -190,7 +190,7 @@ public class GameTextureManager
public static Texture2D phase = null;
public static bool AutoPicDownload=true;
public static bool AutoPicDownload;
public static Texture2D rs = null;
......@@ -817,8 +817,8 @@ public class GameTextureManager
if (!File.Exists(path) && pic.code != 0 && AutoPicDownload)
{
//YGOMobile (177x254)
df.Download("http://koishi.222diy.gdn/smallpics/" + pic.code.ToString() + ".jpg", "expansions/pics/" + pic.code.ToString() + ".jpg");
path = "expansions/pics/" + pic.code.ToString() + ".jpg";
df.Download("http://koishi.222diy.gdn/ygopro/pics/" + pic.code.ToString() + ".jpg", "picture/card/" + pic.code.ToString() + ".jpg");
path = "picture/card/" + pic.code.ToString() + ".jpg";
}
/*if (!File.Exists(path) && pic.code != 0 && AutoPicDownload)
{
......
......@@ -32,6 +32,14 @@ public class HttpDldFile
{
client.Timeout = 3500;
}
if (Path.GetExtension(filename).Contains("cdb"))
{
client.Timeout = 15000;
}
if (Path.GetExtension(filename).Contains("conf"))
{
client.Timeout = 3000;
}
client.DownloadFile(new Uri(url), filename + ".tmp");
}
flag = true;
......
......@@ -497,6 +497,7 @@ public class Room : WindowServantSP
Program.I().ocgcore.returnServant = Program.I().selectServer;
needSide = false;
joinWithReconnect = true;
if (Program.I().deckManager.isShowed)
{
Program.I().deckManager.hide();
......@@ -524,6 +525,9 @@ public class Room : WindowServantSP
is_host = ((type >> 4) & 0xf) != 0;
if (is_host)
{
if (selftype < 4 && roomPlayers[selftype] != null) {
roomPlayers[selftype].prep = false;
}
UIHelper.shiftButton(startButton(), true);
lazyRoom.start.localScale = Vector3.one;
lazyRoom.duelist.localPosition = new Vector3(lazyRoom.duelist.localPosition.x, -94.2f, 0);
......@@ -570,12 +574,16 @@ public class Room : WindowServantSP
public bool needSide = false;
public bool joinWithReconnect = false;
public void StocMessage_ChangeSide(BinaryReader r)
{
Program.I().ocgcore.surrended = false;
Program.I().ocgcore.returnServant = Program.I().deckManager;
needSide = true;
if(Program.I().ocgcore.condition != Ocgcore.Condition.duel || joinWithReconnect) { //Change side when reconnect
Program.I().ocgcore.onDuelResultConfirmed();
}
}
GameObject handres = null;
......@@ -741,7 +749,7 @@ public class Room : WindowServantSP
code = r.ReadInt32();
string hexOutput = "0x"+String.Format("{0:X}", code);
Program.I().selectServer.set_version(hexOutput);
RMSshow_none(InterString.Get("你输入的版本号和服务器不一致,[7CFC00]YGOPro2已经智能切换版本号[-],请重新链接。"));
RMSshow_none(InterString.Get("你输入的版本号和服务器不一致,[7CFC00]KoishiPro2已经智能切换版本号[-],请重新链接。"));
break;
default:
break;
......
......@@ -111,8 +111,8 @@ public class RoomList : WindowServantSP
string versionString = UIHelper.getByName<UIInput>(Program.I().selectServer.gameObject, "version_").value;
if (versionString == "")
{
UIHelper.getByName<UIInput>(Program.I().selectServer.gameObject, "version_").value = "0x1348";
versionString = "0x1348";
UIHelper.getByName<UIInput>(Program.I().selectServer.gameObject, "version_").value = "0x1349";
versionString = "0x1349";
}
Program.I().roomList.hide();
Program.I().selectServer.KF_onlineGame(Name, ipString, portString, versionString, pswString);
......
......@@ -52,7 +52,7 @@ public class Setting : WindowServant2D
{
if (collection[i].name.Length > 0 && collection[i].name[0] == '*')
{
if (collection[i].name == "*mouseParticle" || collection[i].name == "*showOff" || collection[i].name == "*Efield")
if (collection[i].name == "*mouseParticle" || collection[i].name == "*showOff" || collection[i].name == "*Efield" || collection[i].name == "*AutoPicDownload")
{
collection[i].value = UIHelper.fromStringToBool(Config.Get(collection[i].name, "1"));
}
......
......@@ -164,8 +164,8 @@ public class SelectServer : WindowServantSP
string versionString = UIHelper.getByName<UIInput>(gameObject, "version_").value;
if (versionString == "")
{
UIHelper.getByName<UIInput>(gameObject, "version_").value = "0x1348";
versionString = "0x1348";
UIHelper.getByName<UIInput>(gameObject, "version_").value = "0x1349";
versionString = "0x1349";
}
KF_onlineGame(Name, ipString, portString, versionString, pswString);
}
......
......@@ -19,17 +19,13 @@ namespace YGOSharp
{
nullName = InterString.Get("未知卡片");
nullString = "";
nullString += "欢迎使用:\r\nYGOPro2 For Android";
nullString += "欢迎使用 KoishiPro2 iOS,本软件免责声明:[url=http://koishi.222diy.gdn/lab.html][u]http://koishi.222diy.gdn/lab.html[/u][/url]";
nullString += "\r\n\r\n";
nullString += "源码:";
nullString += "\r\n「Android」\r\n[url=https://github.com/purerosefallen/ygopro2][u]https://github.com/purerosefallen/ygopro2[/u][/url]";
//nullString += "\r\nWindows:[url=https://github.com/lllyasviel/YGOProUnity_V2][u]https://github.com/lllyasviel/YGOProUnity_V2[/u][/url]";
//nullString += "\r\n\r\n「Windows」\r\n[url=https://github.com/mercury233/ygopro2][u]https://github.com/mercury233/ygopro2[/u][/url]";
nullString += "\r\n\r\n\r\n";
//nullString += "欢迎加入QQ群:";
//nullString += "\r\n①:[url=https://jq.qq.com/?_wv=1027&k=5nq6xJe][u]649612818[/u][/url]";
//nullString += "\r\n③:[url=https://jq.qq.com/?_wv=1027&k=50MZVQA][u]831010207[/u][/url]";
//nullString += "\r\n②:[url=https://jq.qq.com/?_wv=1027&k=5idyod3][u]559276772[/u][/url]";
nullString += "KoishiPro2 iOS的用户QQ群627975038,游戏中遇到任何bug欢迎提交";
nullString += "\r\n\r\n";
nullString += "更多关于电脑/安卓版KoishiPro及7210服务器的信息可加QQ群338443272";
nullString += "\r\n\r\n";
nullString += "喜欢游戏王DIY的朋友欢迎来222服QQ群642043095";
using (SqliteConnection connection = new SqliteConnection("Data Source=" + databaseFullPath))
{
connection.Open();
......
......@@ -23,6 +23,7 @@
Owner = 0x40000,
Status = 0x80000,
LScale = 0x200000,
RScale = 0x400000
RScale = 0x400000,
Link = 0x800000
}
}
Assets/face/0.png

11.1 KB | W: | H:

Assets/face/0.png

10.7 KB | W: | H:

Assets/face/0.png
Assets/face/0.png
Assets/face/0.png
Assets/face/0.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/1.png

11.9 KB | W: | H:

Assets/face/1.png

9.07 KB | W: | H:

Assets/face/1.png
Assets/face/1.png
Assets/face/1.png
Assets/face/1.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/10.png

10.8 KB | W: | H:

Assets/face/10.png

9.34 KB | W: | H:

Assets/face/10.png
Assets/face/10.png
Assets/face/10.png
Assets/face/10.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/11.png

10.7 KB | W: | H:

Assets/face/11.png

10.4 KB | W: | H:

Assets/face/11.png
Assets/face/11.png
Assets/face/11.png
Assets/face/11.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/12.png

10.9 KB | W: | H:

Assets/face/12.png

8.93 KB | W: | H:

Assets/face/12.png
Assets/face/12.png
Assets/face/12.png
Assets/face/12.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/13.png

11.2 KB | W: | H:

Assets/face/13.png

11.4 KB | W: | H:

Assets/face/13.png
Assets/face/13.png
Assets/face/13.png
Assets/face/13.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/14.png

12.3 KB | W: | H:

Assets/face/14.png

10.1 KB | W: | H:

Assets/face/14.png
Assets/face/14.png
Assets/face/14.png
Assets/face/14.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/15.png

11.3 KB | W: | H:

Assets/face/15.png

7.47 KB | W: | H:

Assets/face/15.png
Assets/face/15.png
Assets/face/15.png
Assets/face/15.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/16.png

12.7 KB | W: | H:

Assets/face/16.png

8.44 KB | W: | H:

Assets/face/16.png
Assets/face/16.png
Assets/face/16.png
Assets/face/16.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/17.png

13.3 KB | W: | H:

Assets/face/17.png

11.2 KB | W: | H:

Assets/face/17.png
Assets/face/17.png
Assets/face/17.png
Assets/face/17.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/18.png

10.5 KB | W: | H:

Assets/face/18.png

10.6 KB | W: | H:

Assets/face/18.png
Assets/face/18.png
Assets/face/18.png
Assets/face/18.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/19.png

12.7 KB | W: | H:

Assets/face/19.png

11.1 KB | W: | H:

Assets/face/19.png
Assets/face/19.png
Assets/face/19.png
Assets/face/19.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/2.png

11.1 KB | W: | H:

Assets/face/2.png

8.67 KB | W: | H:

Assets/face/2.png
Assets/face/2.png
Assets/face/2.png
Assets/face/2.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/20.png

14.3 KB | W: | H:

Assets/face/20.png

10.2 KB | W: | H:

Assets/face/20.png
Assets/face/20.png
Assets/face/20.png
Assets/face/20.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/21.png

13.9 KB | W: | H:

Assets/face/21.png

8.65 KB | W: | H:

Assets/face/21.png
Assets/face/21.png
Assets/face/21.png
Assets/face/21.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/22.png

14 KB | W: | H:

Assets/face/22.png

10.4 KB | W: | H:

Assets/face/22.png
Assets/face/22.png
Assets/face/22.png
Assets/face/22.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/23.png

13.9 KB | W: | H:

Assets/face/23.png

10.5 KB | W: | H:

Assets/face/23.png
Assets/face/23.png
Assets/face/23.png
Assets/face/23.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/24.png

12.8 KB | W: | H:

Assets/face/24.png

9.18 KB | W: | H:

Assets/face/24.png
Assets/face/24.png
Assets/face/24.png
Assets/face/24.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/25.png

13.5 KB | W: | H:

Assets/face/25.png

9.07 KB | W: | H:

Assets/face/25.png
Assets/face/25.png
Assets/face/25.png
Assets/face/25.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/26.png

13.8 KB | W: | H:

Assets/face/26.png

11 KB | W: | H:

Assets/face/26.png
Assets/face/26.png
Assets/face/26.png
Assets/face/26.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/27.png

13.3 KB | W: | H:

Assets/face/27.png

10.2 KB | W: | H:

Assets/face/27.png
Assets/face/27.png
Assets/face/27.png
Assets/face/27.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/28.png

13.7 KB | W: | H:

Assets/face/28.png

10.4 KB | W: | H:

Assets/face/28.png
Assets/face/28.png
Assets/face/28.png
Assets/face/28.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/29.png

13.9 KB | W: | H:

Assets/face/29.png

9.22 KB | W: | H:

Assets/face/29.png
Assets/face/29.png
Assets/face/29.png
Assets/face/29.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/3.png

11.1 KB | W: | H:

Assets/face/3.png

10.8 KB | W: | H:

Assets/face/3.png
Assets/face/3.png
Assets/face/3.png
Assets/face/3.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/30.png

13.2 KB | W: | H:

Assets/face/30.png

10.1 KB | W: | H:

Assets/face/30.png
Assets/face/30.png
Assets/face/30.png
Assets/face/30.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/31.png

14.3 KB | W: | H:

Assets/face/31.png

9.22 KB | W: | H:

Assets/face/31.png
Assets/face/31.png
Assets/face/31.png
Assets/face/31.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/32.png

12.7 KB | W: | H:

Assets/face/32.png

6.96 KB | W: | H:

Assets/face/32.png
Assets/face/32.png
Assets/face/32.png
Assets/face/32.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/33.png

9.77 KB | W: | H:

Assets/face/33.png

11.6 KB | W: | H:

Assets/face/33.png
Assets/face/33.png
Assets/face/33.png
Assets/face/33.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/34.png

14 KB | W: | H:

Assets/face/34.png

9.12 KB | W: | H:

Assets/face/34.png
Assets/face/34.png
Assets/face/34.png
Assets/face/34.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/35.png

10.5 KB | W: | H:

Assets/face/35.png

9.74 KB | W: | H:

Assets/face/35.png
Assets/face/35.png
Assets/face/35.png
Assets/face/35.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/36.png

12.9 KB | W: | H:

Assets/face/36.png

8.95 KB | W: | H:

Assets/face/36.png
Assets/face/36.png
Assets/face/36.png
Assets/face/36.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/37.png

14 KB | W: | H:

Assets/face/37.png

8.29 KB | W: | H:

Assets/face/37.png
Assets/face/37.png
Assets/face/37.png
Assets/face/37.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/38.png

13.8 KB | W: | H:

Assets/face/38.png

10.5 KB | W: | H:

Assets/face/38.png
Assets/face/38.png
Assets/face/38.png
Assets/face/38.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/39.png

5.52 KB | W: | H:

Assets/face/39.png

9.29 KB | W: | H:

Assets/face/39.png
Assets/face/39.png
Assets/face/39.png
Assets/face/39.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/4.png

9.18 KB | W: | H:

Assets/face/4.png

11.6 KB | W: | H:

Assets/face/4.png
Assets/face/4.png
Assets/face/4.png
Assets/face/4.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/40.png

13.1 KB | W: | H:

Assets/face/40.png

10.3 KB | W: | H:

Assets/face/40.png
Assets/face/40.png
Assets/face/40.png
Assets/face/40.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/41.png

14.2 KB | W: | H:

Assets/face/41.png

11.6 KB | W: | H:

Assets/face/41.png
Assets/face/41.png
Assets/face/41.png
Assets/face/41.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/42.png

14.2 KB | W: | H:

Assets/face/42.png

11 KB | W: | H:

Assets/face/42.png
Assets/face/42.png
Assets/face/42.png
Assets/face/42.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/43.png

12.7 KB | W: | H:

Assets/face/43.png

10.7 KB | W: | H:

Assets/face/43.png
Assets/face/43.png
Assets/face/43.png
Assets/face/43.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/44.png

13.2 KB | W: | H:

Assets/face/44.png

10.7 KB | W: | H:

Assets/face/44.png
Assets/face/44.png
Assets/face/44.png
Assets/face/44.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/45.png

13.3 KB | W: | H:

Assets/face/45.png

7.68 KB | W: | H:

Assets/face/45.png
Assets/face/45.png
Assets/face/45.png
Assets/face/45.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/46.png

8.5 KB | W: | H:

Assets/face/46.png

10.4 KB | W: | H:

Assets/face/46.png
Assets/face/46.png
Assets/face/46.png
Assets/face/46.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/47.png

13.9 KB | W: | H:

Assets/face/47.png

8.66 KB | W: | H:

Assets/face/47.png
Assets/face/47.png
Assets/face/47.png
Assets/face/47.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/48.png

12.6 KB | W: | H:

Assets/face/48.png

10.2 KB | W: | H:

Assets/face/48.png
Assets/face/48.png
Assets/face/48.png
Assets/face/48.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/49.png

13.9 KB | W: | H:

Assets/face/49.png

11.2 KB | W: | H:

Assets/face/49.png
Assets/face/49.png
Assets/face/49.png
Assets/face/49.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/5.png

12.1 KB | W: | H:

Assets/face/5.png

10.9 KB | W: | H:

Assets/face/5.png
Assets/face/5.png
Assets/face/5.png
Assets/face/5.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/50.png

13.1 KB | W: | H:

Assets/face/50.png

9.86 KB | W: | H:

Assets/face/50.png
Assets/face/50.png
Assets/face/50.png
Assets/face/50.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/51.png

13.8 KB | W: | H:

Assets/face/51.png

9.45 KB | W: | H:

Assets/face/51.png
Assets/face/51.png
Assets/face/51.png
Assets/face/51.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/52.png

13.5 KB | W: | H:

Assets/face/52.png

10.1 KB | W: | H:

Assets/face/52.png
Assets/face/52.png
Assets/face/52.png
Assets/face/52.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/53.png

14.2 KB | W: | H:

Assets/face/53.png

10.7 KB | W: | H:

Assets/face/53.png
Assets/face/53.png
Assets/face/53.png
Assets/face/53.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/54.png

11.6 KB | W: | H:

Assets/face/54.png

8.48 KB | W: | H:

Assets/face/54.png
Assets/face/54.png
Assets/face/54.png
Assets/face/54.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/55.png

13.5 KB | W: | H:

Assets/face/55.png

8.02 KB | W: | H:

Assets/face/55.png
Assets/face/55.png
Assets/face/55.png
Assets/face/55.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/56.png

13.7 KB | W: | H:

Assets/face/56.png

9.1 KB | W: | H:

Assets/face/56.png
Assets/face/56.png
Assets/face/56.png
Assets/face/56.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/57.png

10.9 KB | W: | H:

Assets/face/57.png

11 KB | W: | H:

Assets/face/57.png
Assets/face/57.png
Assets/face/57.png
Assets/face/57.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/58.png

14.3 KB | W: | H:

Assets/face/58.png

11.8 KB | W: | H:

Assets/face/58.png
Assets/face/58.png
Assets/face/58.png
Assets/face/58.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/59.png

13.4 KB | W: | H:

Assets/face/59.png

10.5 KB | W: | H:

Assets/face/59.png
Assets/face/59.png
Assets/face/59.png
Assets/face/59.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/6.png

11 KB | W: | H:

Assets/face/6.png

8.57 KB | W: | H:

Assets/face/6.png
Assets/face/6.png
Assets/face/6.png
Assets/face/6.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/60.png

14.2 KB | W: | H:

Assets/face/60.png

8.21 KB | W: | H:

Assets/face/60.png
Assets/face/60.png
Assets/face/60.png
Assets/face/60.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/61.png

13.9 KB | W: | H:

Assets/face/61.png

8.27 KB | W: | H:

Assets/face/61.png
Assets/face/61.png
Assets/face/61.png
Assets/face/61.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/62.png

14.2 KB | W: | H:

Assets/face/62.png

10.1 KB | W: | H:

Assets/face/62.png
Assets/face/62.png
Assets/face/62.png
Assets/face/62.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/63.png

13.2 KB | W: | H:

Assets/face/63.png

10 KB | W: | H:

Assets/face/63.png
Assets/face/63.png
Assets/face/63.png
Assets/face/63.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/64.png

14.1 KB | W: | H:

Assets/face/64.png

9.6 KB | W: | H:

Assets/face/64.png
Assets/face/64.png
Assets/face/64.png
Assets/face/64.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/65.png

14.1 KB | W: | H:

Assets/face/65.png

9.55 KB | W: | H:

Assets/face/65.png
Assets/face/65.png
Assets/face/65.png
Assets/face/65.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/66.png

13.8 KB | W: | H:

Assets/face/66.png

9.82 KB | W: | H:

Assets/face/66.png
Assets/face/66.png
Assets/face/66.png
Assets/face/66.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/67.png

13.4 KB | W: | H:

Assets/face/67.png

9.8 KB | W: | H:

Assets/face/67.png
Assets/face/67.png
Assets/face/67.png
Assets/face/67.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/68.png

12.1 KB | W: | H:

Assets/face/68.png

9.95 KB | W: | H:

Assets/face/68.png
Assets/face/68.png
Assets/face/68.png
Assets/face/68.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/69.png

12.4 KB | W: | H:

Assets/face/69.png

9.37 KB | W: | H:

Assets/face/69.png
Assets/face/69.png
Assets/face/69.png
Assets/face/69.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/7.png

8.75 KB | W: | H:

Assets/face/7.png

9.09 KB | W: | H:

Assets/face/7.png
Assets/face/7.png
Assets/face/7.png
Assets/face/7.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/70.png

13.5 KB | W: | H:

Assets/face/70.png

10.6 KB | W: | H:

Assets/face/70.png
Assets/face/70.png
Assets/face/70.png
Assets/face/70.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/71.png

13.9 KB | W: | H:

Assets/face/71.png

9.56 KB | W: | H:

Assets/face/71.png
Assets/face/71.png
Assets/face/71.png
Assets/face/71.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/72.png

14.3 KB | W: | H:

Assets/face/72.png

10.2 KB | W: | H:

Assets/face/72.png
Assets/face/72.png
Assets/face/72.png
Assets/face/72.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/73.png

12.6 KB | W: | H:

Assets/face/73.png

11.2 KB | W: | H:

Assets/face/73.png
Assets/face/73.png
Assets/face/73.png
Assets/face/73.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/74.png

5.09 KB | W: | H:

Assets/face/74.png

10.7 KB | W: | H:

Assets/face/74.png
Assets/face/74.png
Assets/face/74.png
Assets/face/74.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/75.png

9.57 KB | W: | H:

Assets/face/75.png

9.52 KB | W: | H:

Assets/face/75.png
Assets/face/75.png
Assets/face/75.png
Assets/face/75.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/76.png

12.1 KB | W: | H:

Assets/face/76.png

11.3 KB | W: | H:

Assets/face/76.png
Assets/face/76.png
Assets/face/76.png
Assets/face/76.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/77.png

11.4 KB | W: | H:

Assets/face/77.png

10.7 KB | W: | H:

Assets/face/77.png
Assets/face/77.png
Assets/face/77.png
Assets/face/77.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/78.png

11 KB | W: | H:

Assets/face/78.png

11 KB | W: | H:

Assets/face/78.png
Assets/face/78.png
Assets/face/78.png
Assets/face/78.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/79.png

11 KB | W: | H:

Assets/face/79.png

10.9 KB | W: | H:

Assets/face/79.png
Assets/face/79.png
Assets/face/79.png
Assets/face/79.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/8.png

10.9 KB | W: | H:

Assets/face/8.png

9.66 KB | W: | H:

Assets/face/8.png
Assets/face/8.png
Assets/face/8.png
Assets/face/8.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/80.png

13.6 KB | W: | H:

Assets/face/80.png

12.1 KB | W: | H:

Assets/face/80.png
Assets/face/80.png
Assets/face/80.png
Assets/face/80.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/81.png

14.1 KB | W: | H:

Assets/face/81.png

11.1 KB | W: | H:

Assets/face/81.png
Assets/face/81.png
Assets/face/81.png
Assets/face/81.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/82.png

12.7 KB | W: | H:

Assets/face/82.png

11.5 KB | W: | H:

Assets/face/82.png
Assets/face/82.png
Assets/face/82.png
Assets/face/82.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/83.png

12.8 KB | W: | H:

Assets/face/83.png

10.1 KB | W: | H:

Assets/face/83.png
Assets/face/83.png
Assets/face/83.png
Assets/face/83.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/84.png

14.1 KB | W: | H:

Assets/face/84.png

10.2 KB | W: | H:

Assets/face/84.png
Assets/face/84.png
Assets/face/84.png
Assets/face/84.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/85.png

13.6 KB | W: | H:

Assets/face/85.png

11.5 KB | W: | H:

Assets/face/85.png
Assets/face/85.png
Assets/face/85.png
Assets/face/85.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/86.png

14 KB | W: | H:

Assets/face/86.png

10.9 KB | W: | H:

Assets/face/86.png
Assets/face/86.png
Assets/face/86.png
Assets/face/86.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/87.png

14.2 KB | W: | H:

Assets/face/87.png

10.7 KB | W: | H:

Assets/face/87.png
Assets/face/87.png
Assets/face/87.png
Assets/face/87.png
  • 2-up
  • Swipe
  • Onion skin
Assets/face/88.png

14 KB | W: | H:

Assets/face/88.png

9.82 KB | W: | H:

Assets/face/88.png
Assets/face/88.png
Assets/face/88.png
Assets/face/88.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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