module Base
{
	/* All four lubed-produce items below are ItemType = base:weapon. B42 parses
	   ONLY "ItemType"; the B41 "Type" key they used to carry is not read at all
	   (Item.java's DoParam has no "Type" branch), so Item.itemType stayed null.
	   Two things broke off that: Item.InstanceItem walks an if/else-if chain on
	   itemType with no fallthrough, so `item` was still null when the tail of
	   the method dereferenced it -- the item could never be instantiated; and
	   the debug Items List panel died on v:getItemType():toString()
	   (ISItemsListTable.lua:244) the moment it reached one of ours.
	   Categories stays the bare "SmallBlunt": ResourceLocation.of() lowercases
	   and defaults the namespace, so it resolves to base:smallblunt already. */
	item Zucchini_st
	{
		DisplayCategory = SexToys,
        MaxRange	=	0.5,
        WeaponSprite	=	CylinderFood_Green,
        MinAngle	=	0.65,
        ItemType	=	base:weapon,
        MinimumSwingTime	=	3,
        KnockBackOnNoDeath	=	TRUE,
        SwingAmountBeforeImpact	=	0.02,
        Categories	=	SmallBlunt,
        ConditionLowerChanceOneIn	=	1,
        Weight	=	0.4,
        SplatNumber	=	1,
        PushBackMod	=	0.5,
        SubCategory	=	Swinging,
        ConditionMax	=	5,
        MaxHitCount	=	1,
        DoorDamage	=	0,
        CanBarricade	=	False,
        SwingAnim	=	Bat,
        DisplayName	=	Zucchini (Lubed),
        MinRange	=	0.61,
        SwingTime	=	3,
        KnockdownMod	=	0,
        SplatBloodOnNoDeath	=	TRUE,
        Icon	=	Zucchini,
        RunAnim	=	Run_Weapon2,
        IdleAnim	=	Idle_Weapon2,
        BreakSound  =   StoneHammerBreak,
        DoorHitSound = StoneHammerHit,
		HitSound = StoneHammerHit,
		HitFloorSound = StoneHammerHit,
		SwingSound = StoneHammerSwing,
        TreeDamage  =   0,
        CriticalChance	=	0,
        CritDmgMultiplier = 0,
        MinDamage	=	0.1,
        MaxDamage	=	0.2,
        BaseSpeed = 1,
    	WeaponLength = 0.28,
    	AttachmentType = Hammer,
		WorldStaticModel = Zucchini_Ground,
	}
	
	item Eggplant_st
	{
		DisplayCategory = SexToys,
        MaxRange	=	0.5,
        WeaponSprite	=	CylinderFood_Purple,
        MinAngle	=	0.65,
        ItemType	=	base:weapon,
        MinimumSwingTime	=	3,
        KnockBackOnNoDeath	=	TRUE,
        SwingAmountBeforeImpact	=	0.02,
        Categories	=	SmallBlunt,
        ConditionLowerChanceOneIn	=	2,
        Weight	=	0.3,
        SplatNumber	=	1,
        PushBackMod	=	0.5,
        SubCategory	=	Swinging,
        ConditionMax	=	5,
        MaxHitCount	=	1,
        DoorDamage	=	0,
        CanBarricade	=	False,
        SwingAnim	=	Bat,
        DisplayName	=	Eggplant (Lubed),
        MinRange	=	0.31,
        SwingTime	=	3,
        KnockdownMod	=	0,
        SplatBloodOnNoDeath	=	TRUE,
        Icon	=	Eggplant,
        RunAnim	=	Run_Weapon2,
        IdleAnim	=	Idle_Weapon2,
        BreakSound  =   StoneHammerBreak,
        DoorHitSound = StoneHammerHit,
		HitSound = StoneHammerHit,
		HitFloorSound = StoneHammerHit,
		SwingSound = StoneHammerSwing,
        TreeDamage  =   0,
        CriticalChance	=	0,
        CritDmgMultiplier = 0,
        MinDamage	=	0.3,
        MaxDamage	=	0.4,
        BaseSpeed = 1,
    	WeaponLength = 0.17,
    	AttachmentType = Hammer,
		WorldStaticModel = EggPlant_Ground,
	}
	
	item Corn_st
	{
		DisplayCategory = SexToys,
        MaxRange	=	0.5,
        WeaponSprite	=	CylinderFood_Yellow,
        MinAngle	=	0.65,
        ItemType	=	base:weapon,
        MinimumSwingTime	=	2,
        KnockBackOnNoDeath	=	FALSE,
        SwingAmountBeforeImpact	=	0.02,
        Categories	=	SmallBlunt,
        ConditionLowerChanceOneIn	=	5,
        Weight	=	0.3,
        SplatNumber	=	1,
        PushBackMod	=	0.5,
        SubCategory	=	Stab,
        ConditionMax	=	5,
        MaxHitCount	=	1,
        DoorDamage	=	0,
        CanBarricade	=	False,
        SwingAnim	=	Stab,
        DisplayName	=	Corn (Lubed),
        MinRange	=	0.61,
        SwingTime	=	2,
        KnockdownMod	=	0,
        SplatBloodOnNoDeath	=	TRUE,
        Icon	=	Corn,
        RunAnim	=	Run_Weapon2,
        IdleAnim	=	Idle_Weapon2,
        BreakSound  =   StoneHammerBreak,
        DoorHitSound = HuntingKnifeHit,
		HitSound = HuntingKnifeHit,
		HitFloorSound = HuntingKnifeHit,
		SwingSound = HuntingKnifeSwing,
        TreeDamage  =   0,
        CriticalChance	=	0,
        CritDmgMultiplier = 0,
        MinDamage	=	0.1,
        MaxDamage	=	0.2,
        BaseSpeed = 1,
    	WeaponLength = 0.10,
    	AttachmentType = Hammer,
		WorldStaticModel = Corn_Ground,
	}
	
	item Banana_st
	{
		DisplayCategory = SexToys,
        MaxRange	=	0.5,
        WeaponSprite	=	CylinderFood_Yellow,
        MinAngle	=	0.65,
        ItemType	=	base:weapon,
        MinimumSwingTime	=	3,
        KnockBackOnNoDeath	=	TRUE,
        SwingAmountBeforeImpact	=	0.02,
        Categories	=	SmallBlunt,
        ConditionLowerChanceOneIn	=	2,
        Weight	=	0.3,
        SplatNumber	=	1,
        PushBackMod	=	0.5,
        SubCategory	=	Swinging,
        ConditionMax	=	5,
        MaxHitCount	=	1,
        DoorDamage	=	0,
        CanBarricade	=	False,
        SwingAnim	=	Bat,
        DisplayName	=	Banana (Lubed),
        MinRange	=	0.31,
        SwingTime	=	3,
        KnockdownMod	=	0,
        SplatBloodOnNoDeath	=	TRUE,
        Icon	=	Banana,
        RunAnim	=	Run_Weapon2,
        IdleAnim	=	Idle_Weapon2,
        BreakSound  =   StoneHammerBreak,
        DoorHitSound = StoneHammerHit,
		HitSound = StoneHammerHit,
		HitFloorSound = StoneHammerHit,
		SwingSound = StoneHammerSwing,
        TreeDamage  =   0,
        CriticalChance	=	0,
        CritDmgMultiplier = 0,
        MinDamage	=	0.1,
        MaxDamage	=	0.2,
        BaseSpeed = 1,
    	WeaponLength = 0.17,
    	AttachmentType = Hammer,
		WorldStaticModel = Banana_Ground,
	}
}

module Base
{
	/* B42 crafting overhaul replaced the legacy `recipe` block with `craftRecipe`.
	   The old B41-format `recipe Lube <veg>` blocks were invalid in B42 and corrupted
	   the script-load, which locked up the in-game Items List (debug item browser).
	   Converted to B42 craftRecipe 2026-06-06. Props use the real input-item models
	   (flags[Prop1/Prop2]); the legacy Sound:EatingMushy has no direct craftRecipe
	   field, so the `Making` timedAction supplies the action feedback. */

	craftRecipe Lube_Zucchini
	{
		time = 60,
		NeedToBeLearn = false,
		timedAction = Making,
		category = SexToys,
		inputs
		{
			item 1 [Base.Zucchini] mode:destroy flags[Prop1],
			item 1 [Base.OilOlive;Base.OilVegetable] mode:keep flags[Prop2],
		}
		outputs
		{
			item 1 Base.Zucchini_st,
		}
	}

	craftRecipe Lube_Eggplant
	{
		time = 60,
		NeedToBeLearn = false,
		timedAction = Making,
		category = SexToys,
		inputs
		{
			item 1 [Base.Eggplant] mode:destroy flags[Prop1],
			item 1 [Base.OilOlive;Base.OilVegetable] mode:keep flags[Prop2],
		}
		outputs
		{
			item 1 Base.Eggplant_st,
		}
	}

	craftRecipe Lube_Corn
	{
		time = 60,
		NeedToBeLearn = false,
		timedAction = Making,
		category = SexToys,
		inputs
		{
			item 1 [Base.Corn] mode:destroy flags[Prop1],
			item 1 [Base.OilOlive;Base.OilVegetable] mode:keep flags[Prop2],
		}
		outputs
		{
			item 1 Base.Corn_st,
		}
	}

	craftRecipe Lube_Banana
	{
		time = 60,
		NeedToBeLearn = false,
		timedAction = Making,
		category = SexToys,
		inputs
		{
			item 1 [Base.Banana] mode:destroy flags[Prop1],
			item 1 [Base.OilOlive;Base.OilVegetable] mode:keep flags[Prop2],
		}
		outputs
		{
			item 1 Base.Banana_st,
		}
	}
}