User:OlieGamerTV/Club Penguin: Game Day! Unused Code
This is a sub-page of User:OlieGamerTV.
Throughout the game, there are remnants of a lot of code from an older period of time. From test scripts to full on unused and removed code.
Unused Squirrel Scripts
The simplest of the bunch. There are a whole bunch of script files that never get called left in the game for the Hub scene.
Early Opening Cutscene Scripts
A seemingly scrapped opening for the game, complete with characters. Crashes when attempted to load in due to missing animation files.
Script Name | Code |
---|---|
Demo_op_Main.nut | // インクルードスクリプト IncludeScript( "Demo/Demo_op_referee.nut" ); IncludeScript( "Demo/Demo_op_red.nut" ); IncludeScript( "Demo/Demo_op_blue.nut" ); IncludeScript( "Demo/Demo_op_green.nut" ); IncludeScript( "Demo/Demo_op_yellow.nut" ); IncludeScript( "Demo/Demo_op_title.nut" ); // 配置データを読み込む LoadSetData("hub/set/Demo_op.set" ); // フェードありデモ開始 function Demo_op_Main() { PlayFadeDemo( Demo_op_Main_DemoInit, Demo_op_Main_DemoMain, Demo_op_Main_DemoEnd, FADE_TIME_DEFAULT, FADE_COLOR_DEFAULT ) } // デモ開始の暗転中に行う処理を実行 function Demo_op_Main_DemoInit() { // 最初に呼び出す処理を実行 local func = Demo_op_Main_func41 while(func) { func = func(); } } // デモのメイン処理 function Demo_op_Main_DemoMain() { // 最初に呼び出す処理を実行 local func = Demo_op_Main_func3 while(func) { func = func(); } } // デモ終了の暗転中に行う処理を実行 function Demo_op_Main_DemoEnd() { // 最初に呼び出す処理を実行 local func = Demo_op_Main_func32 while(func) { func = func(); } } function Demo_op_Main_func1() { CameraLoadMotion( "Demo_op_camera", "demo_op_cam" ) return Demo_op_Main_func2 } function Demo_op_Main_func2() { local pos = ::GetLocaterPos("SET_Demo_op"); local rot = ::GetLocaterRot("SET_Demo_op"); // カメラモーション再生 CameraPlayMotion( "Demo_op_camera", pos ,rot ); // ポーズ状態で待機 PauseCameraMotion( true ); return Demo_op_Main_func43 } function Demo_op_Main_func3() { PauseCameraMotion( false ) return Demo_op_Main_func9 } function Demo_op_Main_func4() { RestoreCamera( FrameTime * 0 ); return Demo_op_Main_func45 } function Demo_op_Main_func5() { WaitCameraMotion() return null } function Demo_op_Main_func8() { CreateNPC( Demo_op_referee ) return Demo_op_Main_func24 } function Demo_op_Main_func9() { PauseMotion( "Demo_op_referee", false ) return Demo_op_Main_func28 } function Demo_op_Main_func12() { WaitCameraMotionFrame( 360 ) return Demo_op_Main_func13 } function Demo_op_Main_func13() { WaitCameraMotionFrame( 420 ) return Demo_op_Main_func15 } function Demo_op_Main_func14() { WaitCameraMotionFrame( 240 ) return Demo_op_Main_func12 } function Demo_op_Main_func15() { WaitCameraMotionFrame( 480 ) return Demo_op_Main_func16 } function Demo_op_Main_func16() { WaitCameraMotionFrame( 540 ) return Demo_op_Main_func17 } function Demo_op_Main_func17() { WaitCameraMotionFrame( 600 ) return Demo_op_Main_func18 } function Demo_op_Main_func18() { WaitCameraMotionFrame( 835 ) return Demo_op_Main_func42 } function Demo_op_Main_func19() { WaitCameraMotionFrame( 1380 ) return Demo_op_Main_func20 } function Demo_op_Main_func20() { WaitCameraMotionFrame( 1400 ) return Demo_op_Main_func21 } function Demo_op_Main_func21() { WaitCameraMotionFrame( 1420 ) return Demo_op_Main_func22 } function Demo_op_Main_func22() { WaitCameraMotionFrame( 1440 ) return Demo_op_Main_func23 } function Demo_op_Main_func23() { WaitCameraMotionFrame( 1460 ) return Demo_op_Main_func5 } function Demo_op_Main_func24() { CreateNPC( Demo_op_red ) return Demo_op_Main_func25 } function Demo_op_Main_func25() { CreateNPC( Demo_op_blue ) return Demo_op_Main_func26 } function Demo_op_Main_func26() { CreateNPC( Demo_op_green ) return Demo_op_Main_func27 } function Demo_op_Main_func27() { CreateNPC( Demo_op_yellow ) return Demo_op_Main_func1 } function Demo_op_Main_func28() { PauseMotion( "Demo_op_red", false ) return Demo_op_Main_func29 } function Demo_op_Main_func29() { PauseMotion( "Demo_op_blue", false ) return Demo_op_Main_func30 } function Demo_op_Main_func30() { PauseMotion( "Demo_op_green", false ) return Demo_op_Main_func31 } function Demo_op_Main_func31() { PauseMotion( "Demo_op_yellow", false ) return Demo_op_Main_func37 } function Demo_op_Main_func32() { DeleteNPC( "Demo_op_referee" ) return Demo_op_Main_func33 } function Demo_op_Main_func33() { DeleteNPC( "Demo_op_red" ) return Demo_op_Main_func34 } function Demo_op_Main_func34() { DeleteNPC( "Demo_op_blue" ) return Demo_op_Main_func35 } function Demo_op_Main_func35() { DeleteNPC( "Demo_op_green" ) return Demo_op_Main_func36 } function Demo_op_Main_func36() { DeleteNPC( "Demo_op_yellow" ) return Demo_op_Main_func4 } function Demo_op_Main_func37() { CreateEffectDemo( 0, "ef_demo_op_01a0000", "SET_Demo_op_eff00" ) return Demo_op_Main_func38 } function Demo_op_Main_func38() { CreateEffectDemo( 20, "ef_demo_op_01a0000", "SET_Demo_op_eff01" ) return Demo_op_Main_func39 } function Demo_op_Main_func39() { CreateEffectDemo( 40, "ef_demo_op_01a0000", "SET_Demo_op_eff02" ) return Demo_op_Main_func40 } function Demo_op_Main_func40() { CreateEffectDemo( 60, "ef_demo_op_01a0000", "SET_Demo_op_eff03" ) return Demo_op_Main_func14 } function Demo_op_Main_func41() { AddDemoResource( ::TEAMCOL_ALL, ::DEMO_OP ) return Demo_op_Main_func8 } function Demo_op_Main_func42() { PlayDemoLayout( ::TEAMCOL_ALL, ::DEMO_OP ) return Demo_op_Main_func19 } function Demo_op_Main_func43() { // タイムラインを作成 Demo_op_title(); return Demo_op_Main_func44 } function Demo_op_Main_func44() { EnableDof( false ) return null } function Demo_op_Main_func45() { EnableDof( true ) return null } |
Demo_op_title.nut | // 赤リーダー function Demo_op_title_func1() { DispCaptionDemo( 360, 60, UITEXT_adv_common_op_002_000 ) return Demo_op_title_func2 } // 青リーダー function Demo_op_title_func2() { DispCaptionDemo( 420, 60, UITEXT_adv_common_op_003_000 ) return Demo_op_title_func3 } // 緑リーダー function Demo_op_title_func3() { DispCaptionDemo( 480, 60, UITEXT_adv_common_op_004_000 ) return Demo_op_title_func4 } // 黄リーダー function Demo_op_title_func4() { DispCaptionDemo( 540, 60, UITEXT_adv_common_op_005_000 ) return Demo_op_title_func6 } // ついにこの時が function Demo_op_title_func5() { DispCaptionDemo( 130, 110, UITEXT_adv_common_op_000_000 ) return Demo_op_title_func8 } // 4つのチームによる戦いの始まり function Demo_op_title_func6() { DispCaptionDemo( 600, 110, UITEXT_adv_common_op_006_000 ) return Demo_op_title_func9 } // 6つのハブ function Demo_op_title_func7() { DispCaptionDemo( 900, 110, UITEXT_adv_common_op_008_000 ) return Demo_op_title_func10 } // Games Day.それは・・ function Demo_op_title_func8() { DispCaptionDemo( 240, 110, UITEXT_adv_common_op_001_000 ) return Demo_op_title_func1 } // 最後に残るチームは・・・ function Demo_op_title_func9() { DispCaptionDemo( 720, 110, UITEXT_adv_common_op_007_000 ) return Demo_op_title_func7 } // コンカーしていくのです function Demo_op_title_func10() { DispCaptionDemo( 1120, 110, UITEXT_adv_common_op_009_000 ) return null } // Demo_op_titleを作成 function Demo_op_title() { // 初期化処理を実行 local func = null while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_title_Loop ) } // 作成 & 実行処理 function Demo_op_title_Loop() { local func = Demo_op_title_func5 while( func ) { func = func(); } } |
Demo_op_referee.nut | function Demo_op_referee_func2() { PenguinLoadExtraMotion( "Demo_op_referee_mot", "demo_op_referee" ) return Demo_op_referee_func4 } function Demo_op_referee_func4() { // モーションの登録と再生を同時に行う PenguinEntryExtraMotion( "Demo_op_referee", "Demo_op_referee_mot" ) PlayMotion( "Demo_op_referee" , ::Penguin.MOTION_EXTRA + 0 ); // ポーズ状態で待機 PauseMotion( "Demo_op_referee", true ); return null } // Demo_op_refereeを作成 function Demo_op_referee() { // ペンギンを作成 local isSp = ::Penguin.JUDGE; if( isSp != -1 ) { // ペンギン作成 PenguinCreate( "Demo_op_referee", isSp ); } else { // ペンギン作成 PenguinCreate( "Demo_op_referee" ) // カラーを設定 PenguinSetColor( "Demo_op_referee", 1 ) } // キャラ・マップ両方のコリジョンを無効に設定 IgnoreMapColli( "Demo_op_referee", true ); IgnoreChrColli( "Demo_op_referee", true ); // 位置と向きを設定 local pos = GetLocaterPos( "SET_Demo_op" ); local rot = GetLocaterRot( "SET_Demo_op" ); InitPos( "Demo_op_referee", pos, rot ); // 初期化処理を実行 local func = Demo_op_referee_func2 while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_referee_Loop ) } // 作成 & 実行処理 function Demo_op_referee_Loop() { local func = null while( func ) { func = func(); } } |
Demo_op_red.nut | function Demo_op_red_func1() { PenguinLoadExtraMotion( "Demo_op_red_mot", "demo_op_red" ) return Demo_op_red_func2 } function Demo_op_red_func2() { // モーションの登録と再生を同時に行う PenguinEntryExtraMotion( "Demo_op_red", "Demo_op_red_mot" ) PlayMotion( "Demo_op_red" , ::Penguin.MOTION_EXTRA + 0 ); // ポーズ状態で待機 PauseMotion( "Demo_op_red", true ); return null } // 表情変化 function Demo_op_red_func3() { PenguinSetFaceDemo( 310, "Demo_op_red", 5, 2 ) return Demo_op_red_func4 } // 表情通常に戻る function Demo_op_red_func4() { PenguinSetFaceDemo( 420, "Demo_op_red", 2, 0 ) return Demo_op_red_func5 } // 表情変化 function Demo_op_red_func5() { PenguinSetFaceDemo( 630, "Demo_op_red", 1, 0 ) return Demo_op_red_func6 } // 表情通常に戻る function Demo_op_red_func6() { PenguinSetFaceDemo( 680, "Demo_op_red", 2, 0 ) return Demo_op_red_func7 } // 表情変化 function Demo_op_red_func7() { PenguinSetFaceDemo( 790, "Demo_op_red", 5, 0 ) return Demo_op_red_func8 } // 表情通常に戻る function Demo_op_red_func8() { PenguinSetFaceDemo( 840, "Demo_op_red", 2, 0 ) return Demo_op_red_func9 } // 表情変化 function Demo_op_red_func9() { PenguinSetFaceDemo( 1380, "Demo_op_red", 2, 3 ) return Demo_op_red_func10 } // 表情通常に戻る function Demo_op_red_func10() { PenguinSetFaceDemo( 1500, "Demo_op_red", 2, 0 ) return null } // Demo_op_redを作成 function Demo_op_red() { // ペンギンを作成 local isSp = ::Penguin.NPC_RED00; if( isSp != -1 ) { // ペンギン作成 PenguinCreate( "Demo_op_red", isSp ); } else { // ペンギン作成 PenguinCreate( "Demo_op_red" ) // カラーを設定 PenguinSetColor( "Demo_op_red", 8 ) } // キャラ・マップ両方のコリジョンを無効に設定 IgnoreMapColli( "Demo_op_red", true ); IgnoreChrColli( "Demo_op_red", true ); // 位置と向きを設定 local pos = GetLocaterPos( "SET_Demo_op" ); local rot = GetLocaterRot( "SET_Demo_op" ); InitPos( "Demo_op_red", pos, rot ); // 初期化処理を実行 local func = Demo_op_red_func1 while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_red_Loop ) } // 作成 & 実行処理 function Demo_op_red_Loop() { local func = Demo_op_red_func3 while( func ) { func = func(); } } |
Demo_op_blue.nut | function Demo_op_blue_func1() { PenguinLoadExtraMotion( "Demo_op_blue_mot", "demo_op_blue" ) return Demo_op_blue_func2 } function Demo_op_blue_func2() { // モーションの登録と再生を同時に行う PenguinEntryExtraMotion( "Demo_op_blue", "Demo_op_blue_mot" ) PlayMotion( "Demo_op_blue" , ::Penguin.MOTION_EXTRA + 0 ); // ポーズ状態で待機 PauseMotion( "Demo_op_blue", true ); return null } // 表情変化 function Demo_op_blue_func3() { PenguinSetFaceDemo( 270, "Demo_op_blue", 2, 0 ) return Demo_op_blue_func4 } // 表情通常に戻る function Demo_op_blue_func4() { PenguinSetFaceDemo( 490, "Demo_op_blue", 2, 0 ) return Demo_op_blue_func7 } // 表情変化 function Demo_op_blue_func5() { PenguinSetFaceDemo( 1400, "Demo_op_blue", 1, 0 ) return Demo_op_blue_func6 } // 表情通常に戻る function Demo_op_blue_func6() { PenguinSetFaceDemo( 1510, "Demo_op_blue", 2, 0 ) return null } // 表情変化 function Demo_op_blue_func7() { PenguinSetFaceDemo( 600, "Demo_op_blue", 2, 0 ) return Demo_op_blue_func8 } // 表情通常に戻る function Demo_op_blue_func8() { PenguinSetFaceDemo( 820, "Demo_op_blue", 2, 0 ) return Demo_op_blue_func5 } // Demo_op_blueを作成 function Demo_op_blue() { // ペンギンを作成 local isSp = ::Penguin.NPC_BLUE00; if( isSp != -1 ) { // ペンギン作成 PenguinCreate( "Demo_op_blue", isSp ); } else { // ペンギン作成 PenguinCreate( "Demo_op_blue" ) // カラーを設定 PenguinSetColor( "Demo_op_blue", 0 ) } // キャラ・マップ両方のコリジョンを無効に設定 IgnoreMapColli( "Demo_op_blue", true ); IgnoreChrColli( "Demo_op_blue", true ); // 位置と向きを設定 local pos = GetLocaterPos( "SET_Demo_op" ); local rot = GetLocaterRot( "SET_Demo_op" ); InitPos( "Demo_op_blue", pos, rot ); // 初期化処理を実行 local func = Demo_op_blue_func1 while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_blue_Loop ) } // 作成 & 実行処理 function Demo_op_blue_Loop() { local func = Demo_op_blue_func3 while( func ) { func = func(); } } |
Demo_op_yellow.nut | function Demo_op_yellow_func1() { PenguinLoadExtraMotion( "Demo_op_yellow_mot", "demo_op_yellow" ) return Demo_op_yellow_func2 } function Demo_op_yellow_func2() { // モーションの登録と再生を同時に行う PenguinEntryExtraMotion( "Demo_op_yellow", "Demo_op_yellow_mot" ) PlayMotion( "Demo_op_yellow" , ::Penguin.MOTION_EXTRA + 0 ); // ポーズ状態で待機 PauseMotion( "Demo_op_yellow", true ); return null } // 表情変化 function Demo_op_yellow_func3() { PenguinSetFaceDemo( 535, "Demo_op_yellow", 5, 7 ) return Demo_op_yellow_func5 } // 表情通常に戻る function Demo_op_yellow_func5() { PenguinSetFaceDemo( 605, "Demo_op_yellow", 2, 0 ) return Demo_op_yellow_func6 } // 表情変化 function Demo_op_yellow_func6() { PenguinSetFaceDemo( 685, "Demo_op_yellow", 5, 7 ) return Demo_op_yellow_func7 } // 表情通常に戻る function Demo_op_yellow_func7() { PenguinSetFaceDemo( 755, "Demo_op_yellow", 2, 0 ) return Demo_op_yellow_func8 } // 表情変化 function Demo_op_yellow_func8() { PenguinSetFaceDemo( 1430, "Demo_op_yellow", 5, 7 ) return Demo_op_yellow_func9 } // 表情通常に戻る function Demo_op_yellow_func9() { PenguinSetFaceDemo( 1490, "Demo_op_yellow", 2, 0 ) return null } // Demo_op_yellowを作成 function Demo_op_yellow() { // ペンギンを作成 local isSp = ::Penguin.NPC_YELLOW00; if( isSp != -1 ) { // ペンギン作成 PenguinCreate( "Demo_op_yellow", isSp ); } else { // ペンギン作成 PenguinCreate( "Demo_op_yellow" ) // カラーを設定 PenguinSetColor( "Demo_op_yellow", 4 ) } // キャラ・マップ両方のコリジョンを無効に設定 IgnoreMapColli( "Demo_op_yellow", true ); IgnoreChrColli( "Demo_op_yellow", true ); // 位置と向きを設定 local pos = GetLocaterPos( "SET_Demo_op" ); local rot = GetLocaterRot( "SET_Demo_op" ); InitPos( "Demo_op_yellow", pos, rot ); // 初期化処理を実行 local func = Demo_op_yellow_func1 while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_yellow_Loop ) } // 作成 & 実行処理 function Demo_op_yellow_Loop() { local func = Demo_op_yellow_func3 while( func ) { func = func(); } } |
Demo_op_green.nut | function Demo_op_green_func1() { PenguinLoadExtraMotion( "Demo_op_green_mot", "demo_op_green" ) return Demo_op_green_func2 } function Demo_op_green_func2() { // モーションの登録と再生を同時に行う PenguinEntryExtraMotion( "Demo_op_green", "Demo_op_green_mot" ) PlayMotion( "Demo_op_green" , ::Penguin.MOTION_EXTRA + 0 ); // ポーズ状態で待機 PauseMotion( "Demo_op_green", true ); return null } // 表情変化 function Demo_op_green_func3() { PenguinSetFaceDemo( 480, "Demo_op_green", 2, 2 ) return Demo_op_green_func4 } // 表情通常に戻る function Demo_op_green_func4() { PenguinSetFaceDemo( 540, "Demo_op_green", 2, 0 ) return null } // Demo_op_greenを作成 function Demo_op_green() { // ペンギンを作成 local isSp = ::Penguin.NPC_GREEN00; if( isSp != -1 ) { // ペンギン作成 PenguinCreate( "Demo_op_green", isSp ); } else { // ペンギン作成 PenguinCreate( "Demo_op_green" ) // カラーを設定 PenguinSetColor( "Demo_op_green", 10 ) } // キャラ・マップ両方のコリジョンを無効に設定 IgnoreMapColli( "Demo_op_green", true ); IgnoreChrColli( "Demo_op_green", true ); // 位置と向きを設定 local pos = GetLocaterPos( "SET_Demo_op" ); local rot = GetLocaterRot( "SET_Demo_op" ); InitPos( "Demo_op_green", pos, rot ); // 初期化処理を実行 local func = Demo_op_green_func1 while(func) { func = func(); } // スレッドを作成 CreateThread( Demo_op_green_Loop ) } // 作成 & 実行処理 function Demo_op_green_Loop() { local func = Demo_op_green_func3 while( func ) { func = func(); } } |
hub01_town_Com_ESNPC_SS.nut
An unused NPC script for Bean Balance featuring an older version of the EventStartNPC class, lacking a motion parameter in its constructor.
// hub01_town_Com_ESNPC_SS イベント起動NPCクラス class hub01_town_Com_ESNPC_SS_class extends EventStartNPC { // コンストラクタ constructor(_name,_start,_select,_end,_event) { ::EventStartNPC.constructor(_name,_start,_select,_end,_event) } } // 死亡フラグ DEAFFLAG_hub01_town_Com_ESNPC_SS <- false; // hub01_town_Com_ESNPC_SSを作成 function hub01_town_Com_ESNPC_SS() { // NPC情報を設定 SettingNPC( "hub01_town_Com_ESNPC_SS", "SET_hub01_town_Com_ESNPC_SS", 1, ::COLLI_TYPE_FIX, ::Penguin.SENSEI ); // スレッドを作成 CreateThread( hub01_town_Com_ESNPC_SS_Loop ) } // 作成 & 実行処理 function hub01_town_Com_ESNPC_SS_Loop() { // イベント起動NPCクラスを作成 local instance = hub01_town_Com_ESNPC_SS_class( "hub01_town_Com_ESNPC_SS", UITEXT_Event_SS_00_00, UITEXT_Event_SS_01_01, UITEXT_Event_SS_02_00, ::COFFEEBAGS ) // NPCを実行 while( 1 ) { // 死亡フラグが立ったら、スレッド終了 if( DEAFFLAG_hub01_town_Com_ESNPC_SS == true ) { return; } instance.Exec(); Wait(); } }
hub02_village_Com_SSNPC_01.nut
An unused NPC script for the cut Snow Sports Shopkeeper. It pulls up the regular catalogue if interacted with.
// hub02_village_Com_SSNPC_01 イベント起動NPCクラス class hub02_village_Com_SSNPC_01_class extends ShopStartNPC { // コンストラクタ constructor(_name,_start,_select,_motion) { ::ShopStartNPC.constructor(_name,_start,_select,_motion) } } // 死亡フラグ DEAFFLAG_hub02_village_Com_SSNPC_01 <- false; // hub02_village_Com_SSNPC_01を作成 function hub02_village_Com_SSNPC_01() { // NPC情報を設定 SettingNPC( "hub02_village_Com_SSNPC_01", "SET_hub02_village_Com_SSNPC_01", 0, ::COLLI_TYPE_FIX, -1 ); // スレッドを作成 CreateThread( hub02_village_Com_SSNPC_01_Loop ) } // 作成 & 実行処理 function hub02_village_Com_SSNPC_01_Loop() { // イベント起動NPCクラスを作成 local instance = hub02_village_Com_SSNPC_01_class( "hub02_village_Com_SSNPC_01", UITEXT_Shop_SS_00_00, UITEXT_Shop_SS_01_01, -1 ) // NPCを実行 while( 1 ) { // 死亡フラグが立ったら、スレッド終了 if( DEAFFLAG_hub02_village_Com_SSNPC_01 == true ) { return; } instance.Exec(); Wait(); } }
hub05_skihill_BLUE_SS_TEST.nut
A test NPC for the Ski Hill. This was likely used to test choice messages and the catalogues.
// hub05_skihill_BLUE_SS_TEST 会話NPCクラス class hub05_skihill_BLUE_SS_TEST_class extends TalkNPC { // コンストラクタ constructor(_name) { ::TalkNPC.constructor(_name) } function Talk() { // 最初に呼び出す処理を実行 local func = hub05_skihill_BLUE_SS_TEST_func1 while(func) { func = func(); } } function hub05_skihill_BLUE_SS_TEST_func1() { DispMessageWaitNoClose( UITEXT_Shop_SS_00_00, -1 ) return hub05_skihill_BLUE_SS_TEST_func2 } function hub05_skihill_BLUE_SS_TEST_func2() { DispSelectMessage3NoClose( UITEXT_Shop_SS_01_01, UITEXT_Shop_SS_01_02, UITEXT_Shop_SS_01_03 ) switch( GetSelectMessage() ) { case 0: return hub05_skihill_BLUE_SS_TEST_func3 break; case 1: return hub05_skihill_BLUE_SS_TEST_func3 break; case 2: return null break; } } function hub05_skihill_BLUE_SS_TEST_func3() { OpenShopCatalog() return null } } // 死亡フラグ DEAFFLAG_hub05_skihill_BLUE_SS_TEST <- false; // hub05_skihill_BLUE_SS_TESTを作成 function hub05_skihill_BLUE_SS_TEST() { // NPC情報を設定 SettingNPC( "hub05_skihill_BLUE_SS_TEST", "SET_hub01_town_Blue_cha1_TNPC_01", 0, ::COLLI_TYPE_FIX, -1 ); // スレッドを作成 CreateThread( hub05_skihill_BLUE_SS_TEST_Loop ) } // 作成 & 実行処理 function hub05_skihill_BLUE_SS_TEST_Loop() { // 会話NPCを作成 local instance = hub05_skihill_BLUE_SS_TEST_class( "hub05_skihill_BLUE_SS_TEST" ) // NPCを実行 while( 1 ) { // 死亡フラグが立ったら、スレッド終了 if( DEAFFLAG_hub05_skihill_BLUE_SS_TEST == true ) { return; } instance.Exec(); Wait(); } }
Test Scripts
A few test scripts were also left in the game files in /test/script, which just run a bunch of tests to ensure things are working.
Script Name | Code |
---|---|
test.nut | IncludeScript("test/script/test2.nut"); // シーンの初期化周り // シーン読み込み LoadScene("scene/village.scene"); // モデルリソース登録 AddResourceModel("hub/hub_village_00.cmpres"); // バイナリリソース登録 AddResourceBin("hub/hub_village_bin_00.cmparc"); // 最初に作られるスレッド function main() { // フェードイン FadeIn(1.0); // シーン開始 StartScene(); // フェード待ち WaitFade(); local vec1 = Vector(1.2,2.2,3.2); local vec2 = Vector(2.7,5.5,6.4); print("vec1.x : "+vec1.x+"\n"); print("vec1.y : "+vec1.y+"\n"); print("vec1.z : "+vec1.z+"\n"); print("vec2.x : "+vec2.x+"\n"); print("vec2.y : "+vec2.y+"\n"); print("vec2.z : "+vec2.z+"\n"); vec1 = vec1 + vec2; print("(vec1+vec2).x : "+vec1.x+"\n"); print("(vec1+vec2).y : "+vec1.y+"\n"); print("(vec1+vec2).z : "+vec1.z+"\n"); print("math.PI : "+math.PI+"\n"); CreateThread(TestThread1); local id = CreateThread(TestThread3); while(ExistThread(id)) { Wait(); } // フェードアウト FadeOut(1.0); // フェード待ち WaitFade(); print("End\n"); } function TestThread1() { CreateThread(TestThread2); print("test1\n"); } function TestThread2() { print("test2\n"); } |
test2.nut | function TestThread3() { for(local i=0; i<16; i++) { print("test3 : " + i + "\n"); Wait(0.5); } } |
test_hub1.nut | // 共通処理 //IncludeScript("test/script/common.nut"); // シーン読み込み Grp.LoadScene("scene/village.scene"); // モデルリソース登録 Grp.AddResourceModel("hub/hub_village_00.cmpres"); // バイナリリソース登録 Grp.AddResourceBin("hub/hub_village_bin_00.cmparc"); // 最初に作られるスレッド function main() { // シーン開始 Grp.StartScene(); // セットデータ読み込み Hub.LoadSetData("test/script/village.set"); // アクティビティ作成 Hub.CreateActivity(2,"village_ukiwa_act.rmdl",Hub.ACTIVITY_POINT_PRESS,false); // プレーヤー作成 Hub.CreatePlayer(); // フェードイン Grp.FadeIn(1.0); // フェード待ち Grp.WaitFade(); while(!Input.Press(0,Input.B)) { Wait(); } // フェードアウト Grp.FadeOut(1.0); // フェード待ち Grp.WaitFade(); // シーン終了 Hub.ChangeScene(Hub.TOWN); } |
test_hub2.nut | // シーンの初期化周り // シーン読み込み LoadScene("scene/town.scene"); // モデルリソース登録 AddResourceModel("hub/hub_town_00.cmpres"); // バイナリリソース登録 AddResourceBin("hub/hub_town_bin_00.cmparc"); // 最初に作られるスレッド function main() { // プレーヤー作成 CreatePlayer(); // シーン開始 StartScene(); // フェードイン Grp.FadeIn(1.0); // フェード待ち Grp.WaitFade(); while(!Input.Press(0,Input.B)) { Wait(); } // フェードアウト Grp.FadeOut(1.0); // フェード待ち Grp.WaitFade(); // シーン終了 ChangeScene(HUB_VILLAGE); } |
Unused Squirrel Functions
Found inside some of the Squirrel scripts, functions that are left completely unused can still be found.
DoPuzzle
A function for starting and ending some kind of puzzle minigame, will crash the game when called due to the puzzle functions used no longer existing. Found in command.nut.
// パズル実行 function DoPuzzle( port ) { // キャラの停止 PauseGroupChara(true,::LEVEL_DEMO); // 全プレーヤー移動停止 StopAllPlayer(); // メニュー閉じる CloseMenu(true); // メニュー消去 DispMenu(false); // パズル開く OpenPuzzle( port ); // パズル中 while( GetPuzzleState() == ::PUZZLE_STATE_PLAY ) { Wait(); } local res = GetPuzzleState(); // パズル閉じる ClosePuzzle(); // メニュー表示 DispMenu(true); // キャラの停止解除 PauseGroupChara(false,::LEVEL_DEMO); // パズルが成功した? if( res == ::PUZZLE_STATE_SUCCESS ) { return true; } return false; }
PenguinPlayCoffeeWait
A function for assigning a coffee cup to a specified penguin. Neither of the models referenced exist in the final files. Found in command.nut.
// コーヒー持ってる待機モーションに設定 function PenguinPlayCoffeeWait( name, coffee ) { local model = "gimd_coffeecup02"; if( coffee == false ) { model = "gimd_coffeecup01"; } PenguinSetExpandParts( name, ::Penguin.EXPNODE_HAND_R, model, false ); // デフォルトの待機モーションに登録 PenguinSetWaitMotion( name, ::Penguin.MOTION_COFFEE_WAIT ); PlayMotion( name, ::Penguin.MOTION_COFFEE_WAIT ); }
PlayBinocularsDemo
A function for playing a potential binoculars cutscene. This likely would have utilized the demo_binoculars_cam animation left in /hub/hub_common.cmpres. Found in demo.nut.
// 双眼鏡デモを再生する function PlayBinocularsDemo( initFunc, mainFunc, endFunc ) { local fadeTime = FADE_TIME_DEFAULT; local fadeColor = FADE_COLOR_DEFAULT; // フレーム数をタイムに変換 fadeTime *= FrameTime // デモ状態に EnterDemo(); // フェードアウト・・暗転開始 Grp.FadeOut( fadeTime, fadeColor ); // フェード待ち Grp.WaitFade(); // NPC非表示に VisibleGroupChara(false,::LEVEL_DEMO); // 初期化処理を実行 initFunc(); // 双眼鏡マスク表示 OpenBinoculars( 0 ); // フェードイン・・暗転終了 Grp.FadeIn( fadeTime, fadeColor ); // フェード待ち Grp.WaitFade(); // デモメイン処理実行 do { mainFunc(); } while( IsEndBinoculars() == false); // フェードアウト・・暗転開始 Grp.FadeOut( fadeTime, fadeColor ); // フェード待ち Grp.WaitFade(); // 終了処理を実行 endFunc(); // 双眼鏡マスク非表示 CloseBinoculars(); // NPC表示に VisibleGroupChara(true,::LEVEL_DEMO); // フェードイン・・暗転終了 Grp.FadeIn( fadeTime, fadeColor ); // フェード待ち Grp.WaitFade(); // デモ終了 ExitDemo(); }
Unused Executable Functions
There's a fair amount of classes and functions within the actual executable code and the connected RSO modules that aren't used in the final game, yet are still present.
For simplicity, these are all based around the American release, and the addresses they are first created at.
CrossCountryKey
This class can be found in main.dol. It is likely tied to a scrapped minigame that still has assets present in the final files. The functions left in this are the following:
CrossCountryKey | ||
---|---|---|
Function Name | Symbol Name | Location |
Game::Hikey::CrossCountryKey::IsSwing | IsSwing__Q34Game5Hikey15CrossCountryKeyFv | 800d4428 |
Game::Hikey::CrossCountryKey::IsSwingX | IsSwingX__Q34Game5Hikey15CrossCountryKeyFv | 800d44e4 |
Game::Hikey::CrossCountryKey::Update | Update__Q34Game5Hikey15CrossCountryKeyFv | 800d41d4 |
Game::Hikey::CrossCountryKey::~CrossCountryKey | __dt__Q34Game5Hikey15CrossCountryKeyFv | 800d4590 |
WifiNews
This class can be found in penguin_maker.rso. It was likely intended to be a newspaper the player could receive through the internet. The functions left in this are the following:
WifiNews | ||
---|---|---|
Function Name | Symbol Name | Location |
WifiRoom::WifiNews::WifiNews | __ct__Q28WifiRoom8WifiNewsFP | 814d061c |
WifiRoom::WifiNews::~WifiNews | __dt__Q28WifiRoom8WifiNewsFv | 814d07b0 |
WifiRoom::WifiNews::Create | Create__Q28WifiRoom8WifiNewsFv | 814d0828 |
WifiRoom::WifiNews::Release | Release__Q28WifiRoom8WifiNewsFv | 814d08a4 |
WifiRoom::WifiNews::Update | Update__Q28WifiRoom8WifiNewsFv | 814d08b0 |
WifiRoom::WifiNews::SendNewspaper | SendNewspaper__Q28WifiRoom8WifiNewsFP | 814d0b28 |
WifiRoom::WifiNews::SendJpegData | SendJpegData__Q28WifiRoom8WifiNewsF | 814d1054 |
WifiRoom::WifiNews::GetRTI | GetRTI__Q28WifiRoom8WifiNewsCFv | 814d11ac |
WifiDlgPoll
This class can be found in penguin_maker.rso. It was likely intended to be a vote poll that the player could receive through the internet. The functions left in this are the following:
WifiDlgPoll | ||
---|---|---|
Function Name | Symbol Name | Location |
WifiRoom::WifiDlgPoll::WifiDlgPoll | __ct__Q28WifiRoom11WifiDlgPollFP | 814ccf28 |
WifiRoom::WifiDlgPoll::~WifiDlgPoll | __dt__Q28WifiRoom11WifiDlgPollFv | 814cd23c |
WifiRoom::WifiDlgPoll::Release | Release__Q28WifiRoom11WifiDlgPollFv | 814cd2b4 |
WifiRoom::WifiDlgPoll::Create | Create__Q28WifiRoom11WifiDlgPollFv | 814cd310 |
WifiRoom::WifiDlgPoll::SetPollText | SetPollText__Q28WifiRoom11WifiDlgPollFRC | 814cd680 |
WifiRoom::WifiDlgPoll::SetPercent | SetPercent__Q28WifiRoom11WifiDlgPollFRC | 814cd9fc |
WifiRoom::WifiDlgPoll::ClearPercent | ClearPercent__Q28WifiRoom11WifiDlgPollFv | 814cdb9c |
WifiRoom::WifiDlgPoll::SetResultView | SetResultView__Q28WifiRoom11WifiDlgPollFv | 814cdc88 |
WifiRoom::WifiDlgPoll::CalcPollPos | CalcPollPos__Q28WifiRoom11WifiDlgPollFi | 814cdcfc |
WifiRoom::WifiDlgPoll::exec | exec__Q28WifiRoom11WifiDlgPollFv | 814cde74 |
WifiRoom::WifiDlgPoll::GetResult | GetResult__Q28WifiRoom11WifiDlgPollFv | 814cdf7c |
WifiRoom::WifiDlgPoll::GetRTI | GetRTI__Q28WifiRoom11WifiDlgPollCFv | 814ce1d8 |
Along with these, there's also a button and selector class present for the same functionality.
WifiDlgPollButton
WifiDlgPollButton | ||
---|---|---|
Function Name | Symbol Name | Location |
WifiRoom::WifiDlgPollButton::WifiDlgPollButton | __ct__Q28WifiRoom17WifiDlgPollButtonFP | 814cdf84 |
WifiRoom::WifiDlgPollButton::IsSelectAnmEnd | IsSelectAnmEnd__Q28WifiRoom17WifiDlgPollButtonCFv | 814cdfdc |
WifiRoom::WifiDlgPollButton::Update | Update__Q28WifiRoom17WifiDlgPollButtonFv | 814ce03c |
WifiRoom::WifiDlgPollButton::GetRTI | GetRTI__Q28WifiRoom17WifiDlgPollButtonCFv | 814ce1e4 |
WifiRoom::WifiDlgPollButton::~WifiDlgPollButton | __dt__Q28WifiRoom17WifiDlgPollButtonFv | 814ce294 |
WifiDlgPollSelector
WifiDlgPollSelector | ||
---|---|---|
Function Name | Symbol Name | Location |
WifiRoom::WifiDlgPollSelector::WifiDlgPollSelector | __ct__Q28WifiRoom19WifiDlgPollSelectorFP | 814ce0cc |
WifiRoom::WifiDlgPollSelector::UpMove | UpMove__Q28WifiRoom19WifiDlgPollSelectorFv | 814ce124 |
WifiRoom::WifiDlgPollSelector::DownMove | DownMove__Q28WifiRoom19WifiDlgPollSelectorFv | 814ce17c |
WifiRoom::WifiDlgPollSelector::GetRTI | GetRTI__Q28WifiRoom19WifiDlgPollSelectorCFv | 814ce1f0 |
WifiRoom::WifiDlgPollSelector::~WifiDlgPollSelector | __dt__Q28WifiRoom19WifiDlgPollSelectorFv | 814ce1fc |