btmux/autom4te.cache/
btmux/doc/.svn/
btmux/event/.svn/
btmux/game/.svn/
btmux/game/bin/.svn/
btmux/game/data/.svn/
btmux/game/logs/.svn/
btmux/game/maps/
btmux/game/maps/.svn/
btmux/game/maps/.svn/prop-base/
btmux/game/maps/.svn/props/
btmux/game/maps/.svn/text-base/
btmux/game/maps/.svn/wcprops/
btmux/game/mechs/
btmux/game/mechs/.svn/
btmux/game/mechs/.svn/prop-base/
btmux/game/mechs/.svn/props/
btmux/game/mechs/.svn/text-base/
btmux/game/mechs/.svn/wcprops/
btmux/game/text/.svn/
btmux/include/.svn/
btmux/misc/
btmux/misc/.svn/
btmux/misc/.svn/prop-base/
btmux/misc/.svn/props/
btmux/misc/.svn/text-base/
btmux/misc/.svn/wcprops/
btmux/python/
btmux/python/.svn/
btmux/python/.svn/prop-base/
btmux/python/.svn/props/
btmux/python/.svn/text-base/
btmux/python/.svn/wcprops/
btmux/src/.svn/prop-base/
btmux/src/.svn/props/
btmux/src/.svn/text-base/
btmux/src/.svn/wcprops/
btmux/src/hcode/.svn/
btmux/src/hcode/btech/
btmux/src/hcode/btech/.svn/
btmux/src/hcode/btech/.svn/prop-base/
btmux/src/hcode/btech/.svn/props/
btmux/src/hcode/btech/.svn/text-base/
btmux/src/hcode/btech/.svn/wcprops/
btmux/src/hcode/include/.svn/
/*
 * $Id: mech.tech.repairs.c,v 1.1.1.1 2005/01/11 21:18:26 kstevens Exp $
 *
 * Author: Markus Stenberg <fingon@iki.fi>
 *
 *  Copyright (c) 1997 Markus Stenberg
 *  Copyright (c) 1998-2002 Thomas Wouters
 *  Copyright (c) 2000-2002 Cord Awtry
 *       All rights reserved
 *
 * Created: Sat Aug 23 19:12:32 1997 fingon
 * Last modified: Sat Jun  6 20:45:48 1998 fingon
 *
 */

#include "mech.h"
#include "mech.events.h"
#include "mech.tech.h"
#include "mech.tech.damages.h"
#include "coolmenu.h"
#include "mycool.h"
#include "failures.h"
#include "p.mech.tech.h"
#include "p.mech.build.h"
#include "p.mech.status.h"

static coolmenu *c;

static void describe_repairs(MUXEVENT * e)
{
    int type = e->type;
    MECH *mech = (MECH *) e->data;
    int earg = ((int) e->data2) % PLAYERPOS;
    dbref player = ((int) e->data2) / PLAYERPOS;
    int loc, pos, extra;
    char buf[MBUF_SIZE];
    char buf2[LBUF_SIZE];
    int fail = (e->function == very_fake_func);

    UNPACK_LOCPOS_E(earg, loc, pos, extra);
    sprintf(buf, "%s%s", ShortArmorSectionString(MechType(mech),
	    MechMove(mech), loc % 8), loc >= 8 ? "(R)" : "");
    sprintf(buf2, "%-5d ", player);
    sprintf(buf2 + strlen(buf2), "%-4d ",
	game_lag_time((e->tick - muxevent_tick) / 60));
    switch (type) {
    case EVENT_REPAIR_REPL:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Replacement of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_REPLG:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Replacement of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_REAT:
	sprintf(buf2 + strlen(buf2), "%5s Reattachment", buf);
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_RELO:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d %sload of %s", buf, pos + 1,
	    extra ? "Un" : "Re", pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_FIX:
	if (fail)
	    sprintf(buf2 + strlen(buf2), "%5s:%-2d Failed armor repair",
		buf, 0);
	else
	    sprintf(buf2 + strlen(buf2),
		"%5s:%-2d Repair of armor - possibly next point", buf,
		pos);
	break;
    case EVENT_REPAIR_FIXI:
	if (fail)
	    sprintf(buf2 + strlen(buf2), "%5s:%-2d Failed internal repair",
		buf, 0);
	else
	    sprintf(buf2 + strlen(buf2),
		"%5s:%-2d Repair of internals - possibly next point", buf,
		pos);
	break;
    case EVENT_REPAIR_SCRL:
	sprintf(buf2 + strlen(buf2), "%5s Removal", buf);
	break;
    case EVENT_REPAIR_SCRP:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Scrapping of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	break;
    case EVENT_REPAIR_SCRG:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Scrapping of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	break;
    case EVENT_REPAIR_REPAG:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Repair of %s", buf, pos + 1,
	    pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_REPAP:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Repair of %s", buf, pos + 1,
	    pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_REPENHCRIT:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Repair of %s", buf, pos + 1,
	    pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_MOB:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Mounting of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_UMOB:
	sprintf(buf2 + strlen(buf2), "%5s:%-2d Removing of %s", buf,
	    pos + 1, pos_part_name(mech, loc, pos));
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    case EVENT_REPAIR_REPSUIT:
	sprintf(buf2 + strlen(buf2), "%5s Replacing suit", buf);
	if (fail)
	    sprintf(buf2 + strlen(buf2), " (Failure)");
	break;
    }

/*   sprintf(buf2+strlen(buf2), " - %s", */

/*        get_uptime_to_string(e->tick - muxevent_tick)); */
    vsi(buf2);
}

void tech_repairs(dbref player, MECH * mech, char *buffer)
{
    int i, isds = IsDS(mech);

    TECHCOMMANDD;

    DOCHECK(!figure_latest_tech_event(mech),
	"This 'mech has no repairs pending!");
    c = NULL;
    addline();
    cent(tprintf("Repairs/Scrapping in progress (%s)", GetMechID(mech)));
    vsi(tprintf("%-5s %-4s %s", "Plr", "Time", "Location + Description"));
    addline();
    for (i = FIRST_TECH_EVENT; i <= LAST_TECH_EVENT; i++)
	muxevent_gothru_type_data(i, (void *) mech, describe_repairs);
    addline();
    vsi("Note: Time = Time remaining in minutes. Plr = Tech's dbref");
    addline();
    ShowCoolMenu(player, c);
    KillCoolMenu(c);
}