#include "scenario_common.h" // Global variable int bStartGame = 0; int BossID = -1; int GeneralID[4]; // Boss Position float BossX = 34; float BossY = 2272; float BossZ = 1383; // Partner Position SpawnPartnerX = 0; SpawnPartnerY = 1942; SpawnPartnerZ = 1383; // use secondary bUseSecondary = 1; // local variable int i; int ObjectID; float dx, dy, dz; // --------- // Game // --------- void OnCache() { LoadScene("SW03"); // CacheLevelModel(""); } void OnHostGame() { SetGameMaxTime(-1); SetAudioVariable(0,1000); InitScenario(); BossID = SpawnChara("boss", BossX, BossY, BossZ); var_aiLockCountLimit = 2; // spawn Guard B for (i = 0 ; i < 4 ; i++) { ObjectID = FindSceneItem(NumToStr("Guard_%02d", i)); GetSceneItemPos(ObjectID, x, y, z); GeneralID[i] = SpawnChara("general", x, y, z); } // mission /* SetMissionObjectiveText(0, MOBJ_SW02_1); SetMissionObjectiveText(1, MOBJ_SW02_2); SetMissionObjectiveText(2, MOBJ_SW02_3); SetMissionObjectiveText(3, MOBJ_SW02_4); SetMissionObjectiveText(4, MOBJ_SW02_5); */ var_uiGameOverVoice2 = NumToStr("katakang_d%d", rand()%4+1); /* Print("Cutscene 15\n"); BeginCutscene("cutscene15"); */ bStartGame = 1; } void OnCharaDead(int id, int killer) { Print("Chara ", id, " is killed by ", killer, "\n"); if (id == PlayerID) { PlayerDead(); return; } if (id == PartnerID) { PartnerDead(); return; } if ( id == BossID) { KillScore(1, 1500); SetMissionObjectiveSwitch(4, 0); PlayAICutsceneCB("cutscene_temp", "GameComplete"); return; } string CharaName = GetCharaString(id, CHARA_NAME); // guard captain if ( CharaName == "GENERAL") { KillScore(0, 400); } // CharaReborn(id); } void OnTimeOver() { Print("TimeOver\n"); GameOver(GAMEOVER_LOSE); } void OnUpdate(float t) { CommonUpdate(t); if (bStartGame == 1) { SetAudioVariable(0, 1000); bStartGame = 0; } } /* void OnContinueGame() { // destroy guard for (i = 0 ; i < 4 ; i++) { if (GeneralID[i] > 0) { Destroy(GeneralID[i]); GeneralID[i] = -1; } } // reborn player CharaReborn(PlayerID); CharaReborn(PartnerID); TeleportChara(PlayerID, 22, -16, -20); TeleportChara(PartnerID, -20, -16, -20); SetEntityDir(PlayerID, 0, -1, 0); SetEntityDir(PartnerID, 0, -1, 0); // reborn boss CharaReborn(BossID, 0); TeleportChara(BossID, BossX, BossY, BossZ); ShowEntity(BossID, 0); ActivateEntity(BossID, 0); PlayMusic("s11_nightdemon_bgm", 1, 1); SetAudioVariable(0, 0); bStartGame = 1; } */ // --------- // Enemy // --------- /* void SOLDIER_InitChara(int id) { // ce12 NPCE12_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 250*HandicapHP); // 生命上限 SetCharaAttrib(id, CHARA_HP, 250*HandicapHP); // 生命 SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 0); SetCharaDart(id, 3, 30); } void SOLDIER_InitAI(int id) { AI_Shooter(PlayerID, id); } void GUARD_InitChara(int id) { // ce15 NPCE15_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 250*HandicapHP); // 生命上限 SetCharaAttrib(id, CHARA_HP, 250*HandicapHP); // 生命 SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 32); } void GUARD_InitAI(int id) { AI_Guard(PlayerID, id); SetAIAttrib(id, AI_THINK_SPEED, 50*ResponseRate); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 100, PlayerID); SetAIBehavior(id, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 100); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP_SIDE, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } */ void GENERAL_InitChara(int id) { // ce16 NPCE16_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 450*HandicapHP); // 生命上限 SetCharaAttrib(id, CHARA_HP, 450*HandicapHP); // 生命 SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 82); } void GENERAL_InitAI(int id) { AI_Captain(PlayerID, id); SetAIAttrib(id, AI_THINK_SPEED, 70*ResponseRate); } void BOSS_InitChara(int id) { CW01_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 80); } void BOSS_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_THINK_SPEED, 100*ResponseRate); UpdateAIAttrib(id); }