public List <string> SpawnMoreMembers(int numCreaturesToSpawn, List <NGuid> boardAssetIds) { List <string> creatureIds = new List <string>(); int boardAssetIndex = 0; if (boardAssetIds == null || boardAssetIds.Count == 0) { Talespire.Log.Error($"{nameof(SpawnMoreMembers)} - Must specify at least one boardAssetId."); return(null); } CreatureBoardAsset ownerCreature = OwnerCreature; if (Guard.IsNull(ownerCreature, "ownerCreature")) { return(null); } float radiusFeetFromLeader = 5; float degreesToRotate = 0; float degreesDelta = 33; float feetDelta = 5; const float distanceBetweenMinisFeet = 5; while (numCreaturesToSpawn > 0) { NGuid boardAssetId = boardAssetIds[boardAssetIndex]; boardAssetIndex++; if (boardAssetIndex >= boardAssetIds.Count) { boardAssetIndex = 0; } degreesToRotate += degreesDelta; float distanceFromCenterTiles = Talespire.Convert.FeetToTiles(radiusFeetFromLeader); radiusFeetFromLeader += feetDelta; float circumferenceFeet = (float)Math.PI * 2f * radiusFeetFromLeader; float numMinisWeCanFitAtThisRadius = circumferenceFeet / distanceBetweenMinisFeet; feetDelta = distanceBetweenMinisFeet / numMinisWeCanFitAtThisRadius; degreesDelta = 360f / numMinisWeCanFitAtThisRadius; Vector3 offset = new Vector3(-distanceFromCenterTiles, 0, 0); Vector3 rotatedOffset = Quaternion.Euler(0, degreesToRotate, 0) * offset; // rotate it Vector3 newPosition = ownerCreature.PlacedPosition + rotatedOffset; // calculate rotated point creatureIds.Add(Talespire.Board.InstantiateCreature(boardAssetId.ToString(), newPosition)); numCreaturesToSpawn--; } return(creatureIds); }
public static bool IsPersistentEffectHidden(NGuid creatureId) { return(IsHidden(creatureId.ToString())); }
public static bool IsPersistentEffectRotationLocked(NGuid creatureId) { return(IsRotationLocked(creatureId.ToString())); }
static WhatSide WhatSide(NGuid worldId) { return(WhatSide(worldId.ToString())); }