/*
    kamome.txt                                             
    Metal Gear Solid 2 - SONS OF LIBERTY-                
    ͥ                                   
    2001/10/24 Masafumi Okuta                            
    $Id: kamome.txt,v 1.1.1.3 2002/11/19 11:48:12 Yoshizawa1 Exp $                                                 
*/

ᥭѤΥɷ

ϴԤʤ_KAMOME_MNG¤ΤñΤΥǡȤʤ_KAMOME¤Τ¸ߤ
_KAMOMEϥޥ͡ΥꥹȤɲäư

⡼
Ͽ¿Τǥ⡼η׻ʤ٤˥˥⡼ǡŸƤ򻲾ȤäƤ롣
okuta/conv/memmot.c, okuta/conv/memmot.h Υ⡼󥷥ƥ

å
åϥޥ͡Ф졢Ǽ륫ꤷѤΥåХåե
ǡꤹ롣ƥϼʬʳǤΥåХåեƤ׹ͤؤꤹ
ƥϥå1ե졼1Ĥ뤳ȤǤʤ
ͥι⤤å()ʳϸ夫񤭤ޤ

㡧ꤵ줿ꥢΤ򣵱Φ
            
ޥ͡ˤƥåʻꥨꥢϡɤ
            
ޥ͡㤬Υå
            
åХåե˥ǡ
            
Φ륫ʥåμˤ
(٤ƤΥ椫ΥꥢΣʬӽФ)
            
ġΥ᤬äǡΦؤΥ롼ؤ򤹤


ϸġԥꥢ(Хܥå)ˣ̲ݥȤꤷ
ΥݥȤ˲ʤּͳԾ֤Ūΰ֤˰ư֤


ήϰʲ̤

ޥ͡
        
ޥ͡
        
Ŀʬ
        
ޥ͡ư 
                                       
(վ󹹿Ԥʤ)       
                                       
å                     
                                       
׹                               
                                       
ư                               
                                        
                             
                                       
                           
                                       
ʤ᤬⤵겼ˤää 
                                       
Ǥ 
        
ޥ͡˴

kamome.h
    Ϣإå

kmmng.c 
    ޥ͡

        KMM_InsertKamome( KAMOME_MNG* kmmng,    // ޥ͡
                          KAMOME*     pKamome); // ꥹȤ˲ä뤫
            ꥹȤ˥ɲ
        KMM_RemoveKamome( KAMOME_MNG* kmmng,    // ޥ͡
                          KAMOME*     pKamome); // ꥹȤ鳰
            ꥹȤ饫򳰤
        KMMNG_CheckKamomeIn( FVECTOR* pvecCenter,  // 濴
                             int      nRadius);    // Ⱦ
            ᤬ˤ뤫å

        KMMNG_CheckLandKamomeInBox( FVECTOR* pvecCenter, // 濴
                                    float    fBoxX,      // åX
                                    float    fBoxY,      // åY
                                    float    fBoxZ);     // åZ
            ᤬ꥨꥢˤ뤫å

        KMM_SetAllLandOperationKMM_SetConcomitantEndOpperation( KAMOME_MNG* kmmng, 
                                                                  GV_MSG* msg, 
                                                                  int code,
                                                                  int nMess);
            ޥ͡㰸Υå
            Ŭ륫ȥǡХåե˥ס뤹
        
        KMMNG_RecieveMessage( KAMOME_MNG* kmmng);
            å

        KMMNG_ActControl( KAMOME_MNG* kmmng);
            ޥ͡Υȥ륷ƥι

        KMMNG_ActDanna( KAMOME_MNG* kmmng);
            ʵ

        KMMNG_ActTarget( KAMOME_MNG* kmmng);
            åȹ

        KMMNG_ActSound( KAMOME_MNG* kmmng);
            

        KMM_ExecKamome( KAMOME_MNG* kmmng);
            ưؿ

        KMMNG_Act( KAMOME_MNG* kmmng);
            ޥ͡ưؿ

        KMMNG_Die( KAMOME_MNG* kmmng);
            ޥ͡˴ؿ

        KMM_GetGCLData( KAMOME_MNG* kmmng );
            GCLΥǡ

        KMMNG_GetResources( KAMOME_MNG* kmmng, int name, int where );
            ؿ

        NewKamomeManager( int name, int where );
            ޥ͡

        NewCmdKamomeInvisible( void );
            ʥꥪcommandؿɽ

        NewCmdDeadKamomeInvisible( void );
            ʥꥪcommandؿɽ

        NewCmdKamomeVisible( void );
            ʥꥪcommandؿɽ

        GetConcKamomeNum( void );
            տ路Ƥ륫ο

kamome.def 
    Ϣؿ
        
kmtest.c 
    

        KMM_SetLodMode( KAMOME* kamome, int mode);
            LODå

        KMM_ActControl( KAMOME* kamome );
            

        KMM_ActSystem( KAMOME* kamome );
            ƥ

        KMM_Routine( KAMOME* kamome );
            ׹͡ưȤ

        Act( KAMOME* kamome );
            ưؿ

        Die( KAMOME* kamome );
            ˴ؿ

        KMM_InitObject( KAMOME* kamome, int modelname ); 
            ǥ

        KMM_InitMotion( KAMOME* kamome, int motname);
            ⡼ 

        KMM_InitPose( KAMOME*  kamome,     // 
                      FVECTOR* pvecPos,    // 
                      int      nDirY,      // 
                      int      nInitMar,   // ѥ⡼
                      int      nInitMot);  // ⡼ֹ
            

        KMM_InitTarget( KAMOME* kamome);
            åȽ

        KMM_InitHeadMark( KAMOME* kamome );
            إåɥޡ

        KMM_CallHeadMark( KAMOME* kamome, int mode );
            إåɥޡƽ

        KMM_EraseHeadMark( KAMOME* kamome );
            إåɥޡõ

        InitWork( KAMOME*  kamome;
                  int      name;
                  int      where;
                  FVECTOR* pvec;
                  int      nYRot;
                  int      nInitMot;
                  int      nInitThink;
                  int      nNumber);
            ν

        GetResource2 ̤

        GetResource( KAMOME* kamome,
                     int     name,
                     int     where);
            ؿ

        NewKamomeTest( int name, int where );
            

        NewKamomeTestProg ̤
kmmess.c 
    å

        KMM_MessageLandLineKMM_MessageConcomitantEnd( KAMOME* kamome, 
                                                        int*    nMsg);
            åȿǤ٤ؿ 

        KMM_SettingMessage( KAMOME* kamome, int code, int* pmsg);
            åμؿƤʬ

        KMM_RecieveMessage( KAMOME* kamome);
            ̤
            ̤

        KMM_PickAttackMessage( KAMOME* kamome);
            եåȥޥ狼ᵺΤĤĤѤΥå

kmsend.c 
    ᤫå

        KMMNG_SendMessageNumAttackPlayer( KAMOME_MNG* kmmng );
            ץ쥤䡼åʬ
        
kmact.c 
    ưؿ
       
        Get_EvadeWallDir( KAMOME* kamome);
            

        KMM_SetNeedl( KAMOME* kamome, FVECTOR *pos, int model );
            ǥĤ
        
        KMM_ClearNeedl( OBJECT *body );
            ǥ򳰤
        
        KMM_TargetCallback( TARGET* off, TARGET* def, void* pvKamome);
            ᡼Хåؿ
        
        KMM_Incline( KAMOME* kamome );
            Τη׻

        KMM_GetMotCtrl( KAMOME* kamome);
            ⡼󥳥ȥ;

        KMM_GetMotPlayRate( KAMOME* kamome); 
            ⡼

        KMM_CheckObject_IsEnd( MEMMOT_CTRL* mmt_ctrl, int nLayer);
            ⡼äɤ

        KMM_SetActMotionEx( KAMOME* kamome, int n_layer, int mot, int start, u_long mask, int interp, float speed );
            ⡼ؤ
        
        KMM_SetActMotion( KAMOME* kamome, int n_layer, int mot );
            ⡼ؤ
        
        KMM_ActStandStillKMM_ActDead( KAMOME* kamome, int time);
            ưؿ

        KamomeCheckPad( KAMOME* kamome );
            ưؿ

        KMM_InitAction( KAMOME* kamome, int nInitThink );
            ư

        KMM_CheckDamage( KAMOME* kamome );
            ᡼Ƚ

        KMM_CheckDownDamage( KAMOME* kamome );
            Υ᡼Ƚ

        Action( KAMOME* kamome );
            ưؿ

kmmove.c 
    ư

        KMM_UpdateHermiteWork( KAMOME* kamome );
            ߡְư

        KMM_InitMoveWork( KAMOME* kamome );
            ư

        UpdateHoverWork( KAMOME* kamome);
            ư

        KMM_LandMove( KAMOME* kamome);
            ˸

        KMM_LandingMove( KAMOME* kamome );
            ϰư

        KMM_FlipflopMove( KAMOME* kamome );
            ФĤư

        KMM_AttackMove( KAMOME* kamome );
            ư

        KMM_Attack( KAMOME* kamome );
            

        KMM_ConcomitantMove( KAMOME* kamome );
            տ

        KMM_CameraZMove( KAMOME* kamome );
            ̤ѡ˰ư

        KMM_BoxRide( KAMOME* kamome );
            ̤ѡܡ˾

        KMM_AddFallAtcList( KAMOME_MNG* kmmng, KAMOME* kamome);
            ΥꥹȤɲ

        KMM_FallMove( KAMOME* kamome );
            ư

        KMM_GetTargetNearZonePos( KAMOME* kamome, FVECTOR* pvecPos, int addr, FVECTOR* pvecAim, int* pnAddr );
            ɸФƥפǰưܥꥢޤǡ

        KMM_CheckNearZone( int nCharaAddr, int nAimAddr );
            ܥå

        KMM_MakeFlyingArea( KAMOME* kamome, FVECTOR* pvecMin, FVECTOR* pvecMax);
            ԥꥢ

        KMM_EulerMove( KAMOME* kamome );
            顼ѤȤäưư

        KMM_EulerLand( KAMOME* kamome );
            顼ѤȤä

        KMM_ChkDownFloorCheck( KAMOME* kamome);
            ξå

kmthink.c 
    λ׹ʹؿ

        DamageCheck( KAMOME* kamome );
            ᡼⡼ɤλ׹

        Think3_Rest( KAMOME* kamome );
            ٤

        Think3_RestGround( KAMOME* kamome );
            ̤Ǳ٤

        Think3_Flying( KAMOME* kamome );
            ͳ

        Think3_Hovering( KAMOME* kamome );
            

        Think3_LandingMove( KAMOME* kamome );
            ذư

        Think3_Landing( KAMOME* kamome );
            

        Think3_FlipMove( KAMOME* kamome );
            ФĤư

        Think3_Flipflop( KAMOME* kamome );
            ФĤ

        Think3_Backward( KAMOME* kamome );
            

        Think3_AttackMove( KAMOME* kamome );
            ư

        Think3_Attack( KAMOME* kamome );
            

        Think3_Takeoff(KAMOME* kamome );
            Ω

        Think3_Evade(KAMOME* kamome );
            

        Think3_ConcMove( KAMOME* kamome );
            տ魯ޤǤΰư

        Think3_Concomitant( KAMOME* kamome );
            տ路ưư

        Think3_CamZHover( KAMOME* kamome );
            ̤ѡظ

        Think3_CBoxRide( KAMOME* kamome );
            ܡ

        Think3_EludeMove( KAMOME* kamome );
            ̤ѡ롼˸ư
            
        Think3_Eluding( KAMOME* kamome );
            ̤ѡ롼˸

        Think3_CtrlMove( KAMOME* kamome );
            ȥ

        Think3_DamageWait( KAMOME* kamome);
            ᡼

        Think3_Backoff( KAMOME* kamome);
            

        Think3_DamageFall( KAMOME* kamome);
            ᡼

        Think3_DamageSleepFall( KAMOME* kamome);
            ̲

        Think3_DamageGroundSleep( KAMOME* kamome);
            ̤ǤͤƤ
            
        Think3_DamageStandSleep( KAMOME* kamome);
            Ω̲
            
        Think3_Wakeup( KAMOME* kamome);
            
            
        Think3_StandWakeup( KAMOME* kamome);
            Ω֤ǵ
            
        Think3_DamageFeintFall( KAMOME* kamome);
            
            
        Think3_DamageFeint( KAMOME* kamome);
            
            
        Think3_DamageDead( KAMOME* kamome);
            ˴
            
        Think2_Normal( KAMOME* kamome );
            ̾׹
            
        Think2_Damage( KAMOME* kamome );
            ᡼׹
            
        Think1_Normal( KAMOME* kamome );
            ̾׹

        Think1_Damage( KAMOME* kamome );
            ᡼׹

        Think( KAMOME* kamome );
            ׹ʹؿ
            
        KMM_InitThink( KAMOME* kamome, int nInitThink );
            ׹ͥ

kmpre.c 
    λ׹͡ư˹Ԥʤ

        PreProcess( KAMOME* kamome);
            ׹͡ư

        AfterProcess( KAMOME* kamome);
            ׹͡ưθ

kmsound.c 
    ᲻Ϣ
        
        KAMOME_CallSe( KAMOME*  kamome,    // 
                       int      nSeIndex,  // SEֹʥǥå
                       FVECTOR* pvecPos,   // SEȯ
                       int      nMode);    // SE⡼        
            SE

        KAMOME_Say( KAMOME*  kamome,       // 
                    int      nSeIndex,     // SEֹʥǥå
                    int      nMode);       // SE⡼
            Ƭΰ֤SE
 
        KMM_ClearSeList( KAMOME_MNG* kmmng);
            SEꥹȤ򥯥ꥢ

        KMM_AddAtcSeList( KAMOME_MNG* kmmng, KAMOME* kamome);
            ⲻΥꥹȤɲ

        KMM_AddNearSeList( KAMOME_MNG* kmmng, KAMOME* kamome);
            ĤΥꥹȤɲ

        KMM_InitSoundWork( KAMOME* kamome);
            

        KMM_UpdateSoundWork( KAMOME* kamome);
            

        KMM_CallMotionSe( KAMOME* kamome);
            ⡼˹碌Ʋ
 
kmdbg.c 
    ǥХåϢ

        KMM_CallDbgNumber(void);
            ǥХå˥塼ɲáֹ

        KMM_CallDbgRoute(void);
            ǥХå˥塼ɲá롼ɽ

        KMM_CallDbgSound(void);
            ǥХå˥塼ɲá

        KMM_CallDbgArea(void);
            ǥХå˥塼ɲáԥꥢ

        KMM_DbgCheckSe(KAMOME_MNG* kmmng);
            å

        KMM_DbgDrawNumber( KAMOME_MNG* kmmng );
            ֹɽ

        KMM_DbgDrawRoute( KAMOME_MNG* kmmng );
            롼ɽ
            
        KMM_DbgDrawArea( KAMOME_MNG* kmmng);
            ꥢɽ
            
        KMM_DbgProcess(KAMOME_MNG* kmmng);
            ǥХå¹Դؿ
            
        KMM_InitDebugWork(KAMOME_MNG* kmmng);
            ǥХå
            
        KMM_DbgDumpExecTime(KAMOME_MNG* kmmng, int nTime);
            ¹Իɽ
            
        KMM_DbgActControl( KAMOME_MNG* kmmng );
            ȥư
            
        ʲ̤
        TestLineAct( TestLine* work );
        TestLineDie( TestLine* work );
        TestLineGetResources( TestLine*  work,
                              FVECTOR*   pvec1, 
                              FVECTOR*   pvec2, 
                              u_char     r,
                              u_char     g,
                              u_char     b);
        NewMaoTestLine( FVECTOR* pvec1, 
                        FVECTOR* pvec2, 
                        u_char   r,
                        u_char   g,
                        u_char   b);
            ̤
            
kmginfo.c 
    μվ

        KMMNG_UpdateInfo( KAMOME_MNG* kmmng);
            վ󹹿
            
        KMMNG_BaseLight( KAMOME_MNG* kmmng );
            ȿ׻ʤ
            
        KMMNG_BaseBardy( KAMOME_MNG* kmmng );
            ȿ
            
        KMMNG_BaseEscape( KAMOME_MNG* kmmng );
            ȿҴ
            
        KMMNG_BaseAngry( KAMOME_MNG* kmmng );
            ȿܤ
            
        KMM_CheckNoiseTakeOff( KAMOME_MNG* kmmng);
            ˤΩå
            
        KMMNG_JudgeBase( KAMOME_MNG* kmmng );
            ȿ
            
        KMM_CallDmgProc( KAMOME_MNG* kmmng, int nType);
            ᤬᡼˸ƤФץ򥳡
            

