예제 #1
0
void spoil_spells_aux(FILE *fff, spell_info *table)
{
	int i;
	variant vn, vd;
	var_init(&vn);
	var_init(&vd);

	fprintf(fff, "\n== Spells ==\n");
	fprintf(fff, "||  || *Lvl* || *Cost* || *Fail* || *Description* ||\n");
	for (i = 0; ; i++)
	{
		spell_info *base = &table[i];
		if (!base->fn) break;

		base->fn(SPELL_SPOIL_NAME, &vn);
		if (var_is_null(&vn)) base->fn(SPELL_NAME, &vn);
		
		base->fn(SPELL_SPOIL_DESC, &vd);
		if (var_is_null(&vd)) base->fn(SPELL_DESC, &vd);

		fprintf(fff, "||%s||%d||%d||%d||`%s`||\n", 
			var_get_string(&vn), base->level, base->cost, base->fail, var_get_string(&vd));
	}

	var_clear(&vn);
	var_clear(&vd);
}
예제 #2
0
void spoil_powers_aux(FILE *fff, power_info *table)
{
	int i;
	variant vn, vd;
	var_init(&vn);
	var_init(&vd);

	fprintf(fff, "\n== Powers ==\n");
	fprintf(fff, "||  || *Stat* || *Lvl* || *Cost* || *Fail* || *Description* ||\n");
	for (i = 0; ; i++)
	{
		power_info *base = &table[i];		
		if (!base->spell.fn) break;

		base->spell.fn(SPELL_SPOIL_NAME, &vn);
		if (var_is_null(&vn)) base->spell.fn(SPELL_NAME, &vn);
		
		base->spell.fn(SPELL_SPOIL_DESC, &vd);
		if (var_is_null(&vd)) base->spell.fn(SPELL_DESC, &vd);

		fprintf(fff, "||%s||%s||%d||%d||%d||`%s`||\n", 
			var_get_string(&vn), 
			stat_abbrev_true[base->stat],
			base->spell.level, base->spell.cost, base->spell.fail, 
			var_get_string(&vd)
		);
	}

	var_clear(&vn);
	var_clear(&vd);
}
예제 #3
0
static void _list(menu_ptr menu, char *keys)
{
    char temp[255];
    int  i;
    int  y = 1;
    int  x = 13;

    Term_erase(x, y, 255);

    if (menu->heading)
        put_str(format("     %s", menu->heading), y++, x);

    for (i = 0; i < menu->count; i++)
    {
        byte attr = TERM_WHITE;
        variant key, text, color;

        var_init(&key);
        var_init(&text);
        var_init(&color);

        menu->fn(MENU_KEY, i, menu->cookie, &key);
        if (var_is_null(&key))
            keys[i] = I2A(i);
        else
            keys[i] = (char)var_get_int(&key);

        if (menu->count <= 26)
            keys[i] = tolower(keys[i]);

        menu->fn(MENU_TEXT, i, menu->cookie, &text);
        if (var_is_null(&text))
            var_set_string(&text, "");

        menu->fn(MENU_COLOR, i, menu->cookie, &color);
        if (!var_is_null(&color))
            attr = var_get_int(&color);

        if (attr == TERM_DARK)
            keys[i] = '\0';

        sprintf(temp, "  %c) %s", keys[i], var_get_string(&text));
        c_prt(attr, temp, y + i, x);

        var_clear(&key);
        var_clear(&text);
        var_clear(&color);
    }
    Term_erase(x, y + menu->count, 255);
}
예제 #4
0
cptr get_spell_spoiler_name(ang_spell spell)
{
    static char buf[255];
    variant v;
    var_init(&v);
    spell(SPELL_SPOIL_NAME, &v);
    
    if (var_is_null(&v))
        spell(SPELL_NAME, &v);

    sprintf(buf, "%s", var_get_string(&v));
    var_clear(&v);
    return buf;
}
예제 #5
0
static void _describe(menu_ptr menu, int which)
{
    variant v;

    var_init(&v);
    menu->fn(MENU_HELP, which, menu->cookie, &v);
    if (!var_is_null(&v))
    {
        char tmp[255*10];
        int i, line;

        for (i = 0; i < 2+10; i++)
            Term_erase(13, menu->count + i + 1 + (menu->heading ? 1 : 0), 255);

        roff_to_buf(var_get_string(&v), 80-15, tmp, sizeof(tmp));

        for(i = 0, line = menu->count + 2 + (menu->heading ? 1 : 0); tmp[i]; i += 1+strlen(&tmp[i]))
        {
            prt(&tmp[i], line, 15);
            line++;
        }
    }
    var_clear(&v);
}