From fd0ad50db3b18f28388dc54d1bc746c474c69da6 Mon Sep 17 00:00:00 2001 From: Lupus Date: Thu, 22 Feb 2007 07:17:26 +0000 Subject: added Cool Event Corp. Staff Hugel git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9896 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/kafras/cool_event_corp.txt | 127 ++++++ npc/kafras/dts_warper.txt | 966 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1093 insertions(+) create mode 100644 npc/kafras/cool_event_corp.txt create mode 100644 npc/kafras/dts_warper.txt (limited to 'npc/kafras') diff --git a/npc/kafras/cool_event_corp.txt b/npc/kafras/cool_event_corp.txt new file mode 100644 index 000000000..935f72d72 --- /dev/null +++ b/npc/kafras/cool_event_corp.txt @@ -0,0 +1,127 @@ +//===== eAthena Script ======================================= +//= Cool Event Corp. Staff +//===== By: ================================================== +//= Gepard +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= eAthena +//===== Description: ========================================= +//= Cool Event Corp. Staff (Save, Storage & Pushcart Service) +//= in Hugel +//===== Additional Comments: ================================= +//= 1.0 First version, iRO Sakray X.4 [Gepard] +//= 1.1 Optimized, fixed a conditional bug [Lupus] +//============================================================ + +hugel.gat,88,168,4 script Cool Event Corp. Staff#hk 874,{ + + mes "[Cool Event Corp. Staff]"; + mes "Welcome to Cool Event Corp."; + mes "Our staff is always working"; + mes "to surpass your expactations"; + mes "for quality service. So how"; + mes "may I assist you today?"; + next; + + switch(select("Save:Use Storage:Rent a Pushcart:Cancel")){ + case 1: + mes "[Cool Event Corp. Staff]"; + mes "Your Respawn Point"; + mes "has been saved here"; + mes "in the village of Hugel."; + mes "Thank you for using the"; + mes "Cool Event Corp. service~"; + emotion e_thx; + savepoint "hugel.gat",96,155; + close; + case 2: + mes "[Cool Event Corp. Staff]"; + if(basicskillcheck() || getskilllv(1) < 6){ + mes "I'm sorry, but you"; + mes "need the Novice's"; + mes "Basic Skill Level 6 to"; + mes "use the Storage Service."; + emotion e_sry; + close; + } + if(Zeny < 40){ + mes "I'm sorry, but you don't"; + mes "have enough Zeny to use"; + mes "the Storage Service. Our"; + mes "Storage access fee is 40 Zeny."; + emotion e_cash; + close; + } + set Zeny, Zeny - 40; + set RESRVPTS, RESRVPTS + 4; + mes "Let me open your personal"; + mes "storage for you right away."; + mes "Thanks for supporting Cool"; + mes "Event Corp. by using our"; + mes "services. Have a good day~"; + close2; + openstorage; + end; + case 3: + mes "[Cool Event Corp. Staff]"; + if(baseClass != Job_Merchant){ + mes "I'm sorry, but the"; + mes "Pushcart rental service"; + mes "is only available to Merchants,"; + mes "Blacksmiths, White Smiths,"; + mes "Alchemists and Creators."; + emotion e_sry; + close; + } + if(getskilllv(39) == 0){ + mes "You can only rent a cart after"; + mes "learning the Pushcart Skill."; + close; + } + if(checkcart() == 1){ + mes "You already have"; + mes "a Pushcart equipped."; + mes "Unfortunately, we can't"; + mes "rent more than one to"; + mes "each customer at a time."; + close; + } + if(countitem(7061)){ + delitem 7061,1; + setcart; + close; + } + mes "The Pushcart rental"; + mes "fee is 800 Zeny. Would"; + mes "you like to rent a Pushcart?"; + next; + if(select("Rent a Pushcart:Cancel") == 1){ + if(Zeny < 800){ + mes "[Cool Event Corp. Staff]"; + mes "I'm sorry, but you"; + mes "don't have enough"; + mes "Zeny to pay the Pushcart"; + mes "rental fee of 800 Zeny."; + emotion e_cash; + close; + } else { + set Zeny, Zeny - 800; + set RESRVPTS, RESRVPTS + 80; + setcart; + close; + } + } + close; + case 4: + default: + mes "[Cool Event Corp. Staff]"; + mes "Cool Event Corp. is always"; + mes "striving to provide the best"; + mes "services for our customers."; + mes "Help us become the best by"; + mes "providing us with your opinions"; + mes "and honest feedback. Thank you."; + close; + } +} \ No newline at end of file diff --git a/npc/kafras/dts_warper.txt b/npc/kafras/dts_warper.txt new file mode 100644 index 000000000..6eae8fe34 --- /dev/null +++ b/npc/kafras/dts_warper.txt @@ -0,0 +1,966 @@ +//===== eAthena Script ======================================= +//= Dungeon Teleport Service +//===== By: ================================================== +//= Evera +//===== Current Version: ===================================== +//= 2.3c +//===== 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 +//============================================================ + +//Yuno +yuno.gat,153,191,4 script Cool Event Voting Staff::CoolEventVotingStaff01 874,{ + callfunc "F_DTS_Warp",0,0; +} +yuno.gat,162,191,6 script Kafra Voting Staff#01 861,{ + callfunc "F_DTS_Warp",1,8; +} +//Lighthalzen +lighthalzen.gat,154,60,6 script Cool Event Voting Staff::CoolEventVotingStaff02 874,{ + callfunc "F_DTS_Warp",0,0; +} +//Prontera +prontera.gat,147,125,4 script Cool Event Voting Staff::CoolEventVotingStaff03 874,{ + callfunc "F_DTS_Warp",0,0; +} +prontera.gat,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.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#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.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#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.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] == "Byalan, 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",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; +} \ No newline at end of file -- cgit v1.2.3-70-g09d2