80 lines
3.4 KiB
C#
80 lines
3.4 KiB
C#
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<Vector2> 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<ConnectionManager>.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<ConnectionManager>.Instance.SendToServer(NetPackageManager.GetPackage<NetPackageQuestTreasurePoint>().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;
|
|
}
|
|
}
|