On this page
  1. Related
  2. Games
  3. References
  4. Sources

Unit growth moves a unit up a short ladder of stages. In Pikmin a buried sprout steps from leaf to bud to flower on timers and wilts back to a leaf if left as a flower1, and a leaf or bud Pikmin that drinks nectar becomes a flower at once2.

  • Timed stagesPikmin (2001), sprouts. A buried sprout steps from leaf to bud to flower on timers, and a flower left in the ground wilts back to a leaf.1
  • FedPikmin (2001), Pikmin. A leaf or bud Pikmin that drinks nectar becomes a flower at once.2

Games

GameYearHowNote
Pikmin2001Timed stagessprouts · a buried sprout steps from leaf to bud to flower on timers, and a flower left in the ground wilts back to a leaf
Pikmin2001FedPikmin · a leaf or bud Pikmin that drinks nectar becomes a flower at once
Every claim about this mechanic, by game (2)

References

  1. ^ abA buried sprout (PikiHeadItem) waits mGrowUpTime (p51, "growupTime(秒)") plus 0 to 2 seconds at random, then plays its growth animation and moves one stage, leaf to bud or bud to flower ((mFlowerStage + 1) % 3). A flower waits mWiltTime (p52, "kareTime(秒)") plus 0 to 2 seconds, then wilts: it becomes a leaf, and after mRebirthSeedTime (p53) plus 0 to 2 seconds it goes back to the buried state. The three times are read from parms/pikiMgr.bin; their code defaults are 4, 4, and 1 seconds. A plucked Pikmin keeps its sprout's stage.CodeprojectPiki/pikmin
    How we know
    305void PikiHeadAI::WaitInit::act(AICreature* item)
    ⋮
    309	if (obj->mFlowerStage == Flower) {
    310		item->mSAICtx.mCurrentItemHealth = pikiMgr->mPikiParms->mPikiParms.mWiltTime() + gsys->getRand(1.0f) * 2.0f;
    311	} else {
    312		item->mSAICtx.mCurrentItemHealth = pikiMgr->mPikiParms->mPikiParms.mGrowUpTime() + gsys->getRand(1.0f) * 2.0f;
    
    src/plugPikiKando/itemAI.cpp lines 305–313 at 9a21636 · upstream ↗
    326	f32& health = item->mSAICtx.mCurrentItemHealth;
    327	health -= gsys->getFrameTime();
    328	if (health < 0.0f) {
    329		if (obj->mFlowerStage == Flower) {
    330			item->mSAICtx.mStateMachine->transit(item, PIKIHEAD_Unk10);
    331		} else {
    332			item->mSAICtx.mStateMachine->transit(item, PIKIHEAD_Unk7);
    
    src/plugPikiKando/itemAI.cpp lines 326–332 at 9a21636 · upstream ↗
    163	addState(PIKIHEAD_Unk7, PikiHeadMotion::UgGrow);
    164	addState(PIKIHEAD_Growuped, PANI_NO_MOTION, new GrowupedExec);
    ⋮
    166	addState(PIKIHEAD_Unk10, PikiHeadMotion::Sioreru);
    167	addState(PIKIHEAD_Kareta, PANI_NO_MOTION, new KaretaInit, new KaretaExec);
    ⋮
    173	addArrow(PIKIHEAD_Unk7, saiMotionAction0Event, PIKIHEAD_Growuped);
    174	addArrow(PIKIHEAD_Growuped, saiMotionDoneEvent, PIKIHEAD_Wait);
    175	addArrow(PIKIHEAD_Unk10, saiMotionDoneEvent, PIKIHEAD_Kareta);
    
    src/plugPikiKando/itemAI.cpp lines 163–175 at 9a21636 · upstream ↗
    349	obj->mFlowerStage = (obj->mFlowerStage + 1) % 3;
    
    src/plugPikiKando/itemAI.cpp line 349 at 9a21636 · upstream ↗
    381	item->mSAICtx.mCurrentItemHealth = pikiMgr->mPikiParms->mPikiParms.mRebirthSeedTime() + 2.0f * gsys->getRand(1.0f);
    382	obj->mFlowerStage                = Leaf;
    ⋮
    393		item->mSAICtx.mStateMachine->transit(item, PIKIHEAD_Bury);
    
    src/plugPikiKando/itemAI.cpp lines 381–393 at 9a21636 · upstream ↗
    101		    , mGrowUpTime(this, 4.0f, 0.0f, 300.0f, "p51", "growupTime(秒)")
    102		    , mWiltTime(this, 4.0f, 0.0f, 300.0f, "p52", "kareTime(秒)")
    103		    , mRebirthSeedTime(this, 1.0f, 0.0f, 300.0f, "p53", "rebirthTime(秒)")
    
    include/PikiMgr.h lines 101–103 at 9a21636 · upstream ↗
    66enum PikiHappa {
    67	Leaf   = 0,
    68	Bud    = 1,
    69	Flower = 2,
    
    include/GlobalGameOptions.h lines 66–69 at 9a21636 · upstream ↗
    2581			piki->setFlower(navi->mSproutToPluck->mFlowerStage);
    
    src/plugPikiKando/naviState.cpp line 2581 at 9a21636 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  2. ^ abA Pikmin that isn't yet a flower drinks when it touches a nectar puddle in its normal state, unless it is damaged, carrying (transport mode), or mushroom-headed; the puddle is an OBJTYPE_Water object, which a decompilation comment calls nectar. If it drank, its growth animation makes it a flower (setFlower(Flower)) at once, from leaf or bud.CodeprojectPiki/pikmin
    How we know
    407	if (!piki->isKinoko()) {
    ⋮
    411		if (!piki->isDamaged() && piki->mMode != PikiMode::TransportMode) {
    ⋮
    414			case OBJTYPE_Water:
    ⋮
    416				// Nectar puddles are modeled as water; non-flower Pikmin can drink to grow.
    417				if (piki->mHappa != Flower) {
    418					piki->changeMode(PikiMode::FreeMode, piki->mNavi);
    419					piki->mCurrNectar = collider;
    420					transit(piki, PIKISTATE_Absorb);
    
    src/plugPikiKando/pikiState.cpp lines 407–420 at 9a21636 · upstream ↗
    516		if (mHasAbsorbedNectar) {
    517			transit(piki, PIKISTATE_GrowUp);
    
    src/plugPikiKando/pikiState.cpp lines 516–517 at 9a21636 · upstream ↗
    2402	case KEY_Action0:
    ⋮
    2404		piki->mFloweringTimer++;
    2405		seSystem->playPikiSound(SEF_PIKI_GROW4, piki->mSRT.t);
    2406		piki->setFlower(Flower);
    
    src/plugPikiKando/pikiState.cpp lines 2402–2406 at 9a21636 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code