You can either have a players symbiote gain levels and max out, or advance through mob kills. by Xrakisis, marcusironfist@hotmail.com interp.c { "gainsymbiote", do_gainsymbiote, POS_DEAD, 3, LOG_NORMAL, 0,0,0 }, { "symbioteadvance", do_symbioteadvance, POS_DEAD, 3, LOG_NORMAL, 0,0,0 }, interp.h DECLARE_DO_FUN(do_gainsymbiote); DECLARE_DO_FUN(do_symbioteadvance); save.c // Symbiote variables fprintf( fp, "Symbioteac %d\n", ch->symbioteac ); fprintf( fp, "Symbioteaff %d\n", ch->symbioteaff ); fprintf( fp, "Symbiotedc %d\n", ch->symbiotedc ); fprintf( fp, "Symbiotedr %d\n", ch->symbiotedr ); fprintf( fp, "Symbiotehr %d\n", ch->symbiotehr ); fprintf( fp, "Symbiotelvl %d\n", ch->symbiotelvl ); fprintf( fp, "Symbiotepoints %d\n", ch->symbiotepoints ); fprintf( fp, "Symbiotetype %d\n", ch->symbiotetype ); fprintf( fp, "Symbiotemkills %d\n", ch->symbiotemkills ); ch->symbioteac = 0; ch->symbioteaff = 0; ch->symbiotedc = 0; ch->symbiotedr = 0; ch->symbiotehr = 0; ch->symbiotelvl = 0; ch->symbiotepoints = 0; ch->symbiotetype = 0; ch->symbiotemkills = 0; KEY( "Symbioteac", ch->symbioteac, fread_number( fp )); KEY( "Symbioteaff", ch->symbioteaff, fread_number( fp )); KEY( "Symbiotedc", ch->symbiotedc, fread_number( fp )); KEY( "Symbiotedr", ch->symbiotedr, fread_number( fp )); KEY( "Symbiotehr", ch->symbiotehr, fread_number( fp )); KEY( "Symbiotelvl", ch->symbiotelvl, fread_number( fp )); KEY( "Symbiotemkills", ch->symbiotemkills, fread_number( fp )); KEY( "Symbiotepoints", ch->symbiotepoints, fread_number( fp )); KEY( "Symbiotetype", ch->symbiotetype, fread_number( fp )); fight.c update_damcap if (ch->symbiotetype != 0) max_dam += ch->symbiotedc; hurt person if (ch->symbiotetype != 0) { ch->symbiotemkills += 1; if (ch->symbiotemkills >= 1000) { ch->symbiotemkills = 0; ch->symbiotepoints++; stc("#GYour Symbiote gains a point#n.\n\r", ch); } } jobo_util.c getmight if (ch->symbioteac > 0) might += ch->symbioteac / 10; if (ch->symbiotedc > 0) might += ch->symbiotedc / 10; if (ch->symbiotedr > 0) might += ch->symbiotedr / 5; if (ch->symbiotehr > 0) might += ch->symbiotehr / 5; act_info char_damroll if (ch->symbiotetype != 0) value += ch->symbiotedr; char_hitroll if (ch->symbiotetype != 0) value += ch->symbiotehr; char_ac if (ch->symbiotetype != 0) value -= ch->symbioteac; /* symbiote.c */ void do_symbioteadvance(CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char arg1[MAX_INPUT_LENGTH]; int mkills = 1000; if (IS_NPC(ch)) return; one_argument( argument, arg1); if (ch->level < 3) { send_to_char("You must be avatar to advance your Symbiote.\n\r",ch); return; } if (ch->symbiotetype < 1) { send_to_char("You do not have a symbiote.\n\r",ch); return; } if (arg1[0] == '\0') { send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", ch); if (ch->symbiotetype == 2) stc("Death Symbiote\n\r",ch); if (ch->symbiotetype == 1) stc("Life Symbiote\n\r",ch); sprintf(buf, "Damroll Modifier: %d \n\r",ch->symbiotedr); send_to_char(buf,ch); sprintf(buf, "Hitroll Modifier: %d\n\r",ch->symbiotehr); send_to_char(buf,ch); sprintf(buf, "AC Modifier: %d\n\r",ch->symbioteac); send_to_char(buf,ch); sprintf(buf, "Damcap Modifier: %d\n\r",ch->symbiotedc); send_to_char(buf,ch); // sprintf(buf, "Current Level: %d\n\r",ch->symbiotelvl); // send_to_char(buf,ch); sprintf(buf, "Symbiote Points %d\n\r",ch->symbiotepoints); send_to_char(buf, ch); sprintf(buf, "Mob kills until next point: %d\n\r",(mkills -= ch->symbiotemkills)); send_to_char(buf,ch); // sprintf(buf,"Cost of advancing symbiote's level :%d EXP, %d Bones\n\r", sgainexp, sgainbones); // send_to_char(buf,ch); send_to_char("#R[#0------------------#R[#7Symbiote Arguments#R]#0------------------#R]#n\n\r", ch); send_to_char("damroll(+5 DR), hitroll(+5 HR), ac(-10 AC), damcap(+10 DC)\n\r", ch); send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", ch); return; } if (!str_cmp(arg1,"damroll")) { if (ch->symbiotedr >= 2000) { send_to_char( "Symbiote Damroll Maxed\n\r", ch); return; } if (ch->symbiotepoints < 1) { send_to_char( "Not enough symbiote points.\n\r", ch); return; } send_to_char( "Damroll increased by 5.\n\r", ch); ch->symbiotedr += 5; ch->symbiotepoints -= 1; return; } if (!str_cmp(arg1,"hitroll")) { if (ch->symbiotehr >= 2000) { send_to_char( "Symbiote Hitroll Maxed\n\r", ch); return; } if (ch->symbiotepoints < 1) { send_to_char( "Not enough symbiote points.\n\r", ch); return; } send_to_char( "Hitroll increased by 5.\n\r", ch); ch->symbiotehr += 5; ch->symbiotepoints -= 1; return; } if (!str_cmp(arg1,"damcap")) { if (ch->symbiotedc >= 2000) { send_to_char( "Symbiote Damcap Maxed\n\r", ch); return; } if (ch->symbiotepoints < 1) { send_to_char( "Not enough symbiote points.\n\r", ch); return; } send_to_char( "Damcap increased by 10.\n\r", ch); ch->symbiotedc += 10; ch->symbiotepoints -= 1; return; } if (!str_cmp(arg1,"ac")) { if (ch->symbioteac >= 2000) { send_to_char( "Symbiote AC Maxed\n\r", ch); return; } if (ch->symbiotepoints < 1) { send_to_char( "Not enough symbiote points.\n\r", ch); return; } send_to_char( "Armor increased by 10.\n\r", ch); ch->symbioteac += 10; ch->symbiotepoints -= 1; return; } return; } void do_gainsymbiote(CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; if (IS_NPC(ch)) return; one_argument( argument, arg); if (ch->level < 3) { send_to_char("You must be an avatar to gain a Symbiote.\n\r",ch); return; } if (!IS_NPC(ch) && ch->symbiotetype != 0) { send_to_char("You already have a symbiote.\n\r",ch); return; } if (arg[0] == '\0') { send_to_char("type gainsymbiote (name) to choose a Symbiote.\n\r",ch); send_to_char("#Y--#CDeath Symbiote\n\r",ch); send_to_char("#Y--#CLife Symbiote\n\r",ch); send_to_char("Cost: 200,000 Bones\n\r",ch); return; } if (!str_cmp(arg,"death")) { if (ch->bones < 200000) { send_to_char( "You do not have enough bones.\n\r", ch); return; } else { ch->symbiotetype = SYMBIOTE_DEATH; send_to_char( "A Death Symbiote absorbs into your body.\n\r", ch); ch->bones -= 200000; return; } } else if (!str_cmp(arg,"life")) { if (ch->bones < 200000) { send_to_char( "You do not have enough bones.\n\r", ch); return; } else { ch->symbiotetype = SYMBIOTE_LIFE; send_to_char( "A Life Symbiote absorbs into your body.\n\r", ch); ch->bones -= 200000; return; } } else do_gainsymbiote(ch,""); return; }