void script_973() {
	int ivar0;
	int ivar1;
	int ivar2;
	int ivar3;
	int ivar4;
	int ivar5;
	int ivar6;
	int ivar7;
	int ivar8;
	int ivar9;
	int ivar10;
	int ivar11;
	int ivar12;
	int ivar13;
	int ivar14;
	int ivar15;
	int ivar16;
	string svar0;
	string svar1;
	string svar2;
	int stack_dump0;
	cs2func_script_976_struct(2,1,0) structdump_1;
	int stack_dump2;
	cs2func_script_1023_struct(2,1,0) structdump_3;
	cs2func_script_12_struct(1,1,0) structdump_4;
	cs2func_script_13_struct(1,1,0) structdump_5;
	int stack_dump6;
	cs2func_script_1567_struct(2,2,0) structdump_7;
	cs2func_script_14_struct(2,2,0) structdump_8;
	ivar0 = bitconfig_4729;
	if ((bitconfig_4729 < 1) || (bitconfig_4729 > 25)) {
		return;
	}
	svar0 = getCommonString(1477, ivar0);
	ivar1 = cs2method_3408(105, 83, 681, ivar0);
	ivar2 = cs2method_3408(105, 100, 1478, ivar0);
	ivar3 = 1;
	ivar4 = 1;
	switch (ivar0) {
		case 1:
			ivar4 = globalint_1469;
			break;
		case 2:
			ivar4 = globalint_1470;
			break;
		case 5:
			ivar4 = globalint_1471;
			break;
		case 3:
			ivar4 = globalint_1472;
			break;
		case 7:
			ivar4 = globalint_1473;
			break;
		case 4:
			ivar4 = globalint_1474;
			break;
		case 6:
			ivar4 = globalint_1475;
			break;
		case 8:
			ivar4 = globalint_1476;
			break;
		case 9:
			ivar4 = globalint_1477;
			break;
		case 10:
			ivar4 = globalint_1478;
			break;
		case 11:
			ivar4 = globalint_1479;
			break;
		case 19:
			ivar4 = globalint_1480;
			break;
		case 13:
			ivar4 = globalint_1481;
			break;
		case 14:
			ivar4 = globalint_1482;
			break;
		case 15:
			ivar4 = globalint_1483;
			break;
		case 16:
			ivar4 = globalint_1484;
			break;
		case 17:
			ivar4 = globalint_1485;
			break;
		case 18:
			ivar4 = globalint_1486;
			break;
		case 12:
			ivar4 = globalint_1487;
			break;
		case 20:
			ivar4 = globalint_1488;
			break;
		case 21:
			ivar4 = globalint_1489;
			break;
		case 22:
			ivar4 = globalint_1490;
			break;
		case 23:
			ivar4 = globalint_1491;
			break;
		case 24:
			ivar4 = globalint_1492;
			break;
		case 25:
			ivar4 = globalint_1493;
	}
	if (add(ivar4, 1) != getSkillActualLvl(ivar1)) {
		svar0 = getCommonString(3644, ivar0) + intToStr(subtract(getSkillActualLvl(ivar1), ivar4)) + getCommonString(3645, ivar0);
	}
	setWidgetText(new WidgetPointer(741,4), svar0);
	setWidgetText(new WidgetPointer(741,6), "You have now reached level " + intToStr(getSkillActualLvl(ivar1)) + ".");
	setWidgetSprite(ivar2, new WidgetPointer(741,7));
	ivar5 = 0;
	ivar6 = 0;
	ivar7 = 0;
	svar1 = "";
	ivar8 = 0;
	ivar9 = -1;
	ivar10 = 2287;
	ivar11 = ivar10;
	ivar12 = 0;
	deleteAllExtraChilds(new WidgetPointer(741,2));
	deleteAllExtraChilds(new WidgetPointer(741,3));
	if ((standart_config_281 < 1000) && (getSkillActualLvl(ivar1) == 3)) {
		svar1 = "<col=000080>" + "You've now reached the highest skill level that you can achieve during the tutorial. Once you finish the tutorial, you can advance this skill even further!";
		ivar7 = script_974(ivar5, ivar6, 7620, ivar10, 0, 0, svar1);
		setWidgetText(svar1);
		ivar6 = script_975(ivar6, ivar7);
		ivar5 = add(2, ivar5);
	}
	if (((boolean)bitconfig_4730)) {
		svar1 = "<col=800000>" + "Well done! You've reached the total level " + intToStr(cs2method_3408(105, 105, 1475, bitconfig_4728)) + " milestone!";
		ivar7 = script_974(ivar5, ivar6, 7620, ivar10, 0, 0, svar1);
		setWidgetText(svar1);
		ivar6 = script_975(ivar6, ivar7);
		ivar5 = add(2, ivar5);
	}
	ivar8 = 0;
	svar1 = "null";
	ivar9 = 7620;
	if (((((((((boolean)ivar0) || (ivar0 == 2)) || (ivar0 == 5)) || (ivar0 == 3)) || (ivar0 == 7)) || (ivar0 == 4)) || (ivar0 == 6)) || (ivar0 == 24)) {
		if (((boolean)bitconfig_4731)) {
			svar1 = "<col=800000>" + "Well done! You've reached the Combat level " + intToStr(cs2method_3408(105, 105, 1473, bitconfig_4727)) + " milestone!";
			ivar7 = script_974(ivar5, ivar6, 7620, ivar10, 0, 0, svar1);
			setWidgetText(svar1);
			ivar6 = script_975(ivar6, ivar7);
			ivar5 = add(2, ivar5);
		}
		if (((boolean)bitconfig_5395) && (ivar9 != -1)) {
			while (true) {
				stack_dump0 = ivar8;
				structdump_1 = script_976(stack_dump0);
				svar1 = structdump_1.stringpart_0;
				ivar9 = structdump_1.intpart_1;
				ivar12 = structdump_1.intpart_0;
				if (ivar12 == script_1432()) {
					ivar7 = script_974(ivar5, ivar6, ivar9, ivar10, 0, 0, svar1);
					setWidgetText(svar1);
					ivar6 = script_975(ivar6, ivar7);
					ivar5 = add(2, ivar5);
				}
				ivar8 = add(ivar8, 1);
			}
		}
	}
	svar1 = "";
	ivar9 = 7620;
	ivar13 = 0;
	ivar8 = 0;
	while (ivar13 != -1) {
		ivar13 = 0;
		stack_dump0 = ivar1;
		stack_dump2 = ivar8;
		structdump_3 = script_1023(stack_dump0, stack_dump2);
		ivar13 = structdump_3.intpart_1;
		ivar9 = structdump_3.intpart_0;
		svar1 = structdump_3.stringpart_0;
		if (((boolean)ivar13)) {
			ivar7 = script_974(ivar5, ivar6, ivar9, ivar10, 0, 0, svar1);
			setWidgetText(svar1);
			ivar6 = script_975(ivar6, ivar7);
			ivar5 = add(2, ivar5);
			ivar3 = 0;
		}
		ivar8 = add(ivar8, 1);
	}
	ivar11 = ivar10;
	ivar9 = 7620;
	svar1 = "";
	ivar8 = 0;
	ivar14 = 0;
	ivar15 = 0;
	ivar16 = 0;
	svar2 = "";
	stack_dump0 = ivar0;
	structdump_4 = script_12(stack_dump0);
	ivar14 = structdump_4.intpart_0;
	svar0 = structdump_4.stringpart_0;
	while (ivar8 < ivar14) {
		flow_49:
			stack_dump0 = ivar0;
			stack_dump2 = ivar8;
			structdump_5 = script_13(stack_dump0, stack_dump2);
			ivar15 = structdump_5.intpart_0;
			svar0 = structdump_5.stringpart_0;
			ivar16 = 0;
			ivar9 = 7620;
			ivar11 = ivar10;
			IF (((boolean)script_1566(ivar0, ivar8))) 
				GOTO	flow_51
			GOTO	flow_57
		flow_51:
			IF (ivar11 != -1) 
				GOTO	flow_52
			GOTO	flow_56
		flow_52:
			stack_dump0 = ivar0;
			stack_dump2 = ivar8;
			stack_dump6 = ivar16;
			structdump_7 = script_1567(stack_dump0, stack_dump2, stack_dump6);
			svar1 = structdump_7.stringpart_1;
			svar2 = structdump_7.stringpart_0;
			ivar11 = structdump_7.intpart_1;
			ivar12 = structdump_7.intpart_0;
			if ((ivar12 <= getSkillActualLvl(ivar1)) && (ivar12 > ivar4)) {
				ivar7 = script_974(ivar5, ivar6, ivar9, ivar11, ivar0, ivar8, svar1);
				setWidgetText(svar1);
				ivar6 = script_975(ivar6, ivar7);
				ivar5 = add(2, ivar5);
				ivar3 = 0;
			}
			ivar16 = add(ivar16, 1);
			GOTO	flow_51
		flow_56:
			ivar8 = add(ivar8, 1);
			GOTO	flow_63
		flow_57:
			IF (ivar9 != -1) 
				GOTO	flow_58
			GOTO	flow_62
		flow_58:
			stack_dump0 = ivar0;
			stack_dump2 = ivar8;
			stack_dump6 = ivar16;
			structdump_8 = script_14(stack_dump0, stack_dump2, stack_dump6);
			svar1 = structdump_8.stringpart_1;
			svar2 = structdump_8.stringpart_0;
			ivar9 = structdump_8.intpart_1;
			ivar12 = structdump_8.intpart_0;
			if ((ivar12 <= getSkillActualLvl(ivar1)) && (ivar12 > ivar4)) {
				ivar7 = script_974(ivar5, ivar6, ivar9, ivar11, ivar0, ivar8, svar1);
				setWidgetText(svar1);
				ivar6 = script_975(ivar6, ivar7);
				ivar5 = add(2, ivar5);
				ivar3 = 0;
			}
			ivar16 = add(ivar16, 1);
			GOTO	flow_57
		flow_62:
			ivar8 = add(ivar8, 1);
		flow_63:
	}
	if (((boolean)ivar3)) {
		svar1 = concat(script_4242(ivar0), "Check out the skill advance guide to see what you'll be able to do when you reach even higher levels...");
		ivar7 = script_974(ivar5, ivar6, 7620, ivar10, 0, 0, svar1);
		setWidgetText(svar1);
		ivar6 = script_975(ivar6, ivar7);
	}
	cs2method2100(0, 0, new WidgetPointer(741,2));
	setWidgetScrollMax(296, ivar6, new WidgetPointer(741,2));
	if (ivar6 > 160) {
		script_31(48562179, 48562178, 798, 795, 796, 797, 793, 794);
	}
	return;
}
