int CharaID[6]; int SpawnX[6], SpawnY[6], SpawnZ[6]; SpawnX[0] = -235; SpawnY[0] = 34; SpawnZ[0] = 30; SpawnX[1] = -48; SpawnY[1] = 223; SpawnZ[1] = 30; SpawnX[2] = 151; SpawnY[2] = 33; SpawnZ[2] = 30; SpawnX[3] = -49; SpawnY[3] = -125; SpawnZ[3] = 30; SpawnX[4] = -220; SpawnY[4] = 140; SpawnZ[4] = 40; SpawnX[5] = -250; SpawnY[5] = -250; SpawnZ[5] = 120; int player; int g_player; float g_switchCharaTime = 0; float g_demoTime = 0; int firstPlayer = rand()%4 + 1; void OnCache() { LoadScene("in02"); SetAudioEnvironment(ENVIRONMENT_CITY); } void NPCAttack(int id) { SetCharaAttrib(id, CHARA_MAX_HP, 4000); SetCharaAttrib(id, CHARA_HP, 4000); SetCharaAttrib(id, CHARA_ATTACK_RATE, 2.0); SetAIAttrib(id, AI_LOOK_RANGE, 700); SetAIAttrib(id, AI_LOOK_ANGLE, 360); SetAIAttrib(id, AI_ATTACK_RATE, 100); SetAIAttrib(id, AI_ATTACK_RANGE, 100); SetAIAttrib(id, AI_DEFENSE_RATE, 80); SetAIAttrib(id, AI_DASH_RATE, 50); SetAIAttrib(id, AI_CHIFLARE_RATE, 20); SetAIAttrib(id, AI_ROLLING_RATE, 80); SetAIAttrib(id, AI_DEMON_RATE, 20); SetAIAttrib(id, AI_COMBO_RATE, 1, 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9); SetAIAttrib(id, AI_COMBO_RATE, 4, 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9); SetAIAttrib(id, AI_COMBO_RATE, 5, 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9); SetAIAttrib(id, AI_MOVE_SPEED, 1); SetAIAttrib(id, AI_THINK_SPEED, 100); SetAIAttrib(id, AI_BREAK_DEFENSE, 50); SetAIAttrib(id, AI_SUPERATTACK_RATE, 50); // SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_FOLLOW, 50); SetAIBehavior(id, AI_STATE_SEARCH, AI_SEARCH_RANDOMRUN, 50); 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_DASH_BACK, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_DASH_FRONT, 50); SetAIBehavior(id, AI_STATE_PREATTACK, AI_ATTACKMOVE_MOVE_SIDE, 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, 20); SetAIBehavior(id, AI_STATE_ATTACK, AI_ATTACK_COMBO, 80); UpdateAIBehavior(id); } void OnHostGame() { SetGameMaxTime(0); SpawnSceneItems(); // ActivateHud(1); // var_showCharaStatus = 1; int c; CharaID[0] = SpawnChara("CW01", SpawnX[0], SpawnY[0], SpawnZ[0]); SetCharaWeapon(CharaID[0], 20); NPCAttack(CharaID[0]); SetAIAttrib(CharaID[0], AI_ATTACK_STRING, "X", "^X", "^^X", "vX", "v^X", "Y", "^Y", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "v^X+Y"); CharaID[1] = SpawnChara("CW03", SpawnX[1], SpawnY[1], SpawnZ[1]); SetCharaWeapon(CharaID[1], 50); NPCAttack(CharaID[1]); SetAIAttrib(CharaID[1], AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "Y", "^Y", "vY", "^^Y", "X+Y", "^X+Y", "^^X+Y", "v^X+Y"); CharaID[2] = SpawnChara("CW05", SpawnX[2], SpawnY[2], SpawnZ[2]); SetCharaWeapon(CharaID[2], 70); NPCAttack(CharaID[2]); SetAIAttrib(CharaID[2], AI_ATTACK_STRING, "X", "^X", "vX", "^^X", "Y", "^Y", "vY", "X+Y", "^X+Y", "^^X+Y", "v^X+Y"); CharaID[3] = SpawnChara("CE04", SpawnX[3], SpawnY[3], SpawnZ[3]); SetCharaWeapon(CharaID[3], 40); NPCAttack(CharaID[3]); SetAIAttrib(CharaID[3], AI_ATTACK_STRING, "X", "^X", "^^X", "vX", "v^X", "Y", "^Y", "^^Y", "v^Y", "X+Y", "^X+Y", "^^X+Y", "v^X+Y"); g_player = CreatePlayer(); for (int i = 0 ; i < firstPlayer ; i++) SetCameraNextTarget(); } void OnUpdate(float t) { g_demoTime = g_demoTime + t; if (g_demoTime > 80) GameOver(); g_switchCharaTime = g_switchCharaTime + t; if (g_switchCharaTime > 10) { player = GetPlayerChara(g_player); if (GetCharaLockTarget(player)) { g_switchCharaTime = 5; } else { g_switchCharaTime = 0; SetCameraNextTarget(); } } } void OnCharaDead(int c, int killer) { CharaReborn(c); for (int i = 0 ; i < 4 ; i++) { if (CharaID[i] == c) { SetEntityPos(c, SpawnX[i], SpawnY[i], SpawnZ[i]); break; } } } void G01_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "g01"); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void G02_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "g02"); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void TRIGGERHURT_InitItem(int id) { SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void TRIGGERHURT_OnTouch(int id, int charaId) { float x, y, z; GetEntityPos(id, x, y, z); // damage CharaHurt(charaId, 1, 80, x, y, z, 1); } void TRIGGERFIREHURT_InitItem(int id) { SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void TRIGGERFIREHURT_OnTouch(int id, int charaId) { float x, y, z; GetEntityPos(id, x, y, z); // damage CharaHurt(charaId, 2, 80, x, y, z, 1); } // --------------- // Dead Region // --------------- void TRIGGERDEADREGION_InitItem(int id) { SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void TRIGGERDEADREGION_OnTouch(int id, int charaId) { if (!IsCharaDead(charaId)) { Print(charaId, " falls out!\n"); CharaHurt(charaId, 5, 30000); UseCharaDeadPoint(charaId); // SetCharaAttrib(charaId, CHARA_HP, 0); } }