/***************************************************** * Cyborg code written for Godwars: The final chapter * * Code written by Kale/Jalerit. In the spirit of * * free code, it may be used by anyone as long as * * proper credit is given to me (Kale/Jalerit..you can* * use either name) * *****************************************************/ #if defined(macintosh) #include #else #include #endif #include #include #include #include #include "merc.h" #include "player.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_CYBORG(ch)) { stc("Huh?\n\r", ch); return; } if( !IS_SET(ch->pcdata->powers[IMPLANT], TASER)) { stc("You have no taser installed.\n\r", ch); return; } if( (victim = get_char_room(ch, arg)) == NULL) { stc("You cant seem to find them.\n\r", ch); return; } if( IS_NPC(victim)) { stc("Not on npc's.\n\r", ch); return; } if( ch->pcdata->powers[TASER_TIME] > 0) { stc("The batteries have yet to fully charge.\n\r", ch); return; } if( ch->pcdata->powers[NANITES] < cost) { stc("You dont have enough nanites to taser with.\n\r", ch); return; } if( victim->level < 3) { stc("Not on mortals.\n\r", ch); return; } if( is_safe(ch, victim)) { stc("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![%d]\n\r", victim->name, dam); stc( buf, ch); sprintf(buf, "%s hits you with a taser![%d]\n\r", ch->name, dam); stc(buf, victim); sprintf(buf, "%s hits %s with a taser![%d]\n\r", ch->name, victim->name, dam); act(buf, ch, NULL, victim, TO_NOTVICT); ch->fight_timer += 5; ch->pcdata->powers[TASER_TIME] = 3; 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_CYBORG(ch)) { stc("Huh?\n\r", ch); return; } cost = (ch->pcdata->powers[RIFLE]+1) * 15; if( arg[0] == '\0') { stc("Syntax: rifle .\n\r", ch); return; } if( !str_cmp( arg, "improve")) { if( ch->pcdata->powers[RIFLE] >= 12) { stc("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); stc(buf, ch); return; } stc("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")) { stc("SYSTEM: Analysing system...\n\r", ch); stc("SYSTEM: Analysis complete...\n\r", ch); sprintf(buf, "Memory files on demolitions have been upgraded %d times.\n\r", ch->pcdata->powers[RIFLE]); stc(buf, ch); sprintf(buf, "Bullet damage is estimated at %d to %d.\n\r", (100 * ch->pcdata->powers[RIFLE]), (165 * ch->pcdata->powers[RIFLE])); stc(buf, ch); return; } else { stc("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_CYBORG(ch)) { stc("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( safe_room(ch)) { send_to_char("Not while you are safe.\n\r", ch); return; } if( safe_room(victim)) { 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) { stc("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); stc(buf,victim); sprintf(buf, "You hit %s with a well aimed shot!.[%d]\n\r", victim->name, dam); stc( buf, ch); ch->fight_timer += 10; if( ch->fight_timer > 30) ch->fight_timer = 30; 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_CYBORG(ch)) { stc("Huh?\n\r", ch); return;} if( ch->pcdata->powers[NANITES] < cost) { stc("SYSTEM ERROR: Not enough nanites to heal.\n\r", ch); return; } if( ch->hit >= ch->max_hit) { stc("SYSTEM ERROR: Nothing left to repair.\n\r", ch); return; } ch->hit += heal; ch->pcdata->powers[NANITES] -= cost; stc("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 humanity; int cost; int bit; bool can_do = TRUE; argument = one_argument(argument, arg); if( IS_NPC(ch)) return; if( !IS_CYBORG(ch)) { 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; humanity = 8; 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; humanity = 7; cost = 30; } 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)) { stc("You must have both arms, and a battery installed.\n\r", ch); return; } bit = TASER; humanity = 4; cost = 20; } 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)) { stc("You need both arms replaced, and teleoptics installed.\n\r", ch); return; } bit = RAIL_GUN; humanity = 6; cost = 30; } else if( !str_cmp( arg, "teleoptics")) { if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EYES)) { stc("You need your eyes replaced first.\n\r", ch); return; } bit = TELE_OPTICS; humanity = 3; cost = 25; } 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; humanity = 6; cost = 30; } 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; humanity = 4; cost = 25; } else if( !str_cmp( arg, "battery")) { bit = BATTERY; humanity = 5; cost = 30; } 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; humanity = 8; cost = 35; } 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; humanity = 10; 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; humanity = 8; 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; humanity = 6; 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; humanity = 7; 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; humanity = 5; 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; humanity = 8; 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( ch->pcdata->powers[HUMANITY] < humanity) { sprintf( buf, "You need at least %d humanity to gain this.\n\r", humanity); 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; } ch->pcdata->powers[HUMANITY] -= humanity; ch->practice -= cost; 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; int humanity; bool can_do = TRUE; argument = one_argument( argument, arg); if( IS_NPC(ch)) return; if( !IS_CYBORG(ch)) { 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; humanity = 8; cost = 40; } else if( !IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)) { bit = REP_R_ARM; humanity = 8; 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; humanity = 8; cost = 40; } else if( !IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG)) { bit = REP_R_LEG; humanity = 8; cost = 40; } else can_do = FALSE; } else if( !str_cmp( arg, "heart")) { bit = REP_HEART; humanity = 4; cost = 30; } else if( !str_cmp( arg, "liver")) { bit = REP_LIVER; humanity = 4; cost = 30; } else if( !str_cmp( arg, "stomach")) { bit = REP_STOMACH; humanity = 4; 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; humanity = 8; 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; humanity = 8; cost = 30; } else { send_to_char("That is not a valid option.\n\r", ch); return; } if( can_do == FALSE) return; /* if( ch->pcdata->powers[HUMANITY] < humanity) { sprintf( buf, "You need at least %d humanity to replace your %s.\n\r", humanity, arg); send_to_char( buf, ch); 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->pcdata->powers[HUMANITY] -= humanity; 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_CYBORG(ch)) { 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_CYBORG(ch)) { 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)) { stc("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) { stc("SYSTEM ERROR: Specified target object is not categorized as an explosive..aborting.\n\r", ch); return; } if( ch->pcdata->powers[DEMOLITION] == 0) { stc("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; stc("Arming...\n\r", ch); stc("Arming successful, vacate blast zone immediately.\n\r", ch); act("$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_CYBORG(ch)) { 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_CYBORG(ch)) { stc("Huh?\n\r", ch); return; } cost = (ch->pcdata->powers[DEMOLITION]+1) * 15; if( arg[0] == '\0') { stc("Syntax: demolition .\n\r", ch); return; } if( !str_cmp( arg, "improve")) { if( ch->pcdata->powers[DEMOLITION] >= 12) { stc("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); stc(buf, ch); return; } stc("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")) { stc("SYSTEM: Analysing system...\n\r", ch); stc("SYSTEM: Analysis complete...\n\r", ch); sprintf(buf, "Memory files on demolitions have been upgraded %d times.\n\r", ch->pcdata->powers[DEMOLITION]); stc(buf, ch); sprintf(buf, "Bomb damage is estimated at %d to %d.\n\r", (125 * ch->pcdata->powers[DEMOLITION]), (350 * ch->pcdata->powers[DEMOLITION])); stc(buf, ch); sprintf(buf, "Mine damage is estimated at %d to %d.\n\r", (130 * ch->pcdata->powers[DEMOLITION]), (360 * ch->pcdata->powers[DEMOLITION])); stc(buf, ch); sprintf(buf, "Missle damage is estimated at %d to %d.\n\r", (140 * ch->pcdata->powers[DEMOLITION]), (420 * ch->pcdata->powers[DEMOLITION])); stc(buf, ch); return; } else { stc("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_CYBORG(ch)) { send_to_char("Huh?\n\r", ch); return; } if( arg[0] == '\0') { send_to_char("Syntax: factory .\n\r", ch); return; } if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)) { stc("SYSTEM ERROR: Missing implant: Nanite factory.\n\r", ch); return; } if( !str_cmp( arg, "on")) { if( ch->pcdata->powers[FACTORY] == 1) { stc("SYSTEM ERROR: Factory has already been turned on.\n\r", ch); return; } else { ch->pcdata->powers[FACTORY] = 1; stc("SYSTEM: Acknowledged. Nanite factory has been turned on.\n\r", ch); } return; } else if( !str_cmp( arg, "off")) { if( ch->pcdata->powers[FACTORY] == 0) { stc("SYSTEM ERROR: Factory is already in the off position.\n\r", ch); return; } else { ch->pcdata->powers[FACTORY] = 0; stc("SYSTEM: Acknowledged. Nanite factory has been powered down.\n\r", ch); } return; } else { stc("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_CYBORG(ch)) { stc("Huh?\n\r", ch); return; } stc("SYSTEM: Checking system configuration.\n\r", ch); stc(" System check complete...compiling results.\n\r", ch); stc(" Compilation complete..sending data to output platform.\n\r", ch); stc(" Implants:\n\r", ch); stc(" -----------------------------------------------------------\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST)) stc(" Adrenal booster\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)) stc(" Neuroprocessor\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], BOOSTER_WARE)) stc(" Boosterware neural accelerator.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER)) stc(" BoostMaster upgrade for Boosterware.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)) stc(" Nanite factory.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], WOLVERS)) stc(" Wolver wrist blades.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], TASER)) stc(" Stun taser deteced.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD)) stc(" Chameleon cloaking field.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], MUSCLE_ENHANCE)) stc(" Muscle enhancing fibers detected.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], BONE_LACE)) stc(" Bone strengthening fibers detected.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE)) stc(" Radio splicing installed.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP)) stc(" Targeting computer detected.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], BATTERY)) stc(" Nuclear power cell detected.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN)) stc(" Rail gun add on detected.\n\r", ch); if( IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS)) stc(" Tele optics upgrade detected.\n\r", ch); stc(" Replacements:\n\r", ch); stc(" ---------------------------------------------------------\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_ARM)) stc(" Left arm has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_R_ARM)) stc(" Right arm has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_L_LEG)) stc(" Left leg has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_R_LEG)) stc(" Right leg has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_HEART)) stc(" Your heart has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_LIVER)) stc(" Your liver has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_STOMACH)) stc(" Your stomach has been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_EYES)) stc(" Your eyes have been replaced.\n\r", ch); if( IS_SET(ch->pcdata->powers[REPLACED], REP_EARS)) stc(" Your ears have been replaced.\n\r", ch); stc(" --------------------------------------------------------\n\r", ch); sprintf( buf, "You have %d nanites in stasis.\n\r", ch->pcdata->powers[NANITES]); stc( buf, ch); stc("Psychological evaluation program running....\n\r", ch); sprintf(buf, "You have %d percent of your humanity left.\n\r", ch->pcdata->powers[HUMANITY]); stc(buf, ch); stc("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_CYBORG(ch)) { 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->fight_timer = 30; 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_CYBORG(ch) || (ch->level < 3)) { stc("Huh?\n\r", ch); return; } if( arg[0] =='\0') { stc("SYSTEM ERROR: No frequency selected.\n\r", ch); return; } if( !IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE)) { stc("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 { stc("SYSTEM ERROR: Not a valid frequency.\n\r", ch); return; } stc("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]; int humanity = 0; bool ok = TRUE; int bit = 0; bool implant = FALSE; argument = one_argument( argument, arg); if( IS_NPC(ch)) return; if( !IS_CYBORG(ch)) { stc("Huh?\n\r", ch); return; } if( arg[0] == '\0') { stc("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)) { stc("SYSTEM ERROR: No taser installed.\n\r", ch); ok = FALSE; } bit = TASER; implant = TRUE; humanity = 4; } else if( !str_cmp( arg, "railgun")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], RAIL_GUN)) { stc("SYSTEM ERROR: Rail gun not installed.\n\r", ch); ok = FALSE; } bit = RAIL_GUN; implant = TRUE; humanity = 6; } else if( !str_cmp( arg, "teleoptics")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], TELE_OPTICS)) { stc("SYSTEM ERROR: Teleoptics not installed.\n\r", ch); return; } bit = TELE_OPTICS; implant = TRUE; humanity = 3; } else if( !str_cmp( arg, "adrenalboost")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST)) { stc("SYSTEM ERROR: Adrenal booster not installed.\n\r", ch); ok = FALSE; } bit = ADRENAL_BOOST; implant = TRUE; humanity = 5; } else if( !str_cmp( arg, "boostmaster")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER)) { stc("SYSTEM ERROR: Boost Master not installed.\n\r", ch); ok = FALSE; } bit = BOOST_MASTER; implant = TRUE; humanity = 6; } else if( !str_cmp( arg, "chameleon")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], CHAM_FIELD)) { stc("SYSTEM ERROR: Chameleon cloaking field not installed.\n\r", ch); ok = FALSE; } bit = CHAM_FIELD; implant = TRUE; humanity = 10; } else if( !str_cmp(arg, "muscle")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], MUSCLE_ENHANCE)) { stc("SYSTEM ERROR: No muscle augmentation found.\n\r", ch); ok = FALSE; } bit = MUSCLE_ENHANCE; implant = TRUE; humanity = 8; } else if( !str_cmp( arg, "bonelace")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], BONE_LACE)) { stc("SYSTEM ERROR: Bone augmentation not installed.\n\r", ch); ok = FALSE; } bit = BONE_LACE; implant = TRUE; humanity = 6; } else if( !str_cmp( arg, "radiosplice")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], RADIO_SPLICE)) { stc("SYSTEM ERROR: Radio splicer not found.\n\r", ch); ok = FALSE; } ch->pcdata->powers[SPLICE] = 0; bit = RADIO_SPLICE; implant = TRUE; humanity = 7; } else if( !str_cmp( arg, "targetcomp")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], TARGET_COMP)) { stc("SYSTEM ERROR: No targeting computer installed.\n\r", ch); ok = FALSE; } bit = TARGET_COMP; implant = TRUE; humanity = 8; } 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)) { stc("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; humanity = 8; 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)) { stc("SYSTEM ERROR: No cybernetic heart installed.\n\r", ch); ok = FALSE; } if( IS_SET(ch->pcdata->powers[IMPLANT], ADRENAL_BOOST)) { stc("SYSTEM ERROR: Adrenal boost must be removed first.\n\r", ch); ok = FALSE; } bit = REP_HEART; implant = FALSE; humanity = 4; } else if( !str_cmp( arg, "stomach")) { if( !IS_SET(ch->pcdata->powers[REPLACED], REP_STOMACH)) { stc("SYSTEM ERROR: No stomach replacement found.\n\r", ch); ok = FALSE; } if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)) { stc("SYSTEM ERROR: Nanite factory must be removed first.\n\r", ch); ok = FALSE; } bit = REP_STOMACH; implant = FALSE; humanity = 4; } else if( !str_cmp( arg, "liver")) { if( !IS_SET(ch->pcdata->powers[REPLACED], REP_LIVER)) { stc("SYSTEM ERROR: No liver replacement found.\n\r", ch); ok = FALSE; } if( IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)) { stc("SYSTEM ERROR: Nanite factory must be removed first.\n\r", ch); ok = FALSE; } bit = REP_LIVER; implant = FALSE; humanity = 4; } else if( !str_cmp( arg, "wolvers")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], WOLVERS)) { stc("SYSTEM ERROR: Wolvers not installed.\n\r", ch); ok = FALSE; } bit = WOLVERS; implant = TRUE; humanity = 8; } 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)) { stc("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)) { stc("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; humanity = 8; implant = FALSE; } else if( !str_cmp(arg, "battery")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], BATTERY)) { stc("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)) { stc("SYSTEM ERROR: Nanite factory and taser must be removed first.\n\r", ch); ok = FALSE; } bit = BATTERY; implant = TRUE; humanity = 5; } else if( !str_cmp( arg, "ears")) { if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EARS)) { stc("SYSTEM ERROR: No auditory rebuild detected.\n\r", ch); ok = FALSE; } if( IS_SET( ch->pcdata->powers[IMPLANT], RADIO_SPLICE)) { stc("SYSTEM ERROR: Radio splice must be removed first.\n\r", ch); ok = FALSE; } bit = REP_EARS; implant = FALSE; humanity = 8; } else if( !str_cmp( arg, "eyes")) { if( !IS_SET(ch->pcdata->powers[REPLACED], REP_EYES)) { stc("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)) { stc("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; humanity = 8; } else if( !str_cmp(arg, "boosterware")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], BOOSTER_WARE)) { stc("SYSTEM ERROR: No Boosterware installed.\n\r", ch); ok = FALSE; } if( IS_SET(ch->pcdata->powers[IMPLANT], BOOST_MASTER)) { stc("SYSTEM ERROR: Must remove boost master first.\n\r", ch); ok = FALSE; } bit = BOOSTER_WARE; implant = TRUE; humanity = 7; } else if( !str_cmp( arg, "neuroprocessor")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], NEUROPROCESSOR)) { stc("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)) { stc("SYSTEM ERROR: Following items must be removed first: Chameleon field, Radio splice,\n\r", ch); stc("targeting computer, eyes, ears, arms and legs.\n\r", ch); ok = FALSE; } bit = NEUROPROCESSOR; implant = TRUE; humanity = 7; } else if( !str_cmp( arg, "nanite")) { if( !IS_SET(ch->pcdata->powers[IMPLANT], NANITE_FACTORY)) { stc("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)) { stc("SYSTEM ERROR: Following items must be removed first: Chameleon field, bone lace,\n\r", ch); stc("muscle enhancement, arms, legs, ears, eyes.\n\r", ch); ok = FALSE; } bit = NANITE_FACTORY; implant = TRUE; humanity = 4; } else { stc("Options are: heart, liver, eyes, ears, nanite, stomach, neuroprocessor,\n\r", ch); stc("adrenalboost, boosterware, boostmaster, wolvers, chameleon, muscle, bonelace,\n\r", ch); stc("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); ch->pcdata->powers[HUMANITY] += humanity; stc("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_CYBORG(ch)) { stc("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)) { stc("SYSTEM ERROR: No chamleon cloak installed.\n\r", ch); return; } if( !str_cmp(arg, "on")) { if( ch->fight_timer > 0) { stc("Not with a fight timer.\n\r", ch); return; } if( ch->pcdata->powers[CHAM_PWR] == 0) { stc("SYSTEM: Chameleon battery has been drained, recharging.\n\r", ch); return; } ch->pcdata->powers[CHAM] = 1; stc("SYSTEM: Chameleon cloaking field engaged.\n\r", ch); return; } else if( !str_cmp( arg, "off")) { ch->pcdata->powers[CHAM] = 0; stc("SYSTEM: Powering down chameleon cloaking field.\n\r", ch); return; } else { stc("On or off?\n\r", ch); return; } return; }