Sfoglia il codice sorgente

Wooho.. I'm back. Added dts_warper.txt (DTS Warper NPC)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6571 54d463be-8e91-2dee-dedb-b68131a5f0ec
evera 19 anni fa
parent
commit
1e92f279ca
3 ha cambiato i file con 1082 aggiunte e 0 eliminazioni
  1. 2 0
      npc/Changelog.txt
  2. 1079 0
      npc/other/dts_warper.txt
  3. 1 0
      npc/scripts_athena.conf

+ 2 - 0
npc/Changelog.txt

@@ -27,6 +27,8 @@ Nexon
 
 Date		Added
 ======
+5/12
+	* Added DTS (Dungeon Teleport System) Warper NPC [Evera]
 05/10
 	* Fixed some typos and grammatical errors on the Job Dancer quest...
 	  [Skotlex]

+ 1079 - 0
npc/other/dts_warper.txt

@@ -0,0 +1,1079 @@
+//===== eAthena Script ======================================= 
+//= Dungeon Teleport Service (Cool Event Corp and Kafra Corp competition)
+//===== By: ================================================== 
+//= Evera
+//===== Current Version: ===================================== 
+//= 1.2
+//===== Compatible With: ===================================== 
+//= eAthena
+//===== Description: =========================================
+//= All-included file of Cool Event Corp NPCs with Kafra voting system.
+//= Kafra DTS voting system must be implemented in Kafra to use!
+//===== Variables: ===========================================
+//=Server - 	$dtscool 		= # of votes for Cool Corp
+//=		$dtskafra 		= # of votes for Kafra
+//=		$dtsstatus 		= Status for DTS 0, election; 1, Cool Corp enabled, won last; 2, Kafra enabled, won last;
+//=					= 3, Cool corp enabled, lost last; 4, Kafra enabled, lost last.
+//=		$dtslast		= Last election results, same legend as above
+//=		$dtsglobalelig		= 0 for normal eligibility system, 1 for eligibility for everyone
+//=					= Set through GM-eligibility fixing
+//=		$dtsgivevote_(id)	= Gives 'charname' voting rights next time they talk to a NPC in this script
+//=					= Given through GM vote-give thing. 0 for normal, 1 for voting rights.
+//=Character -	dtseligible 		= eligibility status, 0 not eligible, 1 eligible, 2 eligible & voted, 3 tried for elig.
+//=					= (By default, 1/4 chance of being able to vote. set to 1 after having random selection;
+//=					= not used if $dtsglobalelig == 1) 
+//=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, need Dungeon maps/coords/prices
+//= Also includes unofficial GM-enabled tweaking for script
+//= Includes NPCs in Cool Event Corp headquarters
+//= Also known as Zondaman in other languages
+//= Pretty sure there are more locations I didn't find.
+//= Uses random (1/4) chance of being eligible to vote. Real quest is that you can vote after doing
+//= President's Quest, which isn't yet released.
+//===== Version History: ====================================
+//= 1.2 Mushed some variables together, optimized a bit
+//= 1.1	SVN release, removed from major town (found true info after research),
+//=	put more arg(2) parameters, fixed a few bugs [Evera] (5/11/06)
+//= 1.0	Initial release [Evera] (5/10/06)
+//============================================================ 
+
+//Yuno
+yuno.gat,153,191,4	script	Cool Event Voting Staff	874,{
+	callfunc "F_DTS_Warp",0,0;
+}
+yuno.gat,162,191,6	script	Kafra Voting Staff	861,{
+	callfunc "F_DTS_Warp",1,8;
+}
+//Lighthalzen
+lighthalzen.gat,154,60,6	script	Cool Event Voting Staff	874,{
+	callfunc "F_DTS_Warp",0,0;
+}
+//Prontera
+prontera.gat,147,125,4	script	Cool Event Voting	874,{
+	callfunc "F_DTS_Warp",0,0;
+}
+prontera.gat,164,125,6	script	Kafra Voting Staff	115,{
+	callfunc "F_DTS_Warp",1,3;
+}
+
+//Cool Event Staff Headquarters NPCs
+//Kudiuu (Maintenance Guy)
+lhz_in02.gat,20,274,6	script	Maintenance Guy	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.gat,36,284,1	script	Cool Event Staff	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.gat,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.gat,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.gat,36,274,3	script	Cool Event Staff	831,{
+	if(getd("$dtsgivevote_"+getcharid(0)) == 1){			//Check to see if GM enabled eligibility
+		set dtseligible,1;
+		setd "$dtsgivevote_"+getcharid(0),0;
+	}
+	mes "[Saera]";
+	mes "Welcome to the";
+	mes "temporary headquarters";
+	mes "of Cool Event Corporation";
+	mes "How may I help you today?";
+	next;
+	if(getgmlevel()>60){ 						//Unofficial Text, GM-configurable settings for Event (GM level above 60 required)
+		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,
+		"Set eligiblity for players",Lseteligibility,
+		"Manually run vote check",Lmanuvotecheck,
+		"Change day to check votes",Lchangeday,
+		"Temporary headquarters?",Ltemphead,			//Normal NPC menu
+		"Voting",Lvoting,
+		"No, thanks.",Lnothx;
+	}
+	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($dtsglobalelig == 1){				//Check for global elig
+			mes "[Saera]";					//Unofficial text
+			mes "Global eligiblity is enabled.";
+			mes "Please vote at the nearest";
+			mes "Voting Staff, please.";			//End unofficial text
+			close;
+		}
+		switch(dtseligible){
+			case 0:
+				set @randapply,rand(3);			//Gives random(1/4) chance of being eligible
+				switch(@randapply){			//Unofficial, until President's quest is completed
+				case 0:
+				case 1:
+				case 2:
+					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~";
+					set dtseligible,3;
+					close;
+					break;
+				case 3:
+					set dtseligible,1;
+					break;
+				default: 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;
+			case 3:
+			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;
+		}
+
+	Lnothx:
+		mes "[Saera]";
+		mes "Thank you.";
+		mes "Have a good day.";
+		close;
+									//GM options start
+	Lfixvote:							//Fix Vote
+		mes "[Saera]";
+		mes "Umm, sure..";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		mes "Which one would you like to change?";
+		next;
+		menu "Kafra",Lfixkafra,"Cool Event Corp",Lfixcool;
+
+	Lfixkafra:
+		mes "[Saera]";
+		mes "Let me find the papers...";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		mes "Please input new vote for Kafra";
+		input @dtstemp;					//Set buffer for Kafra vote
+		next;
+		mes "[Saera]";
+		mes "You inputted "+@dtstemp+" for Kafra";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		mes "Are you sure you would like to";
+		mes "make these changes?";
+		next;
+		menu "Yes",Lfixkafray,"No",Lnothx;			//Confirmation
+
+	Lfixkafray:
+		set $dtskafra,@dtstemp;				//Set buffer to Kafra vote
+		mes "[Saera]";
+		mes "Okay, you fixed the vote";
+		mes "of Kafra Corp.";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		close;
+
+	Lfixcool:
+		mes "[Saera]";
+		mes "Let me find the papers...";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		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";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		mes "Are you sure you would like to";
+		mes "make these changes?";
+		next;
+		menu "Yes",Lfixcooly,"No",Lnothx;			//Confirmaiton
+
+	Lfixcooly:
+		set $dtscool,@dtstemp;				//Set buffer to Cool vote
+		mes "[Saera]";
+		mes "Okay, you fixed the vote";
+		mes "of Cool Event Corp.";
+		mes "Current Kafra vote: "+$dtskafra;
+		mes "Current Cool Event Corp vote: "+$dtscool;
+		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.";
+		switch($dtsstatus){
+			case 0: mes "The election is currently in election mode"; break;
+			case 3:
+			case 5:
+			case 1: mes "Cool Event Corp is currently the DTS warper."; break;
+			case 4:
+			case 6:
+			case 2: mes "Kafra Corp is currently the DTS warper."; break;
+			default: break;
+		}
+		next;
+		input @dtstemps$;
+		mes "Let me find the papers...";
+		next;
+		if(@dtstemps$ == "Election" || @dtstemps$ == "election"){
+			set $dtsstatus,0;
+			mes "[Saera]";
+			mes "Set to election mode.";
+			close;
+		}
+		if(@dtstemps$ == "Cool" || @dtstemps$ == "cool"){
+			switch($dtstatus){
+				case 2:
+				case 4:
+				case 6:
+					set $dtsstatus,3;
+					break;
+				case 3:
+				case 5:
+					set $dtsstatus,1;
+					break;
+				default: break;
+			}
+			mes "[Saera]";
+			mes "Cool Event Corp. is now the DTS warper.";
+			close;
+		}
+		if(@dtstemps$ == "Kafra" || @dtstemps$ == "kafra"){
+			switch($dtsstatus){
+				case 1:
+				case 3:
+				case 5:
+					set $dtsstatus,4;
+					break;
+				case 4:
+				case 6:
+					set $dtsstatus,2;
+					break;
+				default: break;
+			}
+			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";
+		mes "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.";
+		switch($dtsstatus){
+			case 5:
+			case 6:
+			case 0: mes "There was no previous winner"; break;
+			case 1:
+			case 4: mes "Cool Event Corp was the last winner"; break;
+			case 3:
+			case 2: mes "Kafra Corp was the last winner"; break;
+			default: break;
+		}
+		next;
+		input @dtstemps$;
+		mes "[Saera]";
+		mes "Let me find the papers...";
+		next;
+		if(@dtstemps$ == "None" || @dtstemps$ == "none"){
+			switch($dtsstatus){
+				case 1:
+				case 3:
+					set $dtsstatus,5;
+					break;
+				case 2:
+				case 4:
+					set $dtsstatus,6;
+					break;
+				default: break;
+			}
+			mes "[Saera]";
+			mes "Set records to show no previous winner.";
+			close;
+		}
+		if(@dtstemps$ == "Cool" || @dtstemps$ == "cool"){
+			switch($dtsstatus){
+				case 2:
+				case 6:
+					set $dtsstatus,4;
+					break;
+				case 3:
+				case 5:
+					set $dtsstatus,1;
+					break;
+				default: break;
+			}
+			mes "[Saera]";
+			mes "Cool Event Corp. is now the previous winner.";
+			close;
+		}
+		if(@dtstemps$ == "Kafra" || @dtstemps$ == "kafra"){
+			switch($dtsstatus){
+				case 1:
+				case 5:
+					set $dtsstatus,3;
+					break;
+				case 4:
+				case 6:
+					set $dtsstatus,2;
+				default: break;
+			}
+			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;
+
+	Lseteligibility:						//Set player eligibility
+		mes "[Saera]";
+		mes "Input the name of the character";
+		mes "you wish to give voting rights.";
+		mes "If the character voted, this will";
+		mes "also clear their vote";
+		switch($dtsglobalelig){ 
+			case 0: mes "Type All to give everyone voting rights."; break;
+			case 1: mes "Type Removeall to remove global voting rights"; break;
+			default: mes "Type All to give everyone voting rights."; break;
+		}
+		next;
+		input @seteligibility$;
+		mes "[Saera]";
+		mes "Let me find the papers...";
+		next;
+		if(@seteligibility$ == "All" || @seteligibility$ == "all") set $dtsglobalelig,1;
+		if(@seteligibility$ == "Removeall" && @seteligibility$ == "removeall") set $dtsglobalelig,0;
+		if(@seteligibility$ != "All" && @seteligibility$ != "all") setd "$dtsgivevote_"+getcharid(0,@seteligibility$),1;
+		mes "[Saera]";
+		mes "Eligibility options set.";
+		mes "Would you like to set the eligiblity options on another character?";
+		next;
+		menu "Yes",Lseteligibility,"No",Lnothx;
+
+	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($dtscool == $dtskafra){
+			set $@dtstemp,rand(1,2);
+			if($@dtstemp == 1) set $dtscool,$dtscool+100;
+			else set $dtskafra,$dtskafra+100;
+		}
+		if($dtscool > $dtskafra){
+			switch($dtsstatus){
+				case 3:
+				case 5:
+					set $dtsstatus,1;
+					break;
+				case 2:
+				case 4:
+				case 6:
+					set $dtsstatus,3;
+					break;
+				default: break;
+			}
+			set $dtscool,0;
+			set $dtskafra,0;
+		}
+		else{
+			switch($dtsstatus){
+				case 1:
+				case 3:
+				case 5:
+					set $dtsstatus,4;
+					break;
+				case 4:
+				case 6:
+					set $dtsstatus,2;
+					break;
+				default: break;
+			}
+			set $dtscool,0;
+			set $dtskafra,0;
+		}
+		mes "[Saera]";
+		mes "Vote check run again.";
+		switch($dtsstatus){
+			case 0: mes "The election is currently in election mode"; break;
+			case 3:
+			case 5:
+			case 1: mes "Cool Event Corp is currently the DTS warper."; break;
+			case 4:
+			case 6:
+			case 2: mes "Kafra Corp is currently the DTS warper."; break;
+			default: break;
+		}
+		close;
+
+	Lchangeday:
+		mes "[Saera]";
+		mes "Okay, please input the";
+		mes "day you would like to change";
+		mes "the vote-checking to.";
+		mes "Please type Mon-Sun, or type out the";
+		mes "entire day. Thank you~";
+		next;
+		mes "[Saera]";
+		mes "Let me find the papers...";
+		input @dtschangeday$;
+		next;
+		mes "[Saera]";
+		mes "You requested the vote day";
+		if(@dtschangeday$ == "Mon" || @dtschangeday$ == "mon" || 
+		@dtschangeday$ == "Monday" || @dtschangeday$ == "monday"){
+		mes "to be changed to Monday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Tue" || @dtschangeday$ == "tue" || 
+		@dtschangeday$ == "Tuesday" || @dtschangeday$ == "tuesday"){
+		mes "to be changed to Tuesday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Wed" || @dtschangeday$ == "wed" || 
+		@dtschangeday$ == "Wednesday" || @dtschangeday$ == "wednesday"){
+		mes "to be changed to Wednesday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Thu" || @dtschangeday$ == "thu" || 
+		@dtschangeday$ == "Thursday" || @dtschangeday$ == "thursday"){
+		mes "to be changed to Thursday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Fri" || @dtschangeday$ == "fri" || 
+		@dtschangeday$ == "Friday" || @dtschangeday$ == "friday"){
+		mes "to be changed to Friday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Sat" || @dtschangeday$ == "sat" || 
+		@dtschangeday$ == "Saturday" || @dtschangeday$ == "saturday"){
+		mes "to be changed to Saturday.";
+		goto Ldayconfirm;
+		}
+		if(@dtschangeday$ == "Sun" || @dtschangeday$ == "sun" || 
+		@dtschangeday$ == "Sunday" || @dtschangeday$ == "sunday"){
+		mes "to be changed to Sunday.";
+		goto Ldayconfirm;
+		}
+		mes ", but you specified an invalid";
+		mes "day. What action would you like";
+		mes "to take?";
+		next;
+		menu "Re-input day",Lchangeday,"Cancel",Lnothx;
+
+	Ldayconfirm:
+		mes "Are you sure you would like to";
+		mes "change the check to this day?";
+		next;
+		menu "Yes",Ldayset,"No",Lnothx,"Input another day",Lchangeday;
+
+	Ldayset:
+		if(@dtschangeday$ == "Mon" || @dtschangeday$ == "mon" || 
+		@dtschangeday$ == "Monday" || @dtschangeday$ == "monday")
+		set $dtsday,1;
+		if(@dtschangeday$ == "Tue" || @dtschangeday$ == "tue" || 
+		@dtschangeday$ == "Tuesday" || @dtschangeday$ == "tuesday")
+		set $dtsday,2;
+		if(@dtschangeday$ == "Wed" || @dtschangeday$ == "wed" || 
+		@dtschangeday$ == "Wednesday" || @dtschangeday$ == "wednesday")
+		set $dtsday,3;
+		if(@dtschangeday$ == "Thu" || @dtschangeday$ == "thu" || 
+		@dtschangeday$ == "Thursday" || @dtschangeday$ == "thursday")
+		set $dtsday,4;
+		if(@dtschangeday$ == "Fri" || @dtschangeday$ == "fri" || 
+		@dtschangeday$ == "Friday" || @dtschangeday$ == "friday")
+		set $dtsday,5;
+		if(@dtschangeday$ == "Sat" || @dtschangeday$ == "sat" || 
+		@dtschangeday$ == "Saturday" || @dtschangeday$ == "saturday")
+		set $dtsday,6;
+		if(@dtschangeday$ == "Sun" || @dtschangeday$ == "sun" || 
+		@dtschangeday$ == "Sunday" || @dtschangeday$ == "sunday")
+		set $dtsday,0;
+		mes "[Saera]";
+		mes "Successfully changed the day.";
+		close;
+}
+
+//Function for Voting Staff NPC
+function	script	F_DTS_Warp	{
+	if(dtseligible == 0){						//Gives random(1/4) chance of being eligible
+		set @randapply,rand(4);
+		if(@randapply == 0) set dtseligible,1;
+	}
+	if(getd("$dtsgivevote_"+getcharid(0)) == 1){			//Check to see if GM enabled eligibility
+		set dtseligible,1;
+		setd "$dtsgivevote_"+getcharid(0),0;
+	}
+	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 "Schwaltzvalt 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
+		if($dtsglobalelig == 1) goto Leligible;			//Var check for global elig.
+		goto Lnoteligible;
+
+	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(dtseligible == 3 && $dtsglobalelig == 0 || dtseligible == 2) 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 $dtscool,$dtscool+1;				//Adds 1 to $dtscool count
+		set dtseligible,2;						//Sets var so that you can't vote over and over
+		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 $dtskafra,$dtskafra+1; 				//Adds 1 to $dtskafra count
+		set dtseligible,2; 					//Sets var to prevent cheating
+		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:
+			switch($dtsstatus){
+				case 0: goto Lteleelect; break;		//Check if it's time to elect
+				case 3:
+				case 5:
+				case 1: goto Lteleenabled; break;	//Check if Cool is enabled to DTS
+				default: break;
+			}
+			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:
+			switch($dtsstatus){
+				case 0: goto Lteleelect; break;		//Check if it's time to elect
+				case 4:
+				case 6:
+				case 2: goto Lteleenabled; break; 	//Check if Kafra is enabled to DTS
+				default: break;
+			}
+			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;
+
+	Lteleelect: 							//During elections, displayed if asking for tele
+		switch(getarg(0)){
+		case 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.";
+			break;
+		case 1:
+			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";
+			break;
+		}
+		goto Lend;
+
+	Lteleenabled: 							//Shows DTS tele selections
+	switch(getarg(0)){
+	case 0:
+		mes "[Cool Event Corp. Voting Staff]"; 			//Unofficial Text
+		mes "Thank you for selecting Cool";
+		mes "Event Corp. for the Dungeon";
+		mes "Teleport Service in the";
+		mes "election. Where would you";
+		mes "like to go today?"; 				//End unofficial text
+		setarray @dtswarpmap$[0],"Bailand, Level 4","Clock Tower, Basement 3";
+		setarray @dtswarp$[0],@dtswarpmap$[0]+" -> 4,000z",
+		@dtswarpmap$[1]+" -> 4,000z","Cancel";
+		if($dtsstatus == 2){ 
+			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($dtsstatus == 1){ 
+			set @dtswarpmap$[2],"Lava Dungeon, Level 2";
+			setarray @dtswarp$[2],@dtswarpmap$[2]+" -> 4,000z","Cancel";
+		}
+		break;
+	}
+	next;
+	menu @dtswarp$[0],Ldtswarp0,@dtswarp$[1],		//Array set above
+	Ldtswarp1,@dtswarp$[2],Ldtswarp2;
+
+	Ldtswarp0:
+		set @num, 0;
+		goto Lwarp;
+
+	Ldtswarp1:
+		set @num, 1;
+		goto Lwarp;
+
+	Ldtswarp2:
+		set @num, 2;
+		goto Lwarp;
+
+	Lwarp:
+		if (@dtswarp$[@num] == "Cancel") goto Lcancel;
+		if (Zeny<4000) goto Lnomoney;
+		set Zeny, Zeny-@dtswarpcost[@num];
+		if (@dtswarpmap$[@num] == "Toy Factory, Level 2") warp "xmas_dun02.gat",130,123;
+ //Maps to warp to
+		if (@dtswarpmap$[@num] == "Clock Tower, Level 3") warp "alde_dun03.gat",265,22;
+
+		if (@dtswarpmap$[@num] == "Lava Dungeon, Level 2") warp "mag_dun02.gat",47,40;
+
+		if (@dtswarpmap$[@num] == "Bailand, Level 4") warp "iz_dun03.gat",32,63;
+
+		if (@dtswarpmap$[@num] == "Clock Tower, Basement 3") warp "alde_dun03.gat",277,178;
+
+		if (@dtswarpmap$[@num] == "Glastheim Entrance") warp "glast_01.gat",375,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,{
+	OnHour1:
+		if($dtsday == gettime(4)) goto Lcheck;			//Works only at 1am
+		end;							//Goes to Lcheck for ability of manual check.
+	Lcheck:								//Checks to see if today is day to count votes
+		if($dtscool == $dtskafra){				//Counts votes for Kafra and Cool Corp,
+			set $@dtstempg,rand(1,2);			//and sets $dtsstatus accordingly.
+			if($@dtstempg == 1) set $dtscool,$dtscool+100;	//Random value if tied
+			else set $dtskafra,$dtskafra+100;
+		}
+		if($dtscool > $dtskafra){
+			switch($dtsstatus){
+				case 3:
+				case 5:
+					set $dtsstatus,1;
+					break;
+				case 2:
+				case 4:
+				case 6:
+					set $dtsstatus,3;
+					break;
+				default: break;
+			}
+			set $dtscool,0;
+			set $dtskafra,0;
+		}
+		else{
+			switch($dtsstatus){
+				case 1:
+				case 3:
+				case 5:
+					set $dtsstatus,4;
+					break;
+				case 4:
+				case 6:
+					set $dtsstatus,2;
+					break;
+				default: break;
+			}
+			set $dtscool,0;
+			set $dtskafra,0;
+		}
+		end;
+	OnInit:
+		if($dtsdaydef == 0) goto Lselfconfig;			//If $dtsdaydef is 0 (not run before), start self config
+		end;
+	Lselfconfig:							//Self config, for first time run.
+		set $dtsday,gettime(4);					//Sets day to count votes and change services
+		set $dtsdaydef,1;					//Sets $dtsdaydef 1 to avoid self config again
+		end;							//GM can change day by talking to NPC in Cool Corp Headquarters
+}

+ 1 - 0
npc/scripts_athena.conf

@@ -164,5 +164,6 @@ npc: npc/other/msg_boards.txt
 npc: npc/other/bulletin_boards.txt
 npc: npc/other/monster_museum.txt
 npc: npc/other/marriage.txt
+npc: npc/other/dts_warper.txt
 //npc: npc/other/momotaro.txt
 // --------------------------------------------------------------