#include "scenario_common.h" // Global variable int bStartGame = 0; int BossSpot = 0; // 0: master 1: altar 2: yama 3: ship int NextBoss = 0; int BossWeapon[7]; int LastHP, CurInv; int BossHP; int BossMaxHP = 10000; int BossID = -1; int AliciaID = -1; int NatashaID = -1; int DeRaisID = -1; int ZaraID = -1; int TorID = -1; int OniID = -1; int KangID = -1; int GeigerID = -1; int SBossID[8]; int BossCount = -1; int PlayerMaxHP; int bFirstBack = 0; // Boss Position float BossX = 7; float BossY = 5260; float BossZ = 10; float BossR = 0; float SBossX[8], SBossY[8], SBossZ[8], SBossR[8]; SBossX[0] = 4644; SBossY[0] = 5196; SBossZ[0] = 264; SBossR[0] = 0; // Geiger SBossX[6] = 4810; SBossY[6] = 5165; SBossZ[6] = 264; SBossR[6] = 0; // Tor SBossX[3] = 4553.5; SBossY[3] = 5159.2; SBossZ[3] = 264; SBossR[3] = 90; // Zara SBossX[2] = 4719.5; SBossY[2] = 265.8; SBossZ[2] = 295; SBossR[2] = 180; // Onitsuka SBossX[5] = 4712.2; SBossY[5] = 548.5; SBossZ[5] = 286.4; SBossR[5] = 0; // Kata Kang SBossX[1] = -86.7; SBossY[1] = 396; SBossZ[1] = 352; SBossR[1] = 0; // DeRais SBossX[7] = -48; SBossY[7] = 348; SBossZ[7] = 352; SBossR[7] = 0; // Alicia SBossX[4] = -115; SBossY[4] = 339; SBossZ[4] = 352; SBossR[4] = 0; // Natasha float PlayerX[8], PlayerY[8], PlayerZ[8], PlayerR[8]; PlayerX[0] = 4685; PlayerY[0] = 5040; PlayerZ[0] = 264; PlayerR[0] = 180; // Geiger PlayerX[6] = 4687; PlayerY[6] = 5061; PlayerZ[6] = 264; PlayerR[6] = 90; // Tor PlayerX[3] = 4661; PlayerY[3] = 5102; PlayerZ[3] = 264; PlayerR[3] = -90; // Zara PlayerX[2] = 4721.3; PlayerY[2] = 420.2; PlayerZ[2] = 243; PlayerR[2] = 0; // Onitsuka PlayerX[5] = 4693; PlayerY[5] = 378; PlayerZ[5] = 243; PlayerR[5] = 180; // Kata Kang PlayerX[1] = -86; PlayerY[1] = 115; PlayerZ[1] = 351; PlayerR[1] = 180; // DeRais PlayerX[4] = -92; PlayerY[4] = 245; PlayerZ[4] = 352; PlayerR[4] = 180; // Alicia & Natasha PlayerX[7] = 15.3; PlayerY[7] = 5145.2; PlayerZ[7] = 2.5; PlayerR[7] = 180; // final boss // use secondary bUseSecondary = 1; // scene has echo bVoiceEcho = 1; // Partner Position SpawnPartnerX = 0; SpawnPartnerY = 0; SpawnPartnerZ = 50; // local variable int WeaponID; int i; void MoveToScene(); // --------- // Game // --------- void OnCache() { LoadScene("se09"); // CacheLevelModel(""); } void OnHostGame() { SetGameMaxTime(-1); InitScenario(); // no partner this stage Destroy(PartnerID); PartnerID = 0; PlayerMaxHP = GetCharaAttrib(PlayerID, CHARA_MAX_HP); // master weapon BossWeapon[0] = 73; BossWeapon[1] = 53; BossWeapon[2] = 93; BossWeapon[3] = 43; BossWeapon[4] = 13; BossWeapon[5] = 83; BossWeapon[6] = 63; LastHP = 9; CurInv = 1; // spawn boss BossMaxHP = BossMaxHP*HandicapHP; BossID = SpawnChara("boss", BossX, BossY, BossZ, BossR); SBossID[7] = AliciaID = SpawnChara("alicia", SBossX[7], SBossY[7], SBossZ[7], SBossR[7]); ShowEntity(AliciaID, 0); ActivateEntity(AliciaID, 0); SBossID[4] = NatashaID = SpawnChara("natasha", SBossX[4], SBossY[4], SBossZ[4], SBossR[4]); ShowEntity(NatashaID, 0); ActivateEntity(NatashaID, 0); SBossID[1] = DeRaisID = SpawnChara("derais", SBossX[1], SBossY[1], SBossZ[1], SBossR[1]); ShowEntity(DeRaisID, 0); ActivateEntity(DeRaisID, 0); SBossID[3] = ZaraID = SpawnChara("zara", SBossX[3], SBossY[3], SBossZ[3], SBossR[3]); ShowEntity(ZaraID, 0); ActivateEntity(ZaraID, 0); SBossID[6] = TorID = SpawnChara("tor", SBossX[6], SBossY[6], SBossZ[6], SBossR[6]); ShowEntity(TorID, 0); ActivateEntity(TorID, 0); SBossID[2] = OniID = SpawnChara("oni", SBossX[2], SBossY[2], SBossZ[2], SBossR[2]); ShowEntity(OniID, 0); ActivateEntity(OniID, 0); SBossID[5] = KangID = SpawnChara("kang", SBossX[5], SBossY[5], SBossZ[5], SBossR[5]); ShowEntity(KangID, 0); ActivateEntity(KangID, 0); SBossID[0] = GeigerID = SpawnChara("geiger", SBossX[0], SBossY[0], SBossZ[0], SBossR[0]); ShowEntity(GeigerID, 0); ActivateEntity(GeigerID, 0); var_uiGameOverVoice1 = ""; var_uiGameOverVoice2 = NumToStr("swordmaster_d%d", rand()%4+1); // mission SetMissionObjectiveText(0, MOBJ_SE09_1); Print("Cutscene90\n"); PlayCharaCutscene("cutscene90"); bStartGame = 1; } void CUTSCENE90_OnEnd() { PlayMusic("s18_final_boss", 1, 1); SetAudioVariable(0, 0); } void OnTimeOver() { Print("TimeOver\n"); GameOver(GAMEOVER_LOSE); } void OnUpdate(float t) { CommonUpdate(t); if (bStartGame == 1) { SetAudioVariable(0, 1000); bStartGame = 0; } if ( BossSpot == 0 ) { if (CurInv < 6) { // check if boss weapon is lost WeaponID = GetCharaWeapon(BossID, 1); if (WeaponID == 0) { Print("Boss Lost Weapon ", BossWeapon[CurInv], "\n"); CurInv++; WeaponID = GetCharaWeapon(BossID, 0); SetCharaWeapon(BossID, WeaponID, BossWeapon[CurInv]); } } if (CurInv < 8) { BossHP = GetCharaAttrib(BossID, CHARA_HP); BossHP = (BossHP*10) / BossMaxHP; if ( BossHP < LastHP ) { // drop weapon GetEntityPos(BossID, x, y, z); WeaponID = GetCharaWeapon(BossID, 0); // change weapon if (CurInv == 6) SetCharaWeapon(BossID, BossWeapon[CurInv], BossWeapon[CurInv]); if (CurInv == 7) { if (IsMale()) SetCharaWeapon(BossID, 23, 23); else SetCharaWeapon(BossID, 33, 33); } else SetCharaWeapon(BossID, BossWeapon[CurInv], BossWeapon[CurInv+1]); SpawnItem(NumToStr("weapon%d", WeaponID-3), x, y, z); Print("Boss Drop Weapon ", WeaponID, "\n"); LastHP--; CurInv++; } } } } void OnCharaDead(int id, int killer) { Print("Chara ", id, " is killed by ", killer, "\n"); // Player dead if (id == PlayerID) { if ( (BossSpot == 0) && (NextBoss < 7) ) { // transfer to another scene MoveToScene(); } else GameOver(GAMEOVER_LOSE); } else if (id == BossID) { KillScore(1, 2500); SetMissionObjectiveSwitch(0, 0); PlayCharaCutscene("cutscene100"); } else { for (i = 0 ; i < 8 ; i++) { if (id == SBossID[i]) { KillScore(1, 1500); BossCount--; Destroy(id); } } } if (BossCount == 0) { if (bFirstBack) { PlayCharaCutsceneCB("cutscene99", "BACKBOSS"); } else { bFirstBack = 1; PlayCharaCutsceneCB("cutscene98", "BACKBOSS"); } } } void BACKBOSS_OnEnd() { // transfer back to boss TeleportChara(PlayerID, PlayerX[7], PlayerY[7], PlayerZ[7], PlayerR[7]); SetCameraToCharaBack(); TeleportChara(BossID, BossX, BossY, BossZ, BossR); ShowEntity(BossID, 1); ActivateEntity(BossID, 1); BossSpot = 0; // hurt boss BossHP = GetCharaAttrib(BossID, CHARA_HP); if (BossHP > (BossMaxHP/10 + 200)) { CharaHurt(BossID, 1, 0); SetCharaAttrib(BossID, CHARA_HP, GetCharaAttrib(BossID, CHARA_HP) - BossMaxHP/10 - 1); } else if (BossHP > 200) CharaHurt(BossID, 1, BossHP-200); BossCount = -1; } void CUTSCENE100_OnEnd() { SetCutsceneDelayTime(0); PlayCharaCutsceneCB("cutscene100m", "GameComplete"); } // -------------- // Rotate Item // -------------- void ROTATEA01_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatea01", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.2); } void ROTATEA02_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatea02", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, -0.15); } void ROTATEA03_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatea03", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.05); } void ROTATEB01_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotateb01", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.12); } void ROTATEB02_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotateb02", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, -0.08); } void ROTATEB03_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotateb03", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.05); } void ROTATEC01_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatec01", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.12); } void ROTATEC02_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatec02", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, -0.08); } void ROTATEC03_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotatec03", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.05); } void ROTATED01_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotated01", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.12); } void ROTATED02_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotated02", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, -0.08); } void ROTATED03_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "rotated03", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_MACHINE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_WAITTIME, 0); SetItemAttrib(id, ITEM_ROTATEAXIS, 0, 0, 1); SetItemAttrib(id, ITEM_ROTATESPEED, 0.05); } // ------------ // function // ------------ void MoveToScene() { // hide big boss ShowEntity(BossID, 0); ActivateEntity(BossID, 0); // show small boss ShowEntity(SBossID[NextBoss], 1); ActivateEntity(SBossID[NextBoss], 1); BossCount = 1; switch(NextBoss) { case 4: { // summon altar BossSpot = 1; ShowEntity(SBossID[7], 1); ActivateEntity(SBossID[7], 1); BossCount++; PlayCharaCutsceneCB("cutscene97", "SBOSS"); break; } case 1: { // summon altar BossSpot = 1; PlayCharaCutsceneCB("cutscene96", "SBOSS"); break; } case 0: { // yama hall BossSpot = 2; PlayCharaCutsceneCB("cutscene91", "SBOSS"); break; } case 3: { // yama hall BossSpot = 2; PlayCharaCutsceneCB("cutscene93", "SBOSS"); break; } case 6: { // yama hall BossSpot = 2; PlayCharaCutsceneCB("cutscene92", "SBOSS"); break; } case 2: { // warship BossSpot = 3; PlayCharaCutsceneCB("cutscene94", "SBOSS"); break; } case 5: { // warship BossSpot = 3; PlayCharaCutsceneCB("cutscene95", "SBOSS"); break; } } } void SBOSS_OnEnd() { CharaReborn(PlayerID, 0); SetCharaAttrib(PlayerID, CHARA_HP, PlayerMaxHP/2); TeleportChara(PlayerID, PlayerX[NextBoss], PlayerY[NextBoss], PlayerZ[NextBoss], PlayerR[NextBoss]); NextBoss++; } // --------- // Enemy // --------- void BOSS_InitChara(int id) { CW12_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, BossMaxHP); SetCharaAttrib(id, CHARA_HP, BossMaxHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, BossWeapon[0], BossWeapon[1]); } void BOSS_InitAI(int id) { AI_Boss(PlayerID, id); // set AI attribute SetAIAttrib(id, AI_CHIFLARE_RATE, 100); SetAIAttrib(id, AI_DEMON_RATE, 50); } void NATASHA_InitChara(int id) { CW05_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 10); } void NATASHA_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); 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_DASH_BACK, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 30); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 70); UpdateAIAttrib(id); } void ALICIA_InitChara(int id) { CW06_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 10); } void ALICIA_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); 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_MOVE_SIDE, 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 DERAIS_InitChara(int id) { CW03_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 50); } void DERAIS_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50, PlayerID, PartnerID); 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_MOVE_SIDE, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } void ZARA_InitChara(int id) { // cw07 CW07_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 40); } void ZARA_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); 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_MOVE_SIDE, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } void TOR_InitChara(int id) { // ce09 CE09_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 60); } void TOR_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50, PlayerID); SetAIBehavior(id, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); SetAIBehavior(id, AI_STATE_LOCK, AI_LOCK_ONE_TARGET, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); // SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_JUMP, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } void ONI_InitChara(int id) { // should be ce07 CE07_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 90); } void ONI_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 100); SetAIBehavior(id, AI_STATE_LOCK, AI_LOCK_NEAREST_TARGET, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DIRECT, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK , 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } void KANG_InitChara(int id) { // should be cw01 CW01_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 80); } void KANG_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50, PlayerID, PartnerID); 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_MOVE_SIDE, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_BACK, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); } void GEIGER_InitChara(int id) { // ce05 CE05_InitChara(id); SetCharaAttrib(id, CHARA_MAX_HP, 2000*HandicapHP); SetCharaAttrib(id, CHARA_HP, 2000*HandicapHP); // SetCharaAttrib(id, CHARA_RAGE, 100); SetCharaAttrib(id, CHARA_TEAM, 2); SetCharaWeapon(id, 70); } void GEIGER_InitAI(int id) { AI_Boss(PlayerID, id); SetAIAttrib(id, AI_DEMON_RATE, 25); // set AI behavior ClearAIAllBehavior(id); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50); // id, type, num, rate SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); 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_DASH_BACK, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_RANDOM, 50); // SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 50); UpdateAIAttrib(id); }