// TMW2 Script // // @grantpower // Grants a legendary weapon to . Cannot be undone. // Only way to bypass restrictions on legendary weapons. - script @titulate 32767,{ end; OnCall: .@request$ = ""; .@request$ += implode(.@atcmd_parameters$, " "); // No argument supplied if (.@request$ == "") { Exception("Usage: @titulate ", RB_ISFATAL|RB_DISPBOTTOM); } // Player is not attached .@ori = getcharid(3); .@id = getcharid(3, .@request$); if (.@id < 1 || .@ori < 1) { Exception("Player not found.", RB_ISFATAL|RB_DISPBOTTOM); } // Obtain your own title .@mine=ACADEMIC_RANK; .@them=getvariableofpc(ACADEMIC_RANK, .@id, 99); mes ".:: " + l("Titulation") + " ::."; if (.@mine <= .@them) { mesc l("You can only concede or vouch a title for people of academic rank smaller or equal to your own."); close; } mesc l("You're about to concede an academic title to \"@@\".", .@request$), 1; mesc l("If this is found out to be a fraudulent titulation, both you as target will have their titles cased by the Academic Council, or by the Alliance High Council."), 1; mesc l("This action CANNOT BE UNDONE."), 1; mes l("Are you sure?"); if (askyesno() == ASK_NO) close; // Grant the title if (attachrid(.@id)) { switch (ACADEMIC_RANK) { case ACADEMIC_LAYMAN: case ACADEMIC_STUDENT: case ACADEMIC_TECHNIC: // Instant promotion ACADEMIC_RANK+=1; .@upgrade=true; break; case ACADEMIC_BACHELOR: case ACADEMIC_MASTER: // Two-Man rule if (array_find(ACADEMIC_VOUCH, .@ori)) { end; } array_push(ACADEMIC_VOUCH, .@ori); if (array_entries(ACADEMIC_VOUCH) >= 2) { ACADEMIC_RANK+=1; deletearray(ACADEMIC_VOUCH); .@upgrade=true; } break; case ACADEMIC_DOCTOR: case ACADEMIC_PHD: // Three-Man rule if (array_find(ACADEMIC_VOUCH, .@ori)) { end; } array_push(ACADEMIC_VOUCH, .@ori); if (array_entries(ACADEMIC_VOUCH) >= 3) { ACADEMIC_RANK+=1; deletearray(ACADEMIC_VOUCH); .@upgrade=true; } break; // Invalid case ACADEMIC_SAGE: Exception("The Grand Master title can only be issued by the president of the Alliance High Council.", RB_ISFATAL|RB_SPEECH); default: Exception("Invalid titulation rank: "+ACADEMIC_RANK, RB_ISFATAL|RB_SPEECH); } // Message if (.@upgrade) { dispbottom l("You received the %s title from %s.", academicrank(), strcharinfo(0, "someone", .@ori)); } else { dispbottom l("You were vouced to the %s title by %s. You still need %d more vouches to be promoted.", academicrank(ACADEMIC_RANK+1), strcharinfo(0, "someone", .@ori), (ACADEMIC_RANK >= ACADEMIC_DOCTOR ? 3 : 2) - array_entries(ACADEMIC_VOUCH)); } // Oops, player disconnected } else { Exception("Player not found.", RB_ISFATAL|RB_SPEECH); } // Inform everyone kamibroadcast(sprintf("%s has vouched %s for the title of %s.", strcharinfo(0), .@request$, academicrank(.@them+1))); close; OnInit: bindatcmd "titulate", "@titulate::OnCall", 0, 100, 1; }