#include "ai_update_deathmatch.cs" #include "rule_common.h" // SCORE 0~3 is cleared each round int SCORE_KILL = 0; int SCORE_MAX_CONT_KILL = 1; int SCORE_DEAD = 2; int SCORE_FINAL = 3; int SCORE_CONT_KILL = 4; void RuleOnHostGame() { SpawnSceneItems(); if (var_ruleWinCondition == 0) SetGameMaxTime(var_ruleRoundTime); else SetGameMaxTime(0); SpawnRobot(); } void RuleOnTimeOver() { GameOver(); } void RuleOnNextRound() { RebornAllChara(); int i, c, s; s = GetNumCharas(); for (i=0; i s2) return 1; else if (s1 < s2) return -1; s1 = GetCharaScore(c1, SCORE_MAX_CONT_KILL); s2 = GetCharaScore(c2, SCORE_MAX_CONT_KILL); if (s1 > s2) return 1; else if (s1 < s2) return -1; s1 = GetCharaScore(c1, SCORE_DEAD); s2 = GetCharaScore(c2, SCORE_DEAD); if (s1 < s2) return 1; else if (s1 > s2) return -1; return 0; } void RuleOnComputeFinalScore(int c) { int sn = 0; if (GetCharaScore(c, SCORE_KILL) > 0) sn = 1; int finalScore = GetCharaScore(c, SCORE_KILL)*1 + (GetNumCharas()-GetCharaRoundRank(c)-1)*sn; if (finalScore < 0) finalScore = 0; SetCharaScore(c, SCORE_FINAL, finalScore); SetCharaScore(c, SCORE_CONT_KILL, 0); SetCharaNetScore(c, 0, GetCharaScore(c, SCORE_MAX_CONT_KILL)); // GLS_DEATHMATCH_SPEC_SREIAL SetCharaNetScore(c, 1, GetCharaScore(c, SCORE_KILL)); // GLS_DEATHMATCH_SPEC_KILL SetCharaNetScore(c, 2, GetCharaScore(c, SCORE_DEAD)); // GLS_DEATHMATCH_SPEC_DEATH SetCharaNetScore(c, 3, GetCharaPlayTime(c)); // GLS_DEATHMATCH_SPEC_TIME SetCharaNetScore(c, 4, GetCharaScore(c, SCORE_FINAL)); // GLS_DEATHMATCH_SPEC_RATING } void ComputeHudScore() { int i, c, s; int maxScore = -9999; int bestKiller = 0; s = GetNumCharas(); for (i=0; i maxScore) { bestKiller = c; maxScore = GetCharaScore(c, SCORE_KILL); } } SetHudNumber(bestKiller, maxScore); } void RuleOnCharaDead(int c, int killer) { SetCharaScore(c, SCORE_DEAD, GetCharaScore(c, SCORE_DEAD)+1); SetCharaScore(c, SCORE_CONT_KILL, 0); if (killer) { SetCharaScore(killer, SCORE_KILL, GetCharaScore(killer, SCORE_KILL)+1); SetCharaScore(killer, SCORE_CONT_KILL, GetCharaScore(killer, SCORE_CONT_KILL)+1); if (GetCharaScore(killer, SCORE_CONT_KILL) > GetCharaScore(killer, SCORE_MAX_CONT_KILL)) SetCharaScore(killer, SCORE_MAX_CONT_KILL, GetCharaScore(killer, SCORE_CONT_KILL)); } else { SetCharaScore(c, SCORE_KILL, GetCharaScore(c, SCORE_KILL)-1); } if (killer) { if (var_ruleWinCondition == 1) { if (GetCharaScore(killer, SCORE_KILL) >= var_ruleWinScore) GameOver(); } } ComputeHudScore(); CharaReborn(c); } void RuleOnCharaEnter(int c) { SetCharaAttrib(c, CHARA_MAX_HP, var_ruleMaxHP); SetCharaAttrib(c, CHARA_HP, var_ruleMaxHP); } void RuleOnCharaLeave(int c, int reason) { ComputeHudScore(); SpawnRobot(); }