TModLoader v1.4.4.9
TModLoader source code documentation
Loading...
Searching...
No Matches

◆ Deserialize() [2/2]

static void Terraria.Player.Deserialize ( PlayerFileData data,
Player newPlayer,
BinaryReader fileIO,
TagCompound modData,
int release,
out bool gotToReadName )
inlinestaticprivate

Definition at line 55783 of file Player.cs.

55784 {
55785 //IL_0326: Unknown result type (might be due to invalid IL or missing references)
55786 //IL_032b: Unknown result type (might be due to invalid IL or missing references)
55787 //IL_0332: Unknown result type (might be due to invalid IL or missing references)
55788 //IL_0337: Unknown result type (might be due to invalid IL or missing references)
55789 //IL_033e: Unknown result type (might be due to invalid IL or missing references)
55790 //IL_0343: Unknown result type (might be due to invalid IL or missing references)
55791 //IL_034a: Unknown result type (might be due to invalid IL or missing references)
55792 //IL_034f: Unknown result type (might be due to invalid IL or missing references)
55793 //IL_0356: Unknown result type (might be due to invalid IL or missing references)
55794 //IL_035b: Unknown result type (might be due to invalid IL or missing references)
55795 //IL_0362: Unknown result type (might be due to invalid IL or missing references)
55796 //IL_0367: Unknown result type (might be due to invalid IL or missing references)
55797 //IL_036e: Unknown result type (might be due to invalid IL or missing references)
55798 //IL_0373: Unknown result type (might be due to invalid IL or missing references)
55799 //IL_0384: Unknown result type (might be due to invalid IL or missing references)
55800 //IL_0389: Unknown result type (might be due to invalid IL or missing references)
55801 //IL_039a: Unknown result type (might be due to invalid IL or missing references)
55802 //IL_039f: Unknown result type (might be due to invalid IL or missing references)
55803 //IL_03b0: Unknown result type (might be due to invalid IL or missing references)
55804 //IL_03b5: Unknown result type (might be due to invalid IL or missing references)
55805 //IL_03c6: Unknown result type (might be due to invalid IL or missing references)
55806 //IL_03cb: Unknown result type (might be due to invalid IL or missing references)
55807 //IL_03dc: Unknown result type (might be due to invalid IL or missing references)
55808 //IL_03e1: Unknown result type (might be due to invalid IL or missing references)
55809 //IL_03f2: Unknown result type (might be due to invalid IL or missing references)
55810 //IL_03f7: Unknown result type (might be due to invalid IL or missing references)
55811 //IL_0408: Unknown result type (might be due to invalid IL or missing references)
55812 //IL_040d: Unknown result type (might be due to invalid IL or missing references)
55813 gotToReadName = false;
55814 newPlayer.name = fileIO.ReadString();
55815 gotToReadName = true;
55816 if (release >= 10)
55817 {
55818 if (release >= 17)
55819 {
55820 newPlayer.difficulty = fileIO.ReadByte();
55821 }
55822 else if (fileIO.ReadBoolean())
55823 {
55824 newPlayer.difficulty = 2;
55825 }
55826 }
55827 if (release >= 138)
55828 {
55829 data.SetPlayTime(new TimeSpan(fileIO.ReadInt64()));
55830 }
55831 else
55832 {
55833 data.SetPlayTime(TimeSpan.Zero);
55834 }
55835 newPlayer.hair = fileIO.ReadInt32();
55836 if (release >= 82)
55837 {
55838 newPlayer.hairDye = fileIO.ReadByte();
55839 }
55840 if (release >= 124)
55841 {
55842 BitsByte bitsByte = fileIO.ReadByte();
55843 for (int i = 0; i < 8; i++)
55844 {
55845 newPlayer.hideVisibleAccessory[i] = bitsByte[i];
55846 }
55847 bitsByte = fileIO.ReadByte();
55848 for (int j = 0; j < 2; j++)
55849 {
55850 newPlayer.hideVisibleAccessory[j + 8] = bitsByte[j];
55851 }
55852 }
55853 else if (release >= 83)
55854 {
55855 BitsByte bitsByte2 = fileIO.ReadByte();
55856 for (int k = 0; k < 8; k++)
55857 {
55858 newPlayer.hideVisibleAccessory[k] = bitsByte2[k];
55859 }
55860 }
55861 if (release >= 119)
55862 {
55863 newPlayer.hideMisc = fileIO.ReadByte();
55864 }
55865 if (release <= 17)
55866 {
55867 if (newPlayer.hair == 5 || newPlayer.hair == 6 || newPlayer.hair == 9 || newPlayer.hair == 11)
55868 {
55869 newPlayer.Male = false;
55870 }
55871 else
55872 {
55873 newPlayer.Male = true;
55874 }
55875 }
55876 else if (release < 107)
55877 {
55878 newPlayer.Male = fileIO.ReadBoolean();
55879 }
55880 else
55881 {
55882 newPlayer.skinVariant = fileIO.ReadByte();
55883 }
55884 if (release < 161 && newPlayer.skinVariant == 7)
55885 {
55886 newPlayer.skinVariant = 9;
55887 }
55888 newPlayer.statLife = fileIO.ReadInt32();
55889 newPlayer.statLifeMax = fileIO.ReadInt32();
55890 if (newPlayer.statLifeMax > 500)
55891 {
55892 newPlayer.statLifeMax = 500;
55893 }
55894 newPlayer.statMana = fileIO.ReadInt32();
55895 newPlayer.statManaMax = fileIO.ReadInt32();
55896 if (newPlayer.statManaMax > 200)
55897 {
55898 newPlayer.statManaMax = 200;
55899 }
55900 newPlayer.ConsumedLifeCrystals = (newPlayer.statLifeMax - 100) / 20;
55901 newPlayer.ConsumedLifeFruit = (newPlayer.statLifeMax - 400) / 5;
55902 newPlayer.ConsumedManaCrystals = (newPlayer.statManaMax - 20) / 20;
55903 if (release >= 125)
55904 {
55905 newPlayer.extraAccessory = fileIO.ReadBoolean();
55906 }
55907 if (release >= 229)
55908 {
55909 newPlayer.unlockedBiomeTorches = fileIO.ReadBoolean();
55910 newPlayer.UsingBiomeTorches = fileIO.ReadBoolean();
55911 if (release >= 256)
55912 {
55913 newPlayer.ateArtisanBread = fileIO.ReadBoolean();
55914 }
55915 if (release >= 260)
55916 {
55917 newPlayer.usedAegisCrystal = fileIO.ReadBoolean();
55918 newPlayer.usedAegisFruit = fileIO.ReadBoolean();
55919 newPlayer.usedArcaneCrystal = fileIO.ReadBoolean();
55920 newPlayer.usedGalaxyPearl = fileIO.ReadBoolean();
55921 newPlayer.usedGummyWorm = fileIO.ReadBoolean();
55922 newPlayer.usedAmbrosia = fileIO.ReadBoolean();
55923 }
55924 }
55925 if (release >= 182)
55926 {
55927 newPlayer.downedDD2EventAnyDifficulty = fileIO.ReadBoolean();
55928 }
55929 if (release >= 128)
55930 {
55931 newPlayer.taxMoney = fileIO.ReadInt32();
55932 }
55933 if (release >= 254)
55934 {
55935 newPlayer.numberOfDeathsPVE = fileIO.ReadInt32();
55936 }
55937 if (release >= 254)
55938 {
55939 newPlayer.numberOfDeathsPVP = fileIO.ReadInt32();
55940 }
55941 newPlayer.hairColor = fileIO.ReadRGB();
55942 newPlayer.skinColor = fileIO.ReadRGB();
55943 newPlayer.eyeColor = fileIO.ReadRGB();
55944 newPlayer.shirtColor = fileIO.ReadRGB();
55945 newPlayer.underShirtColor = fileIO.ReadRGB();
55946 newPlayer.pantsColor = fileIO.ReadRGB();
55947 newPlayer.shoeColor = fileIO.ReadRGB();
55948 Main.player[Main.myPlayer].hairColor = newPlayer.hairColor;
55949 Main.player[Main.myPlayer].skinColor = newPlayer.skinColor;
55950 Main.player[Main.myPlayer].eyeColor = newPlayer.eyeColor;
55951 Main.player[Main.myPlayer].shirtColor = newPlayer.shirtColor;
55952 Main.player[Main.myPlayer].underShirtColor = newPlayer.underShirtColor;
55953 Main.player[Main.myPlayer].pantsColor = newPlayer.pantsColor;
55954 Main.player[Main.myPlayer].shoeColor = newPlayer.shoeColor;
55955 if (release >= 38)
55956 {
55957 if (release < 124)
55958 {
55959 int num = 11;
55960 if (release >= 81)
55961 {
55962 num = 16;
55963 }
55964 for (int l = 0; l < num; l++)
55965 {
55966 int num12 = l;
55967 if (num12 >= 8)
55968 {
55969 num12 += 2;
55970 }
55971 newPlayer.armor[num12].netDefaults(fileIO.ReadInt32());
55972 newPlayer.armor[num12].Prefix(fileIO.ReadByte());
55973 }
55974 }
55975 else
55976 {
55977 int num23 = 20;
55978 for (int m = 0; m < num23; m++)
55979 {
55980 newPlayer.armor[m].netDefaults(fileIO.ReadInt32());
55981 newPlayer.armor[m].Prefix(fileIO.ReadByte());
55982 }
55983 }
55984 if (release >= 47)
55985 {
55986 int num32 = 3;
55987 if (release >= 81)
55988 {
55989 num32 = 8;
55990 }
55991 if (release >= 124)
55992 {
55993 num32 = 10;
55994 }
55995 for (int n = 0; n < num32; n++)
55996 {
55997 int num33 = n;
55998 newPlayer.dye[num33].netDefaults(fileIO.ReadInt32());
55999 newPlayer.dye[num33].Prefix(fileIO.ReadByte());
56000 }
56001 }
56002 if (release >= 58)
56003 {
56004 for (int num34 = 0; num34 < 58; num34++)
56005 {
56006 int num35 = fileIO.ReadInt32();
56007 if (num35 >= ItemID.Count)
56008 {
56009 newPlayer.inventory[num34].netDefaults(0);
56010 fileIO.ReadInt32();
56011 fileIO.ReadByte();
56012 if (release >= 114)
56013 {
56014 fileIO.ReadBoolean();
56015 }
56016 }
56017 else
56018 {
56019 newPlayer.inventory[num34].netDefaults(num35);
56020 newPlayer.inventory[num34].stack = fileIO.ReadInt32();
56021 newPlayer.inventory[num34].Prefix(fileIO.ReadByte());
56022 if (release >= 114)
56023 {
56024 newPlayer.inventory[num34].favorited = fileIO.ReadBoolean();
56025 }
56026 }
56027 }
56028 }
56029 else
56030 {
56031 for (int num36 = 0; num36 < 48; num36++)
56032 {
56033 int num37 = fileIO.ReadInt32();
56034 if (num37 >= ItemID.Count)
56035 {
56036 newPlayer.inventory[num36].netDefaults(0);
56037 fileIO.ReadInt32();
56038 fileIO.ReadByte();
56039 }
56040 else
56041 {
56042 newPlayer.inventory[num36].netDefaults(num37);
56043 newPlayer.inventory[num36].stack = fileIO.ReadInt32();
56044 newPlayer.inventory[num36].Prefix(fileIO.ReadByte());
56045 }
56046 }
56047 }
56048 if (release >= 117)
56049 {
56050 if (release < 136)
56051 {
56052 for (int num2 = 0; num2 < 5; num2++)
56053 {
56054 if (num2 != 1)
56055 {
56056 int num3 = fileIO.ReadInt32();
56057 if (num3 >= ItemID.Count)
56058 {
56059 newPlayer.miscEquips[num2].netDefaults(0);
56060 fileIO.ReadByte();
56061 }
56062 else
56063 {
56064 newPlayer.miscEquips[num2].netDefaults(num3);
56065 newPlayer.miscEquips[num2].Prefix(fileIO.ReadByte());
56066 }
56067 num3 = fileIO.ReadInt32();
56068 if (num3 >= ItemID.Count)
56069 {
56070 newPlayer.miscDyes[num2].netDefaults(0);
56071 fileIO.ReadByte();
56072 }
56073 else
56074 {
56075 newPlayer.miscDyes[num2].netDefaults(num3);
56076 newPlayer.miscDyes[num2].Prefix(fileIO.ReadByte());
56077 }
56078 }
56079 }
56080 }
56081 else
56082 {
56083 for (int num4 = 0; num4 < 5; num4++)
56084 {
56085 int num5 = fileIO.ReadInt32();
56086 if (num5 >= ItemID.Count)
56087 {
56088 newPlayer.miscEquips[num4].netDefaults(0);
56089 fileIO.ReadByte();
56090 }
56091 else
56092 {
56093 newPlayer.miscEquips[num4].netDefaults(num5);
56094 newPlayer.miscEquips[num4].Prefix(fileIO.ReadByte());
56095 }
56096 num5 = fileIO.ReadInt32();
56097 if (num5 >= ItemID.Count)
56098 {
56099 newPlayer.miscDyes[num4].netDefaults(0);
56100 fileIO.ReadByte();
56101 }
56102 else
56103 {
56104 newPlayer.miscDyes[num4].netDefaults(num5);
56105 newPlayer.miscDyes[num4].Prefix(fileIO.ReadByte());
56106 }
56107 }
56108 }
56109 }
56110 if (release >= 58)
56111 {
56112 for (int num6 = 0; num6 < 40; num6++)
56113 {
56114 newPlayer.bank.item[num6].netDefaults(fileIO.ReadInt32());
56115 newPlayer.bank.item[num6].stack = fileIO.ReadInt32();
56116 newPlayer.bank.item[num6].Prefix(fileIO.ReadByte());
56117 }
56118 for (int num7 = 0; num7 < 40; num7++)
56119 {
56120 newPlayer.bank2.item[num7].netDefaults(fileIO.ReadInt32());
56121 newPlayer.bank2.item[num7].stack = fileIO.ReadInt32();
56122 newPlayer.bank2.item[num7].Prefix(fileIO.ReadByte());
56123 }
56124 }
56125 else
56126 {
56127 for (int num8 = 0; num8 < 20; num8++)
56128 {
56129 newPlayer.bank.item[num8].netDefaults(fileIO.ReadInt32());
56130 newPlayer.bank.item[num8].stack = fileIO.ReadInt32();
56131 newPlayer.bank.item[num8].Prefix(fileIO.ReadByte());
56132 }
56133 for (int num9 = 0; num9 < 20; num9++)
56134 {
56135 newPlayer.bank2.item[num9].netDefaults(fileIO.ReadInt32());
56136 newPlayer.bank2.item[num9].stack = fileIO.ReadInt32();
56137 newPlayer.bank2.item[num9].Prefix(fileIO.ReadByte());
56138 }
56139 }
56140 if (release >= 182)
56141 {
56142 for (int num10 = 0; num10 < 40; num10++)
56143 {
56144 newPlayer.bank3.item[num10].netDefaults(fileIO.ReadInt32());
56145 newPlayer.bank3.item[num10].stack = fileIO.ReadInt32();
56146 newPlayer.bank3.item[num10].Prefix(fileIO.ReadByte());
56147 }
56148 }
56149 if (release >= 198)
56150 {
56151 for (int num11 = 0; num11 < 40; num11++)
56152 {
56153 newPlayer.bank4.item[num11].netDefaults(fileIO.ReadInt32());
56154 newPlayer.bank4.item[num11].stack = fileIO.ReadInt32();
56155 newPlayer.bank4.item[num11].Prefix(fileIO.ReadByte());
56156 if (release >= 255)
56157 {
56158 newPlayer.bank4.item[num11].favorited = fileIO.ReadBoolean();
56159 }
56160 }
56161 }
56162 if (release >= 199)
56163 {
56164 newPlayer.voidVaultInfo = fileIO.ReadByte();
56165 }
56166 }
56167 else
56168 {
56169 for (int num13 = 0; num13 < 8; num13++)
56170 {
56171 newPlayer.armor[num13].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56172 if (release >= 36)
56173 {
56174 newPlayer.armor[num13].Prefix(fileIO.ReadByte());
56175 }
56176 }
56177 if (release >= 6)
56178 {
56179 for (int num14 = 8; num14 < 11; num14++)
56180 {
56181 newPlayer.armor[num14].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56182 if (release >= 36)
56183 {
56184 newPlayer.armor[num14].Prefix(fileIO.ReadByte());
56185 }
56186 }
56187 }
56188 for (int num15 = 0; num15 < 44; num15++)
56189 {
56190 newPlayer.inventory[num15].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56191 newPlayer.inventory[num15].stack = fileIO.ReadInt32();
56192 if (release >= 36)
56193 {
56194 newPlayer.inventory[num15].Prefix(fileIO.ReadByte());
56195 }
56196 }
56197 if (release >= 15)
56198 {
56199 for (int num16 = 44; num16 < 48; num16++)
56200 {
56201 newPlayer.inventory[num16].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56202 newPlayer.inventory[num16].stack = fileIO.ReadInt32();
56203 if (release >= 36)
56204 {
56205 newPlayer.inventory[num16].Prefix(fileIO.ReadByte());
56206 }
56207 }
56208 }
56209 for (int num17 = 0; num17 < 20; num17++)
56210 {
56211 newPlayer.bank.item[num17].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56212 newPlayer.bank.item[num17].stack = fileIO.ReadInt32();
56213 if (release >= 36)
56214 {
56215 newPlayer.bank.item[num17].Prefix(fileIO.ReadByte());
56216 }
56217 }
56218 if (release >= 20)
56219 {
56220 for (int num18 = 0; num18 < 20; num18++)
56221 {
56222 newPlayer.bank2.item[num18].SetDefaults(ItemID.FromLegacyName(fileIO.ReadString(), release));
56223 newPlayer.bank2.item[num18].stack = fileIO.ReadInt32();
56224 if (release >= 36)
56225 {
56226 newPlayer.bank2.item[num18].Prefix(fileIO.ReadByte());
56227 }
56228 }
56229 }
56230 }
56231 if (release < 58)
56232 {
56233 for (int num19 = 40; num19 < 48; num19++)
56234 {
56235 newPlayer.inventory[num19 + 10] = newPlayer.inventory[num19].Clone();
56236 newPlayer.inventory[num19].SetDefaults();
56237 }
56238 }
56239 if (release >= 11)
56240 {
56241 int num20 = 22;
56242 if (release < 74)
56243 {
56244 num20 = 10;
56245 }
56246 if (release >= 252)
56247 {
56248 num20 = 44;
56249 }
56250 for (int num21 = 0; num21 < num20; num21++)
56251 {
56252 newPlayer.buffType[num21] = fileIO.ReadInt32();
56253 newPlayer.buffTime[num21] = fileIO.ReadInt32();
56254 if (newPlayer.buffType[num21] == 0)
56255 {
56256 num21--;
56257 num20--;
56258 }
56259 }
56260 }
56261 for (int num22 = 0; num22 < 200; num22++)
56262 {
56263 int num24 = fileIO.ReadInt32();
56264 if (num24 == -1)
56265 {
56266 break;
56267 }
56268 newPlayer.spX[num22] = num24;
56269 newPlayer.spY[num22] = fileIO.ReadInt32();
56270 newPlayer.spI[num22] = fileIO.ReadInt32();
56271 newPlayer.spN[num22] = fileIO.ReadString();
56272 }
56273 if (release >= 16)
56274 {
56275 newPlayer.hbLocked = fileIO.ReadBoolean();
56276 }
56277 if (release >= 115)
56278 {
56279 int num25 = 13;
56280 for (int num26 = 0; num26 < num25; num26++)
56281 {
56282 newPlayer.hideInfo[num26] = fileIO.ReadBoolean();
56283 }
56284 }
56285 if (release >= 98)
56286 {
56287 newPlayer.anglerQuestsFinished = fileIO.ReadInt32();
56288 }
56289 if (release >= 162)
56290 {
56291 for (int num27 = 0; num27 < 4; num27++)
56292 {
56293 newPlayer.DpadRadial.Bindings[num27] = fileIO.ReadInt32();
56294 }
56295 }
56296 if (release >= 164)
56297 {
56298 int num28 = 8;
56299 if (release >= 167)
56300 {
56301 num28 = 10;
56302 }
56303 if (release >= 197)
56304 {
56305 num28 = 11;
56306 }
56307 if (release >= 230)
56308 {
56309 num28 = 12;
56310 }
56311 for (int num29 = 0; num29 < num28; num29++)
56312 {
56313 newPlayer.builderAccStatus[num29] = fileIO.ReadInt32();
56314 }
56315 if (release < 210)
56316 {
56317 newPlayer.builderAccStatus[0] = 1;
56318 }
56319 if (release < 249)
56320 {
56321 bool flag = false;
56322 for (int num30 = 0; num30 < 58; num30++)
56323 {
56324 if (newPlayer.inventory[num30].type == 3611)
56325 {
56326 flag = true;
56327 break;
56328 }
56329 }
56330 if (flag)
56331 {
56332 newPlayer.builderAccStatus[1] = 1;
56333 }
56334 }
56335 }
56336 if (release >= 181)
56337 {
56338 newPlayer.bartenderQuestLog = fileIO.ReadInt32();
56339 }
56340 if (release >= 200)
56341 {
56342 newPlayer.dead = fileIO.ReadBoolean();
56343 if (newPlayer.dead)
56344 {
56345 newPlayer.respawnTimer = Utils.Clamp(fileIO.ReadInt32(), 0, 60000);
56346 }
56347 }
56348 newPlayer.lastTimePlayerWasSaved = 0L;
56349 if (release >= 202)
56350 {
56351 newPlayer.lastTimePlayerWasSaved = fileIO.ReadInt64();
56352 }
56353 else
56354 {
56355 newPlayer.lastTimePlayerWasSaved = DateTime.UtcNow.ToBinary();
56356 }
56357 if (release >= 206)
56358 {
56359 newPlayer.golferScoreAccumulated = fileIO.ReadInt32();
56360 }
56361 if (release >= 218)
56362 {
56363 newPlayer.creativeTracker.Load(fileIO, release);
56364 }
56365 if (release >= 214)
56366 {
56367 newPlayer.LoadTemporaryItemSlotContents(fileIO);
56368 }
56369 newPlayer.savedPerPlayerFieldsThatArentInThePlayerClass = new SavedPlayerDataWithAnnoyingRules();
56370 CreativePowerManager.Instance.ResetDataForNewPlayer(newPlayer);
56371 if (release >= 220)
56372 {
56374 }
56375 if (release >= 253)
56376 {
56377 BitsByte bitsByte3 = fileIO.ReadByte();
56378 newPlayer.unlockedSuperCart = bitsByte3[0];
56379 newPlayer.enabledSuperCart = bitsByte3[1];
56380 }
56381 else
56382 {
56383 newPlayer.unlockedSuperCart = newPlayer.HasItemInAnyInventory(3353);
56384 }
56385 if (release >= 262)
56386 {
56387 int value = fileIO.ReadInt32();
56388 newPlayer.CurrentLoadoutIndex = Utils.Clamp(value, 0, newPlayer.Loadouts.Length - 1);
56389 for (int num31 = 0; num31 < newPlayer.Loadouts.Length; num31++)
56390 {
56391 newPlayer.Loadouts[num31].Deserialize(fileIO, release);
56392 }
56393 }
56394 if (modData != null)
56395 {
56397 }
56399 }
static readonly short Count
Definition ItemID.cs:12719
static short FromLegacyName(string name, int release)
Definition ItemID.cs:13437
void SetPlayTime(TimeSpan time)
static void Load(Player player, TagCompound tag)
Definition PlayerIO.cs:72
static void LoadPlayer_LastMinuteFixes(Player newPlayer)
Definition Player.cs:56469

References Terraria.ID.ItemID.Count, Terraria.ID.ItemID.FromLegacyName(), Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.ModLoader.IO.PlayerIO.Load(), Terraria.Player.LoadPlayer_LastMinuteFixes(), Terraria.Main.myPlayer, Terraria.Main.player, and Terraria.IO.PlayerFileData.SetPlayTime().

+ Here is the call graph for this function: