Updated Gunslinger/Rebellion Bullet behavior (#3459)

* Fixes #2745.
* Disabled the ability to equip old spheres and old slugs.
* Corrected some of the newer bullets name, weight, price, and effects.
* Updated the ASPD for Gunslinger/Rebellion when equipping guns.
* Spread Attack and Ground Drift now only use bullets.
* Adjusted Slug Shot skill item requirement to the new Slug Bullet.
* Separated pre-renewal and renewal ammo NPC (Kenny and Tony).
-- Renewal no longer has Tony.
-- Kenny can now trade in the Sphere bullets for new bullets.
-- Kenny can now trade in the old Slugs for Slug Bullet.
-- Added new bullets into Kenny.
Thanks to @cydh and @exneval!
This commit is contained in:
Aleos 2018-10-29 10:18:19 -04:00 committed by GitHub
parent 7066cac9a4
commit 87032fc95a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 560 additions and 386 deletions

View File

@ -7394,38 +7394,38 @@
//===================================================================
// Bullets
//===================================================================
13200,Bullet,Bullet,10,1,,2,10,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13200,Bullet,Bullet,10,1,,1,25,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13201,Silver_Bullet,Silver Bullet,10,15,,2,15,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
13202,Shell_Of_Blood,Bloody Shell,10,30,,2,30,,,,0x41000000,63,2,32768,,1,,3,{ bonus2 bAddEff,Eff_Bleeding,100; },{},{}
13203,Flare_Sphere,Flare Sphere,10,80,,5,50,,,,0x41000000,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Fire; },{},{}
13204,Lighting_Sphere,Lightning Sphere,10,80,,5,50,,,,0x41000000,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Wind; },{},{}
13205,Poison_Sphere,Poison Sphere,10,80,,5,50,,,,0x41000000,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500; },{},{}
13206,Blind_Sphere,Blind Sphere,10,80,,5,50,,,,0x41000000,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; },{},{}
13207,Freezing_Sphere,Freezing Sphere,10,80,,5,50,,,,0x41000000,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Water; },{},{}
13203,Flare_Sphere,Flare Sphere,10,80,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Fire; },{},{}
13204,Lighting_Sphere,Lightning Sphere,10,80,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Wind; },{},{}
13205,Poison_Sphere,Poison Sphere,10,80,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500; },{},{}
13206,Blind_Sphere,Blind Sphere,10,80,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; },{},{}
13207,Freezing_Sphere,Freezing Sphere,10,80,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Water; },{},{}
13208,Gong_Bug,Sow Bug,10,0,,5,50,,,,0x41000000,63,2,32768,,50,,3,{ bonus2 bAddEff,Eff_Stun,1000; },{},{}
13210,Slug_Bullet_1,Slug Ammunition L,10,250,,250,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13211,Slug_Bullet_2,Slug Ammunition M,10,500,,500,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13212,Slug_Bullet_3,Slug Ammunition H,10,750,,750,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13213,Slug_Bullet_4,Slug Ammunition SH,10,1000,,1000,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13214,Slug_Bullet_5,Slug Ammunition XH,10,1200,,1200,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{}
13215,AP_Ammo,Armor Burnt,10,10,,2,50,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Neutral; },{},{}
13216,Blaze_Bullet,Incandescence Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Fire; },{},{}
13217,Freezing_Bullet,Glaciation Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Water; },{},{}
13218,Electric_Shock_Bullet,Dengeki Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Wind; },{},{}
13219,Magical_Stone_Bullet,Hearthstone Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Earth; },{},{}
13220,Sanctified_Bullet,Purification Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
13221,Silver_Bullet_,Silver Bullet,10,10,,2,15,,,0,0xFFFFFFFF,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
13222,Shell_Of_Blood_,Bloody Shell,10,10,,2,30,,,0,0xFFFFFFFF,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Neutral; },{},{}
13223,Flare_Sphere_,Flare Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Fire; },{},{}
13224,Lighting_Sphere_,Lightning Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Wind; },{},{}
13225,Poison_Sphere_,Poison Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Poison; },{},{}
13226,Blind_Sphere_,Blind Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Dark; },{},{}
13227,Freezing_Sphere_,Freezing Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Water; },{},{}
13210,Slug_Bullet_1,Slug Ammunition L,10,250,,250,30,,,,,,,32768,,,,3,{},{},{}
13211,Slug_Bullet_2,Slug Ammunition M,10,500,,500,30,,,,,,,32768,,,,3,{},{},{}
13212,Slug_Bullet_3,Slug Ammunition H,10,750,,750,30,,,,,,,32768,,,,3,{},{},{}
13213,Slug_Bullet_4,Slug Ammunition SH,10,1000,,1000,30,,,,,,,32768,,,,3,{},{},{}
13214,Slug_Bullet_5,Slug Ammunition XH,10,1200,,1200,30,,,,,,,32768,,,,3,{},{},{}
13215,AP_Ammo,Armor-Piercing Bullet,10,15,,2,50,,,0,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Neutral; },{},{}
13216,Blaze_Bullet,Blazing Bullet,10,10,,2,40,,,,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Fire; },{},{}
13217,Freezing_Bullet,Freezing Bullet,10,10,,2,40,,,,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Water; },{},{}
13218,Electric_Shock_Bullet,Lightning Bullet,10,10,,2,40,,,,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Wind; },{},{}
13219,Magical_Stone_Bullet,Magic Stone Bullet,10,10,,2,40,,,,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Earth; },{},{}
13220,Sanctified_Bullet,Purifying Bullet,10,10,,2,40,,,,0x41000000,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
13221,Silver_Bullet_,Silver Bullet,10,5,,2,15,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Holy; },{},{}
13222,Shell_Of_Blood_,Bloody Shell,10,10,,2,30,,,,0x41000000,63,2,32768,,1,,3,{ bonus2 bAddEff,Eff_Bleeding,100; },{},{}
13223,Flare_Sphere_,Flare Sphere,10,15,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Fire; },{},{}
13224,Lighting_Sphere_,Lightning Sphere,10,15,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Wind; },{},{}
13225,Poison_Sphere_,Poison Sphere,10,15,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Poison; },{},{}
13226,Blind_Sphere_,Blind Sphere,10,15,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Dark; },{},{}
13227,Freezing_Sphere_,Freezing Sphere,10,15,,5,50,,,,,,,32768,,,,5,{ bonus bAtkEle,Ele_Water; },{},{}
13228,Flare_Bullet,Flare Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Fire; },{},{}
13229,Lightning_Bullet,Lightning Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Wind; },{},{}
13230,Ice_Bullet,Ice Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Water; },{},{}
13231,Poison_Bullet,Poison Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Poison; },{},{}
13232,Blind_Bullet,Blind Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Dark; },{},{}
13231,Poison_Bullet,Poison Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500; },{},{}
13232,Blind_Bullet,Blind Bullet,10,10,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; },{},{}
//===================================================================
// Shurikens & Kunais
//===================================================================
@ -11609,6 +11609,7 @@
25183,Decorated_Archer's_Thimble,Decorated Archer's Thimble,3,0,,0,,,,,,,,,,,,,{},{},{}
25184,Portable_Sewingbox,Portable Sewingbox,3,0,,0,,,,,,,,,,,,,{},{},{}
25185,Locket_Pendant,Locket Pendant,3,0,,0,,,,,,,,,,,,,{},{},{}
25187,Slug_Bullet,Slug Bullet,3,1200,,1200,,,,,,,,,,,,,{},{},{}
25223,Para_Team_Coin,Eden Group Coin,3,0,,0,,,,,,,,,,,,,{},{},{}
25238,New_Normal_Lubricant,New Normal Lubricant,3,0,,0,,,,,,,,,,,,,{},{},{}
25239,New_Advanced_Lubricant,New Advanced Lubricant,3,0,,0,,,,,,,,,,,,,{},{},{}

View File

@ -52,7 +52,7 @@
// Super Novice
23, 20000,0 ,500 ,100 ,40 ,55 ,57 ,200 ,200 ,200 ,50 ,200 ,50 ,55 ,65 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,65 ,10
// Gunslinger
24, 28000,90 ,650 ,469 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,45 ,55 ,50 ,90 ,100 ,200 ,200 ,6
24, 28000,90 ,650 ,469 ,54 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,49 ,59 ,54 ,94 ,104 ,200 ,200 ,6
// Ninja
25, 26000,75 ,500 ,540 ,40 ,43 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,200 ,6
// Novice High
@ -270,7 +270,7 @@
// Oboro
4212, 26000,75 ,500 ,540 ,40 ,45 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,50 ,200 ,3
// Rebellion
4215, 28000,90 ,650 ,469 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,45 ,55 ,50 ,90 ,100 ,200 ,200 ,6
4215, 28000,90 ,650 ,469 ,54 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,49 ,59 ,54 ,94 ,104 ,200 ,200 ,6
// Summoner
4218, 20000,70 ,500 ,500 ,45 ,55 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,200 ,200 ,200 ,200 ,43 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,5
// Baby Summoner
@ -288,9 +288,9 @@
// Baby Soul Linker
4227, 24000,75 ,500 ,900 ,50 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,53 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,8
// Baby Gunslinger
4228, 28000,90 ,650 ,469 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,45 ,55 ,50 ,90 ,100 ,200 ,200 ,6
4228, 28000,90 ,650 ,469 ,54 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,49 ,59 ,54 ,94 ,104 ,200 ,200 ,6
// Baby Rebellion
4229, 28000,90 ,650 ,469 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,45 ,55 ,50 ,90 ,100 ,200 ,200 ,6
4229, 28000,90 ,650 ,469 ,54 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,49 ,59 ,54 ,94 ,104 ,200 ,200 ,6
// Baby Star Gladiator (Union)
4238, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6
// Star Emperor

View File

@ -502,8 +502,8 @@
517,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,19,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GATLINGFEVER
518,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DUST
519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER
520,0,0,13:16:19:22:25:28:31:34:37:40,0,0,0,20:21,3:5,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK
521,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT
520,0,0,13:16:19:22:25:28:31:34:37:40,0,0,0,20:21,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK
521,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,21,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT
//****
// NJ Ninja
@ -909,7 +909,7 @@
2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN
2568,0,0,30,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL
2569,0,0,80:84:88:92:96,0,0,0,18,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_AM_BLAST
2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,13214,1,13213,1,13212,1,13211,1,13210,1,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT
2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,25187,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT
2571,0,0,35:40:45:50:55,0,0,0,18,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD
2572,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP_PLUSATK
//2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_FLICKER_ATK

View File

@ -1,132 +0,0 @@
//===== rAthena Script =======================================
//= Magazine Dealers
//===== By: ==================================================
//= rAthena Dev Team
//===== Current Version: =====================================
//= 2.1
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Turns bullets into magazines/packs.
//===== Additional Comments: =================================
//= 1.0 First version. [SinSloth]
//= 1.1 Optimized version - Reduced to only one function [SinSloth]
//= 1.2 Optimized^2, corrected npc's name [ultramage]
//= 1.2a Optimized. Please, ommit extra NPC names [Lupus]
//= 1.3 Updated to match AEGIS script. [Kisuka]
//= 1.4 Updated to match AEGIS script again. [Masao]
//= 1.5 Moved Izlude duplicate to pre-re/re paths. [Euphy]
//= 2.0 Clean-up. [Capuche]
//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
//============================================================
alberta,118,157,3 script Magazine Dealer Kenny::mdk 4_M_01,{
mes "[Kenny]";
if (BaseClass == Job_Gunslinger) {
mes "Welcome to my Magazine Shop.";
mes "As you may know, large numbers";
mes "of bullets can be carried more";
mes "easily when they're in Magazines. Now, can I interest you in";
mes "anything in particular?";
next;
switch(select("Wind Sphere Pack:Shadow Sphere Pack:Poison Sphere Pack:Water Sphere Pack:Fire Sphere Pack:Cartridge:Blood Cartridge:Silver Cartridge:Cancel")) {
case 1: callsub S_Casing,13204,12144;// <bullet id>, <pack id>
case 2: callsub S_Casing,13206,12145;
case 3: callsub S_Casing,13205,12146;
case 4: callsub S_Casing,13207,12147;
case 5: callsub S_Casing,13203,12148;
case 6: callsub S_Casing,13200,12149;
case 7: callsub S_Casing,13202,12150;
case 8: callsub S_Casing,13201,12151;
case 9:
mes "[Kenny]";
mes "Well, if you ever find";
mes "that you have too many";
mes "bullets, come and see me.";
mes "It's a smart idea to store";
mes "bullets with my Magazines.";
close;
}
}
mes "Welcome to my shop.";
mes "Here, I provide Magazines";
mes "and Cartridges for Gunslingers.";
mes "Sorry, but it doesn't look like";
mes "my services would be of any";
mes "use to you, adventurer.";
next;
mes "[Kenny]";
mes "Eh, but if you happen to";
mes "know any Gunslingers, send";
mes "them my way. You can never";
mes "have too many bullets.";
close;
S_Casing:
.@bullet_id = getarg(0);
.@pack_id = getarg(1);
mes "[Kenny]";
mes "Now, you can trade";
mes callfunc("F_InsertPlural",500,getitemname(.@bullet_id));
mes "and 500 zeny for 1 "+getitemname(.@pack_id)+", so make sure";
mes "you have sufficient bullets";
mes "and zeny for this exchange.";
next;
mes "[Kenny]";
mes "You can exchange "+callfunc("F_InsertPlural",500,getitemname(.@bullet_id))+" and 500 zeny";
mes "with 1 "+getitemname(.@pack_id)+".";
next;
mes "[Kenny]";
mes "Remember that I can't give";
mes "you more than 50 Magazines";
mes "at a time. Now please enter";
mes "the number of Magazines you";
mes "want to receive. If you want to cancel, then just enter ''0.''";
next;
input .@amount;
mes "[Kenny]";
if (.@amount > 50 || .@amount == 0) {
mes "Hey, I can't give you";
mes "that many Magazines.";
mes "Please try again, and";
mes "enter a number no";
mes "greater than 50.";
}
else if (countitem(.@bullet_id) >= (500*.@amount)) {
if (Zeny >= (500*.@amount)) {
if (checkweight(.@pack_id,.@amount) == 0) {
mes "Hey, you've got a lot";
mes "of junk crammed in your";
mes "Inventory. Free up some";
mes "space, and then come back";
mes "and trade your bullets for";
mes "some Magazines later, okay?";
} else {
mes "Alright, here are";
mes "your Magazines. Thanks";
mes "for visiting my shop, and";
mes "I hope that you use all";
mes "of your ammo wisely.";
Zeny = Zeny -500*.@amount;
delitem .@bullet_id,(500*.@amount);
getitem .@pack_id,.@amount;
}
} else {
mes "Sorry, but you don't";
mes "have enough zeny for";
mes "this Magazine exchange.";
mes "Come back to my shop";
mes "after you've saved up";
mes "some more money.";
}
} else {
mes "Sorry, but you don't";
mes "have enough bullets for";
mes "this Magazine exchange.";
mes "Maybe you should double";
mes "check your Inventory, and";
mes "then come back to me later.";
}
close;
}

View File

@ -1,123 +0,0 @@
//===== rAthena Script =======================================
//= Bullet Dealers
//===== By ===================================================
//= Playtester, Paradox924X
//===== Version ==============================================
//= 2.1
//===== Compatible With ======================================
//= rAthena Project
//===== Description ==========================================
//= Bullet trader.
//===== Comments =============================================
//= 1.0 First version [Playtester]
//= 1.1 Converted from Aegis [Paradox924X]
//= 1.2 More optimized conversion [Legionaire]
//= 1.2a Removed .GATs [Lupus]
//= 1.3 Fixed [Playtester] Optimized. Got rid of @vars [Lupus]
//= 1.4 Updated to match AEGIS script. [Kisuka]
//= 1.5 Updated to match AEGIS script again. [Masao]
//= 1.6 Moved Izlude duplicate to pre-re/re paths. [Euphy]
//= 2.0 Clean-up. [Capuche]
//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
//============================================================
alberta,118,160,3 script Bullet Dealer Tony#alb::bdt 4_M_04,{
mes "[Tony]";
if (BaseClass == Job_Gunslinger) {
mes "I'm Tony, the Bullet Dealer.";
mes "Come to me whenever you're";
mes "short on ammo. Just bring me";
mes "the materials, and I'll make";
mes "you the bullets you need.";
next;
switch(select("Poison Sphere:Flare Sphere:Lighting Sphere:Blind Sphere:Freezing Sphere:Cancel")) {
case 1: callsub S_BulletTrade,937,10,13205;// <item required>, <amount req>, <bullet id>
case 2: callsub S_BulletTrade,7097,2,13203;
case 3: callsub S_BulletTrade,7053,3,13204;
case 4: callsub S_BulletTrade,1024,5,13206;
case 5: callsub S_BulletTrade,7054,2,13207;
case 6:
mes "[Tony]";
mes "Changed your mind?";
mes "Well, if you ever need";
mes "any bullets, I'll be right";
mes "here. Come back whenever";
mes "you think you'll need more";
mes "ammunition, Gunslinger.";
close;
}
}
mes "Hey, I'm Tony. I'm in";
mes "charge of distributing";
mes "and making bullets for";
mes "Gunslingers. It's just";
mes "how our guild likes";
mes "to do things.";
next;
mes "[Tony]";
mes "I'm sorry if you came";
mes "here to buy some bullets.";
mes "I can only do business with";
mes "fully fledged Gunslingers.";
close;
S_BulletTrade:
.@required_id = getarg(0);
.@required_amount = getarg(1);
.@bullet_id = getarg(2);
mes "[Tony]";
mes "For every set of";
mes callfunc("F_InsertPlural",30,getitemname(.@bullet_id))+",";
mes "you must give me";
mes "1 Emveretarcon,";
mes "1 Phracon, and";
mes callfunc("F_InsertPlural",.@required_amount,getitemname(.@required_id))+".";
next;
mes "[Tony]";
mes "Remember that I can give";
mes "a maximum of 500 sets of";
mes "30 bullets at a time. Please";
mes "enter the number of bullet sets";
mes "that you'd like. If you want to";
mes "cancel, then just enter ''0.''";
next;
input .@amount;
mes "[Tony]";
if (.@amount < 1 || .@amount > 500) {
mes "Hey, I can't give you";
mes "that many bullets. Don't";
mes "forget to enter a number";
mes "that's no higher than 500";
mes "if you want to trade your";
mes "items for some bullets.";
}
else if (countitem(1010) >= .@amount && countitem(1011) >= .@amount && countitem(.@required_id) >= (.@amount*.@required_amount)) {
if (checkweight(.@bullet_id,.@amount * 30) == 0) {
mes "Eh? Your Inventory doesn't";
mes "have enough space for this";
mes "many bullets. Come back later";
mes "after you make more space";
mes "available. Try putting some of";
mes "your things into Kafra Storage.";
} else {
mes "Great, everything seems";
mes "to be in order. Let me take";
mes "these materials, and here are";
mes "your bullets. It's a pleasure";
mes "to do business with you~";
delitem 1010,.@amount; //Phracon
delitem 1011,.@amount; //Emveretarcon
delitem .@required_id,.@amount * .@required_amount;
getitem .@bullet_id,.@amount * 30;
}
} else {
mes "Huh. It looks like you";
mes "don't have enough materials";
mes "for that many bullets. Well,";
mes "it's no problem. Just come";
mes "back after gathering everything";
mes "that you need, okay?";
}
close;
}

View File

@ -1,15 +1,128 @@
//===== rAthena Script =======================================
//= Magazine Dealers
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Turns bullets into magazines/packs.
//===== Additional Comments: =================================
//= 1.0 First version, Pre-Renewal duplicates.
//===== Changelogs: ==========================================
//= 1.0 First version. [SinSloth]
//= 1.1 Optimized version - Reduced to only one function [SinSloth]
//= 1.2 Optimized^2, corrected npc's name [ultramage]
//= 1.2a Optimized. Please, ommit extra NPC names [Lupus]
//= 1.3 Updated to match AEGIS script. [Kisuka]
//= 1.4 Updated to match AEGIS script again. [Masao]
//= 1.5 Moved Izlude duplicate to pre-re/re paths. [Euphy]
//= 2.0 Clean-up. [Capuche]
//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
//============================================================
alberta,118,157,3 script Magazine Dealer Kenny::mdk 4_M_01,{
mes "[Kenny]";
if (BaseClass == Job_Gunslinger) {
mes "Welcome to my Magazine Shop.";
mes "As you may know, large numbers";
mes "of bullets can be carried more";
mes "easily when they're in Magazines. Now, can I interest you in";
mes "anything in particular?";
next;
switch(select("Wind Sphere Pack:Shadow Sphere Pack:Poison Sphere Pack:Water Sphere Pack:Fire Sphere Pack:Cartridge:Blood Cartridge:Silver Cartridge:Cancel")) {
case 1: callsub S_Casing,13204,12144;// <bullet id>, <pack id>
case 2: callsub S_Casing,13206,12145;
case 3: callsub S_Casing,13205,12146;
case 4: callsub S_Casing,13207,12147;
case 5: callsub S_Casing,13203,12148;
case 6: callsub S_Casing,13200,12149;
case 7: callsub S_Casing,13202,12150;
case 8: callsub S_Casing,13201,12151;
case 9:
mes "[Kenny]";
mes "Well, if you ever find";
mes "that you have too many";
mes "bullets, come and see me.";
mes "It's a smart idea to store";
mes "bullets with my Magazines.";
close;
}
}
mes "Welcome to my shop.";
mes "Here, I provide Magazines";
mes "and Cartridges for Gunslingers.";
mes "Sorry, but it doesn't look like";
mes "my services would be of any";
mes "use to you, adventurer.";
next;
mes "[Kenny]";
mes "Eh, but if you happen to";
mes "know any Gunslingers, send";
mes "them my way. You can never";
mes "have too many bullets.";
close;
S_Casing:
.@bullet_id = getarg(0);
.@pack_id = getarg(1);
mes "[Kenny]";
mes "Now, you can trade";
mes callfunc("F_InsertPlural",500,getitemname(.@bullet_id));
mes "and 500 zeny for 1 "+getitemname(.@pack_id)+", so make sure";
mes "you have sufficient bullets";
mes "and zeny for this exchange.";
next;
mes "[Kenny]";
mes "You can exchange "+callfunc("F_InsertPlural",500,getitemname(.@bullet_id))+" and 500 zeny";
mes "with 1 "+getitemname(.@pack_id)+".";
next;
mes "[Kenny]";
mes "Remember that I can't give";
mes "you more than 50 Magazines";
mes "at a time. Now please enter";
mes "the number of Magazines you";
mes "want to receive. If you want to cancel, then just enter ''0.''";
next;
input .@amount;
mes "[Kenny]";
if (.@amount > 50 || .@amount == 0) {
mes "Hey, I can't give you";
mes "that many Magazines.";
mes "Please try again, and";
mes "enter a number no";
mes "greater than 50.";
}
else if (countitem(.@bullet_id) >= (500*.@amount)) {
if (Zeny >= (500*.@amount)) {
if (checkweight(.@pack_id,.@amount) == 0) {
mes "Hey, you've got a lot";
mes "of junk crammed in your";
mes "Inventory. Free up some";
mes "space, and then come back";
mes "and trade your bullets for";
mes "some Magazines later, okay?";
} else {
mes "Alright, here are";
mes "your Magazines. Thanks";
mes "for visiting my shop, and";
mes "I hope that you use all";
mes "of your ammo wisely.";
Zeny = Zeny -500*.@amount;
delitem .@bullet_id,(500*.@amount);
getitem .@pack_id,.@amount;
}
} else {
mes "Sorry, but you don't";
mes "have enough zeny for";
mes "this Magazine exchange.";
mes "Come back to my shop";
mes "after you've saved up";
mes "some more money.";
}
} else {
mes "Sorry, but you don't";
mes "have enough bullets for";
mes "this Magazine exchange.";
mes "Maybe you should double";
mes "check your Inventory, and";
mes "then come back to me later.";
}
close;
}
izlude,171,127,3 duplicate(mdk) Magazine Dealer Kenny#iz 83

View File

@ -1,15 +1,120 @@
//===== rAthena Script =======================================
//= Bullet Dealers
//===== By ===================================================
//= Euphy
//===== Version ==============================================
//= 1.0
//===== Compatible With ======================================
//= rAthena Project
//===== Description ==========================================
//===== Description: =========================================
//= Bullet trader.
//===== Comments =============================================
//= 1.0 First version, Pre-Renewal duplicates.
//===== Changelogs: ==========================================
//= 1.0 First version [Playtester]
//= 1.1 Converted from Aegis [Paradox924X]
//= 1.2 More optimized conversion [Legionaire]
//= 1.2a Removed .GATs [Lupus]
//= 1.3 Fixed [Playtester] Optimized. Got rid of @vars [Lupus]
//= 1.4 Updated to match AEGIS script. [Kisuka]
//= 1.5 Updated to match AEGIS script again. [Masao]
//= 1.6 Moved Izlude duplicate to pre-re/re paths. [Euphy]
//= 2.0 Clean-up. [Capuche]
//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
//============================================================
alberta,118,160,3 script Bullet Dealer Tony#alb::bdt 4_M_04,{
mes "[Tony]";
if (BaseClass == Job_Gunslinger) {
mes "I'm Tony, the Bullet Dealer.";
mes "Come to me whenever you're";
mes "short on ammo. Just bring me";
mes "the materials, and I'll make";
mes "you the bullets you need.";
next;
switch(select("Poison Sphere:Flare Sphere:Lighting Sphere:Blind Sphere:Freezing Sphere:Cancel")) {
case 1: callsub S_BulletTrade,937,10,13205;// <item required>, <amount req>, <bullet id>
case 2: callsub S_BulletTrade,7097,2,13203;
case 3: callsub S_BulletTrade,7053,3,13204;
case 4: callsub S_BulletTrade,1024,5,13206;
case 5: callsub S_BulletTrade,7054,2,13207;
case 6:
mes "[Tony]";
mes "Changed your mind?";
mes "Well, if you ever need";
mes "any bullets, I'll be right";
mes "here. Come back whenever";
mes "you think you'll need more";
mes "ammunition, Gunslinger.";
close;
}
}
mes "Hey, I'm Tony. I'm in";
mes "charge of distributing";
mes "and making bullets for";
mes "Gunslingers. It's just";
mes "how our guild likes";
mes "to do things.";
next;
mes "[Tony]";
mes "I'm sorry if you came";
mes "here to buy some bullets.";
mes "I can only do business with";
mes "fully fledged Gunslingers.";
close;
S_BulletTrade:
.@required_id = getarg(0);
.@required_amount = getarg(1);
.@bullet_id = getarg(2);
mes "[Tony]";
mes "For every set of";
mes callfunc("F_InsertPlural",30,getitemname(.@bullet_id))+",";
mes "you must give me";
mes "1 Emveretarcon,";
mes "1 Phracon, and";
mes callfunc("F_InsertPlural",.@required_amount,getitemname(.@required_id))+".";
next;
mes "[Tony]";
mes "Remember that I can give";
mes "a maximum of 500 sets of";
mes "30 bullets at a time. Please";
mes "enter the number of bullet sets";
mes "that you'd like. If you want to";
mes "cancel, then just enter ''0.''";
next;
input .@amount;
mes "[Tony]";
if (.@amount < 1 || .@amount > 500) {
mes "Hey, I can't give you";
mes "that many bullets. Don't";
mes "forget to enter a number";
mes "that's no higher than 500";
mes "if you want to trade your";
mes "items for some bullets.";
}
else if (countitem(1010) >= .@amount && countitem(1011) >= .@amount && countitem(.@required_id) >= (.@amount*.@required_amount)) {
if (checkweight(.@bullet_id,.@amount * 30) == 0) {
mes "Eh? Your Inventory doesn't";
mes "have enough space for this";
mes "many bullets. Come back later";
mes "after you make more space";
mes "available. Try putting some of";
mes "your things into Kafra Storage.";
} else {
mes "Great, everything seems";
mes "to be in order. Let me take";
mes "these materials, and here are";
mes "your bullets. It's a pleasure";
mes "to do business with you~";
delitem 1010,.@amount; //Phracon
delitem 1011,.@amount; //Emveretarcon
delitem .@required_id,.@amount * .@required_amount;
getitem .@bullet_id,.@amount * 30;
}
} else {
mes "Huh. It looks like you";
mes "don't have enough materials";
mes "for that many bullets. Well,";
mes "it's no problem. Just come";
mes "back after gathering everything";
mes "that you need, okay?";
}
close;
}
que_ng,187,156,3 duplicate(bdt) Bullet Dealer Tony#ng 86
izlude,171,133,3 duplicate(bdt) Bullet Dealer Tony#iz 86

View File

@ -1,22 +1,290 @@
//===== rAthena Script =======================================
//= Magazine Dealers
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Turns bullets into magazines/packs.
//===== Additional Comments: =================================
//= 1.0 First version, Renewal duplicates.
//= 1.1 Added Izlude duplicates. [Euphy]
//= 1.2 Updated Izlude coordinates. [Euphy]
//===== Changelogs: ==========================================
//= 1.0 First version. [SinSloth]
//= 1.1 Optimized version - Reduced to only one function [SinSloth]
//= 1.2 Optimized^2, corrected npc's name [ultramage]
//= 1.2a Optimized. Please, ommit extra NPC names [Lupus]
//= 1.3 Updated to match AEGIS script. [Kisuka]
//= 1.4 Updated to match AEGIS script again. [Masao]
//= 1.5 Moved Izlude duplicate to pre-re/re paths. [Euphy]
//= 2.0 Clean-up. [Capuche]
//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
//= 2.2 Updated to new bullets. [Aleos]
//============================================================
alberta,118,157,3 script Magazine Dealer Kenny::mdk 4_M_01,{
mes "[Kenny]";
mes "Bullet bags will help you carry bullets much more easily.";
mes "Come take a look~";
next;
switch(select("Various Bullet Cases:Sphere Exchange:Old Sphere Exchange:Slug Exchange:Cancel")) {
case 1:
switch(select("Bullet Case:Bloody Bullet Case:Silver Bullet Case:Ammo AP Bullet Case:Ammo Blazing Bullet Case:Ammo Freezing Bullet Case:Ammo Lightning Bullet Case:Ammo Magic Stone Bullet Case:Ammo Purifying Bullet Case:Flare Bullet Case:Lightning Bullet Case:Ice Bullet Case:Poison Bullet Case:Blind Bullet Case:Cancel")) {
case 1: callsub S_Casing,13200,12149;
case 2: callsub S_Casing,13222,22737;
case 3: callsub S_Casing,13221,22738;
case 4: callsub S_Casing,13215,22744;
case 5: callsub S_Casing,13216,22745;
case 6: callsub S_Casing,13217,22746;
case 7: callsub S_Casing,13218,22747;
case 8: callsub S_Casing,13219,22748;
case 9: callsub S_Casing,13220,22749;
case 10: callsub S_Casing,13228,23123;
case 11: callsub S_Casing,13229,23124;
case 12: callsub S_Casing,13230,23125;
case 13: callsub S_Casing,13231,23126;
case 14: callsub S_Casing,13232,23127;
case 15: callsub S_Close;
}
case 2:
switch(select("Fire Bullet:Wind Bullet:Freezing Bullet:Poison Bullet:Blind Bullet:Cancel")) {
case 1: callsub S_Sphere_Exchange,13223,13228;
case 2: callsub S_Sphere_Exchange,13224,13229;
case 3: callsub S_Sphere_Exchange,13227,13230;
case 4: callsub S_Sphere_Exchange,13225,13231;
case 5: callsub S_Sphere_Exchange,13226,13232;
case 6: callsub S_Close;
}
case 3:
switch(select("Fire Sphere:Wind Sphere:Freezing Sphere:Poison Sphere:Blind Sphere:Cancel")) {
case 1: callsub S_Old_Sphere_Exchange,13203,13228;
case 2: callsub S_Old_Sphere_Exchange,13204,13229;
case 3: callsub S_Old_Sphere_Exchange,13207,13230;
case 4: callsub S_Old_Sphere_Exchange,13205,13231;
case 5: callsub S_Old_Sphere_Exchange,13206,13232;
case 6: callsub S_Close;
}
case 4:
switch(select("Slug Ammunition L:Slug Ammunition M:Slug Ammunition H:Slug Ammunition SH:Slug Ammunition XH:Cancel")) {
case 1: callsub S_Slug_Exchange,13210,24;
case 2: callsub S_Slug_Exchange,13211,12;
case 3: callsub S_Slug_Exchange,13212,8;
case 4: callsub S_Slug_Exchange,13213,6;
case 5: callsub S_Slug_Exchange,13214,5;
case 6: callsub S_Close;
}
case 5:
callsub S_Close;
}
S_Casing:
.@bullet_id = getarg(0);
.@pack_id = getarg(1);
.@bullet_str$ = getitemname(.@bullet_id);
.@pack_str$ = getitemname(.@pack_id);
.@bullet_count = countitem(.@bullet_id);
.@pack_count = .@bullet_count / 500;
if (.@bullet_count < 500 || getequipid(EQI_AMMO) != -1 || BaseClass != Job_Gunslinger) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of items to exchange. Go get some more.";
mes "You must have 500 or more of ^FF0000" + .@bullet_str$ + "^000000, ok? Also, make sure not to ^FF0000wear^000000 them if you want to exchange.";
close;
}
mes "[Kenny]";
mes "You've chosen ^FF0000" + .@pack_str$ + "^000000.";
mes "You need 500 ^3131FF" + .@bullet_str$ + "^000000 to make 1 ^3131FF" + .@bullet_str$ + "^000000 item, and it will cost ^3131FF500^000000 zeny.";
mes "How many do you want to exchange?";
next;
switch(select("Exchange all:Make only 1:Cancel")) {
case 1:
mes "[Kenny]";
mes "Bullet count: ^3131FF" + .@bullet_count;
mes "Combination of bullet bags: ^3131FF" + .@pack_count;
mes "Zeny required: ^3131FF" + .@pack_count * 500;
next;
mes "Do you want to exchange?";
next;
switch(select("Exchange:Cancel")) {
case 1:
if (Zeny < .@pack_count * 500) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of Zeny to exchange. Go get some more.";
mes "You must have ^FF0000" + .@pack_count * 500 + "^000000, ok?";
close;
}
mes "[Kenny]";
mes "All done.";
mes "The bag is useless when the weight of inventory gets over 70%. Please be careful.";
Zeny -= .@pack_count * 500;
delitem .@bullet_id, .@pack_count * 500;
getitem .@pack_id, .@pack_count;
close;
case 2:
close;
}
case 2:
if (Zeny < 500) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of Zeny to exchange. Go get some more.";
mes "You must have ^FF0000500^000000, ok?";
close;
}
mes "[Kenny]";
mes "All done.";
mes "The bag is useless when the weight of inventory gets over 70%. Please be careful.";
Zeny -= 500;
delitem .@bullet_id, 500;
getitem .@pack_id, 1;
close;
case 3:
callsub S_Close;
}
S_Sphere_Exchange:
.@old_id = getarg(0);
.@new_id = getarg(1);
.@old_str$ = getitemname(.@old_id);
.@new_str$ = getitemname(.@new_id);
.@old_count = countitem(.@old_id);
.@new_count = .@old_count / 10;
if (.@old_count < 10 || getequipid(EQI_AMMO) != -1 || BaseClass != Job_Gunslinger) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of items to exchange. Go get some more.";
mes "You must have 10 or more of ^FF0000" + .@old_str$ + "^000000, ok? Also, make sure not to ^FF0000wear^000000 them if you want to exchange.";
close;
}
mes "[Kenny]";
mes "You've chosen ^FF0000" + .@old_str$ + "^000000.";
mes "You need 10 ^3131FF" + .@old_str$ + "^000000 to make 1 ^3131FF" + .@new_str$ + "^000000 item.";
mes "How many do you want to exchange?";
next;
switch(select("Exchange all:Make only 1:Cancel")) {
case 1:
mes "[Kenny]";
mes .@old_str$ + " count: ^3131FF" + .@old_count;
mes .@new_str$ + " count: ^3131FF" + .@new_count;
next;
mes "Do you want to exchange?";
next;
switch(select("Exchange:Cancel")) {
case 1:
mes "[Kenny]";
mes "All done.";
delitem .@slug_id, .@new_count * 10;
getitem .@new_slug_id, .@old_count;
close;
case 2:
close;
}
case 2:
mes "[Kenny]";
mes "All done.";
delitem .@old_id, 10;
getitem .@new_id, 1;
close;
case 3:
callsub S_Close;
}
S_Old_Sphere_Exchange:
.@old_id = getarg(0);
.@new_id = getarg(1);
.@old_str$ = getitemname(.@old_id);
.@new_str$ = getitemname(.@new_id);
.@old_count = countitem(.@old_id);
if (.@old_count < 1 || getequipid(EQI_AMMO) != -1 || BaseClass != Job_Gunslinger) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of items to exchange. Go get some more.";
mes "You must have 1 or more of ^FF0000" + .@old_str$ + "^000000, ok? Also, make sure not to ^FF0000wear^000000 them if you want to exchange.";
close;
}
mes "[Kenny]";
mes "You've chosen ^FF0000" + .@old_str$ + "^000000.";
mes "You need 1 ^3131FF" + .@old_str$ + "^000000 to make 1 ^3131FF" + .@new_str$ + "^000000 item.";
mes "How many do you want to exchange?";
next;
switch(select("Exchange all:Make only 1:Cancel")) {
case 1:
mes "[Kenny]";
mes .@old_str$ + " count: ^3131FF" + .@old_count;
mes .@new_str$ + " count: ^3131FF" + .@old_count;
next;
mes "Do you want to exchange?";
next;
switch(select("Exchange:Cancel")) {
case 1:
mes "[Kenny]";
mes "All done.";
delitem .@slug_id, .@old_count;
getitem .@new_slug_id, .@old_count;
close;
case 2:
close;
}
case 2:
mes "[Kenny]";
mes "All done.";
delitem .@old_id, 1;
getitem .@new_id, 1;
close;
case 3:
callsub S_Close;
}
S_Slug_Exchange:
.@slug_id = getarg(0);
.@req_count = getarg(1);
.@slug_str$ = getitemname(.@slug_id);
.@new_slug_str$ = getitemname(25187);
.@count = countitem(.@slug_id);
.@new_count = .@count / .@req_count;
if (.@count < .@req_count || getequipid(EQI_AMMO) != -1 || BaseClass != Job_Gunslinger) {
mes "[Kenny]";
mes "Hey~ You need the exact amount of items to exchange. Go get some more.";
mes "You must have " + .@req_count + " or more of ^FF0000" + .@slug_str$ + "^000000, ok? Also, make sure not to ^FF0000wear^000000 them if you want to exchange.";
close;
}
mes "[Kenny]";
mes "You've chosen ^FF0000" + .@slug_str$ + "^000000.";
mes "You need " + .@req_count + " ^3131FF" + .@slug_str$ + "^000000 to make 1 ^3131FF" + .@new_slug_str$ + "^000000 item.";
mes "How many do you want to exchange?";
next;
switch(select("Exchange all:Make only 1:Cancel")) {
case 1:
mes "[Kenny]";
mes .@slug_str$ + " count: ^3131FF" + .@count;
mes .@new_slug_str$ + " count: ^3131FF" + .@new_count;
next;
mes "Do you want to exchange?";
next;
switch(select("Exchange:Cancel")) {
case 1:
mes "[Kenny]";
mes "All done.";
delitem .@slug_id, .@new_count * 500;
getitem 25187, .@new_count;
close;
case 2:
close;
}
case 2:
mes "[Kenny]";
mes "All done.";
delitem .@slug_id, .@req_count;
getitem 25187, 1;
close;
case 3:
callsub S_Close;
}
S_Close:
mes "[Kenny]";
mes "Okay.";
mes "If you need anything";
mes "please come back.";
close;
}
que_ng,187,149,3 duplicate(mdk) Magazine Dealer Kenny#ng 83
izlude,155,135,3 duplicate(mdk) Magazine Dealer Kenny#iz 83
izlude_a,155,135,3 duplicate(mdk) Magazine Dealer Kenny#a 83
izlude_b,155,135,3 duplicate(mdk) Magazine Dealer Kenny#b 83
izlude_c,155,135,3 duplicate(mdk) Magazine Dealer Kenny#c 83
izlude_d,155,135,3 duplicate(mdk) Magazine Dealer Kenny#d 83
izlude_in,74,104,5 duplicate(mdk) Magazine Dealer Kenny#iz 83

View File

@ -1,22 +0,0 @@
//===== rAthena Script =======================================
//= Bullet Dealers
//===== By ===================================================
//= Euphy
//===== Version ==============================================
//= 1.2
//===== Compatible With ======================================
//= rAthena Project
//===== Description ==========================================
//= Bullet trader.
//===== Comments =============================================
//= 1.0 First version, Renewal duplicates.
//= 1.1 Added Izlude duplicates. [Euphy]
//= 1.2 Updated Izlude coordinates. [Euphy]
//============================================================
que_ng,187,156,3 duplicate(bdt) Bullet Dealer Tony#ng 86
izlude,152,135,3 duplicate(bdt) Bullet Dealer Tony#iz 86
izlude_a,152,135,3 duplicate(bdt) Bullet Dealer Tony#a 86
izlude_b,152,135,3 duplicate(bdt) Bullet Dealer Tony#b 86
izlude_c,152,135,3 duplicate(bdt) Bullet Dealer Tony#c 86
izlude_d,152,135,3 duplicate(bdt) Bullet Dealer Tony#d 86

View File

@ -88,7 +88,6 @@ npc: npc/re/merchants/3rd_trader.txt
npc: npc/re/merchants/advanced_refiner.txt
npc: npc/re/merchants/alchemist.txt
npc: npc/re/merchants/ammo_boxes.txt
npc: npc/re/merchants/ammo_dealer.txt
npc: npc/re/merchants/bio4_reward.txt
//npc: npc/re/merchants/blessed_refiner.txt
//npc: npc/re/merchants/card_exchange.txt

View File

@ -130,8 +130,6 @@ npc: npc/kafras/kafras.txt
// -------------------------- Merchant --------------------------
npc: npc/merchants/advanced_refiner.txt
npc: npc/merchants/alchemist.txt
npc: npc/merchants/ammo_boxes.txt
npc: npc/merchants/ammo_dealer.txt
npc: npc/merchants/buying_shops.txt
//npc: npc/merchants/clothes_dyer.txt
npc: npc/merchants/coin_exchange.txt

View File

@ -4309,30 +4309,12 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
case RL_S_STORM:
skillratio += -100 + 1700 + 200 * skill_lv;
break;
case RL_SLUGSHOT: {
uint16 w = 0;
if (sd) {
unsigned short slug[] = { ITEMID_SLUG_AMMUNITION_XH, ITEMID_SLUG_AMMUNITION_SH, ITEMID_SLUG_AMMUNITION_H, ITEMID_SLUG_AMMUNITION_M, ITEMID_SLUG_AMMUNITION_L }; // In order of priority
int16 index = -1;
for (i = 0; i < ARRAYLENGTH(slug); i++) {
if ((index = pc_search_inventory(sd, slug[i])) >= 0) {
w = (sd->inventory_data[index]->weight / 10) * 32;
break;
}
}
}
if (target->type != BL_PC) // Monster
skillratio += -100 + 1200 * skill_lv;
else // Player
skillratio += -100 + 2000 * skill_lv;
switch(tstatus->size) {
case SZ_SMALL: skillratio += w * 2; break;
case SZ_MEDIUM: skillratio += w * 3; break;
case SZ_BIG: skillratio += w * 4; break;
}
}
case RL_SLUGSHOT:
if (target->type == BL_PC)
skillratio += -100 + 1200 * skill_lv;
else
skillratio += -100 + 2000 * skill_lv;
skillratio *= 2 + tstatus->size;
break;
case RL_D_TAIL:
skillratio += -100 + 4000 + 1000 * skill_lv;

View File

@ -106,11 +106,6 @@ enum item_itemid
ITEMID_REINS_OF_MOUNT = 12622,
ITEMID_NOBLE_NAMEPLATE = 12705,
ITEMID_SILVER_BULLET = 13201,
ITEMID_SLUG_AMMUNITION_L = 13210,
ITEMID_SLUG_AMMUNITION_M = 13211,
ITEMID_SLUG_AMMUNITION_H = 13212,
ITEMID_SLUG_AMMUNITION_SH = 13213,
ITEMID_SLUG_AMMUNITION_XH = 13214,
ITEMID_PURIFICATION_BULLET = 13220,
ITEMID_SILVER_BULLET_ = 13221,
ITEMID_DUN_TELE_SCROLL1 = 14527,

View File

@ -16064,17 +16064,10 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
clif_skill_fail(sd,skill_id,USESKILL_FAIL_PAINTBRUSH,0); //Paint brush is required.
else if( require.itemid[i] == ITEMID_ANCILLA )
clif_skill_fail(sd,skill_id,USESKILL_FAIL_ANCILLA,0); //Ancilla is required.
else if(skill_id == RL_SLUGSHOT) {
if (i < MAX_SKILL_ITEM_REQUIRE - 1) // Check all Slug types
continue;
else
clif_skill_fail(sd, RL_SLUGSHOT, USESKILL_FAIL_NEED_MORE_BULLET, 0); // Bullet is required.
} else {
else
clif_skill_fail( sd, skill_id, USESKILL_FAIL_NEED_ITEM, ( require.itemid[i] << 16 ) | require.amount[i] ); // [%s] required '%d' amount.
}
return false;
} else if (skill_id == RL_SLUGSHOT) // Slug found - simulate priority and cancel the loop
break;
}
}
/* check the status required */
@ -16182,9 +16175,6 @@ void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uin
if( (n = pc_search_inventory(sd,require.itemid[i])) >= 0 )
pc_delitem(sd,n,require.amount[i],0,1,LOG_TYPE_CONSUME);
if (skill_id == RL_SLUGSHOT && n > -1) // Slug found - simulate priority and cancel the loop
break;
}
}
}