├── .gitattributes ├── AlchemistCodeCode ├── packages.config ├── App.config ├── Network │ ├── Requests │ │ ├── ReqQuestParam.cs │ │ ├── ReqMasterParam.cs │ │ ├── ReqHome.cs │ │ ├── ReqGacha.cs │ │ ├── ReqAwardList.cs │ │ ├── ReqBundleParam.cs │ │ ├── ReqFriendList.cs │ │ ├── ReqLoginPack.cs │ │ ├── ReqBingoProgress.cs │ │ ├── ReqProductParam.cs │ │ ├── ReqGachaHistory.cs │ │ ├── ReqSendAlterData.cs │ │ ├── ReqSupporter.cs │ │ ├── ReqTrophyProgress.cs │ │ ├── ReqDebugDataReset.cs │ │ ├── ReqHikkoshiToken.cs │ │ ├── ReqEventShopList.cs │ │ ├── ReqFriendFollower.cs │ │ ├── ReqItemAddStmPaid.cs │ │ ├── ReqTowerSupporter.cs │ │ ├── ReqBuyGold.cs │ │ ├── ReqItemAbilPointPaid.cs │ │ ├── ReqItemAddBoxPaid.cs │ │ ├── ReqItemShop.cs │ │ ├── ReqLimitedShopList.cs │ │ ├── ReqChatChannelMaster.cs │ │ ├── ReqChatMessageOffical.cs │ │ ├── ReqFriendReq.cs │ │ ├── ReqJobRankup.cs │ │ ├── ReqUnitUnlock.cs │ │ ├── ReqChatChannelAutoAssign.cs │ │ ├── ReqItemComposit.cs │ │ ├── ReqMPVersion.cs │ │ ├── ReqHikkoshiExec.cs │ │ ├── ReqItemCompositAll.cs │ │ ├── ReqFriendFavoriteAdd.cs │ │ ├── ReqBtlComResume.cs │ │ ├── ReqFgGAuth.cs │ │ ├── ReqSetLanguage.cs │ │ ├── ReqFriendFavoriteRemove.cs │ │ ├── ReqFriendFind.cs │ │ ├── ReqItemShopUpdate.cs │ │ ├── ReqSetName.cs │ │ ├── ReqTowerBtlComResume.cs │ │ ├── ReqFriendApprove.cs │ │ ├── ReqBtlColo.cs │ │ ├── ReqGetSupport.cs │ │ ├── ReqBtlColoHistory.cs │ │ ├── ReqFriendFindByUsername.cs │ │ ├── ReqGoogleReview.cs │ │ ├── ReqVersusSeason.cs │ │ ├── ReqBtlCom.cs │ │ ├── ReqJobEquip.cs │ │ ├── ReqItemShopBuypaid.cs │ │ ├── ReqBtlColoReset.cs │ │ ├── ReqVersusLine.cs │ │ ├── ReqVersusLineMake.cs │ │ ├── ReqItemEventShopUpdate.cs │ │ ├── ReqReLogin.cs │ │ ├── ReqAlterCheck.cs │ │ ├── ReqArtifactFavorite.cs │ │ ├── ReqSetSupport.cs │ │ ├── ReqTutUpdate.cs │ │ ├── ReqChatUserProfile.cs │ │ ├── ReqAddChatBlackList.cs │ │ ├── ReqTower.cs │ │ ├── ReqArtifactAddRare.cs │ │ ├── ReqPlayNew.cs │ │ ├── ReqRemoveChatBlackList.cs │ │ ├── ReqTowerReset.cs │ │ ├── ReqBtlComOpen.cs │ │ ├── ReqBtlComReset.cs │ │ ├── ReqArtifactAdd.cs │ │ ├── ReqShopLineup.cs │ │ ├── ReqBtlColoRanking.cs │ │ ├── ReqEventShopItemList.cs │ │ ├── ReqMPRoom.cs │ │ ├── ReqUpdateSelectAward.cs │ │ ├── ReqGetSessionID.cs │ │ ├── ReqLimitedShopItemList.cs │ │ ├── ReqSendChatMessage.cs │ │ ├── ReqSendChatStamp.cs │ │ ├── ReqFriendReject.cs │ │ ├── ReqFriendRemove.cs │ │ ├── ReqLogin.cs │ │ ├── ReqHealAp.cs │ │ ├── ReqMultiCheat.cs │ │ ├── ReqProductBuy.cs │ │ ├── ReqVersusRoomUpdate.cs │ │ ├── ReqMPRoomUpdate.cs │ │ ├── ReqTowerReward.cs │ │ ├── ReqItemEventShopBuypaid.cs │ │ ├── ReqJobRankupAll.cs │ │ ├── ReqGAuthPasscode.cs │ │ ├── ReqMultiRank.cs │ │ ├── ReqVersusRoomJoin.cs │ │ ├── ReqItemLimitedShopBuypaid.cs │ │ ├── ReqCheckFacebookID.cs │ │ ├── ReqCheckVersion.cs │ │ ├── ReqJobAbility.cs │ │ ├── ReqVersusStatus.cs │ │ ├── ReqAttachFacebookToDevice.cs │ │ ├── ReqVersusStart.cs │ │ ├── ReqGachaExec.cs │ │ ├── ReqJobEquipV2.cs │ │ ├── ReqChatMessage.cs │ │ ├── ReqMultiPlayResume.cs │ │ ├── ReqGetDeviceID.cs │ │ ├── ReqVersusResume.cs │ │ ├── ReqGAuthMigrate.cs │ │ ├── ReqGetAccessToken.cs │ │ ├── ReqUnitPlus.cs │ │ ├── ReqUnitRare.cs │ │ ├── ReqBtlComCont.cs │ │ ├── ReqArtifactSell.cs │ │ ├── ReqVersusMake.cs │ │ ├── ReqArtifactConvert.cs │ │ ├── ReqBtlComRaid.cs │ │ ├── ReqBtlTowerComReq.cs │ │ ├── ReqItemSell.cs │ │ ├── ReqSendSupportEmail.cs │ │ ├── ReqMPRoomJoin.cs │ │ ├── ReqMPRoomMake.cs │ │ ├── ReqTowerRecover.cs │ │ ├── ReqGAuthMigrateFgG.cs │ │ ├── ReqUnitExpAdd.cs │ │ ├── ReqMigrateFacebookToDevice.cs │ │ ├── ReqRegisterDeviceToFacebook.cs │ │ ├── ReqBtlColoReq.cs │ │ ├── ReqChargeCheck.cs │ │ ├── ReqSkinSet.cs │ │ ├── ReqTowerRank.cs │ │ ├── ReqUnitJob.cs │ │ ├── ReqChatBlackList.cs │ │ ├── ReqSellPiece.cs │ │ ├── ReqMailSelect.cs │ │ ├── ReqArtifactEnforce.cs │ │ ├── ReqEquipExpAdd.cs │ │ ├── ReqVersus.cs │ │ ├── ReqChatChannelList.cs │ │ ├── ReqMail.cs │ │ ├── ReqAbilityRankUp.cs │ │ ├── ReqBtlComReq.cs │ │ ├── ReqParty.cs │ │ ├── ReqMailRead.cs │ │ ├── ReqArtifactSet.cs │ │ ├── ReqUpdateTrophy.cs │ │ ├── ReqUpdateBingo.cs │ │ ├── ReqVersusEnd.cs │ │ ├── ReqBtlComEnd.cs │ │ └── ReqTowerBtlComEnd.cs │ ├── Networking.cs │ └── WebAPI.cs ├── LICENSE ├── GameManager.cs ├── Properties │ └── AssemblyInfo.cs ├── SaveFile.cs ├── Program.cs └── AlchemistCodeCode.csproj ├── DataExtractor ├── packages.config ├── App.config ├── Wiki │ ├── Skills.cs │ ├── Equipments.cs │ ├── Units.cs │ └── Jobs.cs ├── Properties │ └── AssemblyInfo.cs ├── Program.cs └── DataExtractor.csproj ├── README.md ├── LICENSE ├── AlchemistCodeCode.sln └── .gitignore /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto -------------------------------------------------------------------------------- /AlchemistCodeCode/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /AlchemistCodeCode/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqQuestParam.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqQuestParam : WebAPI 7 | { 8 | public ReqQuestParam() 9 | { 10 | this.name = "mst/10/quest"; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMasterParam.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMasterParam : WebAPI 7 | { 8 | public ReqMasterParam() 9 | { 10 | this.name = "mst/10/master"; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqHome.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqHome : WebAPI 7 | { 8 | public ReqHome() 9 | { 10 | this.name = "home"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGacha.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGacha : WebAPI 7 | { 8 | public ReqGacha() 9 | { 10 | this.name = "gacha"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqAwardList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqAwardList : WebAPI 7 | { 8 | public ReqAwardList() 9 | { 10 | this.name = "award"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBundleParam.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBundleParam : WebAPI 7 | { 8 | public ReqBundleParam() 9 | { 10 | this.name = "bundle"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendList : WebAPI 7 | { 8 | public ReqFriendList() 9 | { 10 | this.name = "friend"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqLoginPack.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqLoginPack : WebAPI 7 | { 8 | public ReqLoginPack() 9 | { 10 | this.name = "login/param"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBingoProgress.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBingoProgress : WebAPI 7 | { 8 | public ReqBingoProgress() 9 | { 10 | this.name = "bingo"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqProductParam.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqProductParam : WebAPI 7 | { 8 | public ReqProductParam() 9 | { 10 | this.name = "product"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGachaHistory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGachaHistory : WebAPI 7 | { 8 | public ReqGachaHistory() 9 | { 10 | this.name = "gacha/history"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSendAlterData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqSendAlterData : WebAPI 7 | { 8 | public ReqSendAlterData() 9 | { 10 | this.name = "master/log"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSupporter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqSupporter : WebAPI 7 | { 8 | public ReqSupporter() 9 | { 10 | this.name = "btl/com/supportlist"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTrophyProgress.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqTrophyProgress : WebAPI 7 | { 8 | public ReqTrophyProgress() 9 | { 10 | this.name = "trophy"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqDebugDataReset.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqDebugDataReset : WebAPI 7 | { 8 | public ReqDebugDataReset() 9 | { 10 | this.name = "debug/reset"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqHikkoshiToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqHikkoshiToken : WebAPI 7 | { 8 | public ReqHikkoshiToken() 9 | { 10 | this.name = "hikkoshi/token"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqEventShopList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqEventShopList : WebAPI 7 | { 8 | public ReqEventShopList() 9 | { 10 | this.name = "shop/event/shoplist"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendFollower.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendFollower : WebAPI 7 | { 8 | public ReqFriendFollower() 9 | { 10 | this.name = "friend/follower"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemAddStmPaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemAddStmPaid : WebAPI 7 | { 8 | public ReqItemAddStmPaid() 9 | { 10 | this.name = "item/addstmpaid"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerSupporter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqTowerSupporter : WebAPI 7 | { 8 | public ReqTowerSupporter() 9 | { 10 | this.name = "tower/supportlist"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBuyGold.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBuyGold : WebAPI 7 | { 8 | public ReqBuyGold(int coin) 9 | { 10 | this.name = "shop/gold/buy"; 11 | this.body = WebAPI.GetRequestString("\"coin\":" + coin.ToString()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemAbilPointPaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemAbilPointPaid : WebAPI 7 | { 8 | public ReqItemAbilPointPaid() 9 | { 10 | this.name = "item/addappaid"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemAddBoxPaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemAddBoxPaid : WebAPI 7 | { 8 | public ReqItemAddBoxPaid(long iid) 9 | { 10 | this.name = "item/addboxpaid"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemShop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemShop : WebAPI 7 | { 8 | public ReqItemShop(string iname) 9 | { 10 | this.name = "shop"; 11 | this.body = WebAPI.GetRequestString("\"iname\":\"" + iname + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqLimitedShopList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqLimitedShopList : WebAPI 7 | { 8 | public ReqLimitedShopList() 9 | { 10 | this.name = "shop/limited/shoplist"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatChannelMaster.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqChatChannelMaster : WebAPI 7 | { 8 | public ReqChatChannelMaster() 9 | { 10 | this.name = "chat/channel/master"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatMessageOffical.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqChatMessageOffical : WebAPI 7 | { 8 | public ReqChatMessageOffical() 9 | { 10 | this.name = "chat/message/offical"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendReq.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendReq : WebAPI 7 | { 8 | public ReqFriendReq(string fuid) 9 | { 10 | this.name = "friend/req"; 11 | this.body = WebAPI.GetRequestString("\"fuid\":\"" + fuid + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqJobRankup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqJobRankup : WebAPI 7 | { 8 | public ReqJobRankup(long iid_job) 9 | { 10 | this.name = "unit/job/equip/lvup/"; 11 | this.body = WebAPI.GetRequestString("\"iid\":" + iid_job); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUnitUnlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqUnitUnlock : WebAPI 7 | { 8 | public ReqUnitUnlock(string iname) 9 | { 10 | this.name = "unit/add"; 11 | this.body = WebAPI.GetRequestString("\"iname\":\"" + iname + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatChannelAutoAssign.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqChatChannelAutoAssign : WebAPI 7 | { 8 | public ReqChatChannelAutoAssign() 9 | { 10 | this.name = "chat/channel/auto"; 11 | this.body = WebAPI.GetRequestString(null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemComposit.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemComposit : WebAPI 7 | { 8 | public ReqItemComposit(string iname) 9 | { 10 | this.name = "item/gousei"; 11 | this.body = WebAPI.GetRequestString("\"iname\":\"" + iname + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMPVersion.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMPVersion : WebAPI 7 | { 8 | public ReqMPVersion() 9 | { 10 | this.name = "btl/multi/check"; 11 | this.body = string.Empty; 12 | this.body = WebAPI.GetRequestString(this.body); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqHikkoshiExec.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqHikkoshiExec : WebAPI 7 | { 8 | public ReqHikkoshiExec(string token) 9 | { 10 | this.name = "hikkoshi/exec"; 11 | this.body = WebAPI.GetRequestString("\"token\":\"" + token + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemCompositAll.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemCompositAll : WebAPI 7 | { 8 | public ReqItemCompositAll(string iname) 9 | { 10 | this.name = "item/gouseiall"; 11 | this.body = WebAPI.GetRequestString("\"iname\":\"" + iname + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendFavoriteAdd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendFavoriteAdd : WebAPI 7 | { 8 | public ReqFriendFavoriteAdd(string fuid) 9 | { 10 | this.name = "friend/favorite/add"; 11 | this.body = WebAPI.GetRequestString("\"fuid\":\"" + fuid + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComResume.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBtlComResume : WebAPI 7 | { 8 | public ReqBtlComResume(long btlid) 9 | { 10 | this.name = "btl/com/resume"; 11 | this.body = "\"btlid\":" + btlid; 12 | this.body = WebAPI.GetRequestString(this.body); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFgGAuth.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFgGAuth : WebAPI 7 | { 8 | public enum eAuthStatus 9 | { 10 | None, 11 | Disable, 12 | NotSynchronized, 13 | Synchronized 14 | } 15 | 16 | public ReqFgGAuth() 17 | { 18 | this.name = "achieve/auth"; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSetLanguage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqSetLanguage : WebAPI 7 | { 8 | public ReqSetLanguage(string language) 9 | { 10 | string str = language; 11 | this.name = "setlanguage"; 12 | this.body = WebAPI.GetRequestString("\"lang\":\"" + str + "\""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendFavoriteRemove.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendFavoriteRemove : WebAPI 7 | { 8 | public ReqFriendFavoriteRemove(string fuid) 9 | { 10 | this.name = "friend/favorite/remove"; 11 | this.body = WebAPI.GetRequestString("\"fuid\":\"" + fuid + "\""); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendFind.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendFind : WebAPI 7 | { 8 | public ReqFriendFind(string fuid) 9 | { 10 | fuid = WebAPI.EscapeString(fuid); 11 | this.name = "friend/find"; 12 | this.body = WebAPI.GetRequestString("\"fuid\":\"" + fuid + "\""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemShopUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemShopUpdate : WebAPI 7 | { 8 | public ReqItemShopUpdate(string iname) 9 | { 10 | this.name = "shop/update"; 11 | this.body = "\"iname\":\"" + iname + "\""; 12 | this.body = WebAPI.GetRequestString(this.body); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSetName.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqSetName : WebAPI 7 | { 8 | public ReqSetName(string username) 9 | { 10 | username = WebAPI.EscapeString(username); 11 | this.name = "setname"; 12 | this.body = WebAPI.GetRequestString("\"name\":\"" + username + "\""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerBtlComResume.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqTowerBtlComResume : WebAPI 7 | { 8 | public ReqTowerBtlComResume(long btlid) 9 | { 10 | this.name = "tower/btl/resume"; 11 | this.body = "\"btlid\":" + btlid; 12 | this.body = WebAPI.GetRequestString(this.body); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DataExtractor/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendApprove.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendApprove : WebAPI 7 | { 8 | public ReqFriendApprove(string fuid) 9 | { 10 | fuid = WebAPI.EscapeString(fuid); 11 | this.name = "friend/approve"; 12 | this.body = WebAPI.GetRequestString("\"fuid\":\"" + fuid + "\""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlColo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlColo : WebAPI 8 | { 9 | public ReqBtlColo() 10 | { 11 | this.name = "btl/colo"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGetSupport.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqGetSupport : WebAPI 8 | { 9 | public ReqGetSupport() 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "support"; 13 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlColoHistory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlColoHistory : WebAPI 8 | { 9 | public ReqBtlColoHistory() 10 | { 11 | this.name = "btl/colo/history/"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendFindByUsername.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendFindByUsername : WebAPI 7 | { 8 | public ReqFriendFindByUsername(string username) 9 | { 10 | username = WebAPI.EscapeString(username); 11 | this.name = "friend/search"; 12 | this.body = WebAPI.GetRequestString("\"name\":\"" + username + "\""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGoogleReview.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqGoogleReview : WebAPI 8 | { 9 | public ReqGoogleReview() 10 | { 11 | this.name = "serial/register/greview"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusSeason.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusSeason : WebAPI 7 | { 8 | public class Response 9 | { 10 | public int unreadmail; 11 | } 12 | 13 | public ReqVersusSeason() 14 | { 15 | this.name = "vs/towermatch/season"; 16 | this.body = string.Empty; 17 | this.body = WebAPI.GetRequestString(this.body); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlCom.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBtlCom : WebAPI 7 | { 8 | public ReqBtlCom(bool refresh = false) 9 | { 10 | this.name = "btl/com"; 11 | if (refresh) 12 | { 13 | this.body = WebAPI.GetRequestString("\"event\":1"); 14 | } 15 | else 16 | { 17 | this.body = WebAPI.GetRequestString(null); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqJobEquip.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqJobEquip : WebAPI 7 | { 8 | public ReqJobEquip(long iid_job, long id_equip) 9 | { 10 | this.name = "unit/job/equip/set"; 11 | this.body = "\"iid\":" + iid_job + ","; 12 | this.body = this.body + "\"id_equip\":" + id_equip; 13 | this.body = WebAPI.GetRequestString(this.body); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemShopBuypaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemShopBuypaid : WebAPI 7 | { 8 | public ReqItemShopBuypaid(string iname, int id) 9 | { 10 | this.name = "shop/buy"; 11 | this.body = "\"iname\":\"" + iname + "\","; 12 | this.body = this.body + "\"id\":" + id.ToString(); 13 | this.body = WebAPI.GetRequestString(this.body); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlColoReset.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlColoReset : WebAPI 8 | { 9 | public ReqBtlColoReset(ColoResetTypes reset) 10 | { 11 | this.name = "btl/colo/reset/" + reset.ToString(); 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusLine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusLine : WebAPI 7 | { 8 | public ReqVersusLine(string roomname) 9 | { 10 | this.name = "vs/friendmatch/line/recruitment"; 11 | this.body = string.Empty; 12 | this.body = this.body + "\"token\":\"" + JsonEscape.Escape(roomname) + "\""; 13 | this.body = WebAPI.GetRequestString(this.body); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusLineMake.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusLineMake : WebAPI 7 | { 8 | public ReqVersusLineMake(string roomname) 9 | { 10 | this.name = "vs/friendmatch/line/make"; 11 | this.body = string.Empty; 12 | this.body = this.body + "\"token\":\"" + JsonEscape.Escape(roomname) + "\""; 13 | this.body = WebAPI.GetRequestString(this.body); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemEventShopUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqItemEventShopUpdate : WebAPI 7 | { 8 | public ReqItemEventShopUpdate(string iname, string costiname) 9 | { 10 | this.name = "shop/update"; 11 | this.body = "\"iname\":\"" + iname + "\","; 12 | this.body = this.body + "\"costiname\":\"" + costiname + "\""; 13 | this.body = WebAPI.GetRequestString(this.body); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqReLogin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqReLogin : WebAPI 8 | { 9 | public ReqReLogin(int ymd) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"yymmdd\":"); 13 | stringBuilder.Append(ymd); 14 | this.name = "login/span"; 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqAlterCheck.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqAlterCheck : WebAPI 8 | { 9 | public ReqAlterCheck(string hash) 10 | { 11 | this.name = "altercheck"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("hash"); 14 | stringBuilder.Append(hash); 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactFavorite.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqArtifactFavorite : WebAPI 7 | { 8 | public ReqArtifactFavorite(long iid, bool isFavorite) 9 | { 10 | this.name = "unit/job/artifact/favorite"; 11 | this.body = WebAPI.GetRequestString(string.Concat(new object[] 12 | { 13 | "\"iid\":", 14 | iid, 15 | ",\"fav\":", 16 | (!isFavorite) ? 0 : 1 17 | })); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSetSupport.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqSetSupport : WebAPI 8 | { 9 | public ReqSetSupport(long id) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "support/set"; 13 | stringBuilder.Append("\"uiid\":"); 14 | stringBuilder.Append(id); 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTutUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTutUpdate : WebAPI 8 | { 9 | public ReqTutUpdate(long flags) 10 | { 11 | this.name = "tut/update"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"tut\":"); 14 | stringBuilder.Append(flags); 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatUserProfile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqChatUserProfile : WebAPI 8 | { 9 | public ReqChatUserProfile(string target_uid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/profile"; 13 | stringBuilder.Append("\"target_uid\":\"" + target_uid + "\""); 14 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqAddChatBlackList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqAddChatBlackList : WebAPI 8 | { 9 | public ReqAddChatBlackList(string target_uid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/blacklist/add"; 13 | stringBuilder.Append("\"target_uid\":\"" + target_uid + "\""); 14 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTower.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTower : WebAPI 8 | { 9 | public ReqTower(string questID) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "tower"; 13 | stringBuilder.Append("\"qid\":\""); 14 | stringBuilder.Append(questID); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactAddRare.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqArtifactAddRare : WebAPI 8 | { 9 | public ReqArtifactAddRare(long iid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"iid\":"); 13 | stringBuilder.Append(iid); 14 | this.name = "unit/job/artifact/rare/add"; 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqPlayNew.cs: -------------------------------------------------------------------------------- 1 | using GR; 2 | using System; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqPlayNew : WebAPI 8 | { 9 | public ReqPlayNew(bool isDebug) 10 | { 11 | this.name = "playnew"; 12 | this.body = string.Empty; 13 | string text = string.Empty; 14 | if (isDebug) 15 | { 16 | text = "\"debug\":1,"; 17 | } 18 | text = text + "\"permanent_id\":\"" + GameManager.Instance.UdId + "\""; 19 | this.body += WebAPI.GetRequestString(text); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqRemoveChatBlackList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqRemoveChatBlackList : WebAPI 8 | { 9 | public ReqRemoveChatBlackList(string target_uid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/blacklist/remove"; 13 | stringBuilder.Append("\"target_uid\":\"" + target_uid + "\""); 14 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerReset.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTowerReset : WebAPI 8 | { 9 | public ReqTowerReset(string qid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"qid\":\""); 13 | stringBuilder.Append(qid); 14 | stringBuilder.Append("\""); 15 | this.name = "tower/reset"; 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComOpen.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlComOpen : WebAPI 8 | { 9 | public ReqBtlComOpen(string iname) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "btl/com/open"; 13 | stringBuilder.Append("\"areaid\":\""); 14 | stringBuilder.Append(iname); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComReset.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlComReset : WebAPI 8 | { 9 | public ReqBtlComReset(string iname) 10 | { 11 | this.name = "btl/com/reset"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iname\":\""); 14 | stringBuilder.Append(iname); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactAdd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqArtifactAdd : WebAPI 8 | { 9 | public ReqArtifactAdd(string iname) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"iname\":\""); 13 | stringBuilder.Append(iname); 14 | stringBuilder.Append('"'); 15 | this.name = "unit/job/artifact/add"; 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqShopLineup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqShopLineup : WebAPI 8 | { 9 | public ReqShopLineup(string shop_name) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "shop/itemlist"; 13 | stringBuilder.Append("\"shopName\":\""); 14 | stringBuilder.Append(shop_name); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /DataExtractor/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlColoRanking.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlColoRanking : WebAPI 8 | { 9 | public enum RankingTypes 10 | { 11 | world, 12 | friend 13 | } 14 | 15 | public ReqBtlColoRanking(ReqBtlColoRanking.RankingTypes type) 16 | { 17 | this.name = "btl/colo/ranking/" + type.ToString(); 18 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 19 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqEventShopItemList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqEventShopItemList : WebAPI 8 | { 9 | public ReqEventShopItemList(string shop_name) 10 | { 11 | this.name = "shop/event"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"shopName\":\""); 14 | stringBuilder.Append(shop_name); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMPRoom.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMPRoom : WebAPI 7 | { 8 | public class Response 9 | { 10 | public MultiPlayAPIRoom[] rooms; 11 | } 12 | 13 | public ReqMPRoom(string fuid) 14 | { 15 | this.name = "btl/room"; 16 | this.body = string.Empty; 17 | if (!string.IsNullOrEmpty(fuid)) 18 | { 19 | this.body = this.body + "\"fuid\":\"" + JsonEscape.Escape(fuid) + "\""; 20 | } 21 | this.body = WebAPI.GetRequestString(this.body); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUpdateSelectAward.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqUpdateSelectAward : WebAPI 8 | { 9 | public ReqUpdateSelectAward(string iname) 10 | { 11 | this.name = "award/select"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"selected_award\":\""); 14 | stringBuilder.Append(iname); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGetSessionID.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGetSessionID : WebAPI 7 | { 8 | public ReqGetSessionID(string udid, string udid_, string romver) 9 | { 10 | this.name = "getsid"; 11 | this.body = "{\"ticket\":" + Networking.TicketID + ",\"param\":{"; 12 | this.body = this.body + "\"udid\":\"" + udid + "\","; 13 | this.body = this.body + "\"udid_\":\"" + udid_ + "\","; 14 | this.body = this.body + "\"romver\":\"" + romver + "\""; 15 | this.body += "}}"; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqLimitedShopItemList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqLimitedShopItemList : WebAPI 8 | { 9 | public ReqLimitedShopItemList(string shop_name) 10 | { 11 | this.name = "shop/limited"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"shopName\":\""); 14 | stringBuilder.Append(shop_name); 15 | stringBuilder.Append("\""); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSendChatMessage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqSendChatMessage : WebAPI 8 | { 9 | public ReqSendChatMessage(int channel, string message) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/send"; 13 | stringBuilder.Append("\"channel\":" + channel.ToString() + ","); 14 | stringBuilder.Append("\"message\":\"" + message + "\""); 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSendChatStamp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqSendChatStamp : WebAPI 8 | { 9 | public ReqSendChatStamp(int channel, int stamp_id) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/send/stamp"; 13 | stringBuilder.Append("\"channel\":" + channel.ToString() + ","); 14 | stringBuilder.Append("\"stamp_id\":" + stamp_id.ToString()); 15 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendReject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendReject : WebAPI 7 | { 8 | public ReqFriendReject(string[] fuids) 9 | { 10 | this.name = "friend/reject"; 11 | this.body = "\"fuids\":["; 12 | for (int i = 0; i < fuids.Length; i++) 13 | { 14 | this.body = this.body + "\"" + fuids[i] + "\""; 15 | if (i != fuids.Length - 1) 16 | { 17 | this.body += ","; 18 | } 19 | } 20 | this.body += "]"; 21 | this.body = WebAPI.GetRequestString(this.body); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqFriendRemove.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqFriendRemove : WebAPI 7 | { 8 | public ReqFriendRemove(string[] fuids) 9 | { 10 | this.name = "friend/remove"; 11 | this.body = "\"fuids\":["; 12 | for (int i = 0; i < fuids.Length; i++) 13 | { 14 | this.body = this.body + "\"" + fuids[i] + "\""; 15 | if (i != fuids.Length - 1) 16 | { 17 | this.body += ","; 18 | } 19 | } 20 | this.body += "]"; 21 | this.body = WebAPI.GetRequestString(this.body); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqLogin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqLogin : WebAPI 8 | { 9 | public ReqLogin() 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"device\":\""); 13 | //stringBuilder.Append("samsung SM-E7000"); 14 | stringBuilder.Append("iPhoneUnknown"); 15 | stringBuilder.Append("\""); 16 | this.name = "login"; 17 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqHealAp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqHealAp : WebAPI 8 | { 9 | public ReqHealAp(long iid, int num) 10 | { 11 | this.name = "item/addstm"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iid\" : "); 14 | stringBuilder.Append(iid); 15 | stringBuilder.Append(","); 16 | stringBuilder.Append("\"num\" : "); 17 | stringBuilder.Append(num); 18 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMultiCheat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMultiCheat : WebAPI 7 | { 8 | public ReqMultiCheat(int type, string val) 9 | { 10 | this.name = "btl/multi/cheat"; 11 | this.body = string.Empty; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"type\":", 17 | type, 18 | "," 19 | }); 20 | this.body = this.body + "\"val\":\"" + JsonEscape.Escape(val) + "\""; 21 | this.body = WebAPI.GetRequestString(this.body); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqProductBuy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqProductBuy : WebAPI 7 | { 8 | public ReqProductBuy(string productID, string receipt, string transactionID) 9 | { 10 | this.name = "product/buy"; 11 | this.body = string.Empty; 12 | this.body = this.body + "\"productid\":\"" + productID + "\","; 13 | this.body = this.body + "\"receipt\":\"" + receipt + "\","; 14 | this.body = this.body + "\"transactionid\":\"" + transactionID + "\""; 15 | this.body = WebAPI.GetRequestString(this.body); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusRoomUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusRoomUpdate : WebAPI 7 | { 8 | public ReqVersusRoomUpdate(int roomID, string comment, string iname) 9 | { 10 | this.name = "vs/friendmatch/update"; 11 | this.body = string.Empty; 12 | this.body = this.body + "\"roomid\":" + roomID; 13 | this.body = this.body + ",\"comment\":\"" + JsonEscape.Escape(comment) + "\""; 14 | this.body = this.body + ",\"quest\":\"" + iname + "\""; 15 | this.body = WebAPI.GetRequestString(this.body); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMPRoomUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMPRoomUpdate : WebAPI 7 | { 8 | public ReqMPRoomUpdate(int roomID, string comment, string passCode) 9 | { 10 | this.name = "btl/room/update"; 11 | this.body = string.Empty; 12 | this.body = this.body + "\"roomid\":" + roomID; 13 | this.body = this.body + ",\"comment\":\"" + JsonEscape.Escape(comment) + "\""; 14 | this.body = this.body + ",\"pwd\":\"" + JsonEscape.Escape(passCode) + "\""; 15 | this.body = WebAPI.GetRequestString(this.body); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerReward.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTowerReward : WebAPI 8 | { 9 | public ReqTowerReward(short mid, short nid) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "expedition/reward"; 13 | stringBuilder.Append("\"mid\":"); 14 | stringBuilder.Append(mid); 15 | stringBuilder.Append(","); 16 | stringBuilder.Append("\"nid\":"); 17 | stringBuilder.Append(nid); 18 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemEventShopBuypaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqItemEventShopBuypaid : WebAPI 8 | { 9 | public ReqItemEventShopBuypaid(string shopname, int id, int buynum) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "shop/event/buy"; 13 | stringBuilder.Append("\"shopName\":\"" + shopname + "\","); 14 | stringBuilder.Append("\"id\":" + id.ToString() + ","); 15 | stringBuilder.Append("\"buynum\":" + buynum.ToString()); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqJobRankupAll.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqJobRankupAll : WebAPI 8 | { 9 | public ReqJobRankupAll(long iid_unit, string iname_jobset) 10 | { 11 | this.name = "unit/job/equip/lvupall"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"uiid\":"); 14 | stringBuilder.Append(iid_unit); 15 | stringBuilder.Append(",\"jobset\":\""); 16 | stringBuilder.Append(iname_jobset); 17 | stringBuilder.Append("\""); 18 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGAuthPasscode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqGAuthPasscode : WebAPI 8 | { 9 | public ReqGAuthPasscode(string secretKey, string deviceID) 10 | { 11 | this.name = "gauth/passcode"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"secret_key\":\""); 14 | stringBuilder.Append(secretKey); 15 | stringBuilder.Append("\",\"device_id\":\""); 16 | stringBuilder.Append(deviceID); 17 | stringBuilder.Append("\""); 18 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMultiRank.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMultiRank : WebAPI 7 | { 8 | public class Json_MultiRankParam 9 | { 10 | public string unit_iname; 11 | 12 | public string job_iname; 13 | } 14 | 15 | public class Json_MultiRank 16 | { 17 | public ReqMultiRank.Json_MultiRankParam[] ranking; 18 | 19 | public int isReady; 20 | } 21 | 22 | public ReqMultiRank(string iname) 23 | { 24 | this.name = "btl/usedunit"; 25 | this.body = "\"iname\":\"" + JsonEscape.Escape(iname) + "\""; 26 | this.body = WebAPI.GetRequestString(this.body); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusRoomJoin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusRoomJoin : WebAPI 7 | { 8 | public class Quest 9 | { 10 | public string iname; 11 | } 12 | 13 | public class Response 14 | { 15 | public string app_id; 16 | 17 | public string token; 18 | 19 | public ReqVersusRoomJoin.Quest quest; 20 | } 21 | 22 | public ReqVersusRoomJoin(int roomID) 23 | { 24 | this.name = "vs/friendmatch/join"; 25 | this.body = string.Empty; 26 | this.body = this.body + "\"roomid\":" + roomID; 27 | this.body = WebAPI.GetRequestString(this.body); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemLimitedShopBuypaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqItemLimitedShopBuypaid : WebAPI 8 | { 9 | public ReqItemLimitedShopBuypaid(string shopname, int id, int buynum) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "shop/limited/buy"; 13 | stringBuilder.Append("\"shopName\":\"" + shopname + "\","); 14 | stringBuilder.Append("\"id\":" + id.ToString() + ","); 15 | stringBuilder.Append("\"buynum\":" + buynum.ToString()); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqCheckFacebookID.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqCheckFacebookID : WebAPI 7 | { 8 | public ReqCheckFacebookID(string udid) 9 | { 10 | this.name = "player/chkfb"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"device_id\":\"" + udid + "\""; 23 | this.body += "}"; 24 | this.body += "}"; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqCheckVersion.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqCheckVersion : WebAPI 7 | { 8 | public ReqCheckVersion(string ver, string os) 9 | { 10 | this.name = "chkver"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"param\":{"; 21 | this.body = this.body + "\"ver\":\"" + ver + "\","; 22 | this.body = this.body + "\"os\":\"" + os + "\""; 23 | this.body += "}"; 24 | this.body += "}"; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqJobAbility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqJobAbility : WebAPI 7 | { 8 | public ReqJobAbility(long iid_job, long[] iid_abils) 9 | { 10 | this.name = "unit/job/abil/set"; 11 | this.body = "\"iid\":" + iid_job + ","; 12 | this.body += "\"iid_abils\":"; 13 | this.body += "["; 14 | for (int i = 0; i < iid_abils.Length; i++) 15 | { 16 | this.body += iid_abils[i].ToString(); 17 | if (i != iid_abils.Length - 1) 18 | { 19 | this.body += ","; 20 | } 21 | } 22 | this.body += "]"; 23 | this.body = WebAPI.GetRequestString(this.body); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusStatus.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusStatus : WebAPI 7 | { 8 | public class Response 9 | { 10 | public int floor; 11 | 12 | public int key; 13 | 14 | public int wincnt; 15 | 16 | public int is_season_gift; 17 | 18 | public int is_give_season_gift; 19 | 20 | public long end_at; 21 | 22 | public string vstower_id; 23 | 24 | public string tower_iname; 25 | } 26 | 27 | public ReqVersusStatus() 28 | { 29 | this.name = "vs/status"; 30 | this.body = string.Empty; 31 | this.body = WebAPI.GetRequestString(this.body); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqAttachFacebookToDevice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqAttachFacebookToDevice : WebAPI 7 | { 8 | public ReqAttachFacebookToDevice(string accesstoken) 9 | { 10 | this.name = "gauth/facebook/sso/device"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"access_token\":\"" + accesstoken + "\""; 23 | this.body += "}"; 24 | this.body += "}"; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusStart.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusStart : WebAPI 7 | { 8 | public class JSON_VersusMap 9 | { 10 | public string free; 11 | 12 | public string tower; 13 | 14 | public string friend; 15 | } 16 | 17 | public class Response 18 | { 19 | public string app_id; 20 | 21 | public ReqVersusStart.JSON_VersusMap maps; 22 | } 23 | 24 | public ReqVersusStart(VERSUS_TYPE type) 25 | { 26 | this.name = "vs/start"; 27 | this.body = string.Empty; 28 | this.body = this.body + "\"type\":\"" + type.ToString().ToLower() + "\""; 29 | this.body = WebAPI.GetRequestString(this.body); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGachaExec.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGachaExec : WebAPI 7 | { 8 | public ReqGachaExec(string gachaid) 9 | { 10 | this.name = "gacha/exec"; 11 | this.body = WebAPI.GetRequestString("\"gachaid\":\"" + gachaid + "\""); 12 | } 13 | 14 | public ReqGachaExec(string iname, int free = 0, int num = 0) 15 | { 16 | this.name = "gacha/exec"; 17 | this.body = "\"gachaid\":\"" + iname + "\","; 18 | this.body = this.body + "\"free\":" + free.ToString(); 19 | if (num > 0) 20 | { 21 | this.body = this.body + ",\"ticketnum\":" + num.ToString(); 22 | } 23 | this.body = WebAPI.GetRequestString(this.body); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqJobEquipV2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqJobEquipV2 : WebAPI 8 | { 9 | public ReqJobEquipV2(long iid_unit, string iname_jobset, long slot) 10 | { 11 | this.name = "unit/job/equip/set2"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iid\":"); 14 | stringBuilder.Append(iid_unit); 15 | stringBuilder.Append(",\"iname\":\""); 16 | stringBuilder.Append(iname_jobset); 17 | stringBuilder.Append("\""); 18 | stringBuilder.Append(",\"slot\":"); 19 | stringBuilder.Append(slot); 20 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatMessage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqChatMessage : WebAPI 8 | { 9 | public ReqChatMessage(int start_id, int channel, int limit, int exclude_id) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/message"; 13 | stringBuilder.Append("\"start_id\":" + start_id.ToString() + ","); 14 | stringBuilder.Append("\"channel\":" + channel.ToString() + ","); 15 | stringBuilder.Append("\"limit\":" + limit.ToString() + ","); 16 | stringBuilder.Append("\"exclude_id\":" + exclude_id.ToString()); 17 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMultiPlayResume.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMultiPlayResume : WebAPI 7 | { 8 | public class Quest 9 | { 10 | public string iname; 11 | } 12 | 13 | public class Response 14 | { 15 | public ReqMultiPlayResume.Quest quest; 16 | 17 | public int btlid; 18 | 19 | public string app_id; 20 | 21 | public string token; 22 | 23 | public Json_BtlInfo_Multi btlinfo; 24 | } 25 | 26 | public ReqMultiPlayResume(long btlID) 27 | { 28 | this.name = "btl/multi/resume"; 29 | this.body = string.Empty; 30 | this.body = this.body + "\"btlid\":" + btlID; 31 | this.body = WebAPI.GetRequestString(this.body); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGetDeviceID.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGetDeviceID : WebAPI 7 | { 8 | public ReqGetDeviceID(string secretkey, string udid) 9 | { 10 | this.name = "gauth/register"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"secret_key\":\"" + secretkey + "\","; 23 | this.body = this.body + "\"udid\":\"" + udid + "\""; 24 | this.body += "}"; 25 | this.body += "}"; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusResume.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusResume : WebAPI 7 | { 8 | public class Quest 9 | { 10 | public string iname; 11 | } 12 | 13 | public class Response 14 | { 15 | public ReqVersusResume.Quest quest; 16 | 17 | public int btlid; 18 | 19 | public string app_id; 20 | 21 | public string token; 22 | 23 | public string type; 24 | 25 | public Json_BtlInfo_Multi btlinfo; 26 | } 27 | 28 | public ReqVersusResume(long btlID) 29 | { 30 | this.name = "vs/resume"; 31 | this.body = string.Empty; 32 | this.body = this.body + "\"btlid\":" + btlID; 33 | this.body = WebAPI.GetRequestString(this.body); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGAuthMigrate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqGAuthMigrate : WebAPI 8 | { 9 | public ReqGAuthMigrate(string secretKey, string deviceID, string passcode) 10 | { 11 | this.name = "gauth/migrate"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"secret_key\":\""); 14 | stringBuilder.Append(secretKey); 15 | stringBuilder.Append("\",\"device_id\":\""); 16 | stringBuilder.Append(deviceID); 17 | stringBuilder.Append("\",\"passcode\":\""); 18 | stringBuilder.Append(passcode); 19 | stringBuilder.Append("\""); 20 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGetAccessToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqGetAccessToken : WebAPI 7 | { 8 | public ReqGetAccessToken(string deviceid, string secretkey) 9 | { 10 | this.name = "gauth/accesstoken"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"device_id\":\"" + deviceid + "\","; 23 | this.body = this.body + "\"secret_key\":\"" + secretkey + "\""; 24 | this.body += "}"; 25 | this.body += "}"; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUnitPlus.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqUnitPlus : WebAPI 8 | { 9 | public ReqUnitPlus(long iid, string trophyprog = null, string bingoprog = null) 10 | { 11 | this.name = "unit/plus/add"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iid\":" + iid); 14 | if (!string.IsNullOrEmpty(trophyprog)) 15 | { 16 | stringBuilder.Append(","); 17 | stringBuilder.Append(trophyprog); 18 | } 19 | if (!string.IsNullOrEmpty(bingoprog)) 20 | { 21 | stringBuilder.Append(","); 22 | stringBuilder.Append(bingoprog); 23 | } 24 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUnitRare.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqUnitRare : WebAPI 8 | { 9 | public ReqUnitRare(long iid, string trophyprog = null, string bingoprog = null) 10 | { 11 | this.name = "unit/rare/add"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iid\":" + iid); 14 | if (!string.IsNullOrEmpty(trophyprog)) 15 | { 16 | stringBuilder.Append(","); 17 | stringBuilder.Append(trophyprog); 18 | } 19 | if (!string.IsNullOrEmpty(bingoprog)) 20 | { 21 | stringBuilder.Append(","); 22 | stringBuilder.Append(bingoprog); 23 | } 24 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AlchemistCodeCode 2 | 3 | This project shows how basic network communication works with the game "The Alchemist Code", and how you can directly use some classes from the game code. This project also shows how to dump out game data from the Alchemist Code. 4 | 5 | Things not included and you will have to include to get started: 6 | 1. Dump out AssemblySharp.dll from the game executable, and reference that dll. Many tutorials online. 7 | 2. Download DotNetWikiBot.cs to actually post to the wiki. I didn't include this because GPL. 8 | 9 | 10 | MIT License 11 | 12 | *AlchemistCodeCode and Shalzuth aren't endorsed by gumi Inc. and doesn’t reflect the views or opinions of gumi Inc. or anyone officially involved in producing or managing gumi Inc. Game content and materials are trademarks and copyrights of gumi Inc.* 13 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComCont.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqBtlComCont : WebAPI 7 | { 8 | public ReqBtlComCont(long btlid, BattleCore.Record record, bool multi) 9 | { 10 | this.name = ((!multi) ? "btl/com/cont" : "btl/multi/cont"); 11 | if (record != null) 12 | { 13 | this.body = "\"btlid\":" + btlid + ","; 14 | string btlEndParamString = WebAPI.GetBtlEndParamString(record, multi); 15 | if (!string.IsNullOrEmpty(btlEndParamString)) 16 | { 17 | this.body += WebAPI.GetBtlEndParamString(record, multi); 18 | } 19 | this.body = WebAPI.GetRequestString(this.body); 20 | } 21 | else 22 | { 23 | this.body = WebAPI.GetRequestString("\"btlid\":\"" + btlid + "\""); 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactSell.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqArtifactSell : WebAPI 8 | { 9 | public ReqArtifactSell(long[] artifact_iids) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"sells\":["); 13 | string text = string.Empty; 14 | for (int i = 0; i < artifact_iids.Length; i++) 15 | { 16 | text = text + artifact_iids[i].ToString() + ","; 17 | } 18 | if (text.Length > 0) 19 | { 20 | text = text.Substring(0, text.Length - 1); 21 | } 22 | stringBuilder.Append(text); 23 | stringBuilder.Append("]"); 24 | this.name = "unit/job/artifact/sell"; 25 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusMake.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqVersusMake : WebAPI 7 | { 8 | public class Response 9 | { 10 | public string token; 11 | 12 | public string owner_name; 13 | 14 | public int roomid; 15 | } 16 | 17 | public ReqVersusMake(VERSUS_TYPE type, string comment, string iname, bool isLine = false) 18 | { 19 | this.name = "vs/" + type.ToString().ToLower() + "match/make"; 20 | this.body = string.Empty; 21 | this.body = this.body + "\"comment\":\"" + JsonEscape.Escape(comment) + "\","; 22 | this.body = this.body + "\"iname\":\"" + JsonEscape.Escape(iname) + "\","; 23 | this.body = this.body + "\"Line\":" + ((!isLine) ? 0 : 1); 24 | this.body = WebAPI.GetRequestString(this.body); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactConvert.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqArtifactConvert : WebAPI 8 | { 9 | public ReqArtifactConvert(long[] artifact_iids) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"iids\":["); 13 | string text = string.Empty; 14 | for (int i = 0; i < artifact_iids.Length; i++) 15 | { 16 | text = text + artifact_iids[i].ToString() + ","; 17 | } 18 | if (text.Length > 0) 19 | { 20 | text = text.Substring(0, text.Length - 1); 21 | } 22 | stringBuilder.Append(text); 23 | stringBuilder.Append("]"); 24 | this.name = "unit/job/artifact/convert"; 25 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComRaid.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlComRaid : WebAPI 8 | { 9 | public ReqBtlComRaid(string iname, int ticket, int partyIndex) 10 | { 11 | this.name = "btl/com/raid2"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iname\":\""); 14 | stringBuilder.Append(iname); 15 | stringBuilder.Append("\","); 16 | if (partyIndex >= 0) 17 | { 18 | stringBuilder.Append("\"partyid\":"); 19 | stringBuilder.Append(partyIndex); 20 | stringBuilder.Append(","); 21 | } 22 | stringBuilder.Append("\"ticket\":"); 23 | stringBuilder.Append(ticket.ToString()); 24 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlTowerComReq.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlTowerComReq : WebAPI 8 | { 9 | public ReqBtlTowerComReq(string qid, string fid, PartyData partyIndex) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "tower/btl/req"; 13 | stringBuilder.Append("\"qid\":\""); 14 | stringBuilder.Append(qid); 15 | stringBuilder.Append("\","); 16 | stringBuilder.Append("\"fid\":\""); 17 | stringBuilder.Append(fid); 18 | stringBuilder.Append("\","); 19 | stringBuilder.Append("\"fuid\":\""); 20 | stringBuilder.Append(GlobalVars.SelectedFriendID); 21 | stringBuilder.Append("\""); 22 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqItemSell.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqItemSell : WebAPI 8 | { 9 | public ReqItemSell(Dictionary sells) 10 | { 11 | this.name = "item/sell"; 12 | this.body = "\"sells\":["; 13 | string text = string.Empty; 14 | foreach (KeyValuePair current in sells) 15 | { 16 | text += "{"; 17 | text = text + "\"iid\":" + current.Key.ToString() + ","; 18 | text = text + "\"num\":" + current.Value.ToString(); 19 | text += "},"; 20 | } 21 | if (text.Length > 0) 22 | { 23 | text = text.Substring(0, text.Length - 1); 24 | } 25 | this.body += text; 26 | this.body += "]"; 27 | this.body = WebAPI.GetRequestString(this.body); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSendSupportEmail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqSendSupportEmail : WebAPI 7 | { 8 | public ReqSendSupportEmail(string subject, string message, string replyTo) 9 | { 10 | this.name = "support/mail"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"subject\":\"" + subject + "\","; 23 | this.body = this.body + "\"message\":\"" + message + "\","; 24 | this.body = this.body + "\"replyTo\":\"" + replyTo + "\""; 25 | this.body += "}"; 26 | this.body += "}"; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMPRoomJoin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMPRoomJoin : WebAPI 7 | { 8 | public class Quest 9 | { 10 | public string iname; 11 | } 12 | 13 | public class Response 14 | { 15 | public string app_id; 16 | 17 | public string token; 18 | 19 | public ReqMPRoomJoin.Quest quest; 20 | } 21 | 22 | public ReqMPRoomJoin(int roomID, bool LockRoom = false) 23 | { 24 | this.name = "btl/room/join"; 25 | this.body = string.Empty; 26 | string body = this.body; 27 | this.body = string.Concat(new object[] 28 | { 29 | body, 30 | "\"roomid\":", 31 | roomID, 32 | "," 33 | }); 34 | this.body += "\"pwd\":"; 35 | this.body += ((!LockRoom) ? "\"0\"" : "\"1\""); 36 | this.body = WebAPI.GetRequestString(this.body); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMPRoomMake.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMPRoomMake : WebAPI 7 | { 8 | public class Response 9 | { 10 | public int roomid; 11 | 12 | public string app_id; 13 | 14 | public string token; 15 | } 16 | 17 | public ReqMPRoomMake(string iname, string comment, string passCode, bool isPrivate) 18 | { 19 | this.name = "btl/room/make"; 20 | this.body = string.Empty; 21 | this.body = this.body + "\"iname\":\"" + JsonEscape.Escape(iname) + "\""; 22 | this.body = this.body + ",\"comment\":\"" + JsonEscape.Escape(comment) + "\""; 23 | this.body = this.body + ",\"pwd\":\"" + JsonEscape.Escape(passCode) + "\""; 24 | this.body = this.body + ",\"private\":" + ((!isPrivate) ? 0 : 1); 25 | this.body = WebAPI.GetRequestString(this.body); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerRecover.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTowerRecover : WebAPI 8 | { 9 | public ReqTowerRecover(string qid, int coin, int round, byte floor) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "tower/recover"; 13 | stringBuilder.Append("\"qid\":\""); 14 | stringBuilder.Append(qid); 15 | stringBuilder.Append("\","); 16 | stringBuilder.Append("\"coin\":"); 17 | stringBuilder.Append(coin); 18 | stringBuilder.Append(","); 19 | stringBuilder.Append("\"round\":"); 20 | stringBuilder.Append(round); 21 | stringBuilder.Append(","); 22 | stringBuilder.Append("\"floor\":"); 23 | stringBuilder.Append(floor); 24 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqGAuthMigrateFgG.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqGAuthMigrateFgG : WebAPI 8 | { 9 | public ReqGAuthMigrateFgG(string secretKey, string deviceID, string mail, string password) 10 | { 11 | this.name = "gauth/achievement/mgrate"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"secret_key\":\""); 14 | stringBuilder.Append(secretKey); 15 | stringBuilder.Append("\",\"device_id\":\""); 16 | stringBuilder.Append(deviceID); 17 | stringBuilder.Append("\",\"email\":\""); 18 | stringBuilder.Append(mail); 19 | stringBuilder.Append("\",\"password\":\""); 20 | stringBuilder.Append(password); 21 | stringBuilder.Append("\""); 22 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUnitExpAdd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqUnitExpAdd : WebAPI 8 | { 9 | public ReqUnitExpAdd(long iid, Dictionary usedItems) 10 | { 11 | this.name = "unit/exp/add"; 12 | this.body = "\"iid\":" + iid + ","; 13 | this.body += "\"mats\":["; 14 | string text = string.Empty; 15 | foreach (KeyValuePair current in usedItems) 16 | { 17 | text += "{"; 18 | text = text + "\"iname\":\"" + current.Key + "\","; 19 | text = text + "\"num\":" + current.Value; 20 | text += "},"; 21 | } 22 | if (text.Length > 0) 23 | { 24 | text = text.Substring(0, text.Length - 1); 25 | } 26 | this.body += text; 27 | this.body += "]"; 28 | this.body = WebAPI.GetRequestString(this.body); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMigrateFacebookToDevice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMigrateFacebookToDevice : WebAPI 7 | { 8 | public ReqMigrateFacebookToDevice(string secretkey, string udid, string accesstoken) 9 | { 10 | this.name = "gauth/facebook/sso/migrate"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"secret_key\":\"" + secretkey + "\","; 23 | this.body = this.body + "\"device_id\":\"" + udid + "\","; 24 | this.body = this.body + "\"access_token\":\"" + accesstoken + "\""; 25 | this.body += "}"; 26 | this.body += "}"; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqRegisterDeviceToFacebook.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqRegisterDeviceToFacebook : WebAPI 7 | { 8 | public ReqRegisterDeviceToFacebook(string secretkey, string udid, string accesstoken) 9 | { 10 | this.name = "gauth/facebook/sso/relate_account"; 11 | this.body = "{"; 12 | string body = this.body; 13 | this.body = string.Concat(new object[] 14 | { 15 | body, 16 | "\"ticket\":", 17 | Networking.TicketID, 18 | "," 19 | }); 20 | this.body += "\"access_token\":\"\","; 21 | this.body += "\"param\":{"; 22 | this.body = this.body + "\"secret_key\":\"" + secretkey + "\","; 23 | this.body = this.body + "\"device_id\":\"" + udid + "\","; 24 | this.body = this.body + "\"access_token\":\"" + accesstoken + "\""; 25 | this.body += "}"; 26 | this.body += "}"; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlColoReq.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlColoReq : WebAPI 8 | { 9 | public ReqBtlColoReq(string questID, string fuid, ArenaPlayer ap, int partyIndex) 10 | { 11 | this.name = "btl/colo/req"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | if (partyIndex >= 0) 14 | { 15 | stringBuilder.Append("\"partyid\":"); 16 | stringBuilder.Append(partyIndex); 17 | stringBuilder.Append(","); 18 | } 19 | stringBuilder.Append("\"btlparam\":{},"); 20 | stringBuilder.Append("\"fuid\":\""); 21 | stringBuilder.Append(fuid); 22 | stringBuilder.Append("\""); 23 | stringBuilder.Append(","); 24 | stringBuilder.Append("\"opp_rank\":"); 25 | stringBuilder.Append(ap.ArenaRank); 26 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChargeCheck.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqChargeCheck : WebAPI 7 | { 8 | public ReqChargeCheck(PaymentManager.Product[] products, bool isPurchase) 9 | { 10 | this.name = "charge/check"; 11 | this.body = string.Empty; 12 | this.body += "\"targets\":["; 13 | for (int i = 0; i < products.Length; i++) 14 | { 15 | this.body += "{"; 16 | this.body = this.body + "\"product_id\":\"" + products[i].productID + "\","; 17 | this.body = this.body + "\"price\":" + products[i].sellPrice; 18 | this.body += "}"; 19 | if (i != products.Length - 1) 20 | { 21 | this.body += ","; 22 | } 23 | } 24 | this.body += "],"; 25 | this.body += "\"currency\":\"JPY\","; 26 | this.body = this.body + "\"is_purchase\":" + ((!isPurchase) ? "0" : "1"); 27 | this.body = WebAPI.GetRequestString(this.body); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSkinSet.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqSkinSet : WebAPI 9 | { 10 | public ReqSkinSet(Dictionary sets) 11 | { 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"sets\":["); 14 | string text = string.Empty; 15 | foreach (KeyValuePair current in sets) 16 | { 17 | text += "{"; 18 | text = text + "\"iid\":" + current.Key.ToString() + ","; 19 | text = text + "\"iname\":\"" + current.Value + "\""; 20 | text += "},"; 21 | } 22 | if (text.Length > 0) 23 | { 24 | text = text.Substring(0, text.Length - 1); 25 | } 26 | stringBuilder.Append(text); 27 | stringBuilder.Append("]"); 28 | this.name = "unit/skin/set"; 29 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerRank.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqTowerRank : WebAPI 8 | { 9 | public class JSON_TowerRankParam 10 | { 11 | public string fuid; 12 | 13 | public string name; 14 | 15 | public int lv; 16 | 17 | public int rank; 18 | 19 | public int score; 20 | 21 | public string uid; 22 | 23 | public Json_Unit unit; 24 | } 25 | 26 | public class JSON_TowerRankResponse 27 | { 28 | public ReqTowerRank.JSON_TowerRankParam[] speed; 29 | 30 | public ReqTowerRank.JSON_TowerRankParam[] technical; 31 | } 32 | 33 | public ReqTowerRank(string qid) 34 | { 35 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 36 | this.name = "tower/ranking"; 37 | stringBuilder.Append("\"qid\":\""); 38 | stringBuilder.Append(qid); 39 | stringBuilder.Append("\""); 40 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUnitJob.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqUnitJob : WebAPI 8 | { 9 | public ReqUnitJob(long iid_unit, long iid_job) 10 | { 11 | this.Setup(iid_unit, iid_job, null); 12 | } 13 | 14 | public ReqUnitJob(long iid_unit, long iid_job, string ptype) 15 | { 16 | this.Setup(iid_unit, iid_job, ptype); 17 | } 18 | 19 | private void Setup(long iid_unit, long iid_job, string ptype) 20 | { 21 | this.name = "unit/job/set"; 22 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 23 | stringBuilder.Append("\"iid\":"); 24 | stringBuilder.Append(iid_unit); 25 | stringBuilder.Append(",\"iid_job\":"); 26 | stringBuilder.Append(iid_job); 27 | if (!string.IsNullOrEmpty(ptype)) 28 | { 29 | stringBuilder.Append(",\"type\":\""); 30 | stringBuilder.Append(ptype); 31 | stringBuilder.Append('"'); 32 | } 33 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatBlackList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqChatBlackList : WebAPI 8 | { 9 | public ReqChatBlackList(int start_id, int limit, int exclude_id) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/blacklist"; 13 | stringBuilder.Append("\"start_id\":" + start_id.ToString() + ","); 14 | stringBuilder.Append("\"limit\":" + limit.ToString() + ","); 15 | stringBuilder.Append("\"exclude_id\":" + exclude_id.ToString()); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | 19 | public ReqChatBlackList(int offset, int limit) 20 | { 21 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 22 | this.name = "chat/blacklist"; 23 | stringBuilder.Append("\"offset\":" + offset.ToString() + ","); 24 | stringBuilder.Append("\"limit\":" + limit.ToString()); 25 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqSellPiece.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqSellPiece : WebAPI 9 | { 10 | public ReqSellPiece(Dictionary sells) 11 | { 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"sells\":["); 14 | string text = string.Empty; 15 | foreach (KeyValuePair current in sells) 16 | { 17 | text += "{"; 18 | string text2 = text; 19 | text = string.Concat(new object[] 20 | { 21 | text2, 22 | "\"iid\":", 23 | current.Key, 24 | "," 25 | }); 26 | text = text + "\"num\":" + current.Value; 27 | text += "},"; 28 | } 29 | if (text.Length > 0) 30 | { 31 | text = text.Substring(0, text.Length - 1); 32 | } 33 | stringBuilder.Append(text); 34 | stringBuilder.Append("]"); 35 | this.name = "shop/piece/sell"; 36 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMailSelect.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqMailSelect : WebAPI 8 | { 9 | public enum type : byte 10 | { 11 | item, 12 | unit, 13 | artifact 14 | } 15 | 16 | public ReqMailSelect(string ticketid, ReqMailSelect.type type) 17 | { 18 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 19 | this.name = "mail/select"; 20 | stringBuilder.Append("\"iname\" : \""); 21 | stringBuilder.Append(ticketid); 22 | stringBuilder.Append("\","); 23 | stringBuilder.Append("\"type\" : \""); 24 | switch (type) 25 | { 26 | case ReqMailSelect.type.item: 27 | stringBuilder.Append("item"); 28 | break; 29 | case ReqMailSelect.type.unit: 30 | stringBuilder.Append("unit"); 31 | break; 32 | case ReqMailSelect.type.artifact: 33 | stringBuilder.Append("artifact"); 34 | break; 35 | } 36 | stringBuilder.Append("\""); 37 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactEnforce.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqArtifactEnforce : WebAPI 9 | { 10 | public ReqArtifactEnforce(long iid, Dictionary usedItems) 11 | { 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("\"iid\":"); 14 | stringBuilder.Append(iid); 15 | stringBuilder.Append(",\"mats\":["); 16 | string text = string.Empty; 17 | foreach (KeyValuePair current in usedItems) 18 | { 19 | text += "{"; 20 | text = text + "\"iname\":\"" + current.Key + "\","; 21 | text = text + "\"num\":" + current.Value; 22 | text += "},"; 23 | } 24 | if (text.Length > 0) 25 | { 26 | text = text.Substring(0, text.Length - 1); 27 | } 28 | stringBuilder.Append(text); 29 | stringBuilder.Append("]"); 30 | this.name = "unit/job/artifact/enforce"; 31 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqEquipExpAdd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqEquipExpAdd : WebAPI 8 | { 9 | public ReqEquipExpAdd(long iid, int slot, Dictionary usedItems) 10 | { 11 | this.name = "unit/job/equip/enforce"; 12 | this.body = "\"iid\":" + iid + ","; 13 | string body = this.body; 14 | this.body = string.Concat(new object[] 15 | { 16 | body, 17 | "\"id_equip\":", 18 | slot, 19 | "," 20 | }); 21 | this.body += "\"mats\":["; 22 | string text = string.Empty; 23 | foreach (KeyValuePair current in usedItems) 24 | { 25 | text += "{"; 26 | text = text + "\"iname\":\"" + current.Key + "\","; 27 | text = text + "\"num\":" + current.Value; 28 | text += "},"; 29 | } 30 | if (text.Length > 0) 31 | { 32 | text = text.Substring(0, text.Length - 1); 33 | } 34 | this.body += text; 35 | this.body += "]"; 36 | this.body = WebAPI.GetRequestString(this.body); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 shalzuth 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /AlchemistCodeCode/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 shalzuth 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersus.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqVersus : WebAPI 8 | { 9 | public ReqVersus(string iname, int plid, int seat, string uid, VERSUS_TYPE type) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "vs/" + type.ToString().ToLower() + "match/req"; 13 | stringBuilder.Append("\"iname\":\""); 14 | stringBuilder.Append("QE_VS_TEST_00"); 15 | stringBuilder.Append("\","); 16 | stringBuilder.Append("\"token\":\""); 17 | stringBuilder.Append(JsonEscape.Escape(GlobalVars.SelectedMultiPlayRoomName)); 18 | stringBuilder.Append("\","); 19 | stringBuilder.Append("\"plid\":\""); 20 | stringBuilder.Append(plid); 21 | stringBuilder.Append("\","); 22 | stringBuilder.Append("\"seat\":\""); 23 | stringBuilder.Append(seat); 24 | stringBuilder.Append("\","); 25 | stringBuilder.Append("\"uid\":\""); 26 | stringBuilder.Append(uid); 27 | stringBuilder.Append("\""); 28 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AlchemistCodeCode/GameManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using SRPG; 7 | 8 | namespace AlchemistCodeCode 9 | { 10 | public class GameManager 11 | { 12 | public static GameManager Instance = new GameManager(); 13 | public string Version = "1812"; 14 | public string SessionID; 15 | public string AssetVersion; 16 | public string SecretKey; 17 | public string UdId; 18 | public string DeviceId; 19 | 20 | public PlayerData Player; 21 | public TowerResuponse TowerResuponse; 22 | public TowerFloorParam FindTowerFloor(string iname) 23 | { 24 | /*if (this.mTowerFloors != null) 25 | { 26 | for (int i = this.mTowerFloors.get_Count() - 1; i >= 0; i--) 27 | { 28 | if (this.mTowerFloors.get_Item(i).iname == iname) 29 | { 30 | return this.mTowerFloors.get_Item(i); 31 | } 32 | } 33 | }*/ 34 | return null; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqChatChannelList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqChatChannelList : WebAPI 8 | { 9 | public ReqChatChannelList(int start_id, int limit, int exclude_id) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = "chat/channel"; 13 | stringBuilder.Append("\"start_id\":" + start_id.ToString() + ","); 14 | stringBuilder.Append("\"limit\":" + limit.ToString() + ","); 15 | stringBuilder.Append("\"exclude_id\":" + exclude_id.ToString()); 16 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 17 | } 18 | 19 | public ReqChatChannelList(int[] channel_ids) 20 | { 21 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 22 | this.name = "chat/channel"; 23 | stringBuilder.Append("\"channel_ids\":["); 24 | for (int i = 0; i < channel_ids.Length; i++) 25 | { 26 | stringBuilder.Append(channel_ids[i]); 27 | if (i != channel_ids.Length - 1) 28 | { 29 | stringBuilder.Append(","); 30 | } 31 | } 32 | stringBuilder.Append("]"); 33 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqMail : WebAPI 8 | { 9 | public ReqMail(int page, bool isPeriod, bool isRead) 10 | { 11 | this.name = "mail"; 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append(this.MakeKeyValue("page", page)); 14 | stringBuilder.Append(","); 15 | stringBuilder.Append(this.MakeKeyValue("isPeriod", (!isPeriod) ? 0 : 1)); 16 | stringBuilder.Append(","); 17 | stringBuilder.Append(this.MakeKeyValue("isRead", (!isRead) ? 0 : 1)); 18 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 19 | } 20 | 21 | private string MakeKeyValue(string key, int value) 22 | { 23 | return string.Format("\"{0}\":{1}", key, value); 24 | } 25 | 26 | private string MakeKeyValue(string key, float value) 27 | { 28 | return string.Format("\"{0}\":{1}", key, value); 29 | } 30 | 31 | private string MakeKeyValue(string key, long value) 32 | { 33 | return string.Format("\"{0}\":{1}", key, value); 34 | } 35 | 36 | private string MakeKeyValue(string key, string value) 37 | { 38 | return string.Format("\"{0}\":\"{1}\"", key, value); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqAbilityRankUp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqAbilityRankUp : WebAPI 9 | { 10 | public ReqAbilityRankUp(Dictionary abilities, string trophyprog = null, string bingoprog = null) 11 | { 12 | this.name = "unit/job/abil/lvup"; 13 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 14 | stringBuilder.Append("\"aps\":["); 15 | string text = string.Empty; 16 | foreach (KeyValuePair current in abilities) 17 | { 18 | text += "{"; 19 | string text2 = text; 20 | text = string.Concat(new object[] 21 | { 22 | text2, 23 | "\"iid\":", 24 | current.Key, 25 | "," 26 | }); 27 | text = text + "\"ap\":" + current.Value; 28 | text += "},"; 29 | } 30 | if (text.Length > 0) 31 | { 32 | stringBuilder.Append(text.Substring(0, text.Length - 1)); 33 | } 34 | stringBuilder.Append("]"); 35 | if (!string.IsNullOrEmpty(trophyprog)) 36 | { 37 | stringBuilder.Append(","); 38 | stringBuilder.Append(trophyprog); 39 | } 40 | if (!string.IsNullOrEmpty(bingoprog)) 41 | { 42 | stringBuilder.Append(","); 43 | stringBuilder.Append(bingoprog); 44 | } 45 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /DataExtractor/Wiki/Skills.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | 8 | namespace DataExtractor.Wiki 9 | { 10 | public static class Skills 11 | { 12 | public static String CreateSkillListPage(List skills) 13 | { 14 | string header = "The following are the available '''{{PAGENAME}}''' for '''[[{{Gamename}}]]'''.[[Category:Equipment Data]]\n\n"; 15 | header += "=={{PAGENAME}}==\n{| class=\"wikitable sortable\"\n |-\n ! Name\n"; 16 | string footer = "\n |}"; 17 | string skillList = String.Join("\n", skills.Select(j => 18 | " |-\n | [[" + Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_NAME"] 19 | + "]] || " + Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_EXPR"])); 20 | return header + skillList + footer; 21 | } 22 | public static String CreateSkillPage(JToken skill) 23 | { 24 | string Content = "'''{{PAGENAME}}''' is an '''[[Equipment]]''' in '''[[The Alchemist Code]]'''.[[Category:Equipment Data]]\n\n"; 25 | Content += "==Info==\n"; 26 | Content += "'''Stats''' : " + Updater.Loc_english_LocalizedMasterParam[skill["iname"] + "_EXPR"] + "\n\n"; 27 | Content += "'''Description''' : " + Updater.Loc_english_LocalizedMasterParam[skill["iname"] + "_FLAVOR"] + ""; 28 | return Content; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /DataExtractor/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("DataExtractor")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("DataExtractor")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("63ae8754-a4fd-4582-8405-df6cfaabc80c")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComReq.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqBtlComReq : WebAPI 8 | { 9 | public ReqBtlComReq(string iname, string fuid, bool multi, int partyIndex, bool isHost = false, int plid = 0, int seat = 0) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | this.name = ((!multi) ? "btl/com/req" : "btl/multi/req"); 13 | stringBuilder.Append("\"iname\":\""); 14 | stringBuilder.Append(iname); 15 | stringBuilder.Append("\","); 16 | if (partyIndex >= 0) 17 | { 18 | stringBuilder.Append("\"partyid\":"); 19 | stringBuilder.Append(partyIndex); 20 | stringBuilder.Append(","); 21 | } 22 | if (multi) 23 | { 24 | stringBuilder.Append("\"token\":\""); 25 | stringBuilder.Append(JsonEscape.Escape(GlobalVars.SelectedMultiPlayRoomName)); 26 | stringBuilder.Append("\","); 27 | stringBuilder.Append("\"host\":\""); 28 | stringBuilder.Append((!isHost) ? "0" : "1"); 29 | stringBuilder.Append("\","); 30 | stringBuilder.Append("\"plid\":\""); 31 | stringBuilder.Append(plid); 32 | stringBuilder.Append("\","); 33 | stringBuilder.Append("\"seat\":\""); 34 | stringBuilder.Append(seat); 35 | stringBuilder.Append("\","); 36 | } 37 | stringBuilder.Append("\"btlparam\":{\"help\":{\"fuid\":\""); 38 | stringBuilder.Append(fuid); 39 | stringBuilder.Append("\"}}"); 40 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("AlchemistCodeCode")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("AlchemistCodeCode")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("817ac3d2-c88a-4556-94b2-173af31645a3")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /DataExtractor/Wiki/Equipments.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | 8 | namespace DataExtractor.Wiki 9 | { 10 | public static class Equipments 11 | { 12 | public static String CreateEquipmentListPage(List equipment) 13 | { 14 | string header = "The following are the available '''Equipments''' for '''[[{{Gamename}}]]'''.[[Category:Equipment Data]]\n\n"; 15 | header += "==Equipment==\n{| class=\"wikitable sortable\"\n |-\n ! Name\n"; 16 | string footer = "\n |}"; 17 | string equipmentList = String.Join("\n", equipment.Select(j => 18 | " |-\n | [[" + Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_NAME"] 19 | + "]] || " + Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_EXPR"])); 20 | return header + equipmentList + footer; 21 | } 22 | public static String CreateEquipmentPage(JToken equipment) 23 | { 24 | string Content = "'''{{PAGENAME}}''' is an '''[[Equipment]]''' in '''[[The Alchemist Code]]'''.[[Category:Equipment Data]]\n\n"; 25 | Content += "==Info==\n"; 26 | Content += "'''Stats''' : " + Updater.Loc_english_LocalizedMasterParam[equipment["iname"] + "_EXPR"] + "\n\n"; 27 | Content += "'''Description''' : " + Updater.Loc_english_LocalizedMasterParam[equipment["iname"] + "_FLAVOR"] + ""; 28 | return Content; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqParty.cs: -------------------------------------------------------------------------------- 1 | using GR; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using SRPG; 6 | 7 | namespace AlchemistCodeCode.Network.Requests 8 | { 9 | public class ReqParty : WebAPI 10 | { 11 | public ReqParty(bool needUpdateMultiRoom = false, bool ignoreEmpty = true) 12 | { 13 | List partys = GameManager.Instance.Player.Partys; 14 | this.name = "party2"; 15 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 16 | stringBuilder.Append("\"parties\":["); 17 | int num = 0; 18 | for (int i = 0; i < partys.Count; i++) 19 | { 20 | if (!ignoreEmpty || partys[i].Num != 0) 21 | { 22 | if (num > 0) 23 | { 24 | stringBuilder.Append(','); 25 | } 26 | stringBuilder.Append("{\"units\":["); 27 | for (int j = 0; j < partys[i].MAX_UNIT; j++) 28 | { 29 | if (j > 0) 30 | { 31 | stringBuilder.Append(','); 32 | } 33 | stringBuilder.Append(partys[i].GetUnitUniqueID(j)); 34 | } 35 | stringBuilder.Append(']'); 36 | string stringFromPartyType = PartyData.GetStringFromPartyType((PlayerPartyTypes)i); 37 | stringBuilder.Append(",\"ptype\":\""); 38 | stringBuilder.Append(stringFromPartyType); 39 | stringBuilder.Append('"'); 40 | stringBuilder.Append('}'); 41 | num++; 42 | } 43 | } 44 | stringBuilder.Append(']'); 45 | if (needUpdateMultiRoom) 46 | { 47 | stringBuilder.Append(",\"roomowner\":1"); 48 | DebugUtility.Log("UpdateMulti!"); 49 | } 50 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /AlchemistCodeCode.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26730.12 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlchemistCodeCode", "AlchemistCodeCode\AlchemistCodeCode.csproj", "{817AC3D2-C88A-4556-94B2-173AF31645A3}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataExtractor", "DataExtractor\DataExtractor.csproj", "{63AE8754-A4FD-4582-8405-DF6CFAABC80C}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {817AC3D2-C88A-4556-94B2-173AF31645A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {817AC3D2-C88A-4556-94B2-173AF31645A3}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {817AC3D2-C88A-4556-94B2-173AF31645A3}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {817AC3D2-C88A-4556-94B2-173AF31645A3}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {63AE8754-A4FD-4582-8405-DF6CFAABC80C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {63AE8754-A4FD-4582-8405-DF6CFAABC80C}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {63AE8754-A4FD-4582-8405-DF6CFAABC80C}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {63AE8754-A4FD-4582-8405-DF6CFAABC80C}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {21A39F26-BA77-4C48-BF18-2BA2DF9FC8D2} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqMailRead.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SRPG; 3 | 4 | namespace AlchemistCodeCode.Network.Requests 5 | { 6 | public class ReqMailRead : WebAPI 7 | { 8 | public ReqMailRead(long[] mailids, bool period, int page) 9 | { 10 | this.name = "mail/read"; 11 | this.body = "\"mailids\":["; 12 | for (int i = 0; i < mailids.Length; i++) 13 | { 14 | this.body += mailids[i].ToString(); 15 | if (i != mailids.Length - 1) 16 | { 17 | this.body += ","; 18 | } 19 | } 20 | this.body += "],"; 21 | this.body += "\"page\":"; 22 | this.body += page; 23 | this.body += ","; 24 | this.body += "\"period\":"; 25 | this.body += ((!period) ? 0 : 1); 26 | this.body = WebAPI.GetRequestString(this.body); 27 | } 28 | 29 | public ReqMailRead(long[] mailids, int[] periods, int page) 30 | { 31 | this.name = "mail/read"; 32 | this.body = "\"mailids\":["; 33 | for (int i = 0; i < mailids.Length; i++) 34 | { 35 | this.body += mailids[i].ToString(); 36 | if (i != mailids.Length - 1) 37 | { 38 | this.body += ","; 39 | } 40 | } 41 | this.body += "],"; 42 | this.body += "\"page\":"; 43 | this.body += page; 44 | this.body += ","; 45 | this.body += "\"period\":"; 46 | this.body += periods[0]; 47 | this.body = WebAPI.GetRequestString(this.body); 48 | } 49 | 50 | public ReqMailRead(long mailid, bool period, int page, string iname) 51 | { 52 | this.name = "mail/read"; 53 | this.body = "\"mailids\":["; 54 | this.body += mailid.ToString(); 55 | this.body += "],"; 56 | this.body += "\"page\":"; 57 | this.body += page; 58 | this.body += ","; 59 | this.body += "\"period\":"; 60 | this.body += ((!period) ? 0 : 1); 61 | this.body += ","; 62 | this.body += "\"selected\":\""; 63 | this.body += iname; 64 | this.body += "\""; 65 | this.body = WebAPI.GetRequestString(this.body); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqArtifactSet.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqArtifactSet : WebAPI 8 | { 9 | public ReqArtifactSet(long iid_job, long iid_artifact) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("\"iid_job\":"); 13 | stringBuilder.Append(iid_job); 14 | stringBuilder.Append(",\"iid_artifact\":"); 15 | stringBuilder.Append(iid_artifact); 16 | this.name = "unit/job/artifact/set"; 17 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 18 | } 19 | 20 | public ReqArtifactSet(long iid_job, long[] iid_artifact) 21 | { 22 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 23 | stringBuilder.Append("\"iid_job\":"); 24 | stringBuilder.Append(iid_job); 25 | stringBuilder.Append(",\"iid_artifact\":"); 26 | stringBuilder.Append(iid_artifact[0]); 27 | stringBuilder.Append(",\"iid_artifacts\":["); 28 | for (int i = 0; i < iid_artifact.Length; i++) 29 | { 30 | if (i > 0) 31 | { 32 | stringBuilder.Append(','); 33 | } 34 | stringBuilder.Append(iid_artifact[i]); 35 | } 36 | stringBuilder.Append(']'); 37 | this.name = "unit/job/artifact/set"; 38 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 39 | } 40 | 41 | public ReqArtifactSet(long iid_unit, long iid_job, long[] iid_artifact) 42 | { 43 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 44 | stringBuilder.Append("\"iid_unit\":"); 45 | stringBuilder.Append(iid_unit); 46 | stringBuilder.Append(",\"iid_job\":"); 47 | stringBuilder.Append(iid_job); 48 | stringBuilder.Append(",\"iid_artifacts\":["); 49 | for (int i = 0; i < iid_artifact.Length; i++) 50 | { 51 | if (i > 0) 52 | { 53 | stringBuilder.Append(','); 54 | } 55 | stringBuilder.Append(iid_artifact[i]); 56 | } 57 | stringBuilder.Append(']'); 58 | this.name = "unit/job/artifact/set"; 59 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUpdateTrophy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqUpdateTrophy : WebAPI 9 | { 10 | private StringBuilder sb; 11 | 12 | private bool is_begin; 13 | 14 | public ReqUpdateTrophy() 15 | { 16 | } 17 | 18 | public ReqUpdateTrophy(List trophyprogs, bool finish) 19 | { 20 | this.name = "trophy/exec"; 21 | this.BeginTrophyReqString(); 22 | this.AddTrophyReqString(trophyprogs, finish); 23 | this.EndTrophyReqString(); 24 | this.body = WebAPI.GetRequestString(this.GetTrophyReqString()); 25 | } 26 | 27 | public string GetTrophyReqString() 28 | { 29 | return this.sb.ToString(); 30 | } 31 | 32 | public void BeginTrophyReqString() 33 | { 34 | this.is_begin = true; 35 | this.sb = WebAPI.GetStringBuilder(); 36 | this.sb.Append("\"trophyprogs\":["); 37 | } 38 | 39 | public void EndTrophyReqString() 40 | { 41 | this.sb.Append(']'); 42 | } 43 | 44 | public void AddTrophyReqString(List trophyprogs, bool finish) 45 | { 46 | int num = 0; 47 | int value = 0; 48 | if (finish) 49 | { 50 | value = int.Parse(DateTime.Now.ToString("yyMMdd")); 51 | } 52 | for (int i = 0; i < trophyprogs.Count; i++) 53 | { 54 | if (this.is_begin) 55 | { 56 | this.is_begin = false; 57 | } 58 | else 59 | { 60 | this.sb.Append(','); 61 | } 62 | this.sb.Append("{\"iname\":\""); 63 | this.sb.Append(trophyprogs[i].iname); 64 | this.sb.Append("\","); 65 | this.sb.Append("\"pts\":["); 66 | for (int j = 0; j < trophyprogs[i].Count.Length; j++) 67 | { 68 | if (j > 0) 69 | { 70 | this.sb.Append(','); 71 | } 72 | this.sb.Append(trophyprogs[i].Count[j]); 73 | } 74 | this.sb.Append("],"); 75 | this.sb.Append("\"ymd\":"); 76 | this.sb.Append(trophyprogs[i].StartYMD); 77 | if (finish) 78 | { 79 | this.sb.Append(",\"rewarded_at\":"); 80 | this.sb.Append(value); 81 | } 82 | this.sb.Append("}"); 83 | num++; 84 | } 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqUpdateBingo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqUpdateBingo : WebAPI 9 | { 10 | private StringBuilder sb; 11 | 12 | private bool is_begin; 13 | 14 | public ReqUpdateBingo() 15 | { 16 | } 17 | 18 | public ReqUpdateBingo(List trophyprogs, bool finish) 19 | { 20 | this.name = "bingo/exec"; 21 | this.BeginBingoReqString(); 22 | this.AddBingoReqString(trophyprogs, finish); 23 | this.EndBingoReqString(); 24 | this.body = WebAPI.GetRequestString(this.GetBingoReqString()); 25 | } 26 | 27 | public string GetBingoReqString() 28 | { 29 | return this.sb.ToString(); 30 | } 31 | 32 | public void BeginBingoReqString() 33 | { 34 | this.is_begin = true; 35 | this.sb = WebAPI.GetStringBuilder(); 36 | this.sb.Append("\"bingoprogs\":["); 37 | } 38 | 39 | public void EndBingoReqString() 40 | { 41 | this.sb.Append(']'); 42 | } 43 | 44 | public void AddBingoReqString(List progs, bool finish) 45 | { 46 | int num = 0; 47 | int value = 0; 48 | if (finish) 49 | { 50 | value = int.Parse(DateTime.Now.ToString("yyMMdd")); 51 | } 52 | for (int i = 0; i < progs.Count; i++) 53 | { 54 | if (this.is_begin) 55 | { 56 | this.is_begin = false; 57 | } 58 | else 59 | { 60 | this.sb.Append(','); 61 | } 62 | this.sb.Append("{\"iname\":\""); 63 | this.sb.Append(progs[i].iname); 64 | this.sb.Append("\","); 65 | this.sb.Append("\"parent\":\""); 66 | if (progs[i].Param != null) 67 | { 68 | this.sb.Append(progs[i].Param.ParentTrophy); 69 | } 70 | this.sb.Append("\","); 71 | this.sb.Append("\"pts\":["); 72 | for (int j = 0; j < progs[i].Count.Length; j++) 73 | { 74 | if (j > 0) 75 | { 76 | this.sb.Append(','); 77 | } 78 | this.sb.Append(progs[i].Count[j]); 79 | } 80 | this.sb.Append("],"); 81 | this.sb.Append("\"ymd\":"); 82 | this.sb.Append(progs[i].StartYMD); 83 | if (finish) 84 | { 85 | this.sb.Append(",\"rewarded_at\":"); 86 | this.sb.Append(value); 87 | } 88 | this.sb.Append("}"); 89 | num++; 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /AlchemistCodeCode/SaveFile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace AlchemistCodeCode 8 | { 9 | public class SaveFile 10 | { 11 | static byte[] xorArray = new byte[128] 12 | { 13 | 0x08, 0x38, 0x55, 0x64, 0x17, 0xa0, 0x78, 0x4c, 0xf5, 0x97, 0x86, 0x4b, 0x16, 0xac, 0x9d, 0xd9, 14 | 0xaa, 0x1c, 0x81, 0x7a, 0x27, 0xae, 0x3f, 0x2c, 0xa1, 0x95, 0x80, 0xf4, 0xc8, 0x97, 0xd8, 0x6d, 15 | 0x98, 0x2c, 0x12, 0x5b, 0x88, 0x74, 0x13, 0xbe, 0xe6, 0x84, 0xda, 0xac, 0x14, 0x19, 0xf3, 0x38, 16 | 0x8a, 0xe2, 0x9d, 0x5d, 0xa0, 0x5c, 0x03, 0x71, 0xf6, 0x5b, 0x56, 0xb6, 0x48, 0x14, 0xe7, 0x16, 17 | 0xea, 0x44, 0x3b, 0xd0, 0xd8, 0x20, 0xd5, 0x65, 0xe9, 0xbe, 0xf9, 0xb2, 0xa8, 0x49, 0x1e, 0x80, 18 | 0x1e, 0xd8, 0x80, 0xf1, 0x3f, 0x71, 0x5f, 0x79, 0x92, 0xe3, 0xef, 0xb8, 0xbe, 0xe9, 0x63, 0x5a, 19 | 0x1e, 0xcf, 0x24, 0x5b, 0x87, 0x6b, 0xa2, 0xdc, 0x13, 0x3d, 0x7b, 0xfe, 0x19, 0x60, 0x53, 0xcf, 20 | 0x13, 0x03, 0x45, 0x4f, 0x0f, 0x84, 0xc8, 0x87, 0xac, 0x2a, 0xd5, 0xbc, 0x70, 0xbd, 0xfd, 0x66 21 | }; 22 | static List Decrypt(List result) 23 | { 24 | int v2 = 153; 25 | for (int i = 0; i < result.Count; ++i) 26 | { 27 | v2 ^= result[i] ^ xorArray[i & 0x7F]; 28 | result[i] = (byte)v2; 29 | } 30 | return result; 31 | } 32 | static List Encrypt(List result) 33 | { 34 | byte v2 = 0x99; 35 | byte v4; 36 | for (int i = 0; i < result.Count; ++i) 37 | { 38 | v4 = result[i]; 39 | result[i] = (byte)(v2 ^ xorArray[i & 0x7F] ^ v4); 40 | v2 = v4; 41 | } 42 | return result; 43 | } 44 | public static void Save(String deviceId, String secret, String saveFileLoc) 45 | { 46 | var fileContent = deviceId + " " + secret; 47 | var fileBytes = Encoding.UTF8.GetBytes(fileContent); 48 | var saveFileBytes = Encrypt(fileBytes.ToList()); 49 | File.WriteAllBytes(saveFileLoc, saveFileBytes.ToArray()); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /DataExtractor/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.IO; 5 | using Mono.Cecil; 6 | using ICSharpCode.Decompiler; 7 | using ICSharpCode.Decompiler.Ast; 8 | 9 | namespace DataExtractor 10 | { 11 | class Program 12 | { 13 | static void Main(string[] args) 14 | { 15 | //Wiki.Updater.Update(); 16 | // todo - add getting Assembly-CSharp.dll dynamically 17 | var assemblyDefinition = AssemblyDefinition.ReadAssembly(@"Assembly-CSharp.dll"); 18 | var types = assemblyDefinition.MainModule.Types.ToList().FindAll(t => t.Name.StartsWith("Req")); 19 | foreach (var type in types) 20 | { 21 | var decompiler = new AstBuilder(new DecompilerContext(type.Module)); 22 | decompiler.AddType(type); 23 | var output = new StringWriter(); 24 | decompiler.GenerateCode(new PlainTextOutput(output)); 25 | var code = output.ToString(); 26 | code = code.Replace("Network.", "Networking."); 27 | code = code.Replace("Mathf.", "Math."); 28 | code = code.Replace("using UnityEngine;\r\n", ""); 29 | code = code.Replace("\r\nnamespace SRPG", "using SRPG;\r\n\r\nnamespace AlchemistCodeCode.Network.Requests"); 30 | //code = code.Replace("\r\nnamespace SRPG", "\r\n\r\nnamespace AlchemistCodeCode.Network.Requests"); 31 | code = code.Replace("SystemInfo.deviceModel", "\"samsung SM-E7000\""); 32 | code = code.Replace(", Networking.ResponseCallback response = null", ""); 33 | code = code.Replace(", Networking.ResponseCallback response", ""); 34 | code = code.Replace("Networking.ResponseCallback response, ", ""); 35 | code = code.Replace("Networking.ResponseCallback response", ""); 36 | code = code.Replace(", response", ""); 37 | code = code.Replace("\r\n this.callback = response;", ""); 38 | code = code.Replace("TimeManager.ServerTime.ToYMD()", "int.Parse(DateTime.Now.ToString(\"yyMMdd\"))"); 39 | code = code.Replace("GameUtility.ConvertLanguageToISO639(language)", "language"); 40 | code = code.Replace("MonoSingleton<", ""); 41 | code = code.Replace(">.Instance", ".Instance"); 42 | //Console.WriteLine(code); 43 | //File.WriteAllText(@"..\AlchemistCodeCode\Network\Requests\" + type.Name + ".cs", code); 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqVersusEnd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network.Requests 6 | { 7 | public class ReqVersusEnd : WebAPI 8 | { 9 | public ReqVersusEnd(long btlid, int time, BtlResultTypes result, int[] beats, string uid, string fuid, VERSUS_TYPE type, string trophyprog = null, string bingoprog = null, string maxdata = null) 10 | { 11 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 12 | stringBuilder.Append("vs/"); 13 | stringBuilder.Append(type.ToString().ToLower()); 14 | stringBuilder.Append("match/end"); 15 | this.name = stringBuilder.ToString(); 16 | stringBuilder.Length = 0; 17 | stringBuilder.Append("\"btlid\":"); 18 | stringBuilder.Append(btlid); 19 | stringBuilder.Append(','); 20 | stringBuilder.Append("\"btlendparam\":{"); 21 | stringBuilder.Append("\"time\":"); 22 | stringBuilder.Append(time); 23 | stringBuilder.Append(','); 24 | stringBuilder.Append("\"result\":\""); 25 | switch (result) 26 | { 27 | case BtlResultTypes.Win: 28 | stringBuilder.Append("win"); 29 | break; 30 | case BtlResultTypes.Lose: 31 | stringBuilder.Append("lose"); 32 | break; 33 | case BtlResultTypes.Retire: 34 | stringBuilder.Append("retire"); 35 | break; 36 | case BtlResultTypes.Cancel: 37 | stringBuilder.Append("cancel"); 38 | break; 39 | case BtlResultTypes.Draw: 40 | stringBuilder.Append("draw"); 41 | break; 42 | } 43 | if (result == BtlResultTypes.Win && beats == null) 44 | { 45 | beats = new int[0]; 46 | } 47 | stringBuilder.Append("\","); 48 | if (beats != null) 49 | { 50 | stringBuilder.Append("\"beats\":["); 51 | for (int i = 0; i < beats.Length; i++) 52 | { 53 | if (i > 0) 54 | { 55 | stringBuilder.Append(','); 56 | } 57 | stringBuilder.Append(beats[i].ToString()); 58 | } 59 | stringBuilder.Append("],"); 60 | } 61 | stringBuilder.Append("\"steals\":["); 62 | stringBuilder.Append("],"); 63 | stringBuilder.Append("\"missions\":["); 64 | stringBuilder.Append("],"); 65 | stringBuilder.Append("\"token\":\""); 66 | stringBuilder.Append(JsonEscape.Escape(GlobalVars.SelectedMultiPlayRoomName)); 67 | stringBuilder.Append("\","); 68 | if (stringBuilder[stringBuilder.Length - 1] == ',') 69 | { 70 | stringBuilder.Length--; 71 | } 72 | stringBuilder.Append("},"); 73 | stringBuilder.Append("\"uid\":\""); 74 | stringBuilder.Append(uid); 75 | stringBuilder.Append("\","); 76 | stringBuilder.Append("\"fuid\":\""); 77 | stringBuilder.Append(fuid); 78 | stringBuilder.Append("\""); 79 | if (!string.IsNullOrEmpty(trophyprog)) 80 | { 81 | stringBuilder.Append(","); 82 | stringBuilder.Append(trophyprog); 83 | } 84 | if (!string.IsNullOrEmpty(bingoprog)) 85 | { 86 | stringBuilder.Append(","); 87 | stringBuilder.Append(bingoprog); 88 | } 89 | if (!string.IsNullOrEmpty(maxdata)) 90 | { 91 | stringBuilder.Append(","); 92 | stringBuilder.Append(maxdata); 93 | } 94 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Networking.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Net; 4 | using System.Text; 5 | using System.Text.RegularExpressions; 6 | using Newtonsoft.Json; 7 | using Newtonsoft.Json.Linq; 8 | 9 | namespace AlchemistCodeCode.Network 10 | { 11 | public static class Networking 12 | { 13 | public static int debuglevel = 0; 14 | public static int TicketID = 1; 15 | public delegate void ResponseCallback(SRPG.WWWResult result); 16 | private static int FindStat(string response) 17 | { 18 | Regex regex = new Regex("\"stat\":(?\\d+)", 0); 19 | Match match = regex.Match(response); 20 | if (!match.Success) 21 | { 22 | return 0; 23 | } 24 | return Convert.ToInt32(regex.Match(response).Result("${stat}")); 25 | } 26 | private static string FindMessage(string response) 27 | { 28 | Regex regex = new Regex("\"stat_msg\":\"(?.+?)\"[,}]", 0); 29 | Match match = regex.Match(response); 30 | if (!match.Success) 31 | { 32 | return string.Empty; 33 | } 34 | return regex.Match(response).Result("${stat_msg}"); 35 | } 36 | public static JObject RequestAPI(WebAPI api) 37 | { 38 | if (debuglevel > 0) 39 | Console.Write("Requesting " + api.name + "..."); 40 | HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://app.alcww.gumi.sg/"/*SRPG.Network.Host*/ + api.name); 41 | httpWebRequest.ContentType = "application/json; charset=utf-8"; 42 | httpWebRequest.Timeout = ((int)(240 * 1000f)); 43 | httpWebRequest.UserAgent = "Mozilla/5.0 (Linux; Android 4.4.2; SM-E7000 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36"; 44 | if (!string.IsNullOrEmpty(GameManager.Instance.Version)) 45 | httpWebRequest.Headers.Add("x-app-ver", GameManager.Instance.Version); 46 | if (!string.IsNullOrEmpty(GameManager.Instance.AssetVersion)) 47 | httpWebRequest.Headers.Add("x-asset-ver", GameManager.Instance.AssetVersion); 48 | httpWebRequest.Headers.Set("X-GUMI-TRANSACTION", api.GumiTransactionId); 49 | httpWebRequest.Headers.Set("X-Unity-Version", "5.3.6f1"); 50 | if (!string.IsNullOrEmpty(GameManager.Instance.SessionID)) 51 | httpWebRequest.Headers.Add("Authorization", "gumi " + GameManager.Instance.SessionID); 52 | HttpWebResponse httpWebResponse = null; 53 | string response = null; 54 | try 55 | { 56 | if (string.IsNullOrEmpty(api.body)) 57 | { 58 | httpWebRequest.Method = "GET"; 59 | } 60 | else 61 | { 62 | httpWebRequest.Method = "POST"; 63 | byte[] bytes = Encoding.UTF8.GetBytes(api.body); 64 | httpWebRequest.ContentLength = (long)bytes.Length; 65 | BinaryWriter binaryWriter = new BinaryWriter(httpWebRequest.GetRequestStream()); 66 | binaryWriter.Write(bytes); 67 | binaryWriter.Close(); 68 | } 69 | httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 70 | StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), true); 71 | response = streamReader.ReadToEnd(); 72 | } 73 | catch (Exception exception) 74 | { 75 | Console.WriteLine(exception.Message); 76 | } 77 | finally 78 | { 79 | if (httpWebResponse != null) 80 | httpWebResponse.Close(); 81 | } 82 | if (debuglevel > 1) 83 | { 84 | if (api.body != null) 85 | Console.WriteLine(((JObject)JsonConvert.DeserializeObject(api.body)).ToString()); 86 | Console.WriteLine(((JObject)JsonConvert.DeserializeObject(response)).ToString()); 87 | } 88 | if (debuglevel > 0) 89 | Console.WriteLine(" done."); 90 | TicketID++; 91 | return (JObject)JsonConvert.DeserializeObject(response); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/WebAPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using SRPG; 4 | 5 | namespace AlchemistCodeCode.Network 6 | { 7 | public abstract class WebAPI 8 | { 9 | public string name; 10 | public string body; 11 | public Networking.ResponseCallback callback; 12 | public readonly string GumiTransactionId = Guid.NewGuid().ToString(); 13 | private static StringBuilder mSB = new StringBuilder(512); 14 | protected static StringBuilder GetStringBuilder() 15 | { 16 | mSB.Length = 0; 17 | return mSB; 18 | } 19 | public static string EscapeString(string s) 20 | { 21 | s = s.Replace("\\", "\\\\"); 22 | s = s.Replace("\"", "\\\""); 23 | return s; 24 | } 25 | protected static string GetRequestString(string body) 26 | { 27 | string text = "{\"ticket\":" + Networking.TicketID; 28 | if (!string.IsNullOrEmpty(body)) 29 | { 30 | text = text + ",\"param\":{" + body + "}"; 31 | } 32 | return text + "}"; 33 | } 34 | protected static string GetBtlEndParamString(BattleCore.Record record, bool multi = false) 35 | { 36 | string text = null; 37 | if (record != null) 38 | { 39 | int num = 0; 40 | string text2 = "win"; 41 | if (multi && record.result == BattleCore.QuestResult.Pending) 42 | { 43 | text2 = "retire"; 44 | } 45 | else if (record.result != BattleCore.QuestResult.Win) 46 | { 47 | text2 = "lose"; 48 | } 49 | int[] array = new int[record.drops.Length]; 50 | for (int i = 0; i < record.drops.Length; i++) 51 | { 52 | array[i] = record.drops[i]; 53 | } 54 | int[] array2 = new int[record.item_steals.Length]; 55 | for (int j = 0; j < record.item_steals.Length; j++) 56 | { 57 | array2[j] = record.item_steals[j]; 58 | } 59 | int[] array3 = new int[record.gold_steals.Length]; 60 | for (int k = 0; k < record.gold_steals.Length; k++) 61 | { 62 | array3[k] = record.gold_steals[k]; 63 | } 64 | int[] array4 = new int[3]; 65 | for (int l = 0; l < array4.Length; l++) 66 | { 67 | array4[l] = (((record.bonusFlags & 1 << l) == 0) ? 0 : 1); 68 | } 69 | text += "\"btlendparam\":{"; 70 | string text3 = text; 71 | text = string.Concat(new object[] 72 | { 73 | text3, 74 | "\"time\":", 75 | num, 76 | "," 77 | }); 78 | text = text + "\"result\":\"" + text2 + "\","; 79 | text += "\"beats\":["; 80 | for (int m = 0; m < array.Length; m++) 81 | { 82 | text += array[m].ToString(); 83 | if (m != array.Length - 1) 84 | { 85 | text += ","; 86 | } 87 | } 88 | text += "],"; 89 | text += "\"steals\":{"; 90 | text += "\"items\":["; 91 | for (int n = 0; n < array2.Length; n++) 92 | { 93 | text += array2[n].ToString(); 94 | if (n != array.Length - 1) 95 | { 96 | text += ","; 97 | } 98 | } 99 | text += "],"; 100 | text += "\"golds\":["; 101 | for (int num2 = 0; num2 < array3.Length; num2++) 102 | { 103 | text += array3[num2].ToString(); 104 | if (num2 != array.Length - 1) 105 | { 106 | text += ","; 107 | } 108 | } 109 | text += "]"; 110 | text += "},"; 111 | text += "\"missions\":["; 112 | for (int num3 = 0; num3 < array4.Length; num3++) 113 | { 114 | text += array4[num3].ToString(); 115 | if (num3 != array4.Length - 1) 116 | { 117 | text += ","; 118 | } 119 | } 120 | text += "]"; 121 | if (multi) 122 | { 123 | text = text + ",\"token\":\"" + JsonEscape.Escape(GlobalVars.SelectedMultiPlayRoomName) + "\""; 124 | } 125 | text += "}"; 126 | } 127 | return text; 128 | } 129 | public class JSON_BaseResponse 130 | { 131 | public int stat; 132 | public string stat_msg; 133 | public string stat_code; 134 | public long time; 135 | public int ticket; 136 | } 137 | public class JSON_BodyResponse : JSON_BaseResponse 138 | { 139 | public T body; 140 | } 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqBtlComEnd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SRPG; 5 | 6 | namespace AlchemistCodeCode.Network.Requests 7 | { 8 | public class ReqBtlComEnd : WebAPI 9 | { 10 | public ReqBtlComEnd(long btlid, int time, BtlResultTypes result, int[] beats, int[] itemSteals, int[] goldSteals, int[] missions, string[] fuid, Dictionary usedItems, BtlEndTypes apiType, string trophyprog = null, string bingoprog = null, string maxdata = null) 11 | { 12 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 13 | stringBuilder.Append("btl/"); 14 | stringBuilder.Append(apiType.ToString()); 15 | stringBuilder.Append("/end"); 16 | this.name = stringBuilder.ToString(); 17 | stringBuilder.Length = 0; 18 | stringBuilder.Append("\"btlid\":"); 19 | stringBuilder.Append(btlid); 20 | stringBuilder.Append(','); 21 | stringBuilder.Append("\"btlendparam\":{"); 22 | stringBuilder.Append("\"time\":"); 23 | stringBuilder.Append(time); 24 | stringBuilder.Append(','); 25 | stringBuilder.Append("\"result\":\""); 26 | switch (result) 27 | { 28 | case BtlResultTypes.Win: 29 | stringBuilder.Append("win"); 30 | break; 31 | case BtlResultTypes.Lose: 32 | stringBuilder.Append("lose"); 33 | break; 34 | case BtlResultTypes.Retire: 35 | stringBuilder.Append("retire"); 36 | break; 37 | case BtlResultTypes.Cancel: 38 | stringBuilder.Append("cancel"); 39 | break; 40 | } 41 | if (result == BtlResultTypes.Win) 42 | { 43 | if (beats == null) 44 | { 45 | beats = new int[0]; 46 | } 47 | if (itemSteals == null) 48 | { 49 | itemSteals = new int[0]; 50 | } 51 | if (goldSteals == null) 52 | { 53 | goldSteals = new int[0]; 54 | } 55 | if (missions == null) 56 | { 57 | missions = new int[3]; 58 | } 59 | } 60 | if (result != BtlResultTypes.Cancel && usedItems == null) 61 | { 62 | usedItems = new Dictionary(); 63 | } 64 | stringBuilder.Append("\","); 65 | if (beats != null) 66 | { 67 | stringBuilder.Append("\"beats\":["); 68 | for (int i = 0; i < beats.Length; i++) 69 | { 70 | if (i > 0) 71 | { 72 | stringBuilder.Append(','); 73 | } 74 | stringBuilder.Append(beats[i].ToString()); 75 | } 76 | stringBuilder.Append("],"); 77 | } 78 | if (itemSteals != null || goldSteals != null) 79 | { 80 | stringBuilder.Append("\"steals\":{"); 81 | if (itemSteals != null) 82 | { 83 | stringBuilder.Append("\"items\":["); 84 | for (int j = 0; j < itemSteals.Length; j++) 85 | { 86 | stringBuilder.Append(itemSteals[j].ToString()); 87 | if (j != beats.Length - 1) 88 | { 89 | stringBuilder.Append(','); 90 | } 91 | } 92 | stringBuilder.Append("]"); 93 | } 94 | if (goldSteals != null) 95 | { 96 | if (itemSteals != null) 97 | { 98 | stringBuilder.Append(','); 99 | } 100 | stringBuilder.Append("\"golds\":["); 101 | for (int k = 0; k < goldSteals.Length; k++) 102 | { 103 | stringBuilder.Append(goldSteals[k].ToString()); 104 | if (k != beats.Length - 1) 105 | { 106 | stringBuilder.Append(","); 107 | } 108 | } 109 | stringBuilder.Append("]"); 110 | } 111 | stringBuilder.Append("},"); 112 | } 113 | if (missions != null) 114 | { 115 | stringBuilder.Append("\"missions\":["); 116 | for (int l = 0; l < missions.Length; l++) 117 | { 118 | if (l > 0) 119 | { 120 | stringBuilder.Append(','); 121 | } 122 | stringBuilder.Append(missions[l].ToString()); 123 | } 124 | stringBuilder.Append("],"); 125 | } 126 | if (usedItems != null) 127 | { 128 | stringBuilder.Append("\"inputs\":["); 129 | int num = 0; 130 | foreach (KeyValuePair current in usedItems) 131 | { 132 | if (num > 0) 133 | { 134 | stringBuilder.Append(','); 135 | } 136 | stringBuilder.Append("{"); 137 | stringBuilder.Append("\"use\":\""); 138 | stringBuilder.Append(current.Key); 139 | stringBuilder.Append("\","); 140 | stringBuilder.Append("\"n\":"); 141 | stringBuilder.Append(current.Value); 142 | stringBuilder.Append("}"); 143 | num++; 144 | } 145 | stringBuilder.Append("],"); 146 | } 147 | if (apiType == BtlEndTypes.multi) 148 | { 149 | stringBuilder.Append("\"token\":\""); 150 | stringBuilder.Append(JsonEscape.Escape(GlobalVars.SelectedMultiPlayRoomName)); 151 | stringBuilder.Append("\","); 152 | } 153 | if (stringBuilder[stringBuilder.Length - 1] == ',') 154 | { 155 | stringBuilder.Length--; 156 | } 157 | stringBuilder.Append('}'); 158 | if (apiType == BtlEndTypes.multi && fuid != null) 159 | { 160 | stringBuilder.Append(",\"fuids\":["); 161 | for (int m = 0; m < fuid.Length; m++) 162 | { 163 | if (fuid[m] != null) 164 | { 165 | if (m != 0) 166 | { 167 | stringBuilder.Append(", "); 168 | } 169 | stringBuilder.Append("\""); 170 | stringBuilder.Append(fuid[m]); 171 | stringBuilder.Append("\""); 172 | } 173 | } 174 | stringBuilder.Append("]"); 175 | } 176 | if (!string.IsNullOrEmpty(trophyprog)) 177 | { 178 | stringBuilder.Append(","); 179 | stringBuilder.Append(trophyprog); 180 | } 181 | if (!string.IsNullOrEmpty(bingoprog)) 182 | { 183 | stringBuilder.Append(","); 184 | stringBuilder.Append(bingoprog); 185 | } 186 | if (!string.IsNullOrEmpty(maxdata)) 187 | { 188 | stringBuilder.Append(","); 189 | stringBuilder.Append(maxdata); 190 | } 191 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 192 | } 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /DataExtractor/DataExtractor.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {63AE8754-A4FD-4582-8405-DF6CFAABC80C} 8 | Exe 9 | DataExtractor 10 | DataExtractor 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | ..\bin\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | ..\bin\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | ..\Assembly-CSharp.dll 37 | 38 | 39 | ..\packages\ICSharpCode.Decompiler.2.3.1\lib\Net40\ICSharpCode.Decompiler.dll 40 | 41 | 42 | ..\packages\ICSharpCode.NRefactory.5.5.1\lib\Net40\ICSharpCode.NRefactory.dll 43 | 44 | 45 | ..\packages\ICSharpCode.NRefactory.5.5.1\lib\Net40\ICSharpCode.NRefactory.Cecil.dll 46 | 47 | 48 | ..\packages\ICSharpCode.NRefactory.5.5.1\lib\Net40\ICSharpCode.NRefactory.CSharp.dll 49 | 50 | 51 | ..\packages\ICSharpCode.NRefactory.5.5.1\lib\Net40\ICSharpCode.NRefactory.Xml.dll 52 | 53 | 54 | ..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.dll 55 | 56 | 57 | ..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Mdb.dll 58 | 59 | 60 | ..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Pdb.dll 61 | 62 | 63 | ..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Rocks.dll 64 | 65 | 66 | ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | ..\UnityEngine.dll 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | {817ac3d2-c88a-4556-94b2-173af31645a3} 100 | AlchemistCodeCode 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Network/Requests/ReqTowerBtlComEnd.cs: -------------------------------------------------------------------------------- 1 | using GR; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using SRPG; 6 | 7 | namespace AlchemistCodeCode.Network.Requests 8 | { 9 | public class ReqTowerBtlComEnd : WebAPI 10 | { 11 | public ReqTowerBtlComEnd(long btlid, Unit[] Player, Unit[] Enemy, int actCount, int round, byte floor, BtlResultTypes result, RandDeckResult[] deck, string trophyprog = null, string bingoprog = null, string maxdata = null) 12 | { 13 | StringBuilder stringBuilder = WebAPI.GetStringBuilder(); 14 | this.name = "tower/btl/end"; 15 | stringBuilder.Length = 0; 16 | this.SetValue(ref stringBuilder, "\"btlid\":", btlid); 17 | stringBuilder.Append("\"btlendparam\":{"); 18 | if (Player != null) 19 | { 20 | stringBuilder.Append("\"pdeck\":["); 21 | for (int i = 0; i < Player.Length; i++) 22 | { 23 | Unit unit = Player[i]; 24 | if (unit.Side == EUnitSide.Player && unit.UnitData.UniqueID != 0L) 25 | { 26 | stringBuilder.Append("{"); 27 | this.SetValue(ref stringBuilder, "\"iid\":", unit.UnitData.UniqueID); 28 | this.SetValue(ref stringBuilder, "\"iname\":\"", unit.UnitData.UnitParam.iname, "\","); 29 | int num = unit.CalcTowerDamege(); 30 | TowerFloorParam towerFloorParam = GameManager.Instance.FindTowerFloor(SceneBattle.Instance.Battle.QuestID); 31 | num -= towerFloorParam.CalcHelaNum(unit.MaximumStatus.param.hp); 32 | num = Math.Max(num, 0); 33 | this.SetValue(ref stringBuilder, "\"damage\":", (long)num); 34 | this.SetValue(ref stringBuilder, "\"is_died\":", (!unit.IsDeadCondition()) ? 0L : 1L, string.Empty); 35 | stringBuilder.Append("},"); 36 | } 37 | } 38 | stringBuilder.Length--; 39 | stringBuilder.Append("],"); 40 | } 41 | stringBuilder.Append("\"status\":\""); 42 | switch (result) 43 | { 44 | case BtlResultTypes.Win: 45 | stringBuilder.Append("win"); 46 | break; 47 | case BtlResultTypes.Lose: 48 | stringBuilder.Append("lose"); 49 | break; 50 | case BtlResultTypes.Retire: 51 | stringBuilder.Append("retire"); 52 | break; 53 | case BtlResultTypes.Cancel: 54 | stringBuilder.Append("cancel"); 55 | break; 56 | } 57 | stringBuilder.Append("\""); 58 | stringBuilder.Append(",\"turn\":"); 59 | stringBuilder.Append(actCount); 60 | stringBuilder.Append(",\"round\":"); 61 | stringBuilder.Append(round); 62 | stringBuilder.Append(",\"floor\":"); 63 | stringBuilder.Append(floor); 64 | if (result == BtlResultTypes.Lose) 65 | { 66 | stringBuilder.Append(",\"edeck\":["); 67 | List list = new List(Enemy); 68 | list.RemoveAll((Unit x) => x.Side != EUnitSide.Enemy); 69 | if (GameManager.Instance.TowerResuponse.edeck != null) 70 | { 71 | List edeck = GameManager.Instance.TowerResuponse.edeck; 72 | int num2 = 0; 73 | for (int j = 0; j < edeck.Count; j++) 74 | { 75 | if (edeck[j].hp == 0) 76 | { 77 | stringBuilder.Append("{"); 78 | this.SetValue(ref stringBuilder, "\"eid\":\"", (long)j, "\","); 79 | this.SetValue(ref stringBuilder, "\"iname\":\"", edeck[j].iname, "\","); 80 | this.SetValue(ref stringBuilder, "\"hp\":", 0L); 81 | this.SetValue(ref stringBuilder, "\"jewel\":", 0L, string.Empty); 82 | stringBuilder.Append("},"); 83 | } 84 | else 85 | { 86 | Unit unit2 = list[num2]; 87 | num2++; 88 | if (unit2.Side == EUnitSide.Enemy) 89 | { 90 | stringBuilder.Append("{"); 91 | this.SetValue(ref stringBuilder, "\"eid\":\"", (long)j, "\","); 92 | this.SetValue(ref stringBuilder, "\"iname\":\"", unit2.UnitParam.iname, "\","); 93 | this.SetValue(ref stringBuilder, "\"hp\":", (!unit2.IsDead) ? ((long)unit2.CurrentStatus.param.hp) : 0L); 94 | this.SetValue(ref stringBuilder, "\"jewel\":", (long)unit2.CurrentStatus.param.mp, string.Empty); 95 | stringBuilder.Append("},"); 96 | } 97 | } 98 | } 99 | } 100 | else 101 | { 102 | for (int k = 0; k < list.Count; k++) 103 | { 104 | Unit unit3 = list[k]; 105 | if (unit3.Side == EUnitSide.Enemy) 106 | { 107 | stringBuilder.Append("{"); 108 | this.SetValue(ref stringBuilder, "\"eid\":\"", (long)k, "\","); 109 | this.SetValue(ref stringBuilder, "\"iname\":\"", unit3.UnitParam.iname, "\","); 110 | this.SetValue(ref stringBuilder, "\"hp\":", (!unit3.IsDead) ? ((long)unit3.CurrentStatus.param.hp) : 0L); 111 | this.SetValue(ref stringBuilder, "\"jewel\":", (long)unit3.CurrentStatus.param.mp, string.Empty); 112 | stringBuilder.Append("},"); 113 | } 114 | } 115 | } 116 | stringBuilder.Length--; 117 | stringBuilder.Append("]"); 118 | } 119 | SupportData supportData = GlobalVars.SelectedSupport.Get(); 120 | if (GlobalVars.SelectedFriendID != null && supportData != null) 121 | { 122 | stringBuilder.Append(",\"help\":{\"fuid\":\""); 123 | stringBuilder.Append(GlobalVars.SelectedFriendID); 124 | stringBuilder.Append("\",\"cost\":"); 125 | stringBuilder.Append(supportData.Cost); 126 | stringBuilder.Append("}"); 127 | } 128 | if (!string.IsNullOrEmpty(trophyprog)) 129 | { 130 | stringBuilder.Append(","); 131 | stringBuilder.Append(trophyprog); 132 | } 133 | if (!string.IsNullOrEmpty(bingoprog)) 134 | { 135 | stringBuilder.Append(","); 136 | stringBuilder.Append(bingoprog); 137 | } 138 | if (!string.IsNullOrEmpty(maxdata)) 139 | { 140 | stringBuilder.Append(","); 141 | stringBuilder.Append(maxdata); 142 | } 143 | stringBuilder.Append("}"); 144 | this.body = WebAPI.GetRequestString(stringBuilder.ToString()); 145 | } 146 | 147 | public void SetValue(ref StringBuilder sb, string name, long value) 148 | { 149 | sb.Append(name); 150 | sb.Append(value); 151 | sb.Append(","); 152 | } 153 | 154 | public void SetValue(ref StringBuilder sb, string name, string value) 155 | { 156 | sb.Append(name); 157 | sb.Append(value); 158 | sb.Append(","); 159 | } 160 | 161 | public void SetValue(ref StringBuilder sb, string name, long value, string end) 162 | { 163 | sb.Append(name); 164 | sb.Append(value); 165 | sb.Append(end); 166 | } 167 | 168 | public void SetValue(ref StringBuilder sb, string name, string value, string end) 169 | { 170 | sb.Append(name); 171 | sb.Append(value); 172 | sb.Append(end); 173 | } 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # Benchmark Results 46 | BenchmarkDotNet.Artifacts/ 47 | 48 | # .NET Core 49 | project.lock.json 50 | project.fragment.lock.json 51 | artifacts/ 52 | **/Properties/launchSettings.json 53 | 54 | *_i.c 55 | *_p.c 56 | *_i.h 57 | *.ilk 58 | *.meta 59 | *.obj 60 | *.pch 61 | *.pdb 62 | *.pgc 63 | *.pgd 64 | *.rsp 65 | *.sbr 66 | *.tlb 67 | *.tli 68 | *.tlh 69 | *.tmp 70 | *.tmp_proj 71 | *.log 72 | *.vspscc 73 | *.vssscc 74 | .builds 75 | *.pidb 76 | *.svclog 77 | *.scc 78 | 79 | # Chutzpah Test files 80 | _Chutzpah* 81 | 82 | # Visual C++ cache files 83 | ipch/ 84 | *.aps 85 | *.ncb 86 | *.opendb 87 | *.opensdf 88 | *.sdf 89 | *.cachefile 90 | *.VC.db 91 | *.VC.VC.opendb 92 | 93 | # Visual Studio profiler 94 | *.psess 95 | *.vsp 96 | *.vspx 97 | *.sap 98 | 99 | # TFS 2012 Local Workspace 100 | $tf/ 101 | 102 | # Guidance Automation Toolkit 103 | *.gpState 104 | 105 | # ReSharper is a .NET coding add-in 106 | _ReSharper*/ 107 | *.[Rr]e[Ss]harper 108 | *.DotSettings.user 109 | 110 | # JustCode is a .NET coding add-in 111 | .JustCode 112 | 113 | # TeamCity is a build add-in 114 | _TeamCity* 115 | 116 | # DotCover is a Code Coverage Tool 117 | *.dotCover 118 | 119 | # AxoCover is a Code Coverage Tool 120 | .axoCover/* 121 | !.axoCover/settings.json 122 | 123 | # Visual Studio code coverage results 124 | *.coverage 125 | *.coveragexml 126 | 127 | # NCrunch 128 | _NCrunch_* 129 | .*crunch*.local.xml 130 | nCrunchTemp_* 131 | 132 | # MightyMoose 133 | *.mm.* 134 | AutoTest.Net/ 135 | 136 | # Web workbench (sass) 137 | .sass-cache/ 138 | 139 | # Installshield output folder 140 | [Ee]xpress/ 141 | 142 | # DocProject is a documentation generator add-in 143 | DocProject/buildhelp/ 144 | DocProject/Help/*.HxT 145 | DocProject/Help/*.HxC 146 | DocProject/Help/*.hhc 147 | DocProject/Help/*.hhk 148 | DocProject/Help/*.hhp 149 | DocProject/Help/Html2 150 | DocProject/Help/html 151 | 152 | # Click-Once directory 153 | publish/ 154 | 155 | # Publish Web Output 156 | *.[Pp]ublish.xml 157 | *.azurePubxml 158 | # Note: Comment the next line if you want to checkin your web deploy settings, 159 | # but database connection strings (with potential passwords) will be unencrypted 160 | *.pubxml 161 | *.publishproj 162 | 163 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 164 | # checkin your Azure Web App publish settings, but sensitive information contained 165 | # in these scripts will be unencrypted 166 | PublishScripts/ 167 | 168 | # NuGet Packages 169 | *.nupkg 170 | # The packages folder can be ignored because of Package Restore 171 | **/packages/* 172 | # except build/, which is used as an MSBuild target. 173 | !**/packages/build/ 174 | # Uncomment if necessary however generally it will be regenerated when needed 175 | #!**/packages/repositories.config 176 | # NuGet v3's project.json files produces more ignorable files 177 | *.nuget.props 178 | *.nuget.targets 179 | 180 | # Microsoft Azure Build Output 181 | csx/ 182 | *.build.csdef 183 | 184 | # Microsoft Azure Emulator 185 | ecf/ 186 | rcf/ 187 | 188 | # Windows Store app package directories and files 189 | AppPackages/ 190 | BundleArtifacts/ 191 | Package.StoreAssociation.xml 192 | _pkginfo.txt 193 | *.appx 194 | 195 | # Visual Studio cache files 196 | # files ending in .cache can be ignored 197 | *.[Cc]ache 198 | # but keep track of directories ending in .cache 199 | !*.[Cc]ache/ 200 | 201 | # Others 202 | ClientBin/ 203 | ~$* 204 | *~ 205 | *.dbmdl 206 | *.dbproj.schemaview 207 | *.jfm 208 | *.pfx 209 | *.publishsettings 210 | orleans.codegen.cs 211 | 212 | # Since there are multiple workflows, uncomment next line to ignore bower_components 213 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 214 | #bower_components/ 215 | 216 | # RIA/Silverlight projects 217 | Generated_Code/ 218 | 219 | # Backup & report files from converting an old project file 220 | # to a newer Visual Studio version. Backup files are not needed, 221 | # because we have git ;-) 222 | _UpgradeReport_Files/ 223 | Backup*/ 224 | UpgradeLog*.XML 225 | UpgradeLog*.htm 226 | 227 | # SQL Server files 228 | *.mdf 229 | *.ldf 230 | *.ndf 231 | 232 | # Business Intelligence projects 233 | *.rdl.data 234 | *.bim.layout 235 | *.bim_*.settings 236 | 237 | # Microsoft Fakes 238 | FakesAssemblies/ 239 | 240 | # GhostDoc plugin setting file 241 | *.GhostDoc.xml 242 | 243 | # Node.js Tools for Visual Studio 244 | .ntvs_analysis.dat 245 | node_modules/ 246 | 247 | # Typescript v1 declaration files 248 | typings/ 249 | 250 | # Visual Studio 6 build log 251 | *.plg 252 | 253 | # Visual Studio 6 workspace options file 254 | *.opt 255 | 256 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 257 | *.vbw 258 | 259 | # Visual Studio LightSwitch build output 260 | **/*.HTMLClient/GeneratedArtifacts 261 | **/*.DesktopClient/GeneratedArtifacts 262 | **/*.DesktopClient/ModelManifest.xml 263 | **/*.Server/GeneratedArtifacts 264 | **/*.Server/ModelManifest.xml 265 | _Pvt_Extensions 266 | 267 | # Paket dependency manager 268 | .paket/paket.exe 269 | paket-files/ 270 | 271 | # FAKE - F# Make 272 | .fake/ 273 | 274 | # JetBrains Rider 275 | .idea/ 276 | *.sln.iml 277 | 278 | # CodeRush 279 | .cr/ 280 | 281 | # Python Tools for Visual Studio (PTVS) 282 | __pycache__/ 283 | *.pyc 284 | 285 | # Cake - Uncomment if you are using it 286 | # tools/** 287 | # !tools/packages.config 288 | 289 | # Tabs Studio 290 | *.tss 291 | 292 | # Telerik's JustMock configuration file 293 | *.jmconfig 294 | 295 | # BizTalk build output 296 | *.btp.cs 297 | *.btm.cs 298 | *.odx.cs 299 | *.xsd.cs 300 | *.dll 301 | DataExtractor/Wiki/DotNetWikiBot.cs 302 | -------------------------------------------------------------------------------- /DataExtractor/Wiki/Units.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | 8 | namespace DataExtractor.Wiki 9 | { 10 | public static class Units 11 | { 12 | public static String CreateUnitListPage(List units) 13 | { 14 | string Content = "The following are the available '''Units''' for '''[[{{Gamename}}]]'''.[[Category:Unit Data]]\n\n"; 15 | Content += "==Summons==\n"; 16 | Content += "{| class=\"wikitable sortable\"\n"; 17 | Content += " |-\n ! Portrait !! Name !! Rarity !! Max Rarity || Element || Job 1 || Job 2 || Job 3\n"; 18 | foreach(var unit in units) 19 | { 20 | var unitName = Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_NAME"]; 21 | Content += " |-\n | [[File:" + unitName + "Portrait.png|link=" + unitName + "]] || "; 22 | Content += "[[" + unitName + "]] || "; 23 | Content += (int.Parse(unit["rare"].ToString()) + 1) + "★ || "; 24 | Content += (int.Parse(unit["raremax"].ToString()) + 1) + "★ || "; 25 | Content += "[[File: " + (SRPG.EElement)int.Parse(unit["elem"].ToString()) + "Element.png|center]] || "; 26 | var jobList = new List() { "", "", "" }; 27 | int i = 0; 28 | foreach (var job in unit["jobsets"]) 29 | { 30 | var jobset = Updater.Data_MasterParam["JobSet"].First(a => a["iname"].ToString() == job.ToString()); 31 | var subjob = Updater.Data_MasterParam["Job"].First(a => a["iname"].ToString() == jobset["job"].ToString()); 32 | var subjobname = Updater.Loc_english_LocalizedMasterParam[subjob["iname"] + "_NAME"].ToString(); 33 | var jobname = subjob["iname"].ToString() == subjob["origin"]?.ToString() ? subjobname : (subjobname.Replace("[", "").Replace("]", "") + " (" + subjob["iname"].ToString().Substring(3)) + ")"; 34 | jobList[i++] = "[[" + jobname + "]]"; 35 | } 36 | Content += String.Join(" || ", jobList); 37 | Content += "\n |-\n"; 38 | } 39 | Content += " |}"; 40 | return Content; 41 | } 42 | public static String CreateUnitPage(JToken unit) 43 | { 44 | string Content = "{{Infobox\n| name = {{PAGENAME}}\n| image = {{PAGENAME}}FullImage.png\n}}\n'''{{PAGENAME}}''' is a '''[[Units|Unit]]''' in '''[[The Alchemist Code]]'''.[[Category:Summons]]\n\n"; 45 | Content += "==Stats==\n"; 46 | Content += "{| class=\"wikitable sortable\"\n"; 47 | Content += " |-\n ! Stat !! Min !! Max\n"; 48 | Content += " |-\n | HP || " + unit["hp"] + " || " + unit["mhp"] + "\n"; 49 | Content += " |-\n | MP || " + unit["mp"] + " || " + unit["mmp"] + "\n"; 50 | Content += " |-\n | ATK || " + unit["atk"] + " || " + unit["matk"] + "\n"; 51 | Content += " |-\n | DEF || " + unit["def"] + " || " + unit["mdef"] + "\n"; 52 | Content += " |-\n | MAG || " + unit["mag"] + " || " + unit["mmag"] + "\n"; 53 | Content += " |-\n | MND || " + unit["mnd"] + " || " + unit["mmnd"] + "\n"; 54 | Content += " |-\n | DEX || " + unit["dex"] + " || " + unit["mdex"] + "\n"; 55 | Content += " |-\n | SPD || " + unit["spd"] + " || " + unit["mspd"] + "\n"; 56 | Content += " |-\n | CRI || " + unit["cri"] + " || " + unit["mcri"] + "\n"; 57 | Content += " |-\n | LUK || " + unit["luk"] + " || " + unit["mluk"] + "\n |}\n"; 58 | Content += "'''Growth Rate'': " + unit["grow"] + "\n\n"; 59 | Content += "==Information==\n"; 60 | Content += "'''Initial Rarity''': " + (int.Parse(unit["rare"].ToString()) + 1) + "★\n\n"; 61 | Content += "'''Max Rarity''': " + (int.Parse(unit["raremax"].ToString()) + 1) + "★\n\n"; 62 | Content += "'''Element''': " + (SRPG.EElement)int.Parse(unit["elem"].ToString()) + "\n\n"; 63 | Content += "===Leader Skill===\n"; 64 | Content += (unit["ls1"] == null ? "This unit does not have a leader skill" : (";" + Updater.Loc_english_LocalizedMasterParam[unit["ls1"] + "_NAME"] + "\n: " + Updater.Loc_english_LocalizedMasterParam[unit["ls1"] + "_EXPR"])) + "\n\n"; 65 | Content += "===Master Skill===\n"; 66 | var ability = Updater.Data_MasterParam["Ability"].FirstOrDefault(a => a["iname"].ToString() == unit["ability"]?.ToString()); 67 | Content += (ability == null ? "This unit does not have a master skill" : (";" + Updater.Loc_english_LocalizedMasterParam[ability["skl1"] + "_NAME"] + "\n: " + Updater.Loc_english_LocalizedMasterParam[ability["skl1"] + "_EXPR"])) + "\n\n"; 68 | Content += "==Available Jobs==\n"; 69 | foreach(var job in unit["jobsets"]) 70 | { 71 | var jobset = Updater.Data_MasterParam["JobSet"].First(a => a["iname"].ToString() == job.ToString()); 72 | var subjob = Updater.Data_MasterParam["Job"].First(a => a["iname"].ToString() == jobset["job"].ToString()); 73 | var jobname = subjob["iname"].ToString() == subjob["origin"]?.ToString() ? Updater.Loc_english_LocalizedMasterParam[subjob["iname"] + "_NAME"] : (Updater.Loc_english_LocalizedMasterParam[subjob["iname"] + "_NAME"].ToString().Replace("[", "").Replace("]", "") + " (" + subjob["iname"].ToString().Substring(3)) + ")"; 74 | Content += "[[" + jobname + "]]" + (jobset["lplus"] != null ? " (Limit Break " + jobset["lplus"] + "x)" : "") + "\n\n"; 75 | } 76 | Content += "==Profile==\n"; 77 | Content += "'''Description''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_PROFILE"] + "\n\n"; 78 | Content += "'''Origin''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_COUNTRY"] + "\n\n"; 79 | Content += "'''Height''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_HEIGHT"] + "\n\n"; 80 | Content += "'''Weight''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_WEIGHT"] + "\n\n"; 81 | Content += "'''Birthday''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_BIRTH"] + "\n\n"; 82 | Content += "'''Blood Type''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_BLOOD"] + "\n\n"; 83 | Content += "'''Zodiac''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_ZODIAC"] + "\n\n"; 84 | Content += "'''Likes''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_FAVORITE"] + "\n\n"; 85 | Content += "'''Hobbies''': " + Updater.Loc_english_LocalizedMasterParam[unit["iname"] + "_HOBBY"]; 86 | return Content; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /DataExtractor/Wiki/Jobs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | 8 | namespace DataExtractor.Wiki 9 | { 10 | public static class Jobs 11 | { 12 | public static String CreateJobListPage(List jobs) 13 | { 14 | string header = "The following are the available '''Jobs''' for '''[[{{Gamename}}]]'''.[[Category:Job Data]]\n\n"; 15 | header += "==Jobs==\n{| class=\"wikitable sortable\"\n |-\n ! Name !! Role\n"; 16 | string footer = "\n |}"; 17 | string jobList = String.Join("\n", jobs.Select(j => 18 | " |-\n | [[" + (j["iname"].ToString() == j["origin"]?.ToString() ? Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_NAME"] : (Updater.Loc_english_LocalizedMasterParam[j["iname"] + "_NAME"].Replace("[","").Replace("]","") + " (" + j["iname"].ToString().Substring(3) + ")")) 19 | + "]] || " + j["role"])); 20 | return header + jobList + footer; 21 | } 22 | public static String CreateJobPage(JToken job) 23 | { 24 | string Content = "'''{{PAGENAME}}''' is a '''[[Jobs|Job]]''' in '''[[The Alchemist Code]]'''.[[Category:Job Data]]\n\n"; 25 | Content += "==Stats==\n"; 26 | Content += "{| class=\"wikitable sortable\"\n"; 27 | Content += " |-\n ! Stat !! Value\n"; 28 | var basicAttack = Updater.Data_MasterParam["Skill"].FirstOrDefault(a => a["iname"].ToString() == job["atkskl"]?.ToString()); 29 | var range = basicAttack["rangemin"] ?? "0" + " - " + basicAttack["range"]; 30 | Content += " |-\n | Range || " + range + " \n"; 31 | Content += " |-\n | MOV || " + job["jmov"] + " \n"; 32 | Content += " |-\n | JMP || " + job["jjmp"] + " \n"; 33 | Content += " |-\n | HP || " + job["ranks"][0]["hp"] + " \n"; 34 | Content += " |-\n | MP || " + job["ranks"][0]["mp"] + " \n"; 35 | Content += " |-\n | ATK || " + job["ranks"][0]["atk"] + " \n"; 36 | Content += " |-\n | DEF || " + job["ranks"][0]["def"] + " \n"; 37 | Content += " |-\n | MAG || " + job["ranks"][0]["mag"] + " \n"; 38 | Content += " |-\n | MND || " + job["ranks"][0]["mnd"] + " \n"; 39 | Content += " |-\n | DEX || " + job["ranks"][0]["dex"] + " \n"; 40 | Content += " |-\n | SPD || " + job["ranks"][0]["spd"] + " \n"; 41 | Content += " |-\n | CRI || " + job["ranks"][0]["cri"] + " \n"; 42 | Content += " |-\n | LUK || " + job["ranks"][0]["luk"] + " \n |}\n\n"; 43 | 44 | Content += "==Main Abilities==\n"; 45 | 46 | var abilities = Updater.Data_MasterParam["Ability"].FirstOrDefault(a => a["iname"].ToString() == job["fixabl"]?.ToString()); 47 | if (abilities != null) 48 | { 49 | var skills = abilities.ToList().FindAll(a => ((JProperty)a).Name.Contains("skl")); 50 | foreach (var skill in skills) 51 | { 52 | if (!Updater.Loc_english_LocalizedMasterParam.ContainsKey(((JProperty)skill).Value + "_NAME")) 53 | continue; 54 | Content += ";[[" + Updater.Loc_english_LocalizedMasterParam[((JProperty)skill).Value + "_NAME"] + "]] - Level " + abilities[((JProperty)skill).Name.ToString().Replace("skl", "lv")] + "\n"; 55 | Content += ": " + Updater.Loc_english_LocalizedMasterParam[((JProperty)skill).Value + "_EXPR"] + "\n"; 56 | } 57 | } 58 | else 59 | { 60 | Content += "Job has no innate abilities."; 61 | } 62 | Content += "\n"; 63 | 64 | Content += "==Basic Abilities==\n"; 65 | 66 | for (int i = 0; i < job["ranks"].Count(); i++) 67 | { 68 | var rank = job["ranks"][i]; 69 | var learn = rank["learn1"]; 70 | abilities = Updater.Data_MasterParam["Ability"].FirstOrDefault(a => a["iname"].ToString() == learn?.ToString()); 71 | if (abilities != null) 72 | { 73 | Content += "'''Rank " + i + "\n"; 74 | var skills = abilities.ToList().FindAll(a => ((JProperty)a).Name.Contains("skl")); 75 | foreach (var skill in skills) 76 | { 77 | if (!Updater.Loc_english_LocalizedMasterParam.ContainsKey(((JProperty)skill).Value + "_NAME")) 78 | continue; 79 | Content += ";[[" + Updater.Loc_english_LocalizedMasterParam[((JProperty)skill).Value + "_NAME"] + "]] - Level " + abilities[((JProperty)skill).Name.ToString().Replace("skl", "lv")] + "\n"; 80 | Content += ": " + Updater.Loc_english_LocalizedMasterParam[((JProperty)skill).Value + "_EXPR"] + "\n"; 81 | } 82 | } 83 | } 84 | Content += "\n"; 85 | Content += "==Equipment==\n"; 86 | Content += "{| class=\"wikitable\"\n"; 87 | Content += " |-\n ! Rank !! Slot 1 !! Slot 2 !! Slot 3 !! Slot 4 !! Slot 5 !! Slot 6 \n"; 88 | var rankEqs = new List(); 89 | for (int i = 0; i < job["ranks"].Count(); i++) 90 | { 91 | var rank = job["ranks"][i]; 92 | if (!Updater.Loc_english_LocalizedMasterParam.ContainsKey(rank["eqid1"] + "_NAME")) 93 | continue; 94 | rankEqs.Add(" |-\n | Rank " + i + " || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid1"] + "_NAME"] + 95 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid2"] + "_NAME"] + 96 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid3"] + "_NAME"] + 97 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid4"] + "_NAME"] + 98 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid5"] + "_NAME"] + 99 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid6"] + "_NAME"] + "]]"); 100 | /*Content += " |-\n | Rank " + i + " || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid1"] + "_NAME"] + 101 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid2"] + "_NAME"] + 102 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid3"] + "_NAME"] + 103 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid4"] + "_NAME"] + 104 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid5"] + "_NAME"] + 105 | "]] || [[" + Updater.Loc_english_LocalizedMasterParam[rank["eqid6"] + "_NAME"] + "]]\n";*/ 106 | } 107 | Content += String.Join("\n", rankEqs); 108 | return Content; 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /AlchemistCodeCode/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Newtonsoft.Json; 5 | using Newtonsoft.Json.Linq; 6 | using AlchemistCodeCode.Network; 7 | using AlchemistCodeCode.Network.Requests; 8 | namespace AlchemistCodeCode 9 | { 10 | class Program 11 | { 12 | static void RespLogin(SRPG.WWWResult www) 13 | { 14 | var response = (JObject)JsonConvert.DeserializeObject(www.text); 15 | var user = response["body"]; 16 | Networking.TicketID++; 17 | } 18 | static void Login() 19 | { 20 | GameManager.Instance.AssetVersion = GameManager.Instance.SessionID = null; 21 | //var CheckVersion = Networking.RequestAPI(new ReqCheckVersion(GameManager.Instance.Version, "android")); 22 | var CheckVersion = Networking.RequestAPI(new ReqCheckVersion(GameManager.Instance.Version, "ios")); 23 | GameManager.Instance.AssetVersion = CheckVersion["body"]["assets"].ToString(); 24 | Networking.TicketID = 1; 25 | //GameManager.Instance.UdId = "----"; 26 | if (String.IsNullOrEmpty(GameManager.Instance.DeviceId)) 27 | { 28 | var DeviceId = Networking.RequestAPI(new ReqGetDeviceID(GameManager.Instance.SecretKey, GameManager.Instance.UdId)); 29 | GameManager.Instance.DeviceId = DeviceId["body"]["device_id"].ToString(); 30 | } 31 | var AccessToken = Networking.RequestAPI(new ReqGetAccessToken(GameManager.Instance.DeviceId, GameManager.Instance.SecretKey)); 32 | GameManager.Instance.SessionID = AccessToken["body"]["access_token"].ToString(); 33 | //Networking.RequestAPI(new ReqSendAlterData()); 34 | Networking.RequestAPI(new ReqFgGAuth()); 35 | Networking.RequestAPI(new ReqLogin()); 36 | //Networking.RequestAPI(new ReqPlayNew(false)); 37 | //Networking.RequestAPI(new ReqSetLanguage("en")); 38 | } 39 | static void DoBattle(String iname, bool useFriend = false, int partyIndex = 0) 40 | { 41 | var battleInfo = Networking.RequestAPI(new ReqBtlComReq(iname, "", false, partyIndex)); 42 | var beats = battleInfo["body"]["btlinfo"]["drops"].Select(b => 1).ToArray(); 43 | var dropped = battleInfo["body"]["btlinfo"]["drops"].Select(b => 0).ToArray(); 44 | var steal = battleInfo["body"]["btlinfo"]["drops"].Select(b => 0).ToArray(); 45 | var missions = new int[3] { 1, 1, 1 }; 46 | Networking.RequestAPI( 47 | new ReqBtlComEnd( 48 | long.Parse(battleInfo["body"]["btlid"].ToString()), 49 | 0, 50 | SRPG.BtlResultTypes.Win, 51 | beats, 52 | dropped, 53 | steal, 54 | missions, 55 | null, 56 | new Dictionary(), 57 | SRPG.BtlEndTypes.com, 58 | "\"hpleveldamage\":[419,1,146]" 59 | ) 60 | ); 61 | } 62 | static void CompleteChallenge(Boolean bingo, params string[] iname) 63 | { 64 | var trophies = new List(); 65 | foreach (var trophy in iname) 66 | { 67 | var newTrophy = new SRPG.TrophyState 68 | { 69 | iname = trophy, 70 | Count = new int[1] { 1 }, 71 | StartYMD = int.Parse(DateTime.Now.ToString("yyMMdd")) 72 | }; 73 | if (bingo) 74 | { 75 | newTrophy.Param = new SRPG.TrophyParam(); 76 | newTrophy.Param.ParentTrophy = trophy.Substring(0, trophy.Length - 3); 77 | 78 | } 79 | trophies.Add(newTrophy); 80 | } 81 | if (bingo) 82 | Networking.RequestAPI(new ReqUpdateBingo(trophies, true)); 83 | else 84 | Networking.RequestAPI(new ReqUpdateTrophy(trophies, true)); 85 | } 86 | static void Reroll() 87 | { 88 | /*var translation = File.ReadAllLines(@"text\Loc_english_LocalizedMasterParam.txt") 89 | .ToList().FindAll(s => s.Contains("SRPG_UnitParam_UN_V2_")) 90 | .Select(s => s.Split(new char[1] { '\t' })) 91 | .ToDictionary(s => s[0].Replace("SRPG_UnitParam_", "").Replace("_NAME", ""), s => s[1]);*/ 92 | /*.Select(s => 93 | new KeyValuePair(s.Substring(21, s.IndexOf("\t")), s.Substring(s.IndexOf("\t") + 1))).ToList();/*. 94 | ToDictionary(o => o.Key, o => o.Value);//*/ 95 | Networking.debuglevel = 1; 96 | Console.WriteLine("reroll start"); 97 | Login(); 98 | DoBattle("QE_OP_0002"); 99 | DoBattle("QE_OP_0003"); 100 | DoBattle("QE_OP_0004"); 101 | DoBattle("QE_OP_0006"); 102 | //CompleteChallenge(true, Enumerable.Range(0, 9).Select(i => "CHALLENGE_01_0" + i).ToArray()); 103 | CompleteChallenge(true, "CHALLENGE_01_08"); 104 | Networking.RequestAPI(new ReqTutUpdate(8192)); 105 | Networking.RequestAPI(new ReqAwardList()); 106 | CompleteChallenge(false, "DAILY_GLAPVIDEO_06"); 107 | Networking.RequestAPI(new ReqTutUpdate(8193)); 108 | CompleteChallenge(false, "LOGIN_GLTUTORIAL_01"); 109 | //Networking.RequestAPI(new ReqAwardList()); 110 | //Networking.RequestAPI(new ReqTrophyProgress()); 111 | //Networking.RequestAPI(new ReqTutUpdate(8195)); 112 | //Networking.RequestAPI(new ReqGacha()); 113 | //Networking.RequestAPI(new ReqBtlCom(true)); 114 | //Networking.RequestAPI(new ReqTutUpdate(10243)); 115 | //Networking.RequestAPI(new ReqTutUpdate(10251)); 116 | //Networking.RequestAPI(new ReqSupporter()); 117 | CompleteChallenge(false, Enumerable.Range(1, 10).Select(i => "WINQUEST_" + i.ToString("D3")).ToArray()); 118 | //DoBattle("QE_ST_NO_010001"); 119 | //DoBattle("QE_ST_NO_010002"); 120 | //DoBattle("QE_ST_NO_010003"); 121 | //Networking.RequestAPI(new ReqTutUpdate(10763)); 122 | var mail = Networking.RequestAPI(new ReqMail(1, true, false)); 123 | var mailIds = mail["body"]["mails"]["list"].Select(m => long.Parse(m["mid"].ToString())).ToArray(); 124 | Networking.RequestAPI(new ReqMailRead(mailIds, true, 1)); 125 | 126 | Networking.RequestAPI(new ReqGachaExec("Rare_Gacha_ii", 1)); 127 | var summon = Networking.RequestAPI(new ReqGachaExec("3Step_Gacha_Step1_B0b", 0)); 128 | //var units = String.Join("|", summon["body"]["units"].Select(u => translation[u["iname"].ToString()])).Replace("Logi|Lambert|Melia|", ""); 129 | //File.AppendAllText("accounts.csv", units + "," + "http://shalzuth.us-east-1.elasticbeanstalk.com/Starter?a=" + GameManager.Instance.DeviceId + "&b=" + GameManager.Instance.SecretKey + "\r\n"); 130 | //Console.WriteLine(String.Join(",", summon["body"]["units"].Select(u => translation[u["iname"].ToString()])).Replace("Logi,Lambert,Melia,", "")); 131 | } 132 | static void Main(string[] args) 133 | { 134 | Networking.debuglevel = 1; 135 | //GameManager.Instance.SecretKey = "----"; 136 | //GameManager.Instance.DeviceId = "----"; 137 | while (true) 138 | { 139 | GameManager.Instance.DeviceId = null; 140 | 141 | } 142 | Login(); 143 | 144 | //CompleteChallenge(true, Enumerable.Range(0, 9).Select(i => "CHALLENGE_03_" + i.ToString("D2")).ToArray()); 145 | var gacha = Networking.RequestAPI(new ReqGacha()); 146 | var summon = Networking.RequestAPI(new ReqGachaExec("3Step_Gacha_Step1_B0b", 0)); 147 | CompleteChallenge(false, Enumerable.Range(1, 90).Select(i => "WINQUEST_" + i.ToString("D3")).ToArray()); 148 | //Enumerable.Range(11, 19).Select(i => "QE_ST_HA_0100" + i.ToString("D2")).ToList().ForEach(i => DoBattle(i)); 149 | Console.WriteLine("fin"); 150 | Console.Read(); 151 | 152 | //File.WriteAllText("accounts.csv", "units,download link\r\n"); 153 | /*while (true) 154 | { 155 | try { Reroll(); } catch { } 156 | }*/ 157 | 158 | } 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /AlchemistCodeCode/AlchemistCodeCode.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {817AC3D2-C88A-4556-94B2-173AF31645A3} 8 | Exe 9 | AlchemistCodeCode 10 | AlchemistCodeCode 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | ..\Assembly-CSharp.dll 37 | 38 | 39 | ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | --------------------------------------------------------------------------------