Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Scripts/Quests/ObjectiveGotoRandomNPCRebirth.cs
Nathaniel Cosford e06f2bd282 Add All Mods
2025-05-29 23:33:28 +09:30

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;
}
}