public static Parser.Error parse_a_p(Parser p) { Artifact a = p.priv as Artifact; random_value hd = p.getrand("hd"); Misc.assert(a != null); a.ac = (short)p.getint("ac"); a.dd = (byte)hd.dice; a.ds = (byte)hd.sides; a.to_h = (short)p.getint("to-h"); a.to_d = (short)p.getint("to-d"); a.to_a = (short)p.getint("to-a"); return Parser.Error.NONE; }
public static Parser.Error parse_r_b(Parser p) { Monster_Race r = p.priv as Monster_Race; int i; random_value dam; if (r == null) return Parser.Error.MISSING_RECORD_HEADER; for (i = 0; i < Monster_Blow.MONSTER_BLOW_MAX; i++) //used to check .method if (r.blow[i] == null) break; if (i == Monster_Blow.MONSTER_BLOW_MAX) return Parser.Error.TOO_MANY_ENTRIES; r.blow[i] = new Monster_Blow(); r.blow[i].method = find_blow_method(p.getsym("method")); if (r.blow[i].method == null) return Parser.Error.UNRECOGNISED_BLOW; if (p.hasval("effect")) { r.blow[i].effect = find_blow_effect(p.getsym("effect")); if (r.blow[i].effect == null) return Parser.Error.INVALID_EFFECT; } if (p.hasval("damage")) { dam = p.getrand("damage"); r.blow[i].d_dice = (byte)dam.dice; r.blow[i].d_side = (byte)dam.sides; } return Parser.Error.NONE; }
public static Parser.Error parse_a_e(Parser p) { Artifact a = p.priv as Artifact; Misc.assert(a != null); a.effect = grab_one_effect(p.getsym("name")); a.time = p.getrand("time"); if (a.effect == null) return Parser.Error.GENERIC; return Parser.Error.NONE; }
public static Parser.Error parse_k_m(Parser p) { Object_Kind k = p.priv as Object_Kind; Misc.assert(k != null); k.gen_mult_prob = (byte)p.getint("prob"); k.stack_size = (random_value)p.getrand("stack"); return Parser.Error.NONE; }
public static Parser.Error parse_k_p(Parser p) { Object_Kind k = p.priv as Object_Kind; Misc.assert(k != null); random_value hd = p.getrand("hd"); k.ac = (byte)p.getint("ac"); k.dd = (byte)hd.dice; k.ds = (byte)hd.sides; k.to_h = p.getrand("to-h"); k.to_d = p.getrand("to-d"); k.to_a = p.getrand("to-a"); return Parser.Error.NONE; }
public static Parser.Error parse_k_l(Parser p) { Object_Kind k = p.priv as Object_Kind; Misc.assert(k != null); k.pval[k.num_pvals] = p.getrand("pval"); if (!p.hasval("flags")) { k.num_pvals++; return Parser.Error.NONE; } string s = p.getstr("flags"); //return grab_flag_helper(s, k.pval_flags[k.num_pvals]); string[] t = s.Split(new string[] { " ", "|" }, StringSplitOptions.RemoveEmptyEntries); string temp; foreach(string token in t) { temp = token; if(grab_flag(k.flags, Object_Flag.list, token) != Parser.Error.NONE || grab_flag(k.pval_flags[k.num_pvals], Object_Flag.list, token) != Parser.Error.NONE) { return Parser.Error.INVALID_FLAG; } } k.num_pvals++; if (k.num_pvals > Misc.MAX_PVALS) return Parser.Error.TOO_MANY_ENTRIES; return Parser.Error.NONE; //t = strtok(s, " |"); //while (t) { // if (grab_flag(k.flags, OF_SIZE, k_info_flags, t) || // grab_flag(k.pval_flags[k.num_pvals], OF_SIZE, k_info_flags, t)) // break; // t = strtok(null, " |"); //} //k.num_pvals++; //if (k.num_pvals > MAX_PVALS) // return Parser.Error.TOO_MANY_ENTRIES; //mem_free(s); //return t ? Parser.Error.INVALID_FLAG : Parser.Error.NONE; }
public static Parser.Error parse_k_e(Parser p) { Object_Kind k = p.priv as Object_Kind; Misc.assert(k != null); k.effect = grab_one_effect(p.getsym("name")); if (p.hasval("time")) k.time = p.getrand("time"); if (k.effect == null) return Parser.Error.GENERIC; return Parser.Error.NONE; }
public static Parser.Error parse_k_c(Parser p) { Object_Kind k = p.priv as Object_Kind; Misc.assert(k != null); k.charge = p.getrand("charges"); return Parser.Error.NONE; }
public static Parser.Error parse_e_l(Parser p) { Ego_Item e = p.priv as Ego_Item; if (e == null) return Parser.Error.MISSING_RECORD_HEADER; if (!p.hasval("flags")) return Parser.Error.MISSING_FIELD; e.pval[e.num_pvals] = p.getrand("pval"); e.min_pval[e.num_pvals] = (byte)p.getint("min"); string s = p.getstr("flags"); return grab_flag_helper2(s, e); /*t = strtok(s, " |"); while (t) { if (grab_flag(e.flags, OF_SIZE, k_info_flags, t) || grab_flag(e.pval_flags[e.num_pvals], OF_SIZE, k_info_flags, t)) break; t = strtok(null, " |"); } e.num_pvals++; if (e.num_pvals > MAX_PVALS) return Parser.Error.TOO_MANY_ENTRIES; mem_free(s); return t ? Parser.Error.INVALID_FLAG : Parser.Error.NONE;*/ }
public static Parser.Error parse_e_c(Parser p) { random_value th = p.getrand("th"); random_value td = p.getrand("td"); random_value ta = p.getrand("ta"); Ego_Item e = p.priv as Ego_Item; if (e == null) return Parser.Error.MISSING_RECORD_HEADER; e.to_h = th; e.to_d = td; e.to_a = ta; return Parser.Error.NONE; }