Browse Source

Implements Kafra and Zonda Extended Services (#4447)

* Adds the Kafra Corporation and Zonda Corporation NPC.
Thanks to @JohnnyPlayy!
JohnnyPlayy 5 years ago
parent
commit
9f365b737d

+ 341 - 0
npc/re/kafras/Kafra_Teleportation_Services.txt

@@ -0,0 +1,341 @@
+//===== rAthena Script ======================================= 
+//= Kafra Teleportation Services
+//===== Changelogs: ==========================================
+//= 1.0 First Version. [JohnnyPlayy]
+//===== Description: ========================================= 
+// Texts from this script were translated according to KRO
+//============================================================
+
+function	script	F_KafTeleDoram	{
+	.@menu_choice = getarg(0);
+
+	cutin "kafra_do01", 2;
+	mes "[Kafra Employee]";
+	mes "Welcome.";
+	mes "The Kafra services are always on your side.";
+	mes "Please choose your destination.";
+	next;
+	switch(.@menu_choice) {
+	case 1: // Alberta
+		switch( select( "Southeast Field of Payon", "Sunken Ship", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Southeast Field of Payon", 250,13 );
+			warp "pay_fild06",199,152;
+			end;
+		case 2:
+			callsub( S_Zone, "Sunken Ship", 50,3 );
+			warp "alb2trea",55,63;
+			end;
+		case 3:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 2: // Aldebaran
+		switch( select( "Aldebaran Border", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Aldebaran Border", 50,3 );
+			warp "yuno_fild01",194,150;
+			end;
+		case 2:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 3: // Einbroch
+		switch( select( "West Field of the Abyss Valley", "North Field of Lighthalzen", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "West Field of the Abyss Valley", 600,30 );
+			warp "ein_fild06",199,152;
+			end;
+		case 2:
+			callsub( S_Zone, "North Field of Lighthalzen", 1400,70 );
+			warp "lhz_fild01",244,130;
+			end;
+		case 3:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 4: // Geffen
+		switch( select( "Geffen Tower Underground Entrance", "North Field of Mount Mjolnir", "Orc Village", "Glast Heim Entrance", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Geffen Tower Underground Entrance", 300,15 );
+			warp "gef_tower",153,46;
+			end;
+		case 2:
+			callsub( S_Zone, "North Field of Mount Mjolnir", 150,8 );
+			warp "mjolnir_02",172,195;
+			end;
+		case 3:
+			callsub( S_Zone, "Orc Village", 100,5 );
+			warp "gef_fild10",150,301;
+			end;
+		case 4:
+			callsub( S_Zone, "Glast Heim Entrance", 6666,444 );
+			warp "gef_fild06",34,270;
+			end;
+		case 5:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 5: // Lighthalzen
+		switch( select( "North Field of Lighthalzen", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "North Field of Lighthalzen", 200,10 );
+			warp "lhz_fild01",244,130;
+			end;
+		case 2:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 6: // Morocc
+		switch( select( "Morocc Ruins Pyramid", "Sograt Desert Sphinx", "Southeast Morocc Field", "Comodo Beaches", "Kingdom of the Dead", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Morocc Ruins Pyramid", 50,3 );
+			warp "moc_ruins",100,140;
+			end;
+		case 2:
+			callsub( S_Zone, "Sograt Desert Sphinx", 50,3 );
+			warp "moc_fild19",132,100;
+			end;
+		case 3:
+			callsub( S_Zone, "Southeast Morocc Field", 100,5 );
+			warp "moc_fild11",267,100;
+			end;
+		case 4:
+			callsub( S_Zone, "Comodo Beaches", 250,13 );
+			warp "cmd_fild02",89,83;
+			end;
+		case 5:
+			callsub( S_Zone, "Kingdom of the Dead", 12121,666 );
+			warp "niflheim",220,141;
+			end;
+		case 6:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 7: // Payon
+		switch( select( "Archer's Village", "Southeast Payon Field", "Prontera South Field", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Archer's Village", 50,3 );
+			warp "pay_arche",69,130;
+			end;
+		case 2:
+			callsub( S_Zone, "Southeast Payon Field", 100,5 );
+			warp "pay_fild10",203,331;
+			end;
+		case 3:
+			callsub( S_Zone, "Prontera South Field", 150,8 );
+			warp "moc_fild02",109,144;
+			end;
+		case 4:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 8: // Prontera
+		switch( select( "Southwestern Prontera Field", "Prontera North Field", "Byalan Island", "Prontera South Field", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Southwestern Prontera Field", 100,5 );
+			warp "prt_fild07",250,257;
+			end;
+		case 2:
+			callsub( S_Zone, "Prontera North Field", 150,8 );
+			warp "prt_fild01",194,123;
+			end;
+		case 3:
+			callsub( S_Zone, "Byalan Island", 150,8 );
+			warp "izlu2dun",63,129;
+			end;
+		case 4:
+			callsub( S_Zone, "Prontera South Field", 150,8 );
+			warp "moc_fild02",109,144;
+			end;
+		case 5:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 9: // Rachel
+		switch( select( "Southern Ice Cave Field", "Thor Volcano East Field", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Southern Ice Cave Field", 600,30 );
+			warp "ra_fild04",214,220;
+			end;
+		case 2:
+			callsub( S_Zone, "Thor Volcano East Field", 600,30 );
+			warp "ve_fild04",198,174;
+			end;
+		case 3:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 10: // Veins
+		switch( select( "Thor Volcano East Field", "South Veins Field", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "Thor Volcano East Field", 400,20 );
+			warp "ra_fild04",198,174;
+			end;
+		case 2:
+			callsub( S_Zone, "South Veins Field", 200,10 );
+			warp "ve_fild07",85,255;
+			end;
+		case 3:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	case 11: // Yuno
+		switch( select( "West Field of the Abyss Valley", "Phantasmagorika Excavation of the Abyss Valley", "Magma Dungeon Juno Plateau", "West Field of Abyss Lake", "Cancel.") ) {
+		case 1:
+			callsub( S_Zone, "West Field of the Abyss Valley", 400,20 );
+			warp "ein_fild06",199,152;
+			end;
+		case 2:
+			callsub( S_Zone, "Phantasmagorika Excavation of the Abyss Valley", 400,20 );
+			warp "yuno_fild07",225,145;
+			end;
+		case 3:
+			callsub( S_Zone, "Magma Dungeon Juno Plateau", 400,20 );
+			warp "yuno_fild03",201,152;
+			end;
+		case 4:
+			callsub( S_Zone, "West Field of Abyss Lake", 800,40 );
+			warp "hu_fild04",186,78;
+			end;
+		case 5:
+			callfunc( "F_KafEnd",0,0 );
+		}
+	}
+
+S_Zone:
+	.@zeny_req = getarg(1);
+	.@item_req = getarg(2);
+
+	mes "[Kafra Employee]";
+	mes getarg(0) + " is available for ^ff0000" + .@zeny_req + " Zenys^000000 or ^ff0000" + .@item_req + " Malang Sp Can^000000.";
+	next;
+	switch( select( .@zeny_req + " Zeny", .@item_req + " Malang Sp Can", "Cancel" ) ) {
+	case 1:
+		if (Zeny < .@zeny_req)
+			break;
+		Zeny -= .@zeny_req;
+		return;
+	case 2:
+		if (countitem(12636) < .@item_req)
+			break;
+		delitem 12636,.@item_req; // Malang_Sp_Can
+		return;
+	case 3:
+		mes "[Kafra Employee]";
+		mes "Can you tell me about other areas of service?";
+		close3;
+	}
+	mes "[Kafra Employee]";
+	mes "Sir! You do not have enough value that we are asking for.";
+	mes "Please check back again.";
+	close3;
+}
+
+moc_para01,35,23,3	script	Kafra Teleportation#eden	4_F_DRKAFRA01,{
+	cutin "kafra_do01", 2;
+	mes "[Kafra Employee]";
+	mes "Welcome.";
+	mes "The Kafra services are always on your side.";
+	next;
+	mes "[Kafra Employee]";
+	mes "To reward adventurer support, the Kafra Corporation in cooperation with the Eden Group provides free services for ^ff0000Beginner Adventurers Below Level 39^000000.";
+	next;
+	if (BaseLevel > 40) {
+		mes "[Kafra Employee]";
+		mes "We do not offer free teleportation services for adventurers ^ff0000above level 40^000000.";
+		mes "Search for Kafra Teleportation services in the city.";
+		close3;
+	}
+	mes "[Kafra Employee]";
+	mes "Please choose your destination.";
+	next;
+	switch( select( "Prontera West Field", "Prontera Southwestern Field", "Prontera Lake Field", "Payon Dungeon Entrance", "Southwest Izlude Field", "Cancel.") ) {
+	case 1:
+		mes "[Kafra Employee]";
+		mes "Prontera Field :";
+		mes "The Prontera West Field is a mountainous field that you can also access the ^ff0000Prontera Sewer^000000.";
+		mes "^ff0000Hornets^000000 live there, so novice adventurers should beware!";
+		next;
+		callsub( S_Zone );
+		warp "prt_fild05",276,241;
+		end;
+	case 2:
+		mes "[Kafra Employee]";
+		mes "Prontera Field :";
+		mes "Southwestern Prontera Field is a place where ^ff0000Rockers^000000 live.";
+		next;
+		callsub( S_Zone );
+		warp "prt_fild07",250,257;
+		end;
+	case 3:
+		mes "[Kafra Employee]";
+		mes "Prontera Field :";
+		mes "Prontera Lake Field is a place where the ^ff0000Ambernites^000000 live.";
+		next;
+		callsub( S_Zone );
+		warp "prt_fild04",204,109;
+		end;
+	case 4:
+		mes "[Kafra Employee]";
+		mes "Archer's Village :";
+		mes "Payon's Cave is a scary place with lots of ^ff0000Zombies^000000 and ^ff0000Skeletons^000000.";
+		next;
+		callsub( S_Zone );
+		warp "pay_arche",69,130;
+		end;
+	case 5:
+		mes "[Kafra Employee]";
+		mes "Sograt Desert :";
+		mes "Southwest of Prontera and Southwest of Izlude, this place is full of ^ff0000Mukas^000000 and ^ff0000Peco Pecos^000000.";
+		next;
+		callsub( S_Zone );
+		warp "moc_fild01",232,250;
+		end;
+	case 6:
+		callfunc( "F_KafEnd",0,0 );
+	}
+S_Zone:
+	switch( select( "I wish to go.", "I want to stay." ) ) {
+	case 1:
+		return;
+	case 2:
+		mes "[Kafra Employee]";
+		mes "Want to check out our other services?";
+		close3;
+	}	
+}
+
+alberta,33,239,5	script	Kafra Teleportation#alberta	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",1;
+}
+
+aldebaran,136,122,5	script	Kafra Teleportation#aldebaran	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",2;
+}
+
+einbroch,246,205,5	script	Kafra Teleportation#einbroch	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",3;
+}
+
+geffen,115,66,5	script	Kafra Teleportation#geffen	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",4;
+}
+
+lighthalzen,167,103,5	script	Kafra Teleportation#lighthalzen	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",5;
+}
+
+morocc,155,257,6	script	Kafra Teleportation#morocc	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",6;
+}
+
+payon,176,104,5	script	Kafra Teleportation#payon	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",7;
+}
+
+prontera,143,87,5	script	Kafra Teleportation#prontera	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",8;
+}
+
+rachel,116,139,5	script	Kafra Teleportation#rachel	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",9;
+}
+
+veins,196,133,5	script	Kafra Teleportation#veins	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",10;
+}
+
+yuno,143,184,5	script	Kafra Teleportation#yuno	4_F_DRKAFRA01,{
+	callfunc "F_KafTeleDoram",11;
+}

+ 94 - 0
npc/re/kafras/Zonda_Teleportation_Services.txt

@@ -0,0 +1,94 @@
+//===== rAthena Script ======================================= 
+//= Zonda Teleportation Services
+//===== Changelogs: ==========================================
+//= 1.0 First Version. [JohnnyPlayy]
+//===== Description: ========================================= 
+// Texts from this script were translated according to KRO
+//============================================================
+
+-	script	ZondaTeleportationServices	HIDDEN_NPC,{
+	cutin "zonda_do01", 2;
+	mes "[Zonda Employee]";
+	mes "Welcome.";
+	mes "Our team is always working to exceed your expectations regarding quality of service.";
+	mes "Please choose your destination.";
+	next;
+	switch( select( "North Bifrost", "Eclage", "Splendide", "Midgard Expedition Camp", "Manuk", "Outskirts of Kamidal Mountain", "Cancel.") ) {
+	case 1:
+		callsub( S_Zone, "North Bifrost", 17000,850, 7213 ); // Teleport value not confirmed
+		warp "bif_fild02",160,230; // Unverified Coordinates
+		end;
+	case 2:
+		callsub( S_Zone, "Eclage", 17000,850, 11311 );
+		warp "eclage",111,39;
+		end;
+	case 3:
+		callsub( S_Zone, "Splendide", 17000,850, 10078 );
+		warp "splendide",171,115;
+		end;
+	case 4:
+		callsub( S_Zone, "Midgard Expedition Camp", 19000,950, 10078 );
+		warp "mid_camp",210,288;
+		end;
+	case 5:
+		callsub( S_Zone, "Manuk", 22000,1100, 10078 );
+		warp "manuk",263,177;
+		end;
+	case 6:
+		callsub( S_Zone, "Outskirts of Kamidal Mountain", 24000,1200, 7184 );
+		warp "dic_fild01",188,187;
+		end;
+	case 7:
+		mes "[Zonda Employee]";
+		mes "We are always striving to ensure the best services for our customers.";
+		mes "Thank you for using our services.";
+		close3;
+	}
+
+S_Zone:
+	.@zeny_req = getarg(1);
+	.@item_req = getarg(2);
+	.@quest_req = getarg(3);
+	
+	if (isbegin_quest(.@quest_req) == 0) {
+		mes "[Zonda Employee]";
+		//mes getarg(0);
+		mes "You must complete the access mission to teleport to " + getarg(0) + " before using our Teleportation services.";
+		close3;
+	}
+	mes "[Zonda Employee]";
+	mes getarg(0) + " is available for ^ff0000" + .@zeny_req + " Zenys^000000 or ^ff0000" + .@item_req + " Malang Sp Can^000000.";
+	next;
+	switch( select( .@zeny_req + " Zeny", .@item_req + " Malang Sp Can", "Cancel" ) ) {
+	case 1:
+		if (Zeny < .@zeny_req)
+			break;
+		Zeny -= .@zeny_req;
+		return;
+	case 2:
+		if (countitem(12636) < .@item_req)
+			break;
+		delitem 12636,.@item_req; // Malang_Sp_Can
+		return;
+	case 3:
+		mes "[Zonda Employee]";
+		mes "Can you tell me about other areas of service?";
+		close3;
+	}
+	mes "[Zonda Employee]";
+	mes "Sir! You do not have enough value that we are asking for.";
+	mes "Please check back again.";
+	close3;
+}
+
+alberta,35,239,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#alberta	4_M_DRZONDA01
+aldebaran,138,122,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#aldebaran	4_M_DRZONDA01
+einbroch,248,205,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#einbroch	4_M_DRZONDA01
+geffen,117,66,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#geffen	4_M_DRZONDA01
+lighthalzen,169,103,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#lighthalzen	4_M_DRZONDA01
+morocc,157,257,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#morocc	4_M_DRZONDA01
+payon,178,104,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#payon	4_M_DRZONDA01
+prontera,145,87,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#prontera	4_M_DRZONDA01
+rachel,118,139,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#rachel	4_M_DRZONDA01
+veins,198,133,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#veins	4_M_DRZONDA01
+yuno,145,184,3	duplicate(ZondaTeleportationServices)	Zonda Teleportation#yuno	4_M_DRZONDA01

+ 2 - 0
npc/re/scripts_athena.conf

@@ -85,6 +85,8 @@ npc: npc/re/instances/WolfchevLaboratory.txt
 
 
 // ---------------- Kafras & Cool Event Corp. -------------------
 // ---------------- Kafras & Cool Event Corp. -------------------
 npc: npc/re/kafras/kafras.txt
 npc: npc/re/kafras/kafras.txt
+npc: npc/re/kafras/Kafra_Teleportation_Services.txt
+npc: npc/re/kafras/Zonda_Teleportation_Services.txt
 
 
 // -------------------------- Merchant --------------------------
 // -------------------------- Merchant --------------------------
 npc: npc/re/merchants/3rd_trader.txt
 npc: npc/re/merchants/3rd_trader.txt