#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "player.h"
#include "borg.h"
/***********************************************************************
* implant requirements *
* ----------------------------------------------------------- *
* heart none *
* liver none *
* stomach none *
* neuro_processor none *
* adrenal_boost heart *
* booster_ware neuro_processor *
* boost_master booster_ware *
* nanite_factory stomach, liver, battery *
* wolvers both arms replaced *
* cham_field nanites, nero_processor, eyes *
* muscle enhance nanites *
* bone lace nanites *
* radio_splice ears, neuro_proc *
* targeting_comp eyes, nero_proc *
* arms/legs neuro_proc/nanites *
* battery none *
* eyes/ears neuroproc/nanites *
* railgun arms, tele_optics, target_comp *
* tele_optics eyes *
* taser arms, battery *
**********************************************************************/
void do_taser( CHAR_DATA *ch, char *argument)
{
char arg[MAX_STRING_LENGTH];
CHAR_DATA *victim;
int dam;
char buf[MAX_STRING_LENGTH];
int cost = number_range(100, 300);
argument = one_argument(argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG) )
{
send_to_char( "Huh?\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], TASER))
{
send_to_char( "You have no taser installed.\n\r", ch);
return;
}
if( (victim = get_char_room(ch, arg)) == NULL)
{
send_to_char( "You cant seem to find them.\n\r", ch);
return;
}
/*
if( IS_NPC(victim))
{
send_to_char( "Not on npc's.\n\r", ch);
return;
}
if( ch->pcdata->powers[NANITES] < cost)
{
send_to_char("You dont have enough nanites to taser with.\n\r", ch);
return;
}
*/
if( victim->level < 3)
{
send_to_char("Not on mortals.\n\r", ch);
return;
}
if( IS_SET(ch->in_room->room_flags,ROOM_SAFE) )
{
send_to_char("Not while safe.\n\r", ch);
return;
}
ch->pcdata->powers[NANITES] -= cost;
dam = number_range( 900, 1500);
sprintf( buf, "You hit %s with your taser! #0[#r%d#0]\n\r", victim->name, dam);
send_to_char( buf, ch);
sprintf(buf, "%s hits you with a taser! #0[#L%d#0]\n\r", ch->name, dam);
send_to_char(buf, victim);
sprintf(buf, "%s hits %s with a taser! #0[#r%d#0]\n\r", ch->name, victim->name, dam);
act(buf, ch, NULL, victim, TO_NOTVICT);
if( ch->fighting == NULL)
multi_hit(ch, victim, TYPE_UNDEFINED);
WAIT_STATE(ch, 10);
WAIT_STATE(victim, 15);
return;
}
void do_rifle( CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
int cost;
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
cost = (ch->pcdata->powers[RIFLE]+1) * 15;
if( arg[0] == '\0')
{
send_to_char("Syntax: rifle <improve/show>.\n\r", ch);
return;
}
if( !str_cmp( arg, "improve"))
{
if( ch->pcdata->powers[RIFLE] >= 12)
{
send_to_char("SYSTEM NOTICE: Memory has already been fully augmented for ranged combat.\n\r", ch);
return;
}
if( ch->practice < cost)
{
sprintf(buf,"SYSTEM ERROR: Missing the %d primal points required to purchase memory files.\n\r", cost);
send_to_char(buf, ch);
return;
}
send_to_char("SYSTEM NOTICE: Memory files have been upgraded.\n\r", ch);
ch->pcdata->powers[RIFLE] += 1;
ch->practice -= cost;
return;
}
else if( !str_cmp(arg, "show"))
{
send_to_char("SYSTEM: Analysing system...\n\r", ch);
send_to_char("SYSTEM: Analysis complete...\n\r", ch);
sprintf(buf, "Memory files on demolitions have been upgraded %d times.\n\r",
ch->pcdata->powers[RIFLE]);
send_to_char(buf, ch);
sprintf(buf, "Bullet damage is estimated at %d to %d.\n\r", (100 * ch->pcdata->powers[RIFLE]),
(165 * ch->pcdata->powers[RIFLE]));
send_to_char(buf, ch);
return;
}
else
{
send_to_char("Not a valid option.\n\r", ch);
return;
}
return;
}
void do_snipe( CHAR_DATA *ch, char *argument )
{
ROOM_INDEX_DATA *location;
char arg1[MAX_STRING_LENGTH];
char arg2[MAX_STRING_LENGTH];
CHAR_DATA *victim;
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg1[0] == '\0' )
{
send_to_char("Who would you like to snipe?\n\r", ch);
return;
}
if( arg2[0] == '\0' )
{
send_to_char("Which direction do you wish to snipe?\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS))
{
send_to_char("You need telescopic vision.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN))
{
send_to_char("You need a rail gun.\n\r", ch);
return;
}
if( (victim = get_char_world(ch, arg1)) == NULL)
{
send_to_char("They are not there.\n\r", ch);
return;
}
if( ch->pcdata->powers[RIFLE] < 1)
{
send_to_char("You dont have the skill to shoot a gun.\n\r", ch);
return;
}
if(IS_SET(ch->in_room->room_flags,ROOM_SAFE) )
{
send_to_char("Not while you are safe.\n\r", ch);
return;
}
if(IS_SET(ch->in_room->room_flags,ROOM_SAFE) )
{
send_to_char("They are safe.\n\r", ch);
return;
}
location = ch->in_room;
snipedirection(ch,victim,3,arg2);
/* Move them back */
char_from_room(ch);
char_to_room(ch,location);
return;
}
void snipedirection( CHAR_DATA *ch, CHAR_DATA *victim,int range,char arg[MAX_STRING_LENGTH] )
{
ROOM_INDEX_DATA *to_room;
EXIT_DATA *pexit;
CHAR_DATA *vch;
CHAR_DATA *vch_next;
int door;
bool found = FALSE;
int dam;
char buf[MAX_STRING_LENGTH];
int level;
bool did_hit = FALSE;
if( IS_NPC(ch))
return;
if ( arg[0] == '\0' )
return;
if ( !str_cmp( arg, "n" ) || !str_cmp( arg, "north" ) ) door = 0;
else if ( !str_cmp( arg, "e" ) || !str_cmp( arg, "east" ) ) door = 1;
else if ( !str_cmp( arg, "s" ) || !str_cmp( arg, "south" ) ) door = 2;
else if ( !str_cmp( arg, "w" ) || !str_cmp( arg, "west" ) ) door = 3;
else if ( !str_cmp( arg, "u" ) || !str_cmp( arg, "up" ) ) door = 4;
else if ( !str_cmp( arg, "d" ) || !str_cmp( arg, "down" ) ) door = 5;
else
{
send_to_char("You can only snipe people north, south, east, west, up or down.\n\r", ch);
return;
}
if ( ((pexit = ch->in_room->exit[door]) == NULL)
|| ((to_room = pexit->to_room) == NULL))
return;
level = 7*ch->pcdata->powers[RIFLE];
if( level >= number_percent())
did_hit = TRUE;
pexit = ch->in_room->exit[door];
if (IS_SET(pexit->exit_info, EX_CLOSED) )
{
send_to_char("Cant aim through doors.\n\r", ch);
return;
}
char_from_room(ch);
char_to_room(ch,to_room);
for(vch = ch->in_room->people; vch != NULL; vch = vch_next )
{
vch_next = vch->next_in_room;
if( vch == victim)
found = TRUE;
}
if(!found && (range != 0))
snipedirection(ch, victim, range-1, arg);
if(!found && (range == 0))
{
send_to_char("They are not in range.\n\r", ch);
return;
}
if( found && !did_hit)
{
send_to_char("You missed your mark!\n\r", ch);
act("A bullet flies out of nowhere and slams into the wall!\n\r", ch, NULL,victim,TO_VICT);
return;
}
if(found && did_hit)
{
dam = number_range( (100 * ch->pcdata->powers[RIFLE]), (165 * ch->pcdata->powers[RIFLE]));
victim->hit -= dam;
if( victim->hit < -10)
victim->hit = -10;
sprintf(buf, "#5A bullet comes out of nowhere and slams into your body![%d]#n\n\r", dam);
send_to_char(buf,victim);
sprintf(buf, "You hit %s with a well aimed shot!.[%d]\n\r", victim->name, dam);
send_to_char( buf, ch);
WAIT_STATE(ch, 12);
return;
}
return;
}
void do_repair( CHAR_DATA *ch, char *argument)
{
int heal = number_range( 300, 750);
int cost = 400;
if(IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{ send_to_char("Huh?\n\r", ch); return;}
if( ch->pcdata->powers[NANITES] < cost)
{
send_to_char("SYSTEM ERROR: Not enough nanites to heal.\n\r", ch);
return;
}
if( ch->hit >= ch->max_hit)
{
send_to_char("SYSTEM ERROR: Nothing left to repair.\n\r", ch);
return;
}
ch->hit += heal;
ch->pcdata->powers[NANITES] -= cost;
send_to_char("Nanites crawl all over your body, repairing various damage.\n\r", ch);
act("Nanites are exuded from $n's body and being repairs.\n\r", ch, NULL, NULL, TO_ROOM);
WAIT_STATE(ch, 6);
return;
}
void do_implant( CHAR_DATA *ch, char *argument)
{
char arg[MAX_STRING_LENGTH];
char buf[MAX_STRING_LENGTH];
int cost;
int bit;
bool can_do = TRUE;
argument = one_argument(argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] == '\0')
{
send_to_char("Implant what?\n\r", ch);
send_to_char("Options are: neuroprocessor, boosterware, boostmaster,nanite, battery,\n\r",ch);
send_to_char("wolvers, chameleon, muscle, bonelace, radiosplice, adrenalboost,\n\r", ch);
send_to_char("targetcomp,teleoptic, railgun, taser.\n\r", ch);
return;
}
if( !str_cmp( arg, "neuroprocessor"))
{
bit = NEUROPROCESSOR;
cost = 50;
}
else if( !str_cmp( arg, "boosterware"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("You need a neuro-processor first.\n\r", ch);
can_do = FALSE;
}
bit = BOOSTER_WARE;
cost = 50;
}
else if( !str_cmp( arg, "taser"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)
|| !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY))
{
send_to_char("You must have both arms, and a battery installed.\n\r", ch);
return;
}
bit = TASER;
cost = 50;
}
else if( !str_cmp( arg, "railgun"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)
|| !IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS))
{
send_to_char("You need both arms replaced, and teleoptics installed.\n\r", ch);
return;
}
bit = RAIL_GUN;
cost = 50;
}
else if( !str_cmp( arg, "teleoptics"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EYES))
{
send_to_char("You need your eyes replaced first.\n\r", ch);
return;
}
bit = TELE_OPTICS;
cost = 50;
}
else if( !str_cmp( arg, "boostmaster"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BOOSTER_WARE))
{
send_to_char("You need boosterware first.\n\r", ch);
can_do = FALSE;
}
bit = BOOST_MASTER;
cost = 50;
}
else if( !str_cmp( arg, "nanite"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_STOMACH)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_LIVER))
{
send_to_char("You first need a battery, new stomach, and a new liver.\n\r", ch);
can_do = FALSE;
}
bit = NANITE_FACTORY;
cost = 50;
}
else if( !str_cmp( arg, "battery"))
{
bit = BATTERY;
cost = 50;
}
else if( !str_cmp( arg, "wolvers"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM))
{
send_to_char("You must have both arms replaced first.\n\r", ch);
can_do = FALSE;
}
bit = WOLVERS;
cost = 50;
}
else if( !str_cmp( arg, "chameleon"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EYES)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)
|| !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY))
{
send_to_char("You need implant a nanite factory, neuro_processor, a batter, and replace.\n\r", ch);
send_to_char("your eyes to get the chameleon generator.\n\r", ch);
can_do = FALSE;
}
bit = CHAM_FIELD;
cost = 50;
}
else if( !str_cmp( arg, "muscle"))
{
if( !IS_SET( ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a nanite factory to install this.\n\r", ch);
can_do = FALSE;
}
bit = MUSCLE_ENHANCE;
cost = 30;
}
else if( !str_cmp(arg, "bonelace"))
{
if( !IS_SET( ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a nanite factory to install this.\n\r", ch);
can_do = FALSE;
}
bit = BONE_LACE;
cost = 25;
}
else if( !str_cmp(arg, "radiosplice"))
{
if( !IS_SET( ch->pcdata->powers[REPLACED], REP_EARS)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("You need ear replacements and a neuroprocessor for this.\n\r", ch);
can_do = FALSE;
}
bit = RADIO_SPLICE;
cost = 25;
}
else if( !str_cmp( arg, "adrenalboost"))
{
if( !IS_SET( ch->pcdata->powers[REPLACED], REP_HEART))
{
send_to_char("You need a replaced heart first.\n\r", ch);
can_do = FALSE;
}
bit = ADRENAL_BOOST;
cost = 25;
}
else if( !str_cmp(arg, "targetcomp"))
{
if( !IS_SET( ch->pcdata->powers[REPLACED], REP_EYES)
|| !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("You need eye replacements, a battery, and a neuroprocessor for this.\n\r", ch);
can_do = FALSE;
}
bit = TARGET_COMP;
cost = 35;
}
else
{
send_to_char("That is not a valid option.\n\r", ch);
return;
}
if( can_do == FALSE)
return;
if( ch->practice < cost)
{
sprintf( buf, "You need at least %d primal to gain that implant.\n\r", cost);
send_to_char( buf, ch);
return;
}
if( bit <= 0)
{
send_to_char("BUG: REPORT TO IMPS.\n\r", ch);
return;
}
if( IS_SET( ch->pcdata->powers[IMPLANT], bit))
{
send_to_char("That has already been implanted in you.\n\r", ch);
return;
}
cost = 50;
SET_BIT(ch->pcdata->powers[IMPLANT], bit);
do_save(ch, "");
sprintf( buf, "You have installed: %s.\n\r", arg);
return;
}
void do_replace(CHAR_DATA *ch, char *argument)
{
char arg[MAX_STRING_LENGTH];
char buf[MAX_STRING_LENGTH];
int cost;
int bit;
bool can_do = TRUE;
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] == '\0')
{
send_to_char("Replace what?\n\r", ch);
send_to_char("Options are: arm, leg, heart, liver, stomach, eyes, and ears.\n\r", ch);
return;
}
if( !str_cmp( arg, "arm"))
{
if( !IS_SET( ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a neuroprocessor and a nanite factory.\n\r", ch);
can_do = FALSE;
}
if( !IS_SET( ch->pcdata->powers[REPLACED], REP_L_ARM)
&& IS_SET( ch->pcdata->powers[REPLACED], REP_R_ARM))
{
bit = REP_L_ARM;
cost = 40;
}
else if( !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM))
{
bit = REP_R_ARM;
cost = 40;
}
else
can_do = FALSE;
}
else if( !str_cmp( arg, "leg"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)
|| !IS_SET( ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a neuroprocessor and a nanite factory.\n\r", ch);
can_do = FALSE;
}
if( !IS_SET( ch->pcdata->powers[REPLACED], REP_L_LEG)
&& IS_SET( ch->pcdata->powers[REPLACED], REP_R_LEG))
{
bit = REP_L_LEG;
cost = 40;
}
else if( !IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG))
{
bit = REP_R_LEG;
cost = 40;
}
else
can_do = FALSE;
}
else if( !str_cmp( arg, "heart"))
{
bit = REP_HEART;
cost = 30;
}
else if( !str_cmp( arg, "liver"))
{
bit = REP_LIVER;
cost = 30;
}
else if( !str_cmp( arg, "stomach"))
{
bit = REP_STOMACH;
cost = 30;
}
else if( !str_cmp( arg, "eyes"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a neuro-processor and nanites to get eyes.\n\r", ch);
can_do = FALSE;
}
bit = REP_EYES;
cost = 30;
}
else if( !str_cmp( arg, "ears"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("You need a neuro-processor and nanites to get ears.\n\r", ch);
can_do = FALSE;
}
bit = REP_EARS;
cost = 30;
}
else
{
send_to_char("That is not a valid option.\n\r", ch);
return;
}
if( can_do == FALSE)
return;
if( ch->practice < cost)
{
sprintf(buf, "You need at least %d primal to replace your %s.\n\r", cost, arg);
send_to_char( buf, ch);
return;
}
if( IS_SET( ch->pcdata->powers[REPLACED], bit))
{
send_to_char("That has already been replaced.\n\r", ch);
return;
}
ch->practice -= cost;
SET_BIT(ch->pcdata->powers[REPLACED], bit);
sprintf( buf, "You have replaced your %s.\n\r", arg);
send_to_char( buf, ch);
do_save( ch, "");
return;
}
/*
void do_make_bomb( CHAR_DATA *ch, char *argument)
{
OBJ_DATA *obj;
OBJ_INDEX_DATA *obj2;
int cost = 1000;
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( ch->level < 3)
return;
if( ch->pcdata->powers[NANITES] < cost)
{
send_to_char("SYSTEM ERROR: Nanite reserves are insufficent for bomb creation.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("SYSTEM ERROR: Missing implants: Nanite factory or a neuroprocessor.\n\r", ch);
return;
}
if ( (obj2 = get_obj_index( OBJ_VNUM_BOMB ) ) == NULL )
{
send_to_char( "Error...missing object, please inform Kale.\n\r", ch );
return;
}
obj = create_object( obj2, 25 );
obj->item_type = ITEM_BOMB;
obj->value[3] = -1;
obj->value[4] = 0;
free_string(obj->name);
obj->name = str_dup("Bomb");
free_string(obj->short_descr);
obj->short_descr = str_dup("A bomb");
free_string(obj->description);
obj->description = str_dup("A bomb has been left to explode on the ground.");
obj->timer = 7;
obj_to_char(obj, ch);
send_to_char("You have made a bomb.\n\r", ch);
act("$n has made a bomb!\n\r", ch, NULL, NULL, TO_ROOM);
ch->pcdata->powers[NANITES] -= cost;
WAIT_STATE(ch, 12);
return;
}
void do_arm( CHAR_DATA *ch, char *argument)
{
OBJ_DATA *obj;
char arg1[MAX_STRING_LENGTH];
char arg2[MAX_STRING_LENGTH];
int timer;
argument = one_argument( argument, arg1);
argument = one_argument( argument, arg2);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( ch->level < 3)
return;
if( (arg1[0] == '\0') || (arg2[0] =='\0'))
{
send_to_char("SYSTEM ERROR: No target bomb or missing timer specifications.\n\r", ch);
return;
}
if( !is_number(arg2))
{
send_to_char("SYSTEM ERROR: Timer input is non-numeric, please re-specify.\n\r", ch);
return;
}
if(( obj = get_obj_carry( ch, arg1 )) == NULL)
{
send_to_char( "SYSTEM ERROR: No bomb found.\n\r", ch );
return;
}
timer = atoi(arg2);
if( (timer < 1) || (timer > 30))
{
send_to_char("SYSTEM ERROR: Fuse can't burn for less than 1 second or longer than 30 seconds.\n\r", ch);
return;
}
if( obj->item_type != ITEM_BOMB)
{
send_to_char("SYSTEM ERROR: Specified target object is not categorized as an explosive..aborting.\n\r", ch);
return;
}
if( ch->pcdata->powers[DEMOLITION] == 0)
{
send_to_char("SYSTEM ERROR: Missing memory files on demolition technology..aborting.\n\r", ch);
return;
}
obj->value[0] = 125 * (ch->pcdata->powers[DEMOLITION]);
obj->value[1] = 350 * (ch->pcdata->powers[DEMOLITION]);
obj->value[2] = 2;
obj->value[3] = timer;
send_to_char("Arming...\n\r", ch);
stc("Arming successful, vacate blast zone immediately.\n\r", ch);
send_to_char("$n has just armed a bomb!\n\r", ch, NULL,NULL, TO_ROOM);
WAIT_STATE(ch, 6);
return;
}
void do_mine( CHAR_DATA *ch, char *argument)
{
OBJ_DATA *obj;
OBJ_INDEX_DATA *obj2;
int cost = 1500;
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
stc("Huh?\n\r", ch);
return;
}
if( ch->pcdata->powers[DEMOLITION] < 1)
{
stc("SYSTEM ERROR: Missing memory files on demolition technology...aborting.\n\r", ch);
return;
}
for ( obj = ch->in_room->contents; obj != NULL; obj = obj->next_content )
{
if( obj->item_type != ITEM_BOMB)
continue;
if( (obj->item_type == ITEM_BOMB) && (obj->value[4] == BOMB_MINE));
{
send_to_char("SYSTEM ERROR: A mine has already been lain here...aborting.\n\r", ch);
return;
}
}
if( ch->pcdata->powers[NANITES] < cost)
{
stc("SYSTEM ERROR: Missing required amount of nanites...aborting.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)
|| !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("SYSTEM ERROR: Missing implants: Nanite factory or a neuroprocessor.\n\r", ch);
return;
}
if ( (obj2 = get_obj_index( OBJ_VNUM_MINE ) ) == NULL )
{
send_to_char( "Error...missing object, please inform Kale.\n\r", ch );
return;
}
obj = create_object( obj2, 25 );
obj->item_type = ITEM_BOMB;
obj->value[0] = 130 * ch->pcdata->powers[DEMOLITION];
obj->value[1] = 360 * ch->pcdata->powers[DEMOLITION];
obj->value[2] = 3;
obj->value[3] = -1;
obj->value[4] = BOMB_MINE;
obj->armed_by = ch;
free_string(obj->name);
obj->name = str_dup("Mine");
free_string(obj->short_descr);
obj->short_descr = str_dup("A mine");
free_string(obj->description);
obj->description = str_dup("A mine has been left as a trap.");
obj_to_room(obj, ch->in_room);
stc("SYSTEM: Constructing...construction complete.\n\r", ch);
act("$n has made a mine!\n\r", ch, NULL, NULL, TO_ROOM);
ch->pcdata->powers[NANITES] -= cost;
if( IS_SET(obj->wear_flags, ITEM_TAKE))
REMOVE_BIT( obj->wear_flags, ITEM_TAKE);
WAIT_STATE(ch, 12);
return;
}
*/
void do_demolitions( CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
int cost;
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
cost = (ch->pcdata->powers[DEMOLITION]+1) * 15;
if( arg[0] == '\0')
{
send_to_char("Syntax: demolition <improve/show>.\n\r", ch);
return;
}
if( !str_cmp( arg, "improve"))
{
if( ch->pcdata->powers[DEMOLITION] >= 12)
{
send_to_char("SYSTEM NOTICE: Memory has already been fully augmented for demolition knowledge.\n\r", ch);
return;
}
if( ch->practice < cost)
{
sprintf(buf,"SYSTEM ERROR: Missing the %d primal points required to purchase memory files.\n\r", cost);
send_to_char(buf, ch);
return;
}
send_to_char("SYSTEM NOTICE: Memory files have been upgraded.\n\r", ch);
ch->pcdata->powers[DEMOLITION] += 1;
ch->practice -= cost;
return;
}
else if( !str_cmp(arg, "show"))
{
send_to_char("SYSTEM: Analysing system...\n\r", ch);
send_to_char("SYSTEM: Analysis complete...\n\r", ch);
sprintf(buf, "Memory files on demolitions have been upgraded %d times.\n\r",
ch->pcdata->powers[DEMOLITION]);
send_to_char(buf, ch);
sprintf(buf, "Bomb damage is estimated at %d to %d.\n\r", (125 * ch->pcdata->powers[DEMOLITION]),
(350 * ch->pcdata->powers[DEMOLITION]));
send_to_char(buf, ch);
sprintf(buf, "Mine damage is estimated at %d to %d.\n\r", (130 * ch->pcdata->powers[DEMOLITION]),
(360 * ch->pcdata->powers[DEMOLITION]));
send_to_char(buf, ch);
sprintf(buf, "Missle damage is estimated at %d to %d.\n\r", (140 * ch->pcdata->powers[DEMOLITION]),
(420 * ch->pcdata->powers[DEMOLITION]));
send_to_char(buf, ch);
return;
}
else
{
send_to_char("Not a valid option.\n\r", ch);
return;
}
return;
}
void do_factory( CHAR_DATA *ch, char *argument)
{
char arg[MAX_STRING_LENGTH];
argument = one_argument(argument, arg);
if(IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] == '\0')
{
send_to_char("Syntax: factory <on/off>.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("SYSTEM ERROR: Missing implant: Nanite factory.\n\r", ch);
return;
}
if( !str_cmp( arg, "on"))
{
if( ch->pcdata->powers[FACTORY] == 1)
{
send_to_char("SYSTEM ERROR: Factory has already been turned on.\n\r", ch);
return;
}
else
{
ch->pcdata->powers[FACTORY] = 1;
send_to_char("SYSTEM: Acknowledged. Nanite factory has been turned on.\n\r", ch);
}
return;
}
else if( !str_cmp( arg, "off"))
{
if( ch->pcdata->powers[FACTORY] == 0)
{
send_to_char("SYSTEM ERROR: Factory is already in the off position.\n\r", ch);
return;
}
else
{
ch->pcdata->powers[FACTORY] = 0;
send_to_char("SYSTEM: Acknowledged. Nanite factory has been powered down.\n\r", ch);
}
return;
}
else
{
send_to_char("SYSTEM ERROR: Option not identified.\n\r", ch);
return;
}
return;
}
void do_sys_status(CHAR_DATA *ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
send_to_char("SYSTEM: Checking system configuration.\n\r", ch);
send_to_char(" System check complete...compiling results.\n\r", ch);
send_to_char(" Compilation complete..sending data to output platform.\n\r", ch);
send_to_char(" Implants:\n\r", ch);
send_to_char(" -----------------------------------------------------------\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST))
send_to_char(" Adrenal booster\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
send_to_char(" Neuroprocessor\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], BOOSTER_WARE))
send_to_char(" Boosterware neural accelerator.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER))
send_to_char(" BoostMaster upgrade for Boosterware.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
send_to_char(" Nanite factory.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], WOLVERS))
send_to_char(" Wolver wrist blades.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], TASER))
send_to_char(" Stun taser deteced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD))
send_to_char(" Chameleon cloaking field.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], MUSCLE_ENHANCE))
send_to_char(" Muscle enhancing fibers detected.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], BONE_LACE))
send_to_char(" Bone strengthening fibers detected.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE))
send_to_char(" Radio splicing installed.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP))
send_to_char(" Targeting computer detected.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], BATTERY))
send_to_char(" Nuclear power cell detected.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN))
send_to_char(" Rail gun add on detected.\n\r", ch);
if( IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS))
send_to_char(" Tele optics upgrade detected.\n\r", ch);
send_to_char(" Replacements:\n\r", ch);
send_to_char(" ---------------------------------------------------------\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM))
send_to_char(" Left arm has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM))
send_to_char(" Right arm has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG))
send_to_char(" Left leg has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG))
send_to_char(" Right leg has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_HEART))
send_to_char(" Your heart has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_LIVER))
send_to_char(" Your liver has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_STOMACH))
send_to_char(" Your stomach has been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_EYES))
send_to_char(" Your eyes have been replaced.\n\r", ch);
if( IS_SET(ch->pcdata->powers[REPLACED], REP_EARS))
send_to_char(" Your ears have been replaced.\n\r", ch);
send_to_char(" --------------------------------------------------------\n\r", ch);
sprintf( buf, "You have %d nanites in stasis.\n\r", ch->pcdata->powers[NANITES]);
send_to_char( buf, ch);
send_to_char("Psychological evaluation program running....\n\r", ch);
send_to_char(buf, ch);
send_to_char("End of report...terminating analysis program.\n\r", ch);
return;
}
/*
void do_launch(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
char arg[MAX_STRING_LENGTH];
int cost = 2000;
OBJ_DATA *obj;
OBJ_INDEX_DATA *obj2;
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( ch->pcdata->powers[NANITES] < cost)
{
send_to_char("SYSTEM ERROR: Not enough nanites to make a missle.\n\r", ch);
return;
}
if( arg[0] =='\0')
{
stc("SYSTEM ERROR: No target designated.\n\r", ch);
return;
}
if( (victim = get_char_world( ch, arg)) == NULL)
{
stc("SYSTEM ERROR: Designated target can not be found.\n\r", ch);
return;
}
if( victim->in_room == NULL || ch->in_room->area != victim->in_room->area)
{
stc("SYSTEM ERROR: Target is out of range.\n\r", ch);
return;
}
if( is_safe(ch, victim))
{
stc("SYSTEM ERROR: Target is shielded from targetting sensors.\n\r", ch);
return;
}
if( victim->level < 3)
{
stc("Only on avatars.\n\r", ch);
return;
}
if( IS_SET(ch->in_room->room_flags, ROOM_SAFE))
{
stc("Not in safe room.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG)
|| !IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG))
{
stc("SYSTEM_ERROR: Your inferior organic legs cant handle the pressure.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP))
{
stc("SYSTEM_ERROR: No targetting computer connected to system...aborting.\n\r", ch);
return;
}
if ( (obj2 = get_obj_index( OBJ_VNUM_MISSLE ) ) == NULL )
{
send_to_char( "Error...missing object, please inform Kale.\n\r", ch );
return;
}
obj = create_object( obj2, 25 );
obj->item_type = ITEM_BOMB;
obj->value[0] = 140 * ch->pcdata->powers[DEMOLITION];
obj->value[1] = 420 * ch->pcdata->powers[DEMOLITION];
obj->value[2] = 4;
obj->value[3] = 5;
obj->value[4] = 0;
if( IS_SET(obj->wear_flags, ITEM_TAKE))
REMOVE_BIT( obj->wear_flags, ITEM_TAKE);
obj_to_room(obj, victim->in_room);
act("$n has launched a missle!\n\r", ch, NULL, NULL, TO_ROOM);
stc("You have launched a missle.\n\r", ch);
if( ch->pcdata->powers[CHAM] == 1)
ch->pcdata->powers[CHAM] = 0;
ch->pcdata->powers[NANITES] -= cost;
WAIT_STATE(ch, 20);
return;
}
*/
void do_splice( CHAR_DATA *ch, char *argument)
{
int channel = 0;
char arg[MAX_INPUT_LENGTH];
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] =='\0')
{
send_to_char("SYSTEM ERROR: No frequency selected.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE))
{
send_to_char("SYSTEM ERROR: No Radio slicer detected in system.\n\r", ch);
return;
}
if( !str_cmp( arg, "none"))
channel = 0;
else if( !str_cmp( arg, "vampire"))
channel = SPLICE_VAMP;
else if( !str_cmp( arg, "wolf"))
channel = SPLICE_WOLF;
else if( !str_cmp( arg, "ninja"))
channel = SPLICE_NINJA;
else if( !str_cmp( arg, "drow"))
channel = SPLICE_DROW;
// else if( !str_cmp( arg, "dragon"))
// channel = SPLICE_DRAG;
else if( !str_cmp( arg, "monk"))
channel = SPLICE_MONK;
else if( !str_cmp( arg, "mage"))
channel = SPLICE_MAGE;
else if( !str_cmp( arg, "demon"))
channel = SPLICE_DEMON;
// else if( !str_cmp( arg, "jedi"))
// channel = SPLICE_JEDI;
// else if( !str_cmp( arg, "amazon"))
// channel = SPLICE_AMA;
else
{
send_to_char("SYSTEM ERROR: Not a valid frequency.\n\r", ch);
return;
}
send_to_char("SYSTEM: Frequency has been found, sending audio transmission now...\n\r", ch);
ch->pcdata->powers[SPLICE] = channel;
WAIT_STATE(ch, 12);
return;
}
void do_uninstall( CHAR_DATA *ch, char *argument)
{
/*oh this func is gonna be fuuuun...NOT*/
char arg[MAX_STRING_LENGTH];
bool ok = TRUE;
int bit = 0;
bool implant = FALSE;
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] == '\0')
{
send_to_char("SYSTEM ERROR: No implant designated..aborting.\n\r", ch);
return;
}
/* first those implants with no dependancies */
if( !str_cmp( arg, "taser"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], TASER))
{
send_to_char("SYSTEM ERROR: No taser installed.\n\r", ch);
ok = FALSE;
}
bit = TASER;
implant = TRUE;
}
else if( !str_cmp( arg, "railgun"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN))
{
send_to_char("SYSTEM ERROR: Rail gun not installed.\n\r", ch);
ok = FALSE;
}
bit = RAIL_GUN;
implant = TRUE;
}
else if( !str_cmp( arg, "teleoptics"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS))
{
send_to_char("SYSTEM ERROR: Teleoptics not installed.\n\r", ch);
return;
}
bit = TELE_OPTICS;
implant = TRUE;
}
else if( !str_cmp( arg, "adrenalboost"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST))
{
send_to_char("SYSTEM ERROR: Adrenal booster not installed.\n\r", ch);
ok = FALSE;
}
bit = ADRENAL_BOOST;
implant = TRUE;
}
else if( !str_cmp( arg, "boostmaster"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER))
{
send_to_char("SYSTEM ERROR: Boost Master not installed.\n\r", ch);
ok = FALSE;
}
bit = BOOST_MASTER;
implant = TRUE;
}
else if( !str_cmp( arg, "chameleon"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD))
{
send_to_char("SYSTEM ERROR: Chameleon cloaking field not installed.\n\r", ch);
ok = FALSE;
}
bit = CHAM_FIELD;
implant = TRUE;
}
else if( !str_cmp(arg, "muscle"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], MUSCLE_ENHANCE))
{
send_to_char("SYSTEM ERROR: No muscle augmentation found.\n\r", ch);
ok = FALSE;
}
bit = MUSCLE_ENHANCE;
implant = TRUE;
}
else if( !str_cmp( arg, "bonelace"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BONE_LACE))
{
send_to_char("SYSTEM ERROR: Bone augmentation not installed.\n\r", ch);
ok = FALSE;
}
bit = BONE_LACE;
implant = TRUE;
}
else if( !str_cmp( arg, "radiosplice"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE))
{
send_to_char("SYSTEM ERROR: Radio splicer not found.\n\r", ch);
ok = FALSE;
}
ch->pcdata->powers[SPLICE] = 0;
bit = RADIO_SPLICE;
implant = TRUE;
}
else if( !str_cmp( arg, "targetcomp"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP))
{
send_to_char("SYSTEM ERROR: No targeting computer installed.\n\r", ch);
ok = FALSE;
}
bit = TARGET_COMP;
implant = TRUE;
}
else if( !str_cmp( arg, "leg"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG)
&& !IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG))
{
send_to_char("SYSTEM ERROR: No cybernetic leg replacements installed.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG)
&& !IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG))
bit = REP_L_LEG;
else
bit = REP_R_LEG;
implant = FALSE;
}
/* now we start those that have dependant systems */
else if( !str_cmp( arg, "heart"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_HEART))
{
send_to_char("SYSTEM ERROR: No cybernetic heart installed.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST))
{
send_to_char("SYSTEM ERROR: Adrenal boost must be removed first.\n\r", ch);
ok = FALSE;
}
bit = REP_HEART;
implant = FALSE;
}
else if( !str_cmp( arg, "stomach"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_STOMACH))
{
send_to_char("SYSTEM ERROR: No stomach replacement found.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("SYSTEM ERROR: Nanite factory must be removed first.\n\r", ch);
ok = FALSE;
}
bit = REP_STOMACH;
implant = FALSE;
}
else if( !str_cmp( arg, "liver"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_LIVER))
{
send_to_char("SYSTEM ERROR: No liver replacement found.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("SYSTEM ERROR: Nanite factory must be removed first.\n\r", ch);
ok = FALSE;
}
bit = REP_LIVER;
implant = FALSE;
}
else if( !str_cmp( arg, "wolvers"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], WOLVERS))
{
send_to_char("SYSTEM ERROR: Wolvers not installed.\n\r", ch);
ok = FALSE;
}
bit = WOLVERS;
implant = TRUE;
}
else if( !str_cmp( arg, "arm"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
&& !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM))
{
send_to_char("SYSTEM ERROR: No cybernetic arm replacements found.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], WOLVERS)
|| IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN)
|| IS_SET(ch->pcdata->powers[IMPLANT], TASER))
{
send_to_char("SYSTEM ERROR: Wolvers,taser, and rail gun must be removed first.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
&& !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM))
bit = REP_L_ARM;
else
bit = REP_R_ARM;
implant = FALSE;
}
else if( !str_cmp(arg, "battery"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY))
{
send_to_char("SYSTEM ERROR: No battery installed.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)
|| IS_SET(ch->pcdata->powers[IMPLANT], TASER))
{
send_to_char("SYSTEM ERROR: Nanite factory and taser must be removed first.\n\r", ch);
ok = FALSE;
}
bit = BATTERY;
implant = TRUE;
}
else if( !str_cmp( arg, "ears"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EARS))
{
send_to_char("SYSTEM ERROR: No auditory rebuild detected.\n\r", ch);
ok = FALSE;
}
if( IS_SET( ch->pcdata->powers[IMPLANT], RADIO_SPLICE))
{
send_to_char("SYSTEM ERROR: Radio splice must be removed first.\n\r", ch);
ok = FALSE;
}
bit = REP_EARS;
implant = FALSE;
}
else if( !str_cmp( arg, "eyes"))
{
if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EYES))
{
send_to_char("SYSTEM ERROR: No optical rebuild detected.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD)
|| IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS)
|| IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP))
{
send_to_char("SYSTEM ERROR: Must remove following items: Cham field, Targeting computer,Teleoptics.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->act, PLR_HOLYLIGHT) && (ok == TRUE))
REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
bit = REP_EYES;
implant = FALSE;
}
else if( !str_cmp(arg, "boosterware"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], BOOSTER_WARE))
{
send_to_char("SYSTEM ERROR: No Boosterware installed.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER))
{
send_to_char("SYSTEM ERROR: Must remove boost master first.\n\r", ch);
ok = FALSE;
}
bit = BOOSTER_WARE;
implant = TRUE;
}
else if( !str_cmp( arg, "neuroprocessor"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR))
{
send_to_char("SYSTEM ERROR: Neuro-Processor not installed.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD)
|| IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE)
|| IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_EYES)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_EARS)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG))
{
send_to_char("SYSTEM ERROR: Following items must be removed first: Chameleon field, Radio splice,\n\r", ch);
send_to_char("targeting computer, eyes, ears, arms and legs.\n\r", ch);
ok = FALSE;
}
bit = NEUROPROCESSOR;
implant = TRUE;
}
else if( !str_cmp( arg, "nanite"))
{
if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY))
{
send_to_char("SYSTEM ERROR: No Nanite factory found.\n\r", ch);
ok = FALSE;
}
if( IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD)
|| IS_SET(ch->pcdata->powers[IMPLANT], MUSCLE_ENHANCE)
|| IS_SET(ch->pcdata->powers[IMPLANT], BONE_LACE)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_EARS)
|| IS_SET(ch->pcdata->powers[REPLACED], REP_EYES))
{
send_to_char("SYSTEM ERROR: Following items must be removed first: Chameleon field, bone lace,\n\r", ch);
send_to_char("muscle enhancement, arms, legs, ears, eyes.\n\r", ch);
ok = FALSE;
}
bit = NANITE_FACTORY;
implant = TRUE;
}
else
{
send_to_char("Options are: heart, liver, eyes, ears, nanite, stomach, neuroprocessor,\n\r", ch);
send_to_char("adrenalboost, boosterware, boostmaster, wolvers, chameleon, muscle, bonelace,\n\r", ch);
send_to_char("radiosplice, targetcomp, arm, leg, battery.\n\r", ch);
return;
}
if( !ok)
return;
if( implant)
REMOVE_BIT(ch->pcdata->powers[IMPLANT], bit);
else
REMOVE_BIT(ch->pcdata->powers[REPLACED], bit);
send_to_char("SYSTEM ERROR: Enhancement uninstalled, re-routing power.\n\r", ch);
return;
}
void do_chameleon( CHAR_DATA *ch, char *argument)
{
char arg[MAX_STRING_LENGTH];
argument = one_argument( argument, arg);
if( IS_NPC(ch))
return;
if( !IS_CLASS(ch, CLASS_CYBORG))
{
send_to_char("Huh?\n\r", ch);
return;
}
if( arg[0] == '\0')
{
send_to_char("SYSTEM ERROR: No argument provided.\n\r", ch);
return;
}
if( !IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD))
{
send_to_char("SYSTEM ERROR: No chamleon cloak installed.\n\r", ch);
return;
}
if( !str_cmp(arg, "on"))
{
if( ch->pcdata->powers[CHAM_PWR] == 0)
{
send_to_char("SYSTEM: Chameleon battery has been drained, recharging.\n\r", ch);
return;
}
ch->pcdata->powers[CHAM] = 1;
send_to_char("SYSTEM: Chameleon cloaking field engaged.\n\r", ch);
return;
}
else if( !str_cmp( arg, "off"))
{
ch->pcdata->powers[CHAM] = 0;
send_to_char("SYSTEM: Powering down chameleon cloaking field.\n\r", ch);
return;
}
else
{
send_to_char("On or off?\n\r", ch);
return;
}
return;
}