public static CraneGame.Prize getCustomMoviePrize(CustomMovieData movieData, CraneGame game, Vector2 pos, float z) { if (PyTK.PyUtils.getItem(movieData.CranePrizeType, name: movieData.CranePrizeName) is Item prize) { return new CraneGame.Prize(game, prize) { position = pos, zPosition = z, isLargeItem = (prize is StardewValley.Object o && o.bigCraftable) || !(prize is StardewValley.Object) } } ; return(null); }
public static void craneGameInstantiated(ref CraneGame __instance) { if (CMVAssetEditor.CurrentMovie == null || CMVAssetEditor.CurrentMovie.CranePrizeType == "None") { return; } var game = __instance; List <CraneGame.CraneGameObject> gameObjects = new List <CraneGame.CraneGameObject>((List <CraneGame.CraneGameObject>)game.GetType().GetField("_gameObjects", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(game)); Random rnd = new Random(); foreach (CraneGame.Prize prize in gameObjects.Where(go => go is CraneGame.Prize p && !p.isLargeItem)) { if (rnd.NextDouble() < 0.2) { game.UnregisterGameObject(prize); if (getCustomMoviePrize(CMVAssetEditor.CurrentMovie, game, prize.position, prize.zPosition) == null) { game.RegisterGameObject(prize); } break; } } }