summaryrefslogtreecommitdiff
path: root/npc/commands
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2020-12-14 15:28:58 -0300
committerJesusaves <cpntb1@ymail.com>2020-12-14 15:28:58 -0300
commita5534e046656f14a951ba3c5f86023389fd97986 (patch)
treecb4dc769a7fffb20bc29d63b518f3c17071afdd7 /npc/commands
parent1323574b95c92aa7d4c4096d95535d428bee6b16 (diff)
downloadserverdata-a5534e046656f14a951ba3c5f86023389fd97986.tar.gz
serverdata-a5534e046656f14a951ba3c5f86023389fd97986.tar.bz2
serverdata-a5534e046656f14a951ba3c5f86023389fd97986.tar.xz
serverdata-a5534e046656f14a951ba3c5f86023389fd97986.zip
Scholarship Titulation (manual mode)
Diffstat (limited to 'npc/commands')
-rw-r--r--npc/commands/titulate.txt110
1 files changed, 110 insertions, 0 deletions
diff --git a/npc/commands/titulate.txt b/npc/commands/titulate.txt
new file mode 100644
index 000000000..ee3031837
--- /dev/null
+++ b/npc/commands/titulate.txt
@@ -0,0 +1,110 @@
+// TMW2 Script
+//
+// @grantpower <username>
+// Grants a legendary weapon to <username>. 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 <target charname>", 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;
+}
+