public void PlayerEnterWorld() { IsAlive = true; // seems like something that should be handled differently... IsOnline = true; // Save the the LoginTimestamp SetProperty(PropertyFloat.LoginTimestamp, Time.GetTimestamp()); var totalLogins = GetProperty(PropertyInt.TotalLogins) ?? 0; totalLogins++; SetProperty(PropertyInt.TotalLogins, totalLogins); Sequences.AddOrSetSequence(SequenceType.ObjectInstance, new UShortSequence((ushort)totalLogins)); // SendSelf will trigger the entrance into portal space SendSelf(); SendFriendStatusUpdates(); // Init the client with the chat channel ID's, and then notify the player that they've choined the associated channels. var setTurbineChatChannels = new GameEventSetTurbineChatChannels(Session, 0, 1, 2, 3, 4, 6, 7, 0, 0, 0); // TODO these are hardcoded right now var general = new GameEventDisplayParameterizedStatusMessage(Session, StatusMessageType2.YouHaveEnteredThe_Channel, "General"); var trade = new GameEventDisplayParameterizedStatusMessage(Session, StatusMessageType2.YouHaveEnteredThe_Channel, "Trade"); var lfg = new GameEventDisplayParameterizedStatusMessage(Session, StatusMessageType2.YouHaveEnteredThe_Channel, "LFG"); var roleplay = new GameEventDisplayParameterizedStatusMessage(Session, StatusMessageType2.YouHaveEnteredThe_Channel, "Roleplay"); Session.Network.EnqueueSend(setTurbineChatChannels, general, trade, lfg, roleplay); }
public void PlayerEnterWorld() { var player = this; var physicsObj = PhysicsObj; IsOnline = true; // Save the the LoginTimestamp SetProperty(PropertyFloat.LoginTimestamp, Time.GetTimestamp()); var totalLogins = GetProperty(PropertyInt.TotalLogins) ?? 0; totalLogins++; SetProperty(PropertyInt.TotalLogins, totalLogins); Sequences.AddOrSetSequence(SequenceType.ObjectInstance, new UShortSequence((ushort)totalLogins)); // SendSelf will trigger the entrance into portal space SendSelf(); SendFriendStatusUpdates(); // Init the client with the chat channel ID's, and then notify the player that they've choined the associated channels. var setTurbineChatChannels = new GameEventSetTurbineChatChannels(Session, 0, 1, 2, 3, 4, 6, 7, 0, 0, 0); // TODO these are hardcoded right now var general = new GameEventWeenieErrorWithString(Session, WeenieErrorWithString.YouHaveEnteredThe_Channel, "General"); var trade = new GameEventWeenieErrorWithString(Session, WeenieErrorWithString.YouHaveEnteredThe_Channel, "Trade"); var lfg = new GameEventWeenieErrorWithString(Session, WeenieErrorWithString.YouHaveEnteredThe_Channel, "LFG"); var roleplay = new GameEventWeenieErrorWithString(Session, WeenieErrorWithString.YouHaveEnteredThe_Channel, "Roleplay"); Session.Network.EnqueueSend(setTurbineChatChannels, general, trade, lfg, roleplay); // check if vassals earned XP while offline var offlinePlayer = WorldManager.GetOfflinePlayer(Guid); if (offlinePlayer != null) { offlinePlayer.AddCPPoolToUnload(true); } }
private void SetEphemeralValues() { Sequences.AddOrSetSequence(SequenceType.ObjectPosition, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectMovement, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectState, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectVector, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectTeleport, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectServerControl, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectForcePosition, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectVisualDesc, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.ObjectInstance, new UShortSequence()); Sequences.AddOrSetSequence(SequenceType.Motion, new UShortSequence(1, 0x7FFF)); // MSB is reserved, so set max value to exclude it. Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttribute, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeStrength, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeEndurance, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeQuickness, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeCoordination, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeFocus, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttributeSelf, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttribute2ndLevel, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttribute2ndLevelHealth, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttribute2ndLevelStamina, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateAttribute2ndLevelMana, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkill, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillAxe, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillBow, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillCrossBow, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillDagger, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMace, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMeleeDefense, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMissileDefense, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSling, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSpear, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillStaff, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSword, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillThrownWeapon, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillUnarmedCombat, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillArcaneLore, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMagicDefense, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillManaConversion, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSpellcraft, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillItemAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillPersonalAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillDeception, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillHealing, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillJump, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillLockpick, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillRun, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillAwareness, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillArmsAndArmorRepair, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillCreatureAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillWeaponAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillArmorAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMagicItemAppraisal, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillCreatureEnchantment, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillItemEnchantment, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillLifeMagic, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillWarMagic, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillLeadership, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillLoyalty, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillFletching, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillAlchemy, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillCooking, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSalvaging, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillTwoHandedCombat, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillGearcraft, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillVoidMagic, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillHeavyWeapons, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillLightWeapons, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillFinesseWeapons, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillMissileWeapons, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillShield, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillDualWield, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillRecklessness, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSneakAttack, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillDirtyFighting, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillChallenge, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdateSkillSummoning, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyBool, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyInt, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyInt64, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyDouble, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyString, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PrivateUpdatePropertyDataID, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyBool, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyInt, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyInt64, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyDouble, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyString, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyDataID, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.PublicUpdatePropertyInstanceId, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.SetStackSize, new ByteSequence(false)); Sequences.AddOrSetSequence(SequenceType.Confirmation, new ByteSequence(false)); foreach (var x in EphemeralProperties.PropertiesBool.ToList()) { EphemeralPropertyBools.TryAdd((PropertyBool)x, null); } foreach (var x in EphemeralProperties.PropertiesDataId.ToList()) { EphemeralPropertyDataIds.TryAdd((PropertyDataId)x, null); } foreach (var x in EphemeralProperties.PropertiesDouble.ToList()) { EphemeralPropertyFloats.TryAdd((PropertyFloat)x, null); } foreach (var x in EphemeralProperties.PropertiesInstanceId.ToList()) { EphemeralPropertyInstanceIds.TryAdd((PropertyInstanceId)x, null); } foreach (var x in EphemeralProperties.PropertiesInt.ToList()) { EphemeralPropertyInts.TryAdd((PropertyInt)x, null); } foreach (var x in EphemeralProperties.PropertiesInt64.ToList()) { EphemeralPropertyInt64s.TryAdd((PropertyInt64)x, null); } foreach (var x in EphemeralProperties.PropertiesString.ToList()) { EphemeralPropertyStrings.TryAdd((PropertyString)x, null); } foreach (var x in Biota.BiotaPropertiesBool.Where(i => EphemeralProperties.PropertiesBool.Contains(i.Type)).ToList()) { EphemeralPropertyBools[(PropertyBool)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesDID.Where(i => EphemeralProperties.PropertiesDataId.Contains(i.Type)).ToList()) { EphemeralPropertyDataIds[(PropertyDataId)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesFloat.Where(i => EphemeralProperties.PropertiesDouble.Contains(i.Type)).ToList()) { EphemeralPropertyFloats[(PropertyFloat)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesIID.Where(i => EphemeralProperties.PropertiesInstanceId.Contains(i.Type)).ToList()) { EphemeralPropertyInstanceIds[(PropertyInstanceId)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesInt.Where(i => EphemeralProperties.PropertiesInt.Contains(i.Type)).ToList()) { EphemeralPropertyInts[(PropertyInt)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesInt64.Where(i => EphemeralProperties.PropertiesInt64.Contains(i.Type)).ToList()) { EphemeralPropertyInt64s[(PropertyInt64)x.Type] = x.Value; } foreach (var x in Biota.BiotaPropertiesString.Where(i => EphemeralProperties.PropertiesString.Contains(i.Type)).ToList()) { EphemeralPropertyStrings[(PropertyString)x.Type] = x.Value; } GeneratorProfiles = Biota.BiotaPropertiesGenerator.ToList(); BaseDescriptionFlags = ObjectDescriptionFlag.Attackable; EncumbranceVal = EncumbranceVal ?? (StackUnitEncumbrance ?? 0) * (StackSize ?? 1); if (Placement == null) { Placement = ACE.Entity.Enum.Placement.Resting; } SelectGeneratorProfiles(); UpdateGeneratorInts(); QueueGenerator(); QueueNextHeartBeat(); }