/* This code was created by Phyco of Dragon Ball Series AF * What I wanted to do was create a basic skill tree system * for use inside of a swr mud without having to compeltley * rewrite the entire skill system to do it. So after much * trial and error I created this simple snippet. Please * give credit where credit is due and hope you enjoy it. * comments and suggestions and upgrades welcome dbdaf@cox.net */ In Mud.h under struct skill_type add: char * preskill1; /* pre required skill 1*/ char * preskill2; /* pre required skill 2*/ char * preskill3; /* pre required skill 3*/ Then in Do_practice add: at the top: char preability[MAX_STRING_LENGTH]; int sn,preskill; then right above if ( (ch->pcdata->learned[sn] == 0 && can_prac == FALSE))// || ch->pcdata->learned[sn] == 0 && SPELL_FLAG(skill_table[sn], SF_SECRETSKILL)) continue; add: if ( skill_table[sn]->preskill1 && skill_table[sn]->preskill1[0] != '\0' ) { one_argument( skill_table[sn]->preskill1, preability ); if ( skill_lookup(preability) != -1 ) { preskill= skill_lookup(preability); if (ch->pcdata->learned[preskill] < 80 ) continue; } } if ( skill_table[sn]->preskill2 && skill_table[sn]->preskill2[0] != '\0' ) { one_argument( skill_table[sn]->preskill2, preability ); if ( skill_lookup(preability) != -1 ) { preskill= skill_lookup(preability); if (ch->pcdata->learned[preskill] < 60 ) continue; } } if ( skill_table[sn]->preskill3 && skill_table[sn]->preskill3[0] != '\0' ) { one_argument( skill_table[sn]->preskill3, preability ); if ( skill_lookup(preability) != -1 ) { preskill= skill_lookup(preability); if (ch->pcdata->learned[preskill] < 40 ) continue; } } Next in tables.c under fwrite_skill add: if ( skill->preskill1 && skill->preskill1[0] != '\0' ) fprintf( fpout, "Preskill1 %s~\n", skill->preskill1 ); if ( skill->preskill2 && skill->preskill2[0] != '\0' ) fprintf( fpout, "Preskill2 %s~\n", skill->preskill2 ); if ( skill->preskill3 && skill->preskill3[0] != '\0' ) fprintf( fpout, "Preskill3 %s~\n", skill->preskill3 ); Then in case 'p' right under participants add: KEY( "Preskill1",skill->preskill1, fread_string_nohash( fp ) ); KEY( "Preskill2",skill->preskill2, fread_string_nohash( fp ) ); KEY( "Preskill3",skill->preskill3, fread_string_nohash( fp ) ); Now you can either create a command in do_sset to create the new field or if your like me just go into skills.dat and type it manually heres a example of the new code. #SKILL Name Kamehameha~ Type Spell Flags 908 Target 1 Minpos 7 Slot 219 Mana 0 Guild 6 Code spell_kamehameha Dammsg kamehameha~ Wearoff !WEAROFF!~ Teachers 655 655~ Preskill1 energy-blast~ preskill2 energy-ball~ preskill2 dual-blasts~ Minlevel 1 End Now all you have to do is use the preskills in order to create your skill trees by tieing the needed skills togeather. Enjoy my first attempt at a public snippet. -phyco dbseries.cjb.net