static string Evalvar(out EvalEnum evalEnum) { evalEnum = EvalEnum.NONE; int curr = GetParam(); if (curr == -1) { //constant return(GetParam().ToString()); } if (curr == 0) { //variable curr = GetParam(); string name = vars.GetText(VarEnum.VARS, curr, "var_" + curr); if (name == "player_current_action") { evalEnum = EvalEnum.ACTION; } return(name); } //function string result = string.Empty; if ((curr & 0x8000) == 0x8000) { //change actor result = GetObjectName(GetParam()) + "."; } curr &= 0x7FFF; curr--; if (curr < 0 || curr >= config.EvalMacro.Length) { throw new NotImplementedException(curr.ToString()); } evalEnum = config.EvalMacro[curr]; string parameter = evalEnum.ToString().ToLowerInvariant(); switch (evalEnum) { case EvalEnum.DIST: parameter += string.Format("({0})", GetObjectName(GetParam())); break; case EvalEnum.POSREL: if (config.Version == GameVersion.TIMEGATE || config.Version == GameVersion.TIMEGATE_DEMO) { parameter += string.Format("({0})", Evalvar()); } else { parameter += string.Format("({0})", GetObjectName(GetParam())); } break; case EvalEnum.OBJECT: case EvalEnum.THROW: parameter += string.Format("({0})", GetObjectName(GetParam())); break; case EvalEnum.ISFOUND: parameter += string.Format("({0})", GetObjectName(Evalvar())); break; case EvalEnum.RAND: parameter += string.Format("({0})", GetParam()); break; case EvalEnum.C_VAR: parameter = vars.GetText(VarEnum.CVARS, GetParam(), "cvar_" + curr); break; case EvalEnum.TEST_ZV_END_ANIM: case EvalEnum.MATRIX: parameter += string.Format("({0} {1})", GetParam(), GetParam()); break; case EvalEnum.DIV_BY_2: parameter += string.Format("({0})", GetParam()); break; } result += parameter; return(result); }