Implemented Ghost Palace exchange NPC (#4003)

Fixed #3936

Thanks to @aleos89 @Angelic234 and @zackdreaver !
This commit is contained in:
Atemo 2022-03-02 15:25:29 +01:00 committed by GitHub
parent 6d0eef0a20
commit df65d5ddfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 135 additions and 11 deletions

View File

@ -21039,9 +21039,10 @@ Body:
NoAuction: true
- Id: 6672
AegisName: Shard_of_Gray
Name: Shard of Gray
Name: Gray Shard
Type: Etc
Buy: 10
Sell: 1
Weight: 1
Flags:
BuyingStore: true
Trade:

View File

@ -883,15 +883,16 @@ OnTimer28500:
mes "Hey there, are you alive?";
mes "I did not expect to meet someone who is still alive.";
next;
.@item_name_req$ = getitemname(6672);// Shard_of_Gray
mes "[King]";
mes "Do you possibly have the ^006400Gray Shard^000000?";
mes "Do you possibly have the ^006400" + .@item_name_req$ + "^000000?";
mes "Can you give it to me?";
mes "The memories of the faithful royal guard";
mes "and the memories of everyone he loved";
mes "are contained inside of these shards.";
next;
mes "[King]";
mes "Will you give the ^006400Gray Shard^000000 to me?";
mes "Will you give the ^006400" + .@item_name_req$ + "^000000 to me?";
mes "The guilt is eating my soul.";
mes "My soul is trapped inside the Ghost Palace.";
next;
@ -899,7 +900,7 @@ OnTimer28500:
mes "I am collecting Sakray's abandoned memories from these shards.";
next;
mes "[King]";
mes "If you give any ^006400Gray Shard^000000s to me, I can make equipment for you.";
mes "If you give any ^006400" + .@item_name_req$ + "^000000s to me, I can make equipment for you.";
next;
mes "[King]";
mes "The cursed knight...";
@ -923,16 +924,16 @@ OnTimer28500:
mes "Someday, Sakray will";
mes "get out of this curse for sure.";
mes "I believe";
mes "^006400Gray Shard^000000s are the only method";
mes "^006400" + .@item_name_req$ + "^000000s are the only method";
mes "to save him....";
close;
}
.@cost = ( .@s > 13 ? 100 : 200 );
mes "[King]";
mes "To make a ^FF0000" + .@item_name$[.@s] + "^000000";
mes "I need " + .@cost + " ^006400Gray Shard^000000.";
mes "I need " + .@cost + " ^006400" + .@item_name_req$ + "^000000.";
next;
if (select( "Cancel", "Hand over " + .@cost + " Gray Shard." ) == 1) {
if (select( "Cancel", "Hand over " + .@cost + " " + .@item_name_req$ + "." ) == 1) {
mes "[King]";
mes "Someday, Sakray will";
mes "get out of this curse for sure.";
@ -941,15 +942,15 @@ OnTimer28500:
}
if (countitem(6672) < .@cost) {
mes "[King]";
mes "You do not have enough ^006400Gray Shard^000000";
mes "You do not have enough ^006400" + .@item_name_req$ + "^000000";
mes "to make a ^FF0000" + .@item_name$[.@s] + "^000000.";
mes "I need " + .@cost + " ^006400Gray Shard^000000.";
mes "I need " + .@cost + " ^006400" + .@item_name_req$ + "^000000.";
next;
continue;
}
mes "[King]";
mes "I will make a ^FF0000" + .@item_name$[.@s] + "^000000";
mes "with " + .@cost + " ^006400Gray Shard^000000.";
mes "with " + .@cost + " ^006400" + .@item_name_req$ + "^000000.";
next;
mes "You see a light through the folded hands of the king and it gradually takes on a shape.";
next;

View File

@ -0,0 +1,121 @@
//===== rAthena Script =======================================
//= Ghost Palace Exchange NPC.
//===== Description: =========================================
//= Walkthrough Conversion.
//===== Changelogs: ==========================================
//= 1.0 First Version. [Capuche]
//============================================================
dali02,51,130,4 script Dimension Traveler 4_F_SHABBY,{
if (checkweight(28100,1) == 0) {// Thanos Axe
mes "- You cannot proceed because you have too many items with you. -";
close;
}
.@item_name_req$ = getitemname(6672);// Shard_of_Gray
mes "[Dimension Traveler]";
mes "Adventurer friend, <ITEM>[" + .@item_name_req$ + "]<INFO>6672</INFO></ITEM> is what I need. How about exchanging it with something I have?";
next;
.@type = select( "Show me your weapon.", "Show me your armor.", "Anything special?", "I do not need." ) - 1;
mes "[Dimension Traveler]";
switch(.@type) {
case 0:
mes "Oh! Are you interested in weapons? We have all the weapons we can get from the Ghost Palace. Why don't you choose one?";
break;
case 1:
mes "Armor? We have all the armors we can get from the Ghost Palace. Why don't you choose one?";
break;
case 2:
mes "Huhh! It seems like many of them already heard that I have the best stuff. Feel free to check out my collections.";
break;
case 3:
mes "Goodbye friend~ Come again!";
close;
}
next;
mes "[Dimension Traveler]";
mes "Ah! The number that is written beside <ITEM>[" + .@item_name_req$ + "]<INFO>6672</INFO></ITEM> will be needed.";
mes "Please keep that in mind.";
switch(.@type) {
case 0:
setarray .@items[0],
13441, 200, // Thanos Sword
21009, 200, // Thanos Great Sword
1438, 200, // Thanos Spear
1496, 200, // Thanos Long Spear
1669, 200, // Thanos Staff
2023, 200, // Thanos Rod
18119, 200, // Thanos Bow
13093, 200, // Thanos Dagger
28000, 200, // Thanos Katar
1836, 200, // Thanos Knuckle
16028, 200, // Thanos Hammer
28100, 200, // Thanos Axe
1933, 200, // Thanos Violin
1988, 200; // Thanos Whip
break;
case 1:
setarray .@items[0],
2187, 100, // Shield Of Gray
15090, 100, // Armor Of Gray
15091, 100, // Gray Robe
20721, 100, // Cloak Of Gray
22033, 100, // Boots Of Gray
18820, 100; // Gray Helmet
break;
case 2:
setarray .@items[0],
27184, 10000, // Knight Sakray Card
23676, 50, // Gray Charcoal Melee (Melee)
23677, 50, // Gray Charcoal Magic (Magic)
23678, 50, // Gray Charcoal Range (Range)
27184, 10000; // Knight Sakray Card
break;
}
.@size = getarraysize(.@items);
for ( .@i = 0; .@i < .@size; .@i += 2 )
.@menu$ += getitemname(.@items[.@i]) + " - " + .@items[.@i+1] + ":";
while(true) {
next;
.@s = (select(.@menu$) - 1) * 2;
mes "[Dimension Traveler]";
if (.@type != 1) // armor type doesn't display item info
mes "Do you mean <ITEM>[" + getitemname(.@items[.@s]) + "]<INFO>" + .@items[.@s] + "</INFO></ITEM>?";
mes "" + .@items[.@s+1] + " ^006400" + .@item_name_req$ + "^000000 are required in exchange.";
next;
switch( select( "Let's exchange.", "Let me see other stuff.", "I will come back later." ) ) {
case 1:
break;
case 2:
mes "[Dimension Traveler]";
switch(.@type) {
case 0:
mes "I have more than enough weapons.";
break;
case 1:
mes "We have many armors for you. Why don't you pick one?";
break;
case 2:
mes "If you bring me " + .@item_name_req$ + ", I will trade it with anything you want.";
break;
}
continue;
case 3:
mes "[Dimension Traveler]";
mes "Take care friend~ See you next time!";
close;
}
if (countitem(6672) < .@items[.@s+1]) {
mes "[Dimension Traveler]";
mes "You put me in a difficult situation, friend.";
mes "I am in need of " + .@item_name_req$ + ". I will exchange it for ^006400" + .@items[.@s+1] + " " + .@item_name_req$ + "^000000.";
close;
}
mes "[Dimension Traveler]";
mes "Thank you. Come back if you need anything else.";
delitem 6672, .@items[.@s+1];
getitem .@items[.@s], 1;
close;
}
}

View File

@ -122,6 +122,7 @@ npc: npc/re/merchants/enchan_verus.txt
npc: npc/re/merchants/Extended_Stylist.txt
npc: npc/re/merchants/flute.txt
npc: npc/re/merchants/gld_mission_exchange.txt
npc: npc/re/merchants/ghost_palace_exchange.txt
npc: npc/re/merchants/guild_warehouse.txt
npc: npc/re/merchants/hd_refiner.txt
npc: npc/re/merchants/HorrorToyFactory_merchants.txt