
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11516 54d463be-8e91-2dee-dedb-b68131a5f0ec
968 lines
31 KiB
Plaintext
968 lines
31 KiB
Plaintext
//===== eAthena Script =======================================
|
|
//= Dungeon Teleport Service
|
|
//===== By: ==================================================
|
|
//= Evera
|
|
//===== Current Version: =====================================
|
|
//= 2.4
|
|
//===== Compatible With: =====================================
|
|
//= eAthena
|
|
//===== Description: =========================================
|
|
//= Cool Event Corp NPCs vs. Kafra Dungeon Teleport Service and voting system.
|
|
//= This is a special event on official servers where there's a
|
|
//= big competition between Kafra Corp. and Cool Event Corp.
|
|
//= To warp to selected levels of certain dungeons.
|
|
//= Also includes Cool Event Corp HQ NPCs.
|
|
//===== Variables: ===========================================
|
|
//=Server - $dtsvote = Variable for # of votes
|
|
//= = Positive = Cool Corp winning
|
|
//= = Negative = Kafra Corp winning
|
|
//= $dts = Variable for DTS status
|
|
//= = (1<<0) Election
|
|
//= = (1<<1) Cool Corp Enabled
|
|
//= = (1<<2) Kafra Enabled
|
|
//= = (1<<3) No winner last election
|
|
//= = (1<<4) Cool Corp won last election
|
|
//= = (1<<5) Kafra won last election
|
|
//= $dtsday = Week count for dts vote count, used for resetting players' votes
|
|
//=Character - dtseligible = eligibility status, 0 not eligible yet, 1 eligible.
|
|
//= = $dtsday used when MISC_QUEST|128, and signifies that person already voted.
|
|
//= MISC_QUEST = |128 = eligible and voted.
|
|
//=NPC Func. - arg(0) = 0, Cool Event Corp Voting Staff; 1, Kafra Corp Voting Staff
|
|
//= arg(1) = Kafra only, Cool Corp script does not use. Changes illus for different sprites.
|
|
//= = 0 = 4_f_kafra6 (yellow ponytail, classic outfit, spr 112)
|
|
//= = 1 = 4_f_kafra5 (pink hair, classic outfit, spr 113)
|
|
//= = 2 = 4_f_kafra4 (orange short hair, classic outfit, spr 114)
|
|
//= = 3 = 4_f_kafra3 (brown bangs, classic outfit, spr 115)
|
|
//= = 4 = 4_f_kafra2 (brown ponytale, classic outfit, spr 116)
|
|
//= = 5 = 4_f_kafra1 (blue hair, classic outfit, spr 117)
|
|
//= = 6 = 4_f_agentkafra (purp hair, black outfit, spr 859)
|
|
//= = 7 = 4_f_kafra8 (blue hair, brown outfit, spr 860)
|
|
//= = 8 = 4_f_kafra9 (red hair, brown outfit, spr 861)
|
|
//=Temporary - @dtstemp = Temporary buffer, used in GM vote-fixing
|
|
//= @dtstemps$ = Temporary buffer, like above, but a string.
|
|
//= $@dtstempg = Temporary buffer, but global
|
|
//===== Additional Comments: =================================
|
|
//= Some unofficial translations, some unofficial dungeon warps
|
|
//= Also includes unofficial GM-enabled tweaking for script
|
|
//= Includes NPCs in Cool Event Corp headquarters
|
|
//= If new locations are found of this NPC, please report on forums
|
|
//= http://www.eathena.ws/board/index.php?showforum=106
|
|
//= Base level 60 required to vote
|
|
//===== Version History: ====================================
|
|
//= 1.0 Initial release [Evera]
|
|
//= 1.1 SVN release, removed from major town (found true info after research),
|
|
//= put more arg(2) parameters, fixed a few bugs [Evera]
|
|
//= 1.2 Mushed some variables together, optimized a bit [Evera]
|
|
//= 1.3 Removed selfconfig [Evera]
|
|
//= 1.4 Changed global variables to read from 3 global variables, updated names,
|
|
//= fixed array bug [Evera]
|
|
//= 1.5 Mushed voting varialbes into 1 variable. [Evera]
|
|
//= 1.6 Removed Duplicates [Silent]
|
|
//= 1.7 Fixed bug of DTS_Admin not running by itself [Evera]
|
|
//= 1.8 Changed requirement to lvl 60 [Evera]
|
|
//= 1.9 Removed global eligibility option [Evera]
|
|
//= 2.0 Fixed zeny bug [Evera]
|
|
//= 2.1 Fixed headers with and updated with newer information [Evera]
|
|
//= 2.2 Changed dtseligible 2 to MISC_QUEST|128, to clean up variable usage. [Evera]
|
|
//= Also added F_ClearGarbage function to the scripts. [Evera]
|
|
//= 2.3 Changed dtseligible to be $dtsday when MISC_QUEST|128
|
|
//= Added $dtsday for vote session counter
|
|
//= Fixed bug that involved having both warpers enabled at the same time. [Evera]
|
|
//= New $dtsday system and bug fix[Evera]
|
|
//= 2.3a fixed 2 bugs with comparision [Lupus]
|
|
//= 2.3b corrected Glast warp coords [Lupus] 2.3c Bailand -> Bayalan
|
|
//= 2.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
|
|
//============================================================
|
|
|
|
//Yuno
|
|
yuno,153,191,4 script Cool Event Voting Staff::CoolEventVotingStaff01 874,{
|
|
callfunc "F_DTS_Warp",0,0;
|
|
}
|
|
yuno,162,191,6 script Kafra Voting Staff#01 861,{
|
|
callfunc "F_DTS_Warp",1,8;
|
|
}
|
|
//Lighthalzen
|
|
lighthalzen,154,60,6 script Cool Event Voting Staff::CoolEventVotingStaff02 874,{
|
|
callfunc "F_DTS_Warp",0,0;
|
|
}
|
|
//Prontera
|
|
prontera,147,125,4 script Cool Event Voting Staff::CoolEventVotingStaff03 874,{
|
|
callfunc "F_DTS_Warp",0,0;
|
|
}
|
|
prontera,164,125,6 script Kafra Voting Staff#02 115,{
|
|
callfunc "F_DTS_Warp",1,3;
|
|
}
|
|
|
|
//Cool Event Staff Headquarters NPCs
|
|
//Kudiuu (Maintenance Guy)
|
|
lhz_in02,20,274,6 script Maintenance Guy#dts 851,{
|
|
mes "[Kudiuu]";
|
|
mes "Holy...!";
|
|
mes "Will this place";
|
|
mes "ever get cleaned up?!";
|
|
mes "*Cough cough* There's";
|
|
mes "so much dust here, it's";
|
|
mes "almost a health hazard!";
|
|
close;
|
|
}
|
|
//Cesuna (Zondaman at desk)
|
|
lhz_in02,36,284,1 script Cool Event Staff#01 874,{
|
|
mes "[Cesuna]";
|
|
mes "Ack! I'm totally";
|
|
mes "swamped with all this";
|
|
mes "work! But I don't wannna";
|
|
mes "do any of it. That's it!";
|
|
mes "I totally need a break";
|
|
next;
|
|
mes "[Cesuna]";
|
|
mes "*Sigh...*";
|
|
mes "I wonder if Saera";
|
|
mes "would ever consider";
|
|
mes "going out with me?";
|
|
mes "That would be nice~";
|
|
close;
|
|
}
|
|
//Jellarin (Event planner)
|
|
lhz_in02,40,279,3 script Event Planner 833,{
|
|
mes "[Jellarin]";
|
|
mes "I don't like this.";
|
|
mes "But I don't like that";
|
|
mes "idea either. What will";
|
|
mes "I do for a new event, eh?";
|
|
next;
|
|
mes "[Jellarin]";
|
|
mes "I need something";
|
|
mes "major, something that'll";
|
|
mes "really shake up the world,";
|
|
mes "something epochal, but what?";
|
|
mes "Hey, do you have any ideas";
|
|
close;
|
|
}
|
|
//Baoto (Cool Event Manager)
|
|
lhz_in02,110,283,5 script Cool Event Manager 853,{
|
|
mes "[Baoto]";
|
|
mes "Hmmm...";
|
|
mes "The employees seem";
|
|
mes "to be having too much";
|
|
mes "fun amongst themselves";
|
|
mes "recently. This does not";
|
|
mes "bode well at all...";
|
|
next;
|
|
mes "[Baoto]";
|
|
mes "It looks like I'm";
|
|
mes "just going to have to";
|
|
mes "start cracking that whip";
|
|
mes "more often and much";
|
|
mes "harder. Ha ha ha ha!";
|
|
close;
|
|
}
|
|
//Saera (Secretary), contains GM menu
|
|
lhz_in02,36,274,3 script Cool Event Staff#02 831,{
|
|
callfunc "F_ClearGarbage"; //Clear outdated, unused variables
|
|
if($dts == 0){
|
|
set $dts,$dts|(1<<0); //Sets NPCs to election mode if first time running
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dts&(1<<1) && $dts&(1<<2) || $dts&(1<<0) && $dts&(1<<1) || $dts&(1<<0) && $dts&(1<<2)){
|
|
if($dts&(1<<0)) set $dts,$dts&~(1<<0);
|
|
if($dts&(1<<1)) set $dts,$dts&~(1<<1);
|
|
if($dts&(1<<2)) set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<0);
|
|
}
|
|
if($dts&(1<<4) && $dts&(1<<5) || $dts&(1<<3) && $dts&(1<<4) || $dts&(1<<3) && $dts&(1<<5)){
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Welcome to the";
|
|
mes "temporary headquarters";
|
|
mes "of Cool Event Corporation";
|
|
mes "How may I help you today?";
|
|
next;
|
|
if(getgmlevel()>=40){ //Unofficial Text, GM-configurable settings for Event (GM level above 40 required)
|
|
mes "[Saera]";
|
|
mes "Why, I didn't even";
|
|
mes "notice you there,";
|
|
mes strcharinfo(0)+". What would";
|
|
mes "you like to do today?";
|
|
next;
|
|
menu "Fix Vote",Lfixvote,
|
|
"Set current teleporter",Lsettele,
|
|
"Set last election winner",Lsetlast,
|
|
"Manually run vote check",Lmanuvotecheck,
|
|
"Normal menu please",-;
|
|
mes "[Saera]";
|
|
mes "Ok";
|
|
next;
|
|
}
|
|
menu "Temporary headquarters?",Ltemphead,
|
|
"Voting",Lvoting,"No, thanks.",Lnothx;
|
|
|
|
Ltemphead:
|
|
mes "[Saera]";
|
|
mes "Our headquarters building";
|
|
mes "is currently undergoing";
|
|
mes "reconstruction, so we are";
|
|
mes "basing our operations in";
|
|
mes "this place for the meantime";
|
|
close;
|
|
|
|
Lvoting:
|
|
mes "[Saera]";
|
|
mes "Currently, Kafra Corporation";
|
|
mes "and Cool Event Corp are working";
|
|
mes "on a collaborative program that";
|
|
mes "will provide direct teleport";
|
|
mes "services to dungeons.";
|
|
next;
|
|
mes "[Saera]";
|
|
mes "Due to technical issues,";
|
|
mes "both companies cannot provide";
|
|
mes "teleport services to the same";
|
|
mes "dungeon. Therefore, we will be";
|
|
mes "selecting our valued customers";
|
|
mes "to choose the company they want.";
|
|
next;
|
|
if((dtseligible == 0 || dtseligible == 3) && baselevel >= 60 && MISC_QUEST&128 == 0) set dtseligible,1;
|
|
//Clear previous var of dtseligible,3 being tried for eligibility already
|
|
if(dtseligible != $dtsday && baselevel >= 60 && MISC_QUEST&128){
|
|
set MISC_QUEST,MISC_QUEST&~128;
|
|
set dtseligible,1;
|
|
}
|
|
switch(dtseligible){
|
|
default:
|
|
mes "[Saera]";
|
|
mes "Only a limited number of";
|
|
mes "voters will be chosen, so";
|
|
mes "you can check your voting";
|
|
mes "eligibility at the headquarters";
|
|
mes "of both participating companies.";
|
|
mes "Thank you for your patronage~";
|
|
close;
|
|
break;
|
|
case 1:
|
|
mes "[Saera]";
|
|
mes "It appears that you are";
|
|
mes "eligible to vote";
|
|
mes "so please cast your";
|
|
mes "vote at any Voting Staff";
|
|
mes "representative. Thank you~";
|
|
close;
|
|
break;
|
|
case 2:
|
|
mes "[Saera]";
|
|
mes "You are eligible to vote, but";
|
|
mes "you have already voted. Thank";
|
|
mes "you for your participation";
|
|
close;
|
|
break;
|
|
}
|
|
|
|
Lnothx:
|
|
mes "[Saera]";
|
|
mes "Thank you.";
|
|
mes "Have a good day.";
|
|
close;
|
|
//GM options start
|
|
Lfixvote: //Fix Vote
|
|
mes "[Saera]";
|
|
mes "Umm, sure..";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
mes "To who would you like to give votes to?";
|
|
next;
|
|
menu "Kafra",-,"Cool Event Corp",Lfixcool;
|
|
|
|
Lfixkafra: //Fixing vote for Kafra
|
|
mes "[Saera]";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes."; //multiplied by -1 because var is negative
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
mes "Please input the amount you wish to give to Kafra Corp";
|
|
input @dtstemp; //Set buffer for Kafra vote
|
|
next;
|
|
mes "[Saera]";
|
|
mes "You inputted "+@dtstemp+" for Kafra";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
mes "Are you sure you would like to";
|
|
mes "make these changes?";
|
|
next;
|
|
menu "Yes",-,"No",Lnothx;
|
|
set $dtsv,$dtsv-@dtstemp; //Set buffer to Kafra vote
|
|
mes "[Saera]";
|
|
mes "Okay, you fixed the vote";
|
|
mes "of Kafra Corp.";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
close;
|
|
|
|
Lfixcool: //Fixing vote for cool corp
|
|
mes "[Saera]";
|
|
mes "Let me find the papers...";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
mes "Please input new vote for Cool Event Corp";
|
|
input @dtstemp; //Set buffer for Cool vote
|
|
next;
|
|
mes "[Saera]";
|
|
mes "You inputted "+@dtstemp+" for Cool Event Corp";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
mes "Are you sure you would like to";
|
|
mes "make these changes?";
|
|
next;
|
|
menu "Yes",-,"No",Lnothx; //Confirmaiton
|
|
set $dtsv,@dtsv+@dtstemp; //Set buffer to Cool vote
|
|
mes "[Saera]";
|
|
mes "Okay, you fixed the vote";
|
|
mes "of Cool Event Corp.";
|
|
if($dtsv > 0) mes "Cool Event Corp is currently winning by "+$dtsv+" votes.";
|
|
if($dtsv < 0) mes "Kafra Corp is currently winning by "+$dtsv*-1+" votes.";
|
|
if($dtsv == 0) mes "The vote is currently tied.";
|
|
close;
|
|
|
|
Lsettele: //Set current DTS tele
|
|
mes "[Saera]";
|
|
mes "Type Kafra for Kafra-enabled warp,";
|
|
mes "Cool for Cool Event Corp-enabled";
|
|
mes "warp ,Election for election mode,";
|
|
mes "or Cancel to cancel.";
|
|
if($dts&(1<<0)) mes "The election is currently in election mode.";
|
|
if($dts&(1<<1)) mes "Cool Event Corp is currently the DTS warper.";
|
|
if($dts&(1<<2)) mes "Kafra Corp is currently the DTS warper.";
|
|
next;
|
|
input @dtstemps$; //Typed in choices to prevent mistakes
|
|
mes "Let me find the papers...";
|
|
next;
|
|
if(@dtstemps$ == "Election" || @dtstemps$ == "election"){
|
|
if($dts&(1<<1)){
|
|
set $dts,$dts&~(1<<1); //Removes previous winner
|
|
set $dts,$dts|(1<<0); //Changes status to election
|
|
}
|
|
if($dts&(1<<2)){
|
|
set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<0);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Set to election mode.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Cool" || @dtstemps$ == "cool"){
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0);
|
|
set $dts,$dts|(1<<1);
|
|
}
|
|
if($dts&(1<<2)){
|
|
set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<1);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Cool Event Corp. is now the DTS warper.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Kafra" || @dtstemps$ == "kafra"){
|
|
if($dts&(1<<1)){
|
|
set $dts,$dts&~(1<<1);
|
|
set $dts,$dts|(1<<2);
|
|
}
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0);
|
|
set $dts,$dts|(1<<2);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Kafra Corp. is now the DTS warper.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Cancel" || @dtstemps$ == "cancel") goto Lnothx;
|
|
mes "[Saera]";
|
|
mes "Please input a correct name for the election";
|
|
next;
|
|
goto Lsettele;
|
|
|
|
Lsetlast: //Set last winner
|
|
mes "[Saera]";
|
|
mes "Type Kafra for election records to show Kafra,";
|
|
mes "Cool for Cool for election records to show Cool Event Corp,";
|
|
mes "None for no winner in election records,";
|
|
mes "or Cancel to cancel.";
|
|
if($dts&(1<<3)) mes "There was no previous winner";
|
|
if($dts&(1<<4)) mes "Cool Event Corp was the last winner";
|
|
if($dts&(1<<5)) mes "Kafra Corp was the last winner";
|
|
next;
|
|
input @dtstemps$;
|
|
mes "[Saera]";
|
|
mes "Let me find the papers...";
|
|
next;
|
|
if(@dtstemps$ == "None" || @dtstemps$ == "none"){
|
|
if($dts&(1<<4)){
|
|
set $dts,$dts&~(1<<4); //removes last winner
|
|
set $dts,$dts|(1<<3); //sets current last winner
|
|
}
|
|
if($dts&(1<<5)){
|
|
set $dts,$dts&~(1<<5);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Set records to show no previous winner.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Cool" || @dtstemps$ == "cool"){
|
|
if($dts&(1<<3)){
|
|
set $dts,$dts&~(1<<3);
|
|
set $dts,$dts|(1<<4);
|
|
}
|
|
if($dts&(1<<5)){
|
|
set $dts,$dts&~(1<<5);
|
|
set $dts,$dts|(1<<4);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Cool Event Corp. is now the previous winner.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Kafra" || @dtstemps$ == "kafra"){
|
|
if($dts&(1<<3)){
|
|
set $dts,$dts&~(1<<3);
|
|
set $dts,$dts|(1<<5);
|
|
}
|
|
if($dts&(1<<4)){
|
|
set $dts,$dts&~(1<<4);
|
|
set $dts,$dts|(1<<5);
|
|
}
|
|
mes "[Saera]";
|
|
mes "Kafra Corp. is now the previous winner.";
|
|
close;
|
|
}
|
|
if(@dtstemps$ == "Cancel" || @dtstemps$ == "cancel") goto Lnothx;
|
|
mes "[Saera]";
|
|
mes "Please input a correct name";
|
|
mes "for previous winner";
|
|
next;
|
|
goto Lsetlast;
|
|
|
|
Lmanuvotecheck:
|
|
mes "[Saera]";
|
|
mes "Are you sure you would like to run";
|
|
mes "the vote check again?";
|
|
next;
|
|
menu "Yes",Lmanuvoteyes,"No",Lnothx;
|
|
|
|
Lmanuvoteyes:
|
|
if($dtsday<4 || $dtsday>=100) set $dtsday,4;
|
|
else set $dtsday,$dtsday+1;
|
|
if($dts&(1<<1) && $dts&(1<<2) || $dts&(1<<0) && $dts&(1<<1) || $dts&(1<<0) && $dts&(1<<2)){
|
|
if($dts&(1<<0)) set $dts,$dts&~(1<<0);
|
|
if($dts&(1<<1)) set $dts,$dts&~(1<<1);
|
|
if($dts&(1<<2)) set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<0);
|
|
}
|
|
if($dts&(1<<4) && $dts&(1<<5) || $dts&(1<<3) && $dts&(1<<4) || $dts&(1<<3) && $dts&(1<<5)){
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dtsv == 0){
|
|
set $@dtstemp,rand(1,2);
|
|
if($@dtstemp == 1) set $dtsv,$dtsv+100;
|
|
else set $dtsv,$dtsv-100;
|
|
}
|
|
if($dtsv > 0){
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3); //removes last winner varialbes
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0); //removes winner variable
|
|
set $dts,$dts|(1<<3); //sets last winner varialbe
|
|
set $dts,$dts|(1<<1); //sets current winner variable
|
|
}
|
|
if($dts&(1<<1)) set $dts,$dts|(1<<4);
|
|
if($dts&(1<<2)){
|
|
set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<1);
|
|
set $dts,$dts|(1<<5);
|
|
}
|
|
set $dtsv,0;
|
|
}
|
|
else{
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0);
|
|
set $dts,$dts|(1<<2);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dts&(1<<1)){
|
|
set $dts,$dts&~(1<<1);
|
|
set $dts,$dts|(1<<2);
|
|
set $dts,$dts|(1<<4);
|
|
}
|
|
if($dts&(1<<2)) set $dts,$dts|(1<<5);
|
|
set $dtsv,0;
|
|
}
|
|
mes "[Saera]";
|
|
mes "Vote check run again.";
|
|
if($dts&(1<<0)) mes "The election is currently in election mode.";
|
|
if($dts&(1<<1)) mes "Cool Event Corp is currently the DTS warper.";
|
|
if($dts&(1<<2)) mes "Kafra Corp is currently the DTS warper.";
|
|
close;
|
|
}
|
|
|
|
//Function for Voting Staff NPC
|
|
function script F_DTS_Warp {
|
|
callfunc "F_ClearGarbage"; //Clear outdated, unused variables
|
|
if($dts == 0){ //Sets NPCs to election mode if first time running
|
|
set $dts,$dts|(1<<0);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if((dtseligible == 0 || dtseligible == 3) && baselevel >= 60 && MISC_QUEST&128 == 0) set dtseligible,1; //Clear previous var of dtseligible,3 being tried for eligibility already
|
|
if(dtseligible != $dtsday && baselevel >= 60 && MISC_QUEST&128){
|
|
set MISC_QUEST,MISC_QUEST&~128;
|
|
set dtseligible,1;
|
|
}
|
|
switch(getarg(0)){
|
|
case 0:
|
|
cutin "zonda_01",2;
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Hello! Don't forget to make";
|
|
mes "your voice be heard and make";
|
|
mes "sure you vote in the elections";
|
|
mes "between Cool Event Corp. and";
|
|
mes "Kafra Corporation for control of";
|
|
mes "the Dungeon Teleport Service!";
|
|
break;
|
|
case 1:
|
|
switch(getarg(1)){
|
|
case 0: cutin "kafra_06",2; break; //Finding arguments to find which illust to use
|
|
case 1: cutin "kafra_05",2; break; //Used Red hair "kafra_09" for black outfit kafra
|
|
case 2: cutin "kafra_04",2; break; //because I couldn't find a suitable illust
|
|
case 3: cutin "kafra_03",2; break;
|
|
case 4: cutin "kafra_02",2; break;
|
|
case 5: cutin "kafra_01",2; break;
|
|
case 6: cutin "kafra_09",2; break;
|
|
case 7: cutin "kafra_08",2; break;
|
|
case 8: cutin "kafra_09",2; break;
|
|
default: cutin "kafra_09",2; break;
|
|
}
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Greetings, adventurer.";
|
|
mes "As you may be aware, we";
|
|
mes "are holding an election to";
|
|
mes "provide the Dungeon Teleport";
|
|
mes "Service. How may I help you?";
|
|
break;
|
|
}
|
|
next;
|
|
menu "Reason for Election",Lelection,"Cast a Vote",Lvote,
|
|
"Use Teleport Service",Lteleport,"Cancel",Lcancel;
|
|
|
|
Lelection: //Reason for election explanation
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Cool Event Corp. has been";
|
|
mes "planning to provide a new";
|
|
mes "Dungeon Teleport Service to";
|
|
mes "its customers, a service not";
|
|
mes "already provided by the Kafra";
|
|
mes "Corporation. However...";
|
|
next;
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Kafra Corporation, which";
|
|
mes "already monopolizes the";
|
|
mes "public teleportation market,";
|
|
mes "actually also had plans to";
|
|
mes "provide a similar service.";
|
|
next;
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Because of technological";
|
|
mes "limitations, only one company";
|
|
mes "can be chosen as the provider";
|
|
mes "of this Dungeon Teleport Service.";
|
|
mes "Hence, we will let the customers";
|
|
mes "decide through these elections.";
|
|
next;
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Multiple elections will be";
|
|
mes "held so that our customers";
|
|
mes "can test out the special services";
|
|
mes "of each company for themselves.";
|
|
mes "However, keep in mind that you";
|
|
mes "must be eligible in order to vote.";
|
|
next;
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "For voter eligibility";
|
|
mes "details, please visit our";
|
|
mes "headquarters in the city of";
|
|
mes "Lighthalzen located in the";
|
|
mes "Schwarzwald Republic.";
|
|
mes "Thank you for your time.";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Cool Event Corp and the";
|
|
mes "Kafra Corporation have both";
|
|
mes "been planning to provide a";
|
|
mes "Teleport Service to dungeons.";
|
|
next;
|
|
mes "[Kafra Voting Staff]";
|
|
mes "But due to technological";
|
|
mes "limitations, only one company";
|
|
mes "can serve as provider for this";
|
|
mes "Dungeon Teleport Service at a";
|
|
mes "time. There, both companies have";
|
|
mes "agreed to hold special elections";
|
|
next;
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Each company has its own";
|
|
mes "policies and guarantees in";
|
|
mes "regards to the Dungeon Teleport";
|
|
mes "Service, and in this election, the";
|
|
mes "customers will ultimately decide";
|
|
mes "and choose what's best for them.";
|
|
next;
|
|
mes "[Kafra Voting Staff]";
|
|
mes "For now, the Dungeon";
|
|
mes "Teleport Service will be";
|
|
mes "provided in a series of trial";
|
|
mes "periods. This way, customers can";
|
|
mes "see the benefits of both companies";
|
|
mes "before making the final decision";
|
|
next;
|
|
mes "[Kafra Voting Staff]";
|
|
mes "If you are qualified,";
|
|
mes "please vote in each election";
|
|
mes "to decide which company will";
|
|
mes "provide the Dungeon Teleport";
|
|
mes "Service for the next trial period.";
|
|
mes "Thank you for your support~";
|
|
break;
|
|
}
|
|
goto Lend;
|
|
|
|
Lvote: //If you clicked you wanted to vote
|
|
if(dtseligible == 1) goto Leligible; //Var check if eligible
|
|
|
|
Lnoteligible: //Text displayed if wanted to vote, but not eligible/voted
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "I'm sorry, but you are not";
|
|
mes "eligible to vote at this time.";
|
|
mes "Please visit our headquarters";
|
|
mes "in Lighthalzen for information";
|
|
mes "related to acquiring voting";
|
|
mes "rights. Thank you for your time.";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Oh, I'm so sorry, but you";
|
|
mes "are currently not qualified to";
|
|
mes "vote. For voting qualification";
|
|
mes "information, please visit the";
|
|
mes "Al De Baran Kafra Headquarters.";
|
|
mes "Thank you and have a nice day.";
|
|
break;
|
|
}
|
|
goto Lend;
|
|
|
|
Leligible: //Text displayed if eligible to vote
|
|
if(MISC_QUEST&128 && $dtsday == dtseligible) goto Lnoteligible; //Var check if voted
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]"; //Unofficial text
|
|
mes "Checking your credentials, you";
|
|
mes "are able to vote for the";
|
|
mes "Dungeon Teleport Service";
|
|
mes "elections. Who would you like";
|
|
mes "to vote for?";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "It appears that you qualify";
|
|
mes "to vote for the Dungeon";
|
|
mes "Teleport Service elections.";
|
|
mes "Who would you like to vote for"; //End Unofficial text
|
|
break;
|
|
}
|
|
next;
|
|
menu "Cool Event Corp.",Lvotecool,"Kafra Corp.",Lvotekafra;
|
|
|
|
Lvotecool:
|
|
set $dtsv,$dtsv+1; //Adds 1 to cool count
|
|
set MISC_QUEST,MISC_QUEST|128; //Sets var so that you can't vote over and over
|
|
set dtseligible,$dtsday;
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Thank you for voting for us.";
|
|
mes "Your vote has been counted,";
|
|
mes "and we appreciate your input";
|
|
mes "Thank you and have a good day.";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "We thank you for your vote.";
|
|
mes "Your opinion matters very much";
|
|
mes "and has been counted for Cool";
|
|
mes "Event Corp.";
|
|
break;
|
|
}
|
|
goto Lend;
|
|
|
|
Lvotekafra:
|
|
setd $dtsv,$dtsv-1; //Adds 1 to kafra count
|
|
set MISC_QUEST,MISC_QUEST|128; //Sets var to prevent cheating
|
|
set dtseligible,$dtsday;
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]"; //Unofficial Text
|
|
mes "Thank you for your opinion.";
|
|
mes "Your vote for Kafra corp.";
|
|
mes "has been counted. Thank";
|
|
mes "you and have a good day.";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Your vote for us has been";
|
|
mes "counted. We thank you very";
|
|
mes "much for your input, and";
|
|
mes "we hope that we meet your";
|
|
mes "adventuring needs and";
|
|
mes "standards of excellence.";
|
|
break;
|
|
}
|
|
goto Lend; //End Unofficial text
|
|
|
|
Lteleport: //Selected Teleport
|
|
switch(getarg(0)){
|
|
case 0:
|
|
if($dts&(1<<0)){
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "I'm sorry, but the";
|
|
mes "Dungeon Teleport Service is";
|
|
mes "unavailable during elections";
|
|
mes "and will be reactivated after the";
|
|
mes "election results are announced.";
|
|
mes "Thank you and have a nice day.";
|
|
goto Lend;
|
|
}
|
|
if($dts&(1<<1)) goto Lteleenabled;
|
|
mes "[Cool Event Corp. Voting Staff]"; //Text if Kafra won DTS elect.
|
|
mes "I'm sorry, but Cool Event";
|
|
mes "Corp. does not currently offer";
|
|
mes "the Dungeon Teleport Service";
|
|
mes "due to the results of the last";
|
|
mes "election. Please vote for us";
|
|
mes "next time, alright? Good day~";
|
|
break;
|
|
case 1:
|
|
if($dts&(1<<0)){
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Sorry, but the elections for";
|
|
mes "which Dungeon Teleport System";
|
|
mes "to use is currently going on";
|
|
mes "right now. We are unable to";
|
|
mes "vote until results are announced";
|
|
goto Lend;
|
|
}
|
|
if($dts&(1<<2)) goto Lteleenabled;
|
|
mes "[Kafra Voting Staff]";
|
|
mes "We're sorry, but Kafra Corp";
|
|
mes "doesn't currently offer the";
|
|
mes "Dungeon Teleport System due";
|
|
mes "to last election's results,";
|
|
mes "Please vote for Kafra Corp";
|
|
mes "next time~";
|
|
break;
|
|
}
|
|
goto Lend;
|
|
|
|
Lteleenabled: //Shows DTS tele selections
|
|
cleararray @dtswarpmap$[0],"",getarraysize(@dtswarpmap$);
|
|
cleararray @dtswarp$[0],"",getarraysize(@dtswarp$);
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Please remember that we";
|
|
mes "cannot accept Free Warp Tickets";
|
|
mes "or award Special Reserve Points";
|
|
mes "for this service. Now, please";
|
|
mes "choose your destination.";
|
|
setarray @dtswarpmap$[0],"Byalan, Level 4","Clock Tower, Basement 3";
|
|
setarray @dtswarp$[0],@dtswarpmap$[0]+" -> 4,000z",
|
|
@dtswarpmap$[1]+" -> 4,000z","Cancel";
|
|
if($dts&(1<<4)){
|
|
set @dtswarpmap$[2],"Glastheim Entrance";
|
|
setarray @dtswarp$[2],@dtswarpmap$[2]+" -> 4,000z","Cancel";
|
|
}
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "Thank you for choosing the";
|
|
mes "Dungeon Teleport Service";
|
|
mes "Please keep in mind that the";
|
|
mes "Free Warp Tickets and Kafra";
|
|
mes "Special Reserve Points do not";
|
|
mes "apply in this special service.";
|
|
setarray @dtswarpmap$[0],"Toy Factory, Level 2","Clock Tower, Level 3";
|
|
setarray @dtswarp$[0],@dtswarpmap$[0]+" -> 4,000z",
|
|
@dtswarpmap$[1]+" -> 4,000z","Cancel";
|
|
if($dts&(1<<5)){
|
|
set @dtswarpmap$[2],"Lava Dungeon, Level 2";
|
|
setarray @dtswarp$[2],@dtswarpmap$[2]+" -> 4,000z","Cancel";
|
|
}
|
|
break;
|
|
}
|
|
next;
|
|
switch(select(@dtswarp$[0],@dtswarp$[1],@dtswarp$[2],@dtswarp$[3])){
|
|
case 1:
|
|
set @num, 0;
|
|
break;
|
|
case 2:
|
|
set @num, 1;
|
|
break;
|
|
case 3:
|
|
set @num, 2;
|
|
break;
|
|
case 4:
|
|
set @num, 3;
|
|
break;
|
|
}
|
|
Lwarp:
|
|
if (@dtswarp$[@num] == "Cancel") goto Lcancel;
|
|
if (Zeny<4000) goto Lnomoney;
|
|
set Zeny, Zeny-4000;
|
|
if (@dtswarpmap$[@num] == "Toy Factory, Level 2") warp "xmas_dun02",130,123;
|
|
//Maps to warp to
|
|
if (@dtswarpmap$[@num] == "Clock Tower, Level 3") warp "alde_dun03",265,22;
|
|
|
|
if (@dtswarpmap$[@num] == "Lava Dungeon, Level 2") warp "mag_dun02",47,40;
|
|
|
|
if (@dtswarpmap$[@num] == "Byalan, Level 4") warp "iz_dun03",32,63;
|
|
|
|
if (@dtswarpmap$[@num] == "Clock Tower, Basement 3") warp "alde_dun03",277,178;
|
|
|
|
if (@dtswarpmap$[@num] == "Glastheim Entrance") warp "glast_01",370,304;
|
|
|
|
cutin "", 255;
|
|
end;
|
|
Lnomoney:
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]"; //Unofficial Text
|
|
mes "Umm, apparently you don't have";
|
|
mes "adequate funds for your";
|
|
mes "selected warp. Please check";
|
|
mes "that you have the correct amount";
|
|
mes "of money, and try again later";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "It appears as if you don't";
|
|
mes "have enough zeny for the warp";
|
|
mes "Please check your funds and";
|
|
mes "try again.";
|
|
break;
|
|
}
|
|
goto Lend; //End unofficial text
|
|
|
|
Lcancel: //Selected Cancel on first menu
|
|
switch(getarg(0)){
|
|
case 0:
|
|
mes "[Cool Event Corp. Voting Staff]";
|
|
mes "Cool Event Corp. is always";
|
|
mes "working to make sure that";
|
|
mes "not only are our customers";
|
|
mes "satisfied, but that we also";
|
|
mes "exceed your utmost standards.";
|
|
mes "Thank you and have a good day.";
|
|
break;
|
|
case 1:
|
|
mes "[Kafra Voting Staff]";
|
|
mes "We, here at Kafra Corporation,";
|
|
mes "are alwyas endeavoring to provide";
|
|
mes "you with the best services. We hope";
|
|
mes "that we meet your adventuring needs";
|
|
mes "and the standards of excellence.";
|
|
break;
|
|
}
|
|
goto Lend;
|
|
Lend:
|
|
close2;
|
|
cutin "", 255;
|
|
end;
|
|
|
|
}
|
|
|
|
//Elections administration NPC (hidden)
|
|
- script DTS_Admin -1,{
|
|
OnSun0100: //Works only at 1am on sunday
|
|
if($dtsday<4 || $dtsday>=100) set $dtsday,4;
|
|
else set $dtsday,$dtsday+1;
|
|
if($dts == 0){
|
|
set $dts,$dts|(1<<0);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dts&(1<<1) && $dts&(1<<2) || $dts&(1<<0) && $dts&(1<<1) || $dts&(1<<0) && $dts&(1<<2)){
|
|
if($dts&(1<<0)) set $dts,$dts&~(1<<0);
|
|
if($dts&(1<<1)) set $dts,$dts&~(1<<1);
|
|
if($dts&(1<<2)) set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<0);
|
|
}
|
|
if($dts&(1<<4) && $dts&(1<<5) || $dts&(1<<3) && $dts&(1<<4) || $dts&(1<<3) && $dts&(1<<5)){
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dtsv == 0){ //If tied, gives random side 100 votes
|
|
set $@dtstemp,rand(1,2);
|
|
if($@dtstemp == 1) set $dtsv,$dtsv+100;
|
|
else set $dtsv,$dtsv-100;
|
|
}
|
|
if($dtsv > 0){
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0);
|
|
set $dts,$dts|(1<<1);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dts&(1<<1)) set $dts,$dts|(1<<4);
|
|
if($dts&(1<<2)){
|
|
set $dts,$dts&~(1<<2);
|
|
set $dts,$dts|(1<<1);
|
|
set $dts,$dts|(1<<5);
|
|
}
|
|
set $dtsv,0;
|
|
}
|
|
else{
|
|
if($dts&(1<<3)) set $dts,$dts&~(1<<3);
|
|
if($dts&(1<<4)) set $dts,$dts&~(1<<4);
|
|
if($dts&(1<<5)) set $dts,$dts&~(1<<5);
|
|
if($dts&(1<<0)){
|
|
set $dts,$dts&~(1<<0);
|
|
set $dts,$dts|(1<<2);
|
|
set $dts,$dts|(1<<3);
|
|
}
|
|
if($dts&(1<<1)){
|
|
set $dts,$dts&~(1<<1);
|
|
set $dts,$dts|(1<<2);
|
|
set $dts,$dts|(1<<4);
|
|
}
|
|
if($dts&(1<<2)) set $dts,$dts|(1<<5);
|
|
set $dtsv,0;
|
|
}
|
|
end;
|
|
}
|