Mercurial > ~darius > hgwebdir.cgi > paradise_client
diff death.c @ 1:ff5e05767bd3 ALPHA
Empty changelog
author | darius |
---|---|
date | Sat, 06 Dec 1997 05:41:28 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/death.c Sat Dec 06 05:41:28 1997 +0000 @@ -0,0 +1,194 @@ +/* $Id: death.c,v 1.1.1.1 1997/12/06 05:41:28 darius Exp $ */ + +/* + * death.c + */ +#include "copyright.h" + +#include <stdio.h> +#include <signal.h> +#include <setjmp.h> +#include <sys/types.h> +#ifdef hpux +#include <time.h> +#else /* hpux */ +#include <sys/time.h> +#endif /* hpux */ +#include <string.h> +#include "Wlib.h" +#include "defs.h" +#include "struct.h" +#include "data.h" +#include "proto.h" +#include "gameconf.h" + +extern jmp_buf env; + +static char *teamstring[4] = { /* "", */ "and the Federation", + "and the Romulan Empire", /* "", */ + "and the Klingon Empire", /* "", "", "", */ +"and the Orions"}; + +void +redraw_death_messages() +{ + char buf[256]; + int len; + + switch (me->p_whydead) { + case KNOREASON: + strcpy(buf, "You were not killed"); + break; + case KQUIT: + strcpy(buf, "You have self-destructed."); + break; + case KTORP: + sprintf(buf, "You were killed by a photon torpedo from %s (%c%c).", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead]); + break; + case KPLASMA: + sprintf(buf, "You were killed by a plasma torpedo from %s (%c%c)", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead]); + break; + case KPHASER: + sprintf(buf, "You were killed by a phaser shot from %s (%c%c)", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead]); + break; + case KPLANET: + sprintf(buf, "You were killed by planetary fire from %s (%c)", + planets[me->p_whodead].pl_name, + teaminfo[mask_to_idx(planets[me->p_whodead].pl_owner)].letter); + break; + case KSHIP: + sprintf(buf, "You were killed by an exploding ship formerly owned by %s (%c%c)", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead]); + break; + case KDAEMON: + strcpy(buf, "You were killed by a dying daemon."); + break; + case KWINNER: + if (me->p_whodead >= 0) + sprintf(buf, "Galaxy has been conquered by %s (%c%c) %s", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[players[me->p_whodead].p_no], + teamstring[players[me->p_whodead].p_teami]); + else + sprintf(buf, "Galaxy has been conquered by %s", + teamstring[-1 - me->p_whodead]); + break; + case KGHOST: + sprintf(buf, "You were ghostbusted."); + break; + case KGENOCIDE: + sprintf(buf, "Your team was genocided by %s (%c%c) %s.", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead], + teamstring[players[me->p_whodead].p_teami]); + break; + case KPROVIDENCE: + sprintf(buf, "You were removed from existence by divine mercy."); + break; + case KTOURNEND: + strcpy(buf, "The tournament has ended."); + break; + case KOVER: + strcpy(buf, "The game has gone into overtime!"); + break; + case KTOURNSTART: + strcpy(buf, "The tournament has begun."); + break; + case KBADBIN: + sprintf(buf, "Your netrek executable didn't verify correctly."); + W_WriteText(mapw, 50, 70, textColor, buf, strlen(buf), W_RegularFont); + sprintf(buf, "(could be an old copy or illegal cyborg)"); + W_WriteText(mapw, 50, 110, W_Yellow, buf, strlen(buf), W_RegularFont); + *buf = 0; + break; + case KMISSILE: + sprintf(buf, "You were killed by a missile from %s (%c%c).", + players[me->p_whodead].p_name, + teaminfo[players[me->p_whodead].p_teami].letter, + shipnos[me->p_whodead]); + break; + + case KASTEROID: + strcpy(buf, "You were smashed to bits by an asteroid."); + W_WriteText(mapw, 50, 70, textColor, buf, strlen(buf), W_RegularFont ); + break; + + default: + sprintf(buf, "You were killed by something unknown to this game (%d).", + me->p_whydead); + break; + } + len = strlen(buf); + W_WriteText(mapw, 250 - len * W_Textwidth / 2, 11 * W_Textheight, W_Yellow, buf, + len, W_RegularFont); + /* First we check for promotions: */ + if (promoted) { + if (!paradise) { + sprintf(buf, "Congratulations! You have been promoted to %s", + ranks[mystats->st_rank].name); + W_WriteText(mapw, 150, 23 * W_Textheight, W_Yellow, buf, strlen(buf), W_BoldFont); + } else { + sprintf(buf, "Congratulations! You have been promoted to %s", + ranks2[mystats->st_rank].name); + W_WriteText(mapw, 150, 23 * W_Textheight, W_Yellow, buf, strlen(buf), W_BoldFont); + } + promoted = 0; + } +} + +void +death() +{ + W_Event event; + +#ifdef AUTOKEY + if (autoKey) + autoKeyAllOff(); +#endif /* AUTOKEY */ + + + W_ClearWindow(mapw); + W_ClearWindow(iconWin); + if (oldalert != PFGREEN) { + if (extraBorder) + W_ChangeBorder(w, gColor); + W_ChangeBorder(baseWin, gColor); + oldalert = PFGREEN; + if(autoUnZoom>0) + blk_zoom = 0; + } + if (W_IsMapped(statwin)) { + W_UnmapWindow(statwin); + showStats = 1; + } else { + showStats = 0; + } + if (infomapped) + destroyInfo(); + W_UnmapWindow(planetw); + W_UnmapWindow(planetw2); + W_UnmapWindow(rankw); + W_UnmapWindow(war); + if (optionWin) + optiondone(); + + redraw_death_messages(); + + while (W_EventsPending()) { + W_NextEvent(&event); + } + longjmp(env, 0); +}