/* Do not remove the headers from this file! see /USAGE for more info. */ // Work in NonProgress ... will be finished sometime after Vendor has been redone. probably for a7 mapping skill_restrictions; mapping trainer_msgs = ([ "unable_msg" : "\"I cannot teach you that.\", the trainer tells $N.", "fail_msg" : "$N $vtrain for a while, but $vundergo no improvement.", "low_msg" : "$N $vtrain, but $vimprove little.", "mid_msg" : "$N $vtrain and $vimprove a little.", "high_msg" : "$N $vtrain hard, and $vimprove significantly", "very_high_msg" : "$N $vhas an excellent lesson, and $vimprove remarkably.", "reject_msg" : "\"I can teach you no more.\", the trainer tells $N.", ]); void set_trainer_msgs( mapping msgs ) { string array msg_names = keys( trainer_msgs ); foreach( string key, string msg in msgs ) { if( !member_array( key, msg_names ) + 1 ) error( "Invalid msg name: " + key ); trainer_msgs[ key ] = msg; } } void set_train_restrict( array restrictions ) { string array valid_skills = SKILL_D->query_skills(); foreach( string skill, string restriction in restrictions ) { if( member_array( skill, valid_skills ) == -1 ) error( "Invalid skill: " + skill ); skill_restrictions += ([ skill : restriction ]); } } void do_training( object trainee, string skill ) { int trainee_skill = trainee->get_skill( skill ); int trainer_skill = this_object()->get_skill( skill ); string msg; if( !member_array( skill, keys( skill_restrictions )) + 1 || member_array( skill , keys( this_object()->get_skills()))) msg = trainer_msgs[ "unable_msg" ]; else if( trainee_skill < trainer_skill ) { trainee->test_skill( skill, trainee_skill + 1 ); switch( trainee->get_skill(skill) - trainee_skill ) { case 0..1: msg = trainer_msgs[ "fail_msg" ]; break; case 2..6: msg = trainer_msgs[ "low_msg" ]; break; case 7..13: msg = trainer_msgs[ "mid_msg" ]; break; case 14..18: msg = trainer_msgs[ "high_msg" ]; break; default: msg = trainer_msgs[ "very_high_msg" ]; } } else msg = trainer_msgs["reject_msg"]; this_object()->simple_action( msg ); }