diff options
Diffstat (limited to 'npc/commands')
-rw-r--r-- | npc/commands/titulate.txt | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/npc/commands/titulate.txt b/npc/commands/titulate.txt index 35e50328f..c286297f1 100644 --- a/npc/commands/titulate.txt +++ b/npc/commands/titulate.txt @@ -28,7 +28,7 @@ OnCall: .@them=getvariableofpc(ACADEMIC_RANK, .@id, 99); mes ".:: " + l("Titulation") + " ::."; - if (.@mine <= .@them) { + if (.@mine <= .@them || .@them < 0) { mesc l("You can only concede or vouch a title for people of academic rank smaller or equal to your own."); close; } @@ -98,13 +98,55 @@ OnCall: Exception("Player not found.", RB_ISFATAL|RB_SPEECH); } + attachrid(.@ori); // Inform everyone kamibroadcast(sprintf("%s has vouched %s for the title of %s.", strcharinfo(0), .@request$, academicrank(.@them+1))); + // Log in a special log file as well + logmes(sprintf("%s has vouched %s for the title of %s.", + strcharinfo(0), .@request$, academicrank(.@them+1))); + + close; + +OnCassate: + if (ACADEMIC_RANK < ACADEMIC_GM) { + mesc l("Only Academy Grand Masters may cassate someone."); + close; + } + mes ("To revoke someone's title and optionally apply a ban on them."); + mes ("Please insert the nickname of person to cassate (they must be online)"); + input .@request$; + mes ("Ban them from the Magic Academy as well?"); + .@ban=(askyesno() == ASK_YES); + next; + .@ori = getcharid(3); + .@id = getcharid(3, .@request$); + if (.@id < 1 || .@ori < 1) { + Exception("Player not found.", RB_ISFATAL|RB_DISPBOTTOM); + } + + // Execute the banishment + if (attachrid(.@id)) { + ACADEMIC_RANK=(.@ban ? -1 : ACADEMIC_LAYMAN); + skill TMW2_STUDY, 0, 0; + dispbottom l("Your academy titles have been rescinded%s", + (.@ban ? l(", and you have been banned from the Academy.") : ".")); + } else { + Exception("Player not found.", RB_ISFATAL|RB_DISPBOTTOM); + } + + attachrid(.@ori); + // Inform everyone + kamibroadcast(sprintf("%s (A.GM) has stripped %s from their academic titles.", + strcharinfo(0), .@request$); + // Log in a special log file as well + logmes(sprintf("%s (Grandmaster) has stripped %s from their academic titles.", + strcharinfo(0), .@request$); close; OnInit: bindatcmd "titulate", "@titulate::OnCall", 0, 100, 1; + bindatcmd "cassate", "@titulate::OnCassate", 60, 100, 1; } |