Guest User

Untitled

a guest
Jun 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.81 KB | None | 0 0
  1. public override void Deserialize( GenericReader reader )
  2. {
  3. base.Deserialize( reader );
  4. int version = reader.ReadInt();
  5.  
  6. switch ( version )
  7. {
  8. case 28:
  9. {
  10. m_JailTime = reader.ReadEncodedInt();
  11.  
  12. goto case 27;
  13. }
  14. case 27:
  15. {
  16. m_AnkhNextUse = reader.ReadDateTime();
  17.  
  18. goto case 26;
  19. }
  20. case 26:
  21. {
  22. m_AutoStabled = reader.ReadStrongMobileList();
  23.  
  24. goto case 25;
  25. }
  26. case 25:
  27. {
  28. int recipeCount = reader.ReadInt();
  29.  
  30. if( recipeCount > 0 )
  31. {
  32. m_AcquiredRecipes = new Dictionary<int, bool>();
  33.  
  34. for( int i = 0; i < recipeCount; i++ )
  35. {
  36. int r = reader.ReadInt();
  37. if( reader.ReadBool() ) //Don't add in recipies which we haven't gotten or have been removed
  38. m_AcquiredRecipes.Add( r, true );
  39. }
  40. }
  41. goto case 24;
  42. }
  43. case 24:
  44. {
  45. m_LastHonorLoss = reader.ReadDeltaTime();
  46. goto case 23;
  47. }
  48. case 23:
  49. {
  50. m_ChampionTitles = new ChampionTitleInfo( reader );
  51. goto case 22;
  52. }
  53. case 22:
  54. {
  55. m_LastValorLoss = reader.ReadDateTime();
  56. goto case 21;
  57. }
  58. case 21:
  59. {
  60. m_ToTItemsTurnedIn = reader.ReadEncodedInt();
  61. m_ToTTotalMonsterFame = reader.ReadInt();
  62. goto case 20;
  63. }
  64. case 20:
  65. {
  66. m_AllianceMessageHue = reader.ReadEncodedInt();
  67. m_GuildMessageHue = reader.ReadEncodedInt();
  68.  
  69. goto case 19;
  70. }
  71. case 19:
  72. {
  73. int rank = reader.ReadEncodedInt();
  74. int maxRank = Guilds.RankDefinition.Ranks.Length -1;
  75. if( rank > maxRank )
  76. rank = maxRank;
  77.  
  78. m_GuildRank = Guilds.RankDefinition.Ranks[rank];
  79. m_LastOnline = reader.ReadDateTime();
  80. goto case 18;
  81. }
  82. case 18:
  83. {
  84. m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt();
  85.  
  86. goto case 17;
  87. }
  88. case 17: // changed how DoneQuests is serialized
  89. case 16:
  90. {
  91. m_Quest = QuestSerializer.DeserializeQuest( reader );
  92.  
  93. if ( m_Quest != null )
  94. m_Quest.From = this;
  95.  
  96. int count = reader.ReadEncodedInt();
  97.  
  98. if ( count > 0 )
  99. {
  100. m_DoneQuests = new List<QuestRestartInfo>();
  101.  
  102. for ( int i = 0; i < count; ++i )
  103. {
  104. Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader );
  105. DateTime restartTime;
  106.  
  107. if ( version < 17 )
  108. restartTime = DateTime.MaxValue;
  109. else
  110. restartTime = reader.ReadDateTime();
  111.  
  112. m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) );
  113. }
  114. }
  115.  
  116. m_Profession = reader.ReadEncodedInt();
  117. goto case 15;
  118. }
  119. case 15:
  120. {
  121. m_LastCompassionLoss = reader.ReadDeltaTime();
  122. goto case 14;
  123. }
  124. case 14:
  125. {
  126. m_CompassionGains = reader.ReadEncodedInt();
  127.  
  128. if ( m_CompassionGains > 0 )
  129. m_NextCompassionDay = reader.ReadDeltaTime();
  130.  
  131. goto case 13;
  132. }
  133. case 13: // just removed m_PayedInsurance list
  134. case 12:
  135. {
  136. m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader );
  137. goto case 11;
  138. }
  139. case 11:
  140. {
  141. if ( version < 13 )
  142. {
  143. List<Item> payed = reader.ReadStrongItemList();
  144.  
  145. for ( int i = 0; i < payed.Count; ++i )
  146. payed[i].PayedInsurance = true;
  147. }
  148.  
  149. goto case 10;
  150. }
  151. case 10:
  152. {
  153. if ( reader.ReadBool() )
  154. {
  155. m_HairModID = reader.ReadInt();
  156. m_HairModHue = reader.ReadInt();
  157. m_BeardModID = reader.ReadInt();
  158. m_BeardModHue = reader.ReadInt();
  159.  
  160. // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded
  161. Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) );
  162. }
  163.  
  164. goto case 9;
  165. }
  166. case 9:
  167. {
  168. SavagePaintExpiration = reader.ReadTimeSpan();
  169.  
  170. if ( SavagePaintExpiration > TimeSpan.Zero )
  171. {
  172. BodyMod = ( Female ? 184 : 183 );
  173. HueMod = 0;
  174. }
  175.  
  176. goto case 8;
  177. }
  178. case 8:
  179. {
  180. m_NpcGuild = (NpcGuild)reader.ReadInt();
  181. m_NpcGuildJoinTime = reader.ReadDateTime();
  182. m_NpcGuildGameTime = reader.ReadTimeSpan();
  183. goto case 7;
  184. }
  185. case 7:
  186. {
  187. m_PermaFlags = reader.ReadStrongMobileList();
  188. goto case 6;
  189. }
  190. case 6:
  191. {
  192. NextTailorBulkOrder = reader.ReadTimeSpan();
  193. goto case 5;
  194. }
  195. case 5:
  196. {
  197. NextSmithBulkOrder = reader.ReadTimeSpan();
  198. goto case 4;
  199. }
  200. case 4:
  201. {
  202. m_LastJusticeLoss = reader.ReadDeltaTime();
  203. m_JusticeProtectors = reader.ReadStrongMobileList();
  204. goto case 3;
  205. }
  206. case 3:
  207. {
  208. m_LastSacrificeGain = reader.ReadDeltaTime();
  209. m_LastSacrificeLoss = reader.ReadDeltaTime();
  210. m_AvailableResurrects = reader.ReadInt();
  211. goto case 2;
  212. }
  213. case 2:
  214. {
  215. m_Flags = (PlayerFlag)reader.ReadInt();
  216. goto case 1;
  217. }
  218. case 1:
  219. {
  220. m_LongTermElapse = reader.ReadTimeSpan();
  221. m_ShortTermElapse = reader.ReadTimeSpan();
  222. m_GameTime = reader.ReadTimeSpan();
  223. goto case 0;
  224. }
  225. case 0:
  226. {
  227. if( version < 26 )
  228. m_AutoStabled = new List<Mobile>();
  229. break;
  230. }
  231. }
  232.  
  233. // Professions weren't verified on 1.0 RC0
  234. if ( !CharacterCreation.VerifyProfession( m_Profession ) )
  235. m_Profession = 0;
  236.  
  237. if ( m_PermaFlags == null )
  238. m_PermaFlags = new List<Mobile>();
  239.  
  240. if ( m_JusticeProtectors == null )
  241. m_JusticeProtectors = new List<Mobile>();
  242.  
  243. if ( m_BOBFilter == null )
  244. m_BOBFilter = new Engines.BulkOrders.BOBFilter();
  245.  
  246. if( m_GuildRank == null )
  247. m_GuildRank = Guilds.RankDefinition.Member; //Default to member if going from older verstion to new version (only time it should be null)
  248.  
  249. if( m_LastOnline == DateTime.MinValue && Account != null )
  250. m_LastOnline = ((Account)Account).LastLogin;
  251.  
  252. if( m_ChampionTitles == null )
  253. m_ChampionTitles = new ChampionTitleInfo();
  254.  
  255. List<Mobile> list = this.Stabled;
  256.  
  257. for ( int i = 0; i < list.Count; ++i )
  258. {
  259. BaseCreature bc = list[i] as BaseCreature;
  260.  
  261. if ( bc != null )
  262. bc.IsStabled = true;
  263. }
  264.  
  265. CheckAtrophies( this );
  266.  
  267.  
  268. if( Hidden ) //Hiding is the only buff where it has an effect that's serialized.
  269. AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
  270. }
  271.  
  272. public override void Serialize( GenericWriter writer )
  273. {
  274. //cleanup our anti-macro table
  275. foreach ( Hashtable t in m_AntiMacroTable.Values )
  276. {
  277. ArrayList remove = new ArrayList();
  278. foreach ( CountAndTimeStamp time in t.Values )
  279. {
  280. if ( time.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.Now )
  281. remove.Add( time );
  282. }
  283.  
  284. for (int i=0;i<remove.Count;++i)
  285. t.Remove( remove[i] );
  286. }
  287.  
  288. //decay our kills
  289. if ( m_ShortTermElapse < this.GameTime )
  290. {
  291. m_ShortTermElapse += TimeSpan.FromHours( 8 );
  292. if ( ShortTermMurders > 0 )
  293. --ShortTermMurders;
  294. }
  295.  
  296. if ( m_LongTermElapse < this.GameTime )
  297. {
  298. m_LongTermElapse += TimeSpan.FromHours( 40 );
  299. if ( Kills > 0 )
  300. --Kills;
  301. }
  302.  
  303. CheckAtrophies( this );
  304.  
  305. base.Serialize( writer );
  306.  
  307. writer.Write( (int) 28 ); // version
  308.  
  309. writer.Write( (DateTime) m_AnkhNextUse );
  310. writer.Write( m_AutoStabled, true );
  311.  
  312. if( m_AcquiredRecipes == null )
  313. {
  314. writer.Write( (int)0 );
  315. }
  316. else
  317. {
  318. writer.Write( m_AcquiredRecipes.Count );
  319.  
  320. foreach( KeyValuePair<int, bool> kvp in m_AcquiredRecipes )
  321. {
  322. writer.Write( kvp.Key );
  323. writer.Write( kvp.Value );
  324. }
  325. }
  326.  
  327. writer.WriteDeltaTime( m_LastHonorLoss );
  328.  
  329. ChampionTitleInfo.Serialize( writer, m_ChampionTitles );
  330.  
  331. writer.Write( m_LastValorLoss );
  332. writer.WriteEncodedInt( m_ToTItemsTurnedIn );
  333. writer.Write( m_ToTTotalMonsterFame ); //This ain't going to be a small #.
  334.  
  335. writer.WriteEncodedInt( m_AllianceMessageHue );
  336. writer.WriteEncodedInt( m_GuildMessageHue );
  337. writer.WriteEncodedInt( m_JailTime );
  338.  
  339. writer.WriteEncodedInt( m_GuildRank.Rank );
  340. writer.Write( m_LastOnline );
  341.  
  342. writer.WriteEncodedInt( (int) m_SolenFriendship );
  343.  
  344. QuestSerializer.Serialize( m_Quest, writer );
  345.  
  346. if ( m_DoneQuests == null )
  347. {
  348. writer.WriteEncodedInt( (int) 0 );
  349. }
  350. else
  351. {
  352. writer.WriteEncodedInt( (int) m_DoneQuests.Count );
  353.  
  354. for ( int i = 0; i < m_DoneQuests.Count; ++i )
  355. {
  356. QuestRestartInfo restartInfo = m_DoneQuests[i];
  357.  
  358. QuestSerializer.Write( (Type) restartInfo.QuestType, QuestSystem.QuestTypes, writer );
  359. writer.Write( (DateTime) restartInfo.RestartTime );
  360. }
  361. }
  362.  
  363. writer.WriteEncodedInt( (int) m_Profession );
  364.  
  365. writer.WriteDeltaTime( m_LastCompassionLoss );
  366.  
  367. writer.WriteEncodedInt( m_CompassionGains );
  368.  
  369. if ( m_CompassionGains > 0 )
  370. writer.WriteDeltaTime( m_NextCompassionDay );
  371.  
  372. m_BOBFilter.Serialize( writer );
  373.  
  374. bool useMods = ( m_HairModID != -1 || m_BeardModID != -1 );
  375.  
  376. writer.Write( useMods );
  377.  
  378. if ( useMods )
  379. {
  380. writer.Write( (int) m_HairModID );
  381. writer.Write( (int) m_HairModHue );
  382. writer.Write( (int) m_BeardModID );
  383. writer.Write( (int) m_BeardModHue );
  384. }
  385.  
  386. writer.Write( SavagePaintExpiration );
  387.  
  388. writer.Write( (int) m_NpcGuild );
  389. writer.Write( (DateTime) m_NpcGuildJoinTime );
  390. writer.Write( (TimeSpan) m_NpcGuildGameTime );
  391.  
  392. writer.Write( m_PermaFlags, true );
  393.  
  394. writer.Write( NextTailorBulkOrder );
  395.  
  396. writer.Write( NextSmithBulkOrder );
  397.  
  398. writer.WriteDeltaTime( m_LastJusticeLoss );
  399. writer.Write( m_JusticeProtectors, true );
  400.  
  401. writer.WriteDeltaTime( m_LastSacrificeGain );
  402. writer.WriteDeltaTime( m_LastSacrificeLoss );
  403. writer.Write( m_AvailableResurrects );
  404.  
  405. writer.Write( (int) m_Flags );
  406.  
  407. writer.Write( m_LongTermElapse );
  408. writer.Write( m_ShortTermElapse );
  409. writer.Write( this.GameTime );
  410. }
Add Comment
Please, Sign In to add comment