Initial Commit

This commit is contained in:
Lachlan Leone
2026-04-05 18:57:16 +10:00
commit c3a5153a56
691 changed files with 85219 additions and 0 deletions
+435
View File
@@ -0,0 +1,435 @@
# Ignore all files in the .idea folder
.idea/
# Except these files, which can be shared
!.idea/workspace.xml
!.idea/misc.xml
!.idea/modules.xml
!.idea/vcs.xml
!.idea/libraries/
# Ignore IDE-specific settings that should remain local
.idea/dictionaries/
.idea/inspectionProfiles/
.idea/shelf/
.idea/tasks/
.idea/httpRequests/
# Ignore logs and caches
.idea/dataSources/
.idea/dataSources.local/
.idea/sqlDataSources.xml
.idea/dataSources.ids
.idea/caches/
.idea/jsLibraryMappings.xml
# Ignore project-specific files generated by plugins
.idea/**/target/
.idea/**/out/
.idea/**/build/
# Ignore custom settings for run/debug configurations
.idea/runConfigurations/
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
!UnityProject - Easter2025/**
UnityProject - Easter2025/Assets/polyperfect
UnityProject - Easter2025/Assets/polyperfect.meta
+3
View File
@@ -0,0 +1,3 @@
# Release Notes v0.1.0
- Initial Release
+4
View File
@@ -0,0 +1,4 @@
# Release Notes v0.1.1
- Fixed Dyed Eggs to be set as a "Base" rather than a "Main"
- Fixed Egg Basket Provider not allowing processes.
+6
View File
@@ -0,0 +1,6 @@
# Release Notes v0.1.2
- Updated Wrapped Creme Eggs to look brighter
- Updated Bush Shaking to start earlier
- Added ColorBlind Tags to Easter Bread, and Creme Eggs
- Added a mod conflict warning
+3
View File
@@ -0,0 +1,3 @@
[h1]Release Notes v0.1.0[/h1]
- Initial Release
+4
View File
@@ -0,0 +1,4 @@
[h1]Release Notes v0.1.1[/h1]
- Fixed Dyed Eggs to be set as a "Base" rather than a "Main"
- Fixed Egg Basket Provider not allowing processes.
+6
View File
@@ -0,0 +1,6 @@
[h1]Release Notes v0.1.2[/h1]
- Updated Wrapped Creme Eggs to look brighter
- Updated Bush Shaking to start earlier
- Added ColorBlind Tags to Easter Bread, and Creme Eggs
- Added a mod conflict warning
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CBunny : IComponentData, IModComponent
{
}
}
+11
View File
@@ -0,0 +1,11 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CCanHideItem : IComponentData, IModComponent, IApplianceProperty
{
public int HiddenItem;
}
}
+11
View File
@@ -0,0 +1,11 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CCanTriggerOrangeOrbs : IComponentData, IModComponent, IItemProperty
{
}
}
+11
View File
@@ -0,0 +1,11 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CCanTriggerOrbs : IComponentData, IModComponent, IItemProperty
{
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CCompletedAchievementEntity : IComponentData, IModComponent
{
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CEgg : IComponentData, IModComponent, IItemProperty
{
}
}
+13
View File
@@ -0,0 +1,13 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CEggBasket : IComponentData, IModComponent, IItemProperty
{
public struct CanPlaceInBasket : IComponentData, IModComponent, IItemProperty
{
}
}
}
+11
View File
@@ -0,0 +1,11 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CEggBush : IComponentData, IModComponent, IApplianceProperty
{
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CEventBunny : IComponentData, IModComponent
{
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CHasOrangeOrbs : IComponentData, IModComponent
{
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CHasOrbs : IComponentData, IModComponent
{
}
}
+11
View File
@@ -0,0 +1,11 @@
using KitchenData;
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CHidableItem : IComponentData, IModComponent, IItemProperty
{
}
}
+19
View File
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using KitchenData;
using KitchenMods;
using Steamworks;
using Unity.Collections;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CHiddenBurnProcess : IComponentData, IModComponent, IItemProperty
{
public float BurnProgress;
public float BurnTimeInSeconds;
public FixedListInt64 Result;
public bool IsComplete;
public FixedListInt64 BurnableSurfaces;
}
}
+12
View File
@@ -0,0 +1,12 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CServeThreeCoursesTracker : IComponentData, IModComponent
{
public bool HasHadEggStarter;
public bool HasHadEggMain;
public bool HasHadEggDessert;
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct CShouldShakeBushes : IComponentData, IModComponent
{
}
}
+6
View File
@@ -0,0 +1,6 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
}
+12
View File
@@ -0,0 +1,12 @@
using KitchenMods;
using Unity.Entities;
namespace Easter2025.Components
{
public struct SHasTriggeredBunnies : IComponentData, IModComponent
{
public struct RewardMarker : IComponentData, IModComponent
{
}
}
}
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.Decorations
{
public class GrassBunny : GenericDecorationAppliance
{
public override string UniqueNameID => "GrassBunny";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GrassBunny").AssignMaterialsByNames();
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.GrassBunny;
}
}
@@ -0,0 +1,22 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.Decorations
{
public class MountedCarrots : GenericDecorationAppliance
{
public override string UniqueNameID => "MountedCarrots";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("MountedCarrots").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CMustHaveWall()
};
public override OccupancyLayer Layer => OccupancyLayer.Wall;
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.MountedCarrots;
}
}
+43
View File
@@ -0,0 +1,43 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances
{
public class DyeProvider : CustomAppliance
{
public override string UniqueNameID => "DyeProvider";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("DyeProvider").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
KitchenPropertiesUtils.GetUnlimitedCItemProvider(GDOReferences.RedDye.ID),
new CVariableProvider
{
Current = 0,
Provide1 = GDOReferences.RedDye.ID,
Provide2 = GDOReferences.GreenDye.ID,
Provide3 = GDOReferences.BlueDye.ID
}
};
public override bool SellOnlyAsDuplicate => true;
public override bool IsPurchasable => true;
public override PriceTier PriceTier => PriceTier.Medium;
public override ShoppingTags ShoppingTags => ShoppingTags.Cooking | ShoppingTags.Misc;
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.DyeProvider;
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
VariableProviderView variableProviderView = gameDataObject.Prefab.AddComponent<VariableProviderView>();
variableProviderView.Animator = gameDataObject.Prefab.GetComponent<Animator>();
gameDataObject.Prefab.GetChild("Bottles/BlueDyeBottle").AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Bottles/BlueDyeBottle/Octagon");
gameDataObject.Prefab.GetChild("Bottles/GreenDyeBottle").AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Bottles/GreenDyeBottle/Square");
gameDataObject.Prefab.GetChild("Bottles/RedDyeBottle").AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Bottles/RedDyeBottle/Circle");
}
}
}
+55
View File
@@ -0,0 +1,55 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances
{
public class EggBasketProvider : CustomAppliance
{
public override string UniqueNameID => "EggBasketProvider";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggBasketProvider").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CItemHolder(),
new CItemProvider
{
Item = GDOReferences.EggBasket.ID,
Available = 1,
Maximum = 1,
PreventReturns = true,
AutoPlaceOnHolder = true
}
};
public override bool SellOnlyAsDuplicate => true;
public override bool IsPurchasable => true;
public override PriceTier PriceTier => PriceTier.Medium;
public override ShoppingTags ShoppingTags => ShoppingTags.Cooking | ShoppingTags.Misc;
public override List<Process> RequiresProcessForShop => new List<Process>
{
GDOReferences.SearchBush
};
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.EggBasketProvider;
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
HoldPointContainer holdPointContainer = gameDataObject.Prefab.AddComponent<HoldPointContainer>();
LimitedItemSourceView limitedItemSourceView = gameDataObject.Prefab.AddComponent<LimitedItemSourceView>();
holdPointContainer.HoldPoint = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.HeldItemPosition = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.Items = new List<GameObject>
{
gameDataObject.Prefab.GetChild("HoldPoint/EggBasket")
};
}
}
}
+50
View File
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances
{
public class EggMouldProvider : CustomAppliance
{
public override string UniqueNameID => "EggMouldProvider";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggMouldProvider").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CItemHolder(),
new CItemProvider
{
Item = GDOReferences.EggMould.ID,
Available = 1,
Maximum = 1,
PreventReturns = true,
AutoPlaceOnHolder = true
}
};
public override bool SellOnlyAsDuplicate => true;
public override bool IsPurchasable => true;
public override PriceTier PriceTier => PriceTier.Medium;
public override ShoppingTags ShoppingTags => ShoppingTags.Cooking | ShoppingTags.Misc;
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.EggMouldProvider;
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
HoldPointContainer holdPointContainer = gameDataObject.Prefab.AddComponent<HoldPointContainer>();
LimitedItemSourceView limitedItemSourceView = gameDataObject.Prefab.AddComponent<LimitedItemSourceView>();
holdPointContainer.HoldPoint = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.HeldItemPosition = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.Items = new List<GameObject>
{
gameDataObject.Prefab.GetChild("HoldPoint/EggMould")
};
}
}
}
+14
View File
@@ -0,0 +1,14 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Appliances
{
public class GenerousBunnies : CustomAppliance
{
public override string UniqueNameID => "GenerousBunnies";
public override bool IsPurchasable => false;
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.GenerousBunnies;
}
}
@@ -0,0 +1,17 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances
{
public class HotCrossBunsProvider : GenericProvider
{
public override Item ProvidedItem => GDOReferences.RawHotCrossBun;
public override string UniqueNameID => "HotCrossBunsProvider";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("HotCrossBunsProvider").AssignMaterialsByNames();
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.HotCrossBunsProvider;
}
}
@@ -0,0 +1,48 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views;
using Easter2025.Views.Local;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using Shapes;
using UnityEngine;
namespace Easter2025.Customs.Appliances.SceneAppliances
{
public class Bush : GenericSceneAppliance
{
public override string UniqueNameID => "Bush";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("VanillaBush").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CEggBush(),
new CCanHideItem(),
new CItemHolder(),
new CImmovable(),
new CTakesDuration
{
Total = 1,
Manual = true,
Mode = InteractionMode.Items
},
new CDisplayDuration
{
Process = GDOReferences.SearchBush.ID
}
};
public override bool IsNonInteractive => false;
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
HoldPointContainer holdPointContainer = gameDataObject.Prefab.AddComponent<HoldPointContainer>();
holdPointContainer.HoldPoint = gameDataObject.Prefab.GetChild("HoldPoint").transform;
BushView bushView = gameDataObject.Prefab.AddComponent<BushView>();
bushView.Animator = gameDataObject.Prefab.GetComponentInChildren<Animator>();
}
}
}
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.SceneAppliances
{
public class EasterGround : GenericSceneAppliance
{
public override string UniqueNameID => "EasterGround";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EasterGround").AssignMaterialsByNames();
}
}
@@ -0,0 +1,31 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Views.Local;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.SceneAppliances
{
public class EasterTree : GenericSceneAppliance
{
public override string UniqueNameID => "EasterTree";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EasterTree").AssignMaterialsByNames();
public override void OnRegister(Appliance gameDataObject)
{
EggPileView eggPileView = Prefab.AddComponent<EggPileView>();
eggPileView.EggContainers = new List<GameObject>
{
gameDataObject.Prefab.GetChild("Eggs/Egg Container 1"),
gameDataObject.Prefab.GetChild("Eggs/Egg Container 2"),
gameDataObject.Prefab.GetChild("Eggs/Egg Container 3"),
gameDataObject.Prefab.GetChild("Eggs/Egg Container 4"),
gameDataObject.Prefab.GetChild("Eggs/Egg Container 5"),
gameDataObject.Prefab.GetChild("Eggs/Egg Container 6"),
};
base.OnRegister(gameDataObject);
}
}
}
@@ -0,0 +1,30 @@
using Easter2025.Customs.Generics;
using Easter2025.Views.Local;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.SceneAppliances
{
public class EggCobblestone : GenericSceneAppliance
{
public override string UniqueNameID => "EggCobblestone";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggCobblestone").AssignMaterialsByNames();
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
RandomRotationView randomRotationView = gameDataObject.Prefab.AddComponent<RandomRotationView>();
randomRotationView.Container = gameDataObject.Prefab.GetChild("Container");
randomRotationView.min = 0;
randomRotationView.max = 360;
RandomPlacementView randomPlacementView = gameDataObject.Prefab.AddComponent<RandomPlacementView>();
randomPlacementView.Container = gameDataObject.Prefab.GetChild("Container");
randomPlacementView.min = new(-0.1f,0,-0.1f);
randomPlacementView.max = new (0.1f,0,0.1f);
}
}
}
@@ -0,0 +1,31 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Views.Local;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances.SceneAppliances
{
public class EggPile : GenericSceneAppliance
{
public override string UniqueNameID => "EggPile";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggPile").AssignMaterialsByNames();
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
EggPileView eggPileView = gameDataObject.Prefab.AddComponent<EggPileView>();
eggPileView.EggContainers = new List<GameObject>
{
gameDataObject.Prefab.GetChild("EggContainer/Egg_1"),
gameDataObject.Prefab.GetChild("EggContainer/Egg_2"),
gameDataObject.Prefab.GetChild("EggContainer/Egg_3"),
};
RandomRotationView randomRotationView = gameDataObject.Prefab.AddComponent<RandomRotationView>();
randomRotationView.Container = gameDataObject.Prefab.GetChild("EggContainer");
}
}
}
+50
View File
@@ -0,0 +1,50 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Appliances
{
public class WrapperProvider : CustomAppliance
{
public override string UniqueNameID => "WrapperProvider";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("WrapperProvider").AssignMaterialsByNames();
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CItemHolder(),
new CItemProvider
{
Item = GDOReferences.WrapperRoll.ID,
Available = 1,
Maximum = 1,
PreventReturns = true,
AutoPlaceOnHolder = true
}
};
public override bool SellOnlyAsDuplicate => true;
public override bool IsPurchasable => true;
public override PriceTier PriceTier => PriceTier.Medium;
public override ShoppingTags ShoppingTags => ShoppingTags.Cooking | ShoppingTags.Misc;
public override List<(Locale, ApplianceInfo)> InfoList => CenteralLang.Appliances.WrapperProvider;
public override void OnRegister(Appliance gameDataObject)
{
base.OnRegister(gameDataObject);
HoldPointContainer holdPointContainer = gameDataObject.Prefab.AddComponent<HoldPointContainer>();
LimitedItemSourceView limitedItemSourceView = gameDataObject.Prefab.AddComponent<LimitedItemSourceView>();
holdPointContainer.HoldPoint = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.HeldItemPosition = gameDataObject.Prefab.GetChild("HoldPoint").transform;
limitedItemSourceView.Items = new List<GameObject>
{
gameDataObject.Prefab.GetChild("HoldPoint/WrapperRoll")
};
}
}
}
+17
View File
@@ -0,0 +1,17 @@
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Decor
{
public class EggWallpaper : CustomDecor
{
public override string UniqueNameID => "EggWallpaper";
public override Material Material => MaterialUtils.GetCustomMaterial("EggWallpaper");
public override Appliance ApplicatorAppliance => GDOReferences.WallpaperApplicator;
public override LayoutMaterialType Type => LayoutMaterialType.Wallpaper;
public override bool IsAvailable => false;
}
}
+17
View File
@@ -0,0 +1,17 @@
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Decor
{
public class GalaxyEggsWallpaper : CustomDecor
{
public override string UniqueNameID => "GalaxyEggsWallpaper";
public override Material Material => MaterialUtils.GetCustomMaterial("Galaxy Eggs");
public override Appliance ApplicatorAppliance => GDOReferences.WallpaperApplicator;
public override LayoutMaterialType Type => LayoutMaterialType.Wallpaper;
public override bool IsAvailable => false;
}
}
+77
View File
@@ -0,0 +1,77 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Dishes
{
public class DishCremeEgg : CustomDish
{
public override string UniqueNameID => "DishCremeEgg";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Dessert;
public override int Difficulty => 3;
public override List<string> StartingNameSet => new()
{
"Gooey Goodness",
"Egg-streme Indulgence",
"Cracked and Packed",
"The Yolk of Luxury",
"What the Fudge?!",
};
public override HashSet<Item> MinimumIngredients => new()
{
GDOReferences.Sugar,
GDOReferences.Milk,
GDOReferences.Chocolate,
GDOReferences.Butter,
GDOReferences.EggMould,
GDOReferences.Pot,
GDOReferences.WrapperRoll,
};
public override HashSet<Process> RequiredProcesses => new()
{
GDOReferences.SteepTea,
GDOReferences.Chop,
GDOReferences.Knead,
};
public override List<Dish> AlsoAddRecipes => new List<Dish>
{
GDOReferences.RecipeCremeFilling
};
public override GameObject IconPrefab => Mod.Bundle.LoadAsset<GameObject>("CremeEggIcon").AssignMaterialsByNames();
public override bool IsMainThatDoesNotNeedPlates => true;
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.WrappedCremeEgg,
Phase = MenuPhase.Dessert,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override List<Unlock> HardcodedRequirements => new List<Unlock>
{
GDOReferences.DishDyedEggs
};
public override bool IsAvailableAsLobbyOption => Mod.ENABLE_ADDITIONAL_LOBBY_DISHES;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.CremeEgg;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.CremeEgg;
}
}
+71
View File
@@ -0,0 +1,71 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Dishes
{
public class DishDevilledEggs : CustomDish
{
public override string UniqueNameID => "DishDevilledEggs";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Side;
public override int Difficulty => 2;
public override List<string> StartingNameSet => new()
{
"Eggsorcist Kitchen",
"Hells Yolks",
"Crack Me If You Can",
"Boil and Trouble",
"Wickedly Whisked",
};
public override HashSet<Item> MinimumIngredients => new()
{
GDOReferences.Pot,
GDOReferences.Water,
GDOReferences.Egg,
GDOReferences.Oil,
};
public override HashSet<Process> RequiredProcesses => new()
{
GDOReferences.Cook,
GDOReferences.Chop,
};
public override List<Dish> AlsoAddRecipes => new List<Dish>
{
GDOReferences.RecipeMayonnaise
};
public override GameObject IconPrefab => Mod.Bundle.LoadAsset<GameObject>("DevilledEggsIcon").AssignMaterialsByNames();
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.DevilledEgg,
Phase = MenuPhase.Side,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override List<Unlock> HardcodedRequirements => new List<Unlock>
{
GDOReferences.DishDyedEggs
};
public override bool IsAvailableAsLobbyOption => Mod.ENABLE_ADDITIONAL_LOBBY_DISHES;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.DevilledEggs;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.DevilledEggs;
}
}
+80
View File
@@ -0,0 +1,80 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Dishes
{
public class DishDyedEggs : CustomDish
{
public override string UniqueNameID => "DishDyedEggs";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Base;
public override int Difficulty => 2;
public override List<string> StartingNameSet => new()
{
"Cracked & Colored",
"Egg-streme Makeover",
"Pastel & Protein",
"Yolk and Dye",
"Hue's Hungry?",
};
public override HashSet<Item> MinimumIngredients => new()
{
GDOReferences.Pot,
GDOReferences.Water,
GDOReferences.Egg,
GDOReferences.RedDye,
GDOReferences.GreenDye,
GDOReferences.BlueDye,
};
public override HashSet<Process> RequiredProcesses => new()
{
GDOReferences.Cook,
};
public override GameObject IconPrefab => Mod.Bundle.LoadAsset<GameObject>("DyedEggsIcon").AssignMaterialsByNames();
public override bool IsMainThatDoesNotNeedPlates => true;
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.RedEgg,
Phase = MenuPhase.Main,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
},
new Dish.MenuItem
{
Item = GDOReferences.GreenEgg,
Phase = MenuPhase.Main,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
},
new Dish.MenuItem
{
Item = GDOReferences.BlueEgg,
Phase = MenuPhase.Main,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override bool IsAvailableAsLobbyOption => true;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.DyedEggs;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.DyedEggs;
}
}
+65
View File
@@ -0,0 +1,65 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Dishes
{
public class DishEasterBread : CustomDish
{
public override string UniqueNameID => "DishEasterBread";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Dessert;
public override int Difficulty => 1;
public override List<string> StartingNameSet => new()
{
"",
"",
"",
"",
"",
};
public override HashSet<Item> MinimumIngredients => new()
{
GDOReferences.Pot,
GDOReferences.Water,
GDOReferences.Egg,
GDOReferences.Flour,
};
public override HashSet<Process> RequiredProcesses => new()
{
GDOReferences.Cook
};
public override GameObject IconPrefab => Mod.Bundle.LoadAsset<GameObject>("EasterBreadIcon").AssignMaterialsByNames();
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.EasterBread,
Phase = MenuPhase.Dessert,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override List<Unlock> HardcodedRequirements => new List<Unlock>
{
GDOReferences.DishDyedEggs
};
public override bool IsAvailableAsLobbyOption => Mod.ENABLE_ADDITIONAL_LOBBY_DISHES;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.EasterBread;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.EasterBread;
}
}
+64
View File
@@ -0,0 +1,64 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Dishes
{
public class DishHotCrossBun : CustomDish
{
public override string UniqueNameID => "DishHotCrossBun";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Starter;
public override int Difficulty => 1;
public override List<string> StartingNameSet => new()
{
"Bun Intended",
"Too Hot to Cross",
"Criss Cross Delish",
"Bun Appétit",
"Rise and Cross",
};
public override HashSet<Item> MinimumIngredients => new()
{
GDOReferences.RawHotCrossBun,
GDOReferences.Butter,
};
public override HashSet<Process> RequiredProcesses => new()
{
GDOReferences.Cook,
GDOReferences.Chop,
};
public override GameObject IconPrefab => Mod.Bundle.LoadAsset<GameObject>("HotCrossBunIcon").AssignMaterialsByNames();
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.HotCrossBun,
Phase = MenuPhase.Starter,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override List<Unlock> HardcodedRequirements => new List<Unlock>
{
GDOReferences.DishDyedEggs
};
public override bool IsAvailableAsLobbyOption => Mod.ENABLE_ADDITIONAL_LOBBY_DISHES;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.HotCrossBuns;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.HotCrossBuns;
}
}
+53
View File
@@ -0,0 +1,53 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Dishes
{
public class DishPlasticEggs : CustomDish
{
public override string UniqueNameID => "DishPlasticEggs";
public override UnlockGroup UnlockGroup => UnlockGroup.Dish;
public override CardType CardType => CardType.Default;
public override DishCustomerChange CustomerMultiplier => DishCustomerChange.SmallDecrease;
public override DishType Type => DishType.Starter;
public override int Difficulty => 1;
public override List<Dish.MenuItem> ResultingMenuItems => new()
{
new Dish.MenuItem
{
Item = GDOReferences.PinkPlasticEgg,
Phase = MenuPhase.Starter,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
},
new Dish.MenuItem
{
Item = GDOReferences.OrangePlasticEgg,
Phase = MenuPhase.Starter,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
},
new Dish.MenuItem
{
Item = GDOReferences.YellowPlasticEgg,
Phase = MenuPhase.Starter,
Weight = 1,
DynamicMenuType = DynamicMenuType.Static,
DynamicMenuIngredient = null
}
};
public override bool IsUnlockable => false;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.PlasticEggs;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.PlasticEggs;
}
}
+19
View File
@@ -0,0 +1,19 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Dishes
{
public class RecipeCremeFilling : CustomDish
{
public override string UniqueNameID => "RecipeCremeFilling";
public override DishType Type => DishType.Base;
public override int Difficulty => 1;
public override bool IsUnlockable => false;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.RecipeCremeFilling;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.RecipeCremeFilling;
}
}
+19
View File
@@ -0,0 +1,19 @@
using System.Collections.Generic;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Dishes
{
public class RecipeMayonnaise : CustomDish
{
public override string UniqueNameID => "RecipeMayonnaise";
public override DishType Type => DishType.Base;
public override int Difficulty => 1;
public override bool IsUnlockable => false;
public override List<(Locale, UnlockInfo)> InfoList => CenteralLang.Unlocks.RecipeMayonnaise;
public override Dictionary<Locale, string> Recipe => CenteralLang.Recipes.RecipeMayonnaise;
}
}
@@ -0,0 +1,12 @@
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Generics
{
public abstract class GenericDecorationAppliance : CustomAppliance
{
public override bool IsPurchasable => false;
public override ShoppingTags ShoppingTags => ShoppingTags.Decoration;
public override PriceTier PriceTier => PriceTier.Free;
}
}
+13
View File
@@ -0,0 +1,13 @@
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Generics
{
public abstract class GenericPlatedDish : CustomItemGroup
{
public override Item DisposesTo => GDOReferences.Plate;
public override Item DirtiesTo => GDOReferences.PlateDirty;
public override bool CanContainSide => true;
}
}
+22
View File
@@ -0,0 +1,22 @@
using System.Collections.Generic;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
namespace Easter2025.Customs.Generics
{
public abstract class GenericProvider : CustomAppliance
{
public abstract Item ProvidedItem { get; }
public override List<IApplianceProperty> Properties => new()
{
KitchenPropertiesUtils.GetUnlimitedCItemProvider(ProvidedItem.ID)
};
public override bool SellOnlyAsDuplicate => true;
public override bool IsPurchasable => true;
public override PriceTier PriceTier => PriceTier.Medium;
public override ShoppingTags ShoppingTags => ShoppingTags.Cooking | ShoppingTags.Misc;
}
}
+20
View File
@@ -0,0 +1,20 @@
using System.Collections.Generic;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Generics
{
public abstract class GenericSceneAppliance : CustomAppliance
{
public override List<IApplianceProperty> Properties => new List<IApplianceProperty>
{
new CImmovable(),
new CStatic()
};
public override bool IsNonInteractive => true;
public override bool IsPurchasable => false;
public override bool PreventSale => false;
}
}
+10
View File
@@ -0,0 +1,10 @@
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Generics
{
public abstract class GenericStackableItem : CustomItem
{
public override ItemStorage ItemStorageFlags => ItemStorage.StackableFood;
}
}
@@ -0,0 +1,10 @@
using KitchenData;
using KitchenLib.Customs;
namespace Easter2025.Customs.Generics
{
public abstract class GenericStackableItemGroup : CustomItemGroup
{
public override ItemStorage ItemStorageFlags => ItemStorage.StackableFood;
}
}
+31
View File
@@ -0,0 +1,31 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class BlueDevilledEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "BlueDevilledEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueDevilledEgg").AssignMaterialsByNames();
public override bool IsMergeableSide => true;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.BlueDeYolkedSlicedEgg,
GDOReferences.MixedEggYolk
},
Min = 2,
Max = 2
}
};
}
}
+67
View File
@@ -0,0 +1,67 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class BlueEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "BlueEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueEgg").AssignMaterialsByNames();
public override Item DirtiesTo => GDOReferences.BlueShell;
public override List<ItemGroupView.ColourBlindLabel> Labels => new List<ItemGroupView.ColourBlindLabel>
{
new ItemGroupView.ColourBlindLabel
{
Item = GDOReferences.BlueDye,
Text = "B"
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.BlueSlicedEgg
}
};
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CEggBasket.CanPlaceInBasket(),
new CEgg()
};
public override ItemValue ItemValue => ItemValue.SideMedium;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.BlueDye,
GDOReferences.BoiledEgg
},
Min = 2,
Max = 2
}
};
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Octagon");
TootieEggs tootieEggsView = gameDataObject.Prefab.AddComponent<TootieEggs>();
tootieEggsView.TootieEgg = gameDataObject.Prefab.GetChild("TootieEgg");
tootieEggsView.NormalEgg = gameDataObject.Prefab.GetChild("Egg_1");
gameDataObject.Prefab.GetChild("TootieEgg").SetActive(false);
}
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class BlueRawEasterBread : GenericStackableItemGroup
{
public override string UniqueNameID => "BlueRawEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueRawEasterBread").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.BlueEgg,
GDOReferences.Dough
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.BlueEasterBread
}
};
}
}
+30
View File
@@ -0,0 +1,30 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class CremeEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "CremeEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CremeEgg").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.FilledHalfEgg,
GDOReferences.FilledHalfEgg
},
Min = 2,
Max = 2
}
};
}
}
+38
View File
@@ -0,0 +1,38 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class DevilledEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "DevilledEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("DevilledEgg").AssignMaterialsByNames();
public override bool IsMergeableSide => true;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.DeYolkedSlicedEgg,
GDOReferences.MixedEggYolk
},
Min = 2,
Max = 2
}
};
public override List<Item> SatisfiedBy => new List<Item>
{
GDOReferences.DevilledEgg,
GDOReferences.RedDevilledEgg,
GDOReferences.GreenDevilledEgg,
GDOReferences.BlueDevilledEgg,
};
}
}
+46
View File
@@ -0,0 +1,46 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class FilledEggMould : GenericStackableItemGroup
{
public override string UniqueNameID => "FilledEggMould";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("FilledEggMould").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.EggMould,
GDOReferences.ChocolateMelted
},
Min = 2,
Max = 2
}
};
public override Item.ItemProcess AutomaticItemProcess => new Item.ItemProcess
{
Process = GDOReferences.SteepTea,
Duration = 1,
Result = GDOReferences.PreppedEggMould,
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.SteepTea,
Duration = 1,
Result = GDOReferences.PreppedEggMould,
}
};
}
}
+30
View File
@@ -0,0 +1,30 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class FilledHalfEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "FilledHalfEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("FilledHalfEgg").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.HalfEgg,
GDOReferences.CremeFilling
},
Min = 2,
Max = 2
}
};
}
}
+31
View File
@@ -0,0 +1,31 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class GreenDevilledEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "GreenDevilledEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenDevilledEgg").AssignMaterialsByNames();
public override bool IsMergeableSide => true;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.GreenDeYolkedSlicedEgg,
GDOReferences.MixedEggYolk
},
Min = 2,
Max = 2
}
};
}
}
+67
View File
@@ -0,0 +1,67 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class GreenEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "GreenEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenEgg").AssignMaterialsByNames();
public override Item DirtiesTo => GDOReferences.GreenShell;
public override List<ItemGroupView.ColourBlindLabel> Labels => new List<ItemGroupView.ColourBlindLabel>
{
new ItemGroupView.ColourBlindLabel
{
Item = GDOReferences.GreenDye,
Text = "G"
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.GreenSlicedEgg
}
};
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CEggBasket.CanPlaceInBasket(),
new CEgg()
};
public override ItemValue ItemValue => ItemValue.SideMedium;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.GreenDye,
GDOReferences.BoiledEgg
},
Min = 2,
Max = 2
}
};
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Square");
TootieEggs tootieEggsView = gameDataObject.Prefab.AddComponent<TootieEggs>();
tootieEggsView.TootieEgg = gameDataObject.Prefab.GetChild("TootieEgg");
tootieEggsView.NormalEgg = gameDataObject.Prefab.GetChild("Egg_1");
gameDataObject.Prefab.GetChild("TootieEgg").SetActive(false);
}
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class GreenRawEasterBread : GenericStackableItemGroup
{
public override string UniqueNameID => "GreenRawEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenRawEasterBread").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.GreenEgg,
GDOReferences.Dough
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.GreenEasterBread
}
};
}
}
+57
View File
@@ -0,0 +1,57 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class HotCrossBun : GenericStackableItemGroup
{
public override string UniqueNameID => "HotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("HotCrossBun").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.CutCookedHotCrossBun,
GDOReferences.Butter
},
Min = 2,
Max = 2
}
};
public override ItemValue ItemValue => ItemValue.Small;
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
if (gameDataObject.Prefab.TryGetComponent(out ItemGroupView itemGroupView))
{
itemGroupView.ComponentGroups = new List<ItemGroupView.ComponentGroup>
{
new()
{
Item = GDOReferences.CutCookedHotCrossBun,
Objects = new List<GameObject>
{
gameDataObject.Prefab.GetChild("Hot Cross Bun Split/Top"),
gameDataObject.Prefab.GetChild("Hot Cross Bun Split/Bottom")
},
DrawAll = true
},
new()
{
Item = GDOReferences.Butter,
GameObject = gameDataObject.Prefab.GetChild("Butter")
}
};
}
}
}
}
+30
View File
@@ -0,0 +1,30 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class MixedEggYolk : GenericStackableItemGroup
{
public override string UniqueNameID => "MixedEggYolk";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("MixedEggYolk").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.Mayonnaise,
GDOReferences.EggYolk
},
Min = 2,
Max = 2
}
};
}
}
+73
View File
@@ -0,0 +1,73 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RawCremeFillingPot : GenericStackableItemGroup
{
public override string UniqueNameID => "RawCremeFillingPot";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RawCremeFillingPot").AssignMaterialsByNames();
public override Item DisposesTo => GDOReferences.Pot;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.Pot,
GDOReferences.Milk
},
IsMandatory = true,
Min = 2,
Max = 2
},
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.Butter,
GDOReferences.Sugar,
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 5f,
Result = GDOReferences.CookedCremeFillingPot
}
};
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
if (gameDataObject.Prefab.TryGetComponent(out ItemGroupView itemGroupView))
{
itemGroupView.ComponentGroups = new List<ItemGroupView.ComponentGroup>
{
new()
{
Item = GDOReferences.Butter,
GameObject = gameDataObject.Prefab.GetChild("Butter")
},
new()
{
Item = GDOReferences.Sugar,
GameObject = gameDataObject.Prefab.GetChild("Sugar")
}
};
}
}
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RawEasterBread : GenericStackableItemGroup
{
public override string UniqueNameID => "RawEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RawEasterBread").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.BoiledEgg,
GDOReferences.Dough
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.EasterBread
}
};
}
}
+74
View File
@@ -0,0 +1,74 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RawEggPot : GenericStackableItemGroup
{
public override string UniqueNameID => "RawEggPot";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RawEggPot").AssignMaterialsByNames();
public override Item DisposesTo => GDOReferences.Pot;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.Pot,
GDOReferences.Water
},
IsMandatory = true,
Min = 2,
Max = 2
},
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.Egg,
GDOReferences.Egg,
GDOReferences.Egg,
},
Min = 3,
Max = 3
}
};
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.BoiledEggPot
}
};
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
if (gameDataObject.Prefab.TryGetComponent(out ItemGroupView itemGroupView))
{
itemGroupView.ComponentGroups = new List<ItemGroupView.ComponentGroup>
{
new()
{
Item = GDOReferences.Egg,
Objects = new List<GameObject>
{
gameDataObject.Prefab.GetChild("Egg1"),
gameDataObject.Prefab.GetChild("Egg2"),
gameDataObject.Prefab.GetChild("Egg3"),
}
}
};
}
}
}
}
+31
View File
@@ -0,0 +1,31 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RedDevilledEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "RedDevilledEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RedDevilledEgg").AssignMaterialsByNames();
public override bool IsMergeableSide => true;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.RedDeYolkedSlicedEgg,
GDOReferences.MixedEggYolk
},
Min = 2,
Max = 2
}
};
}
}
+67
View File
@@ -0,0 +1,67 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RedEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "RedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RedEgg").AssignMaterialsByNames();
public override Item DirtiesTo => GDOReferences.RedShell;
public override List<ItemGroupView.ColourBlindLabel> Labels => new List<ItemGroupView.ColourBlindLabel>
{
new ItemGroupView.ColourBlindLabel
{
Item = GDOReferences.RedDye,
Text = "R"
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.RedSlicedEgg
}
};
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CEggBasket.CanPlaceInBasket(),
new CEgg()
};
public override ItemValue ItemValue => ItemValue.SideMedium;
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.RedDye,
GDOReferences.BoiledEgg
},
Min = 2,
Max = 2
}
};
public override void OnRegister(ItemGroup gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Circle");
TootieEggs tootieEggsView = gameDataObject.Prefab.AddComponent<TootieEggs>();
tootieEggsView.TootieEgg = gameDataObject.Prefab.GetChild("TootieEgg");
tootieEggsView.NormalEgg = gameDataObject.Prefab.GetChild("Egg_1");
gameDataObject.Prefab.GetChild("TootieEgg").SetActive(false);
}
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class RedRawEasterBread : GenericStackableItemGroup
{
public override string UniqueNameID => "RedRawEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("RedRawEasterBread").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.RedEgg,
GDOReferences.Dough
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.RedEasterBread
}
};
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.ItemGroups
{
public class UnwrappedCremeEgg : GenericStackableItemGroup
{
public override string UniqueNameID => "UnwrappedCremeEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("UnwrappedCremeEgg").AssignMaterialsByNames();
public override List<ItemGroup.ItemSet> Sets => new()
{
new ItemGroup.ItemSet
{
Items = new List<Item>
{
GDOReferences.CremeEgg,
GDOReferences.Wrapper
},
Min = 2,
Max = 2
}
};
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Knead,
Duration = 1,
Result = GDOReferences.WrappedCremeEgg
}
};
}
}
+12
View File
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BlueDeYolkedSlicedEgg : GenericStackableItem
{
public override string UniqueNameID => "BlueDeYolkedSlicedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueDeYolkedSlicedEgg").AssignMaterialsByNames();
}
}
+24
View File
@@ -0,0 +1,24 @@
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BlueDye : GenericStackableItem
{
public override string UniqueNameID => "BlueDye";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueDye").AssignMaterialsByNames();
public override Appliance DedicatedProvider => GDOReferences.DyeProvider;
public override string ColourBlindTag => "B";
public override void OnRegister(Item gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Octagon");
}
}
}
+14
View File
@@ -0,0 +1,14 @@
using Easter2025.Customs.Generics;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BlueEasterBread : GenericStackableItem
{
public override string UniqueNameID => "BlueEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueEasterBread").AssignMaterialsByNames();
public override ItemValue ItemValue => ItemValue.Small;
}
}
+13
View File
@@ -0,0 +1,13 @@
using Easter2025.Customs.Generics;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BlueShell : GenericStackableItem
{
public override string UniqueNameID => "BlueShell";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueShell").AssignMaterialsByNames();
}
}
+18
View File
@@ -0,0 +1,18 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BlueSlicedEgg : GenericStackableItem
{
public override string UniqueNameID => "BlueSlicedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BlueSlicedEgg").AssignMaterialsByNames();
public override int SplitCount => 1;
public override Item SplitSubItem => GDOReferences.EggYolk;
public override List<Item> SplitDepletedItems => new List<Item> { GDOReferences.BlueDeYolkedSlicedEgg };
}
}
+24
View File
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BoiledEgg : GenericStackableItem
{
public override string UniqueNameID => "BoiledEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BoiledEgg").AssignMaterialsByNames();
public override List<Item.ItemProcess> Processes => new List<Item.ItemProcess>
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.SlicedEgg
}
};
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Collections.Generic;
using System.Reflection;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BoiledEggPot : CustomItem
{
public override string UniqueNameID => "BoiledEggPot";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BoiledEggPot").AssignMaterialsByNames();
public override Item DisposesTo => GDOReferences.Pot;
public override Item SplitSubItem => GDOReferences.BoiledEgg;
public override List<Item> SplitDepletedItems => new List<Item> { GDOReferences.Pot};
public override int SplitCount => 3;
public override void OnRegister(Item gameDataObject)
{
base.OnRegister(gameDataObject);
ObjectsSplittableView objectsSplittableView = gameDataObject.Prefab.AddComponent<ObjectsSplittableView>();
FieldInfo objectsInfo = ReflectionUtils.GetField<ObjectsSplittableView>("Objects");
List<GameObject> objects = new List<GameObject>
{
gameDataObject.Prefab.GetChild("Egg1"),
gameDataObject.Prefab.GetChild("Egg2"),
gameDataObject.Prefab.GetChild("Egg3")
};
objectsInfo.SetValue(objectsSplittableView, objects);
}
}
}
+25
View File
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class BurnedHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "BurnedHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("BurnedHotCrossBun").AssignMaterialsByNames();
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.CutBurnedHotCrossBun
}
};
}
}
+24
View File
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Reflection;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CookedCremeFillingPot : CustomItem
{
public override string UniqueNameID => "CookedCremeFillingPot";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CookedCremeFillingPot").AssignMaterialsByNames();
public override Item DisposesTo => GDOReferences.Pot;
public override Item SplitSubItem => GDOReferences.CremeFilling;
public override bool PreventExplicitSplit => true;
public override bool AllowSplitMerging => true;
public override List<Item> SplitDepletedItems => new List<Item> { GDOReferences.Pot};
public override int SplitCount => 10;
}
}
+47
View File
@@ -0,0 +1,47 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.References;
using KitchenLib.Utils;
using Unity.Collections;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CookedHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "CookedHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CookedHotCrossBun").AssignMaterialsByNames();
public override Appliance DedicatedProvider => GDOReferences.HotCrossBunsProvider;
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CHiddenBurnProcess
{
Result = new FixedListInt64
{
GDOReferences.FlamingHotCrossBun.ID
},
BurnableSurfaces = new FixedListInt64
{
ApplianceReferences.Hob,
ApplianceReferences.HobDanger,
ApplianceReferences.HobSafe,
ApplianceReferences.HobStarting,
},
BurnTimeInSeconds = 15
}
};
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.CutCookedHotCrossBun
}
};
}
}
+15
View File
@@ -0,0 +1,15 @@
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CremeFilling : GenericStackableItem
{
public override string UniqueNameID => "CremeFilling";
}
}
+12
View File
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CutBurnedHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "CutBurnedHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CutBurnedHotCrossBun").AssignMaterialsByNames();
}
}
+37
View File
@@ -0,0 +1,37 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.References;
using KitchenLib.Utils;
using Unity.Collections;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CutCookedHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "CutCookedHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CutCookedHotCrossBun").AssignMaterialsByNames();
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CHiddenBurnProcess
{
Result = new FixedListInt64
{
GDOReferences.CutFlamingHotCrossBun.ID
},
BurnableSurfaces = new FixedListInt64
{
ApplianceReferences.Hob,
ApplianceReferences.HobDanger,
ApplianceReferences.HobSafe,
ApplianceReferences.HobStarting,
},
BurnTimeInSeconds = 15
}
};
}
}
+40
View File
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views.Local;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
using UnityEngine.VFX;
namespace Easter2025.Customs.Items
{
public class CutFlamingHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "CutFlamingHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CutFlamingHotCrossBun").AssignMaterialsByNames().AssignVFXByNames();
// public override bool IsIndisposable => true;
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CCanTriggerOrbs()
};
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Clean,
Duration = 1,
Result = GDOReferences.CutBurnedHotCrossBun
}
};
public override void OnRegister(Item gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<FlamingView>().Fire = gameDataObject.Prefab.GetComponentInChildren<VisualEffect>();
}
}
}
+25
View File
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class CutRawHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "CutRawHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("CutRawHotCrossBun").AssignMaterialsByNames();
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Cook,
Duration = 1,
Result = GDOReferences.CutCookedHotCrossBun
}
};
}
}
+12
View File
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class DeYolkedSlicedEgg : GenericStackableItem
{
public override string UniqueNameID => "DeYolkedSlicedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("DeYolkedSlicedEgg").AssignMaterialsByNames();
}
}
+25
View File
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class EasterBread : GenericStackableItem
{
public override string UniqueNameID => "EasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EasterBread").AssignMaterialsByNames();
public override ItemValue ItemValue => ItemValue.Small;
public override string ColourBlindTag => "E";
public override List<Item> SatisfiedBy => new List<Item>
{
GDOReferences.EasterBread,
GDOReferences.RedEasterBread,
GDOReferences.GreenEasterBread,
GDOReferences.BlueEasterBread,
};
}
}
+45
View File
@@ -0,0 +1,45 @@
using System.Collections.Generic;
using Easter2025.Components;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class EggBasket : CustomItem
{
public override string UniqueNameID => "EggBasket";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggBasket").AssignMaterialsByNames();
public override bool IsIndisposable => true;
public override int MaxOrderSharers => 3;
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CToolStorage
{
Capacity = 3
},
new CEquippableTool
{
CanHoldItems = false
},
new CEggBasket()
};
public override void OnRegister(Item item)
{
List<GameObject> storage = new List<GameObject>
{
GameObjectUtils.GetChildObject(item.Prefab, "HoldPoint1"),
GameObjectUtils.GetChildObject(item.Prefab, "HoldPoint2"),
GameObjectUtils.GetChildObject(item.Prefab, "HoldPoint3")
};
ItemVariableStorageView obj = item.Prefab.AddComponent<ItemVariableStorageView>();
obj.Storage = storage;
}
}
}
+16
View File
@@ -0,0 +1,16 @@
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class EggMould : GenericStackableItem
{
public override string UniqueNameID => "EggMould";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggMould").AssignMaterialsByNames();
public override bool IsIndisposable => true;
public override Appliance DedicatedProvider => GDOReferences.EggMouldProvider;
}
}
+12
View File
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class EggYolk : GenericStackableItem
{
public override string UniqueNameID => "EggYolk";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("EggYolk").AssignMaterialsByNames();
}
}
+46
View File
@@ -0,0 +1,46 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Easter2025.Views.Local;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
using UnityEngine.VFX;
namespace Easter2025.Customs.Items
{
public class FlamingHotCrossBun : GenericStackableItem
{
public override string UniqueNameID => "FlamingHotCrossBun";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("FlamingHotCrossBun").AssignMaterialsByNames().AssignVFXByNames();
// public override bool IsIndisposable => true;
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CCanTriggerOrbs()
};
public override List<Item.ItemProcess> Processes => new()
{
new Item.ItemProcess
{
Process = GDOReferences.Chop,
Duration = 1,
Result = GDOReferences.CutFlamingHotCrossBun
},
new Item.ItemProcess
{
Process = GDOReferences.Clean,
Duration = 1,
Result = GDOReferences.BurnedHotCrossBun
}
};
public override void OnRegister(Item gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<FlamingView>().Fire = gameDataObject.Prefab.GetComponentInChildren<VisualEffect>();
}
}
}
+12
View File
@@ -0,0 +1,12 @@
using Easter2025.Customs.Generics;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class GreenDeYolkedSlicedEgg : GenericStackableItem
{
public override string UniqueNameID => "GreenDeYolkedSlicedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenDeYolkedSlicedEgg").AssignMaterialsByNames();
}
}
+24
View File
@@ -0,0 +1,24 @@
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using Kitchen;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class GreenDye : GenericStackableItem
{
public override string UniqueNameID => "GreenDye";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenDye").AssignMaterialsByNames();
public override Appliance DedicatedProvider => GDOReferences.DyeProvider;
public override string ColourBlindTag => "G";
public override void OnRegister(Item gameDataObject)
{
base.OnRegister(gameDataObject);
gameDataObject.Prefab.AddComponent<ColourBlindMode>().Element = gameDataObject.Prefab.GetChild("Square");
}
}
}
+14
View File
@@ -0,0 +1,14 @@
using Easter2025.Customs.Generics;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class GreenEasterBread : GenericStackableItem
{
public override string UniqueNameID => "GreenEasterBread";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenEasterBread").AssignMaterialsByNames();
public override ItemValue ItemValue => ItemValue.Small;
}
}
+13
View File
@@ -0,0 +1,13 @@
using Easter2025.Customs.Generics;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class GreenShell : GenericStackableItem
{
public override string UniqueNameID => "GreenShell";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenShell").AssignMaterialsByNames();
}
}
+18
View File
@@ -0,0 +1,18 @@
using System.Collections.Generic;
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class GreenSlicedEgg : GenericStackableItem
{
public override string UniqueNameID => "GreenSlicedEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("GreenSlicedEgg").AssignMaterialsByNames();
public override int SplitCount => 1;
public override Item SplitSubItem => GDOReferences.EggYolk;
public override List<Item> SplitDepletedItems => new List<Item> { GDOReferences.GreenDeYolkedSlicedEgg };
}
}
+15
View File
@@ -0,0 +1,15 @@
using Easter2025.Customs.Generics;
using Easter2025.Utilies;
using KitchenData;
using KitchenLib.Customs;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class HalfEgg : GenericStackableItem
{
public override string UniqueNameID => "HalfEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("HalfEgg").AssignMaterialsByNames();
}
}
+22
View File
@@ -0,0 +1,22 @@
using System.Collections.Generic;
using Easter2025.Components;
using Easter2025.Customs.Generics;
using KitchenData;
using KitchenLib.Utils;
using UnityEngine;
namespace Easter2025.Customs.Items
{
public class OrangePlasticEgg : GenericStackableItem
{
public override string UniqueNameID => "OrangePlasticEgg";
public override GameObject Prefab => Mod.Bundle.LoadAsset<GameObject>("OrangePlasticEgg").AssignMaterialsByNames();
public override string ColourBlindTag => "O";
public override ItemValue ItemValue => ItemValue.SideSmall;
public override List<IItemProperty> Properties => new List<IItemProperty>
{
new CHidableItem(),
new CEggBasket.CanPlaceInBasket()
};
}
}

Some files were not shown because too many files have changed in this diff Show More