public static NPCS.Npc CreatePinhata(PinhataPosition pin) { if (Lootorial.Instance.Config.PinhatasPositions.PinhatasParsed.TryGetValue(pin, out GameObject value) && value != null) { return(Player.Get(value).AsNPC()); } var room = Map.Rooms.FirstOrDefault(x => x.Name == pin.Room); var pos = room.Transform.TransformPoint(pin.Position); var dir = room.Transform.TransformDirection(pin.Direction); var npc = NPCS.Methods.CreateNPC(pos, dir, pin.Scale, pin.Role, ItemType.None, pin.Name); Timing.CallDelayed(0.5f, () => { npc.NPCPlayer.Health = pin.Health; npc.NPCPlayer.MaxHealth = (int)pin.Health; Lootorial.Instance.Config.PinhatasPositions.PinhatasParsed[pin] = npc.gameObject; for (int i = 0; i < Lootorial.Instance.Config.MaxItemsPerPinhata + 1; i++) { var item = Rand.Next(0, Lootorial.Instance.Config.DroppableItems.Count); npc.NPCPlayer.AddItem(Lootorial.Instance.Config.DroppableItems.ElementAt(item)); } }); return(npc); }
public static NPCS.Npc SpawnPinhata(PinhataPosition pin) { var npc = NPCS.Methods.CreateNPC(pin.Position, pin.Direction, pin.Scale, pin.Role, ItemType.None, pin.Name); Timing.CallDelayed(0.5f, () => { npc.NPCPlayer.Health = pin.Health; npc.NPCPlayer.MaxHealth = (int)pin.Health; for (int i = 0; i < Lootorial.Instance.Config.MaxItemsPerPinhata + 1; i++) { var item = Rand.Next(0, Lootorial.Instance.Config.DroppableItems.Count); npc.NPCPlayer.AddItem(Lootorial.Instance.Config.DroppableItems.ElementAt(item)); } }); return(npc); }