Mercurial > ~darius > hgwebdir.cgi > paradise_server
diff src/getship.c @ 4:aa38447a4b21
First entry of Paradise Server 2.9 patch 10 Beta
author | darius |
---|---|
date | Sat, 06 Dec 1997 04:37:03 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/getship.c Sat Dec 06 04:37:03 1997 +0000 @@ -0,0 +1,114 @@ +/*-------------------------------------------------------------------------- +NETREK II -- Paradise + +Permission to use, copy, modify, and distribute this software and its +documentation, or any derivative works thereof, for any NON-COMMERCIAL +purpose and without fee is hereby granted, provided that this copyright +notice appear in all copies. No representations are made about the +suitability of this software for any purpose. This software is provided +"as is" without express or implied warranty. + + Xtrek Copyright 1986 Chris Guthrie + Netrek (Xtrek II) Copyright 1989 Kevin P. Smith + Scott Silvey + Paradise II (Netrek II) Copyright 1993 Larry Denys + Kurt Olsen + Brandon Gillespie +--------------------------------------------------------------------------*/ + + +#include "config.h" +#include <stdio.h> +#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <string.h> + +#include "defs.h" +#include "struct.h" +#include "data.h" +#include "shmem.h" + + + + +/*-------------------------------INTERNAL FUNCTONS------------------------*/ + +/*----------------------------------GETSHIP--------------------------------*/ +/* + * This function gets the particular ship type the player wants. It takes + * the ship values from the shipvals array. + */ + +void +getship(shipp, s_type) + struct ship *shipp; /* the ship structure to load */ + int s_type; /* the type of ship to get */ +{ + memcpy((char *) shipp, (char *) &(shipvals[s_type]), sizeof(struct ship)); +} + + + +/*------------------------------------------------------------------------*/ + + + + + +void +get_ship_for_player(me, s_type) + struct player *me; + int s_type; +{ + getship(&me->p_ship, s_type); + + me->p_shield = me->p_ship.s_maxshield; /* shields are at max */ + me->p_damage = 0; /* no damage to ship */ + me->p_subdamage = 0; /* no fractional damage either */ + me->p_subshield = 0; /* no fractional damage to shield */ + + me->p_fuel = me->p_ship.s_maxfuel; /* fuel is at max */ + me->p_etemp = 0; /* engines are ice cold */ + me->p_etime = 0; /* not counting down for E-temp */ + me->p_warptime = 0; /* we are not preparing for warp */ + me->p_wtemp = 0; /* weapons cool too */ + me->p_wtime = 0; /* not counting down for W-temp */ + + if (allows_docking(me->p_ship)) + { /* if ship can be docked to */ + int i; + me->p_docked = 0; /* then set all ports as */ + for (i = 0; i < MAXPORTS; i++) /* vacant */ + me->p_port[i] = VACANT; + } + if (weaponsallowed[WP_MISSILE] && + (me->p_ship.s_missilestored > 0) && + (me->p_kills >= configvals->mskills)) + { + me->p_ship.s_nflags |= SFNHASMISSILE; /* arm ship with missile + * launcher */ + } + if (!(me->p_ship.s_nflags & SFNHASMISSILE)) + { + me->p_ship.s_missilestored = 0; /* no missiles if no launcher */ + } + if (weaponsallowed[WP_PLASMA] && + (me->p_ship.s_plasma.cost > 0) && + (me->p_kills >= configvals->plkills)) + { + me->p_ship.s_nflags |= SFNPLASMAARMED; /* arm ship with plasma + * launcher */ + } + me->p_specweap = 0; + + /* + * fix this now since we can't do it right in a conf.sysdef/default/pl_gen + * ordering... sigh. + */ + if (!configvals->warpdrive) + me->p_ship.s_nflags &= ~SFNCANWARP; +} + + +/*----------END OF FILE-----*/