/* The new, dis-improved, slightly wibbled but hopefully working judge command, scrapped and completely re-written by Timion. Only works if your level is less than 99,999, otherwise gives you a cruel message. Also, "judge all" now works. */ #include "/std/commands/tweaks.h" string query_judge_mess(int flag) { switch(flag) { case 1 : return "Worthless"; case 2 : return "Awful"; case 3 : return "Poor"; case 4 : return "Below Average"; case 5 : return "Average"; case 6 : return "Above Average"; case 7 : return "Good"; case 8 : return "Great"; case 9 : return "Wonderful"; case 10 : return "Incredible"; case 11 : return "Unbelievable"; case 12 : return "The BEST"; } return "Unknown"; } int munge_value(int dmg, object me) { int flag; flag = 0; switch(me->query_level()) { case 0..6: switch(dmg) { case 0..2: flag =1; break; case 3..14: flag = 5; break; default: flag = 8; break; } break; case 7..13 : switch(dmg) { case 0..3 : flag = 1; break; case 4..7 : flag = 3; break; case 8..10 : flag = 5; break; case 11..13 : flag = 8; break; case 14..99 : flag = 9; break; } break; case 14..20 : switch(dmg) { case 0..2 : flag = 1; break; case 3..4 : flag = 2; break; case 5..8 : flag = 3; break; case 9..11 : flag = 5; break; case 12: flag = 7; break; case 13: flag = 8; break; case 14..19: flag = 9; break; case 20..99: flag = 11; break; } break; case 21..99999 : switch(dmg) { case 0..2 : flag = 1; break; case 3..4 : flag = 2; break; case 5: flag = 3; break; case 6..7: flag = 4; break; case 8..9: flag = 5; break; case 10..11: flag = 6; break; case 12: flag = 7; break; case 13: flag = 8; break; case 14..17: flag = 9; break; case 18..19 : flag = 10; break; case 20: flag = 11; break; default: flag = 12; break; } } return flag; } //Added by rift to eliminate the variation in //reports that judge gave on weapons int query_max_weapon_damage(object ob) { int r1,r2,r3; r1=ob->query_damage_vals()[0]; r2=ob->query_damage_vals()[1]; r3=ob->query_damage_vals()[2]; return((r1*r2)+r3); } int judge_weapon(object ob, object me) { int dmg; int flag; dmg=query_max_weapon_damage(ob); flag = munge_value(dmg, me); if(!flag) tell_object(me,"You can't quite figure out "+ob->query_short()+".\n"); else tell_object(me,"Your "+ob->query_short()+" is "+query_judge_mess(flag)+ " at doing damage.\n"); return(1); } void judge_armour(object ob, object me) { int dmg; int flag; // Taniwha 1995. To compensate for a.c. changes (divide by 5) dmg = (int)ob->query_ac()/5; flag = munge_value(dmg, me); if(!flag) tell_object(me,"You can't quite figure out "+ob->query_short()+".\n"); else tell_object(me,"Your "+ob->query_short()+" is "+query_judge_mess(flag)+ " protection.\n"); return; } int judge(string str, object who) { object *ob; int i; object me; me = ( who ? who : this_player() ); if(!str) { tell_object(me,"Syntax: judge <object>\n"); return 1; } if( (str=="all") || (str=="ALL") || (str=="All") ) str="0"; ob=find_match(str,me); if(!sizeof(ob)) { tell_object(me,"You are not carrying "+str+".\n"); return 1; } for(i=0;i<sizeof(ob);i++) { if(ob[i]->query_weapon()) judge_weapon(ob[i],me); else if(ob[i]->query_armour()) judge_armour(ob[i],me); else if(ob[i]->query_short()) tell_object(me,ob[i]->query_short()+" looks pretty useless to you.\n"); } return 1; }