using System.Collections.Generic; using System.Globalization; // Token: 0x0200055C RID: 1372 public class ObjectiveGotoRandomNPCRebirth : ObjectiveGotoRandomSDX { public override bool NeedsNPCSetPosition { get { return true; } } public override bool SetupPosition(EntityNPC ownerNPC = null, EntityPlayer player = null, List usedPOILocations = null, int entityIDforQuests = -1) { return this.GetPosition(ownerNPC) != Vector3.zero; } protected Vector3 GetPosition(EntityNPC ownerNPC) { if (base.OwnerQuest.GetPositionData(out this.position, Quest.PositionDataTypes.Location)) { base.OwnerQuest.Position = this.position; this.positionSet = true; base.OwnerQuest.HandleMapObject(Quest.PositionDataTypes.Location, this.NavObjectName, -1); base.CurrentValue = 2; return this.position; } if (base.OwnerQuest.GetPositionData(out this.position, Quest.PositionDataTypes.TreasurePoint)) { this.positionSet = true; base.OwnerQuest.SetPositionData(Quest.PositionDataTypes.Location, base.OwnerQuest.Position); base.CurrentValue = 2; return this.position; } float distance = 50f; if (base.Value != null && base.Value != "" && !StringParsers.TryParseFloat(base.Value, out distance, 0, -1, NumberStyles.Any) && base.Value.Contains("-")) { string[] array = base.Value.Split(new char[] { '-' }); float num = StringParsers.ParseFloat(array[0], 0, -1, NumberStyles.Any); float num2 = StringParsers.ParseFloat(array[1], 0, -1, NumberStyles.Any); distance = GameManager.Instance.World.GetGameRandom().RandomFloat * (num2 - num) + num; } if (SingletonMonoBehaviour.Instance.IsServer) { Vector3i vector3i = ObjectiveGotoRandomNPCRebirth.CalculateRandomPoint(ownerNPC.entityId, distance, base.OwnerQuest.ID); if (!GameManager.Instance.World.CheckForLevelNearbyHeights((float)vector3i.x, (float)vector3i.z, 5) || GameManager.Instance.World.GetWaterAt((float)vector3i.x, (float)vector3i.z)) { return Vector3.zero; } World world = GameManager.Instance.World; if (vector3i.y > 0 && world.IsPositionInBounds(this.position) && !world.IsPositionWithinPOI(this.position, 5)) { base.FinalizePoint(vector3i.x, vector3i.y, vector3i.z); return this.position; } } else { SingletonMonoBehaviour.Instance.SendToServer(NetPackageManager.GetPackage().Setup(ownerNPC.entityId, distance, 1, base.OwnerQuest.QuestCode, 0, -1, 0, false), false); base.CurrentValue = 1; } return Vector3.zero; } public override BaseObjective Clone() { ObjectiveGotoRandomNPCRebirth objectiveRandomGotoNPC = new ObjectiveGotoRandomNPCRebirth(); this.CopyValues(objectiveRandomGotoNPC); objectiveRandomGotoNPC.position = this.position; objectiveRandomGotoNPC.positionSet = this.positionSet; objectiveRandomGotoNPC.completionDistance = this.completionDistance; return objectiveRandomGotoNPC; } }