public static LSProjectile Create(string projCode, LSAgent source, Vector3d offset, AllegianceType targetAllegiance, Func <LSAgent, bool> agentConditional, Action <LSAgent> hitEffect) { Vector2d relativePos = offset.ToVector2d(); Vector2d worldPos = relativePos.Rotated(source.Body.Rotation) + source.Body.Position; Vector3d pos = new Vector3d(worldPos.x, worldPos.y, offset.z + source.Body.HeightPos); AgentController sourceController = source.Controller; LSProjectile proj = Create( projCode, pos, agentConditional, (bite) => { return((sourceController.GetAllegiance(bite) & targetAllegiance) != 0); } , hitEffect); return(proj); }