summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2020-02-09 22:46:11 +0100
committerGitHub <noreply@github.com>2020-02-09 22:46:11 +0100
commit5ee70096cecfbee98425248db1338f28ffe6d73a (patch)
tree00aebd209cae0c7d339fe3a4c00ea856219cc899
parent38f33af5049120c741196349505042e1485d11b0 (diff)
parentbfdeedaf09f87a610c9725127b92815e4dff1719 (diff)
downloadhercules-5ee70096cecfbee98425248db1338f28ffe6d73a.tar.gz
hercules-5ee70096cecfbee98425248db1338f28ffe6d73a.tar.bz2
hercules-5ee70096cecfbee98425248db1338f28ffe6d73a.tar.xz
hercules-5ee70096cecfbee98425248db1338f28ffe6d73a.zip
Merge pull request #2621 from dastgirp/script/rebellion
Added Rebellion Job Quest
-rw-r--r--db/quest_db.conf36
-rw-r--r--db/re/item_db.conf162
-rw-r--r--db/re/mob_db.conf62
-rw-r--r--npc/re/jobs/2e/rebellion.txt1035
-rw-r--r--npc/re/scripts_jobs.conf1
5 files changed, 1295 insertions, 1 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf
index adf425405..8163c540a 100644
--- a/db/quest_db.conf
+++ b/db/quest_db.conf
@@ -12626,6 +12626,42 @@ quest_db: (
Name: "About skills"
},
{
+ Id: 12340
+ Name: "Suspicious Person"
+},
+{
+ Id: 12341
+ Name: "New Challenge"
+},
+{
+ Id: 12342
+ Name: "Crafting Firearms"
+},
+{
+ Id: 12343
+ Name: "Target Practice"
+ Targets: (
+ {
+ MobId: 3169
+ Count: 10
+ },
+ )
+},
+{
+ Id: 12344
+ Name: "Wrong Target Practice"
+ Targets: (
+ {
+ MobId: 3170
+ Count: 3
+ },
+ )
+},
+{
+ Id: 12345
+ Name: "Transforming to Rebellion"
+},
+{
Id: 13101
Name: "The way of Taekwon"
},
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index fb0df3d2d..4f5be9de5 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -74523,6 +74523,16 @@ item_db: (
Name: "Love Wand"
},
{
+ Id: 6746
+ AegisName: "Steel_Article"
+ Name: "Steel Artifact"
+},
+{
+ Id: 6747
+ AegisName: "Steel_Article_"
+ Name: "Steel Artifact"
+},
+{
Id: 6755
AegisName: "Corrupted_Charm"
Name: "Contaminated Magic"
@@ -101220,6 +101230,58 @@ item_db: (
">
},
{
+ Id: 13118
+ AegisName: "Tiny_Flame"
+ Name: "Fading Flame"
+ Type: "IT_WEAPON"
+ Weight: 100
+ Range: 7
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_ARMS"
+ WeaponLv: 1
+ EquipLv: 1
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Subtype: "W_REVOLVER"
+},
+{
+ Id: 13119
+ AegisName: "Freedom_Flame"
+ Name: "Freedom Flame"
+ Type: "IT_WEAPON"
+ Weight: 100
+ Atk: 100
+ Range: 7
+ Slots: 2
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_ARMS"
+ WeaponLv: 3
+ EquipLv: 99
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Subtype: "W_REVOLVER"
+},
+{
Id: 13120
AegisName: "H_FEATHER_H_FIRE"
Name: "Heaven's_Feather_&_Hell's_Fire"
@@ -102889,6 +102951,7 @@ item_db: (
Atk: 15
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102904,6 +102967,7 @@ item_db: (
Atk: 30
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102922,6 +102986,7 @@ item_db: (
Atk: 50
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102937,6 +103002,7 @@ item_db: (
Atk: 50
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102952,6 +103018,7 @@ item_db: (
Atk: 50
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102970,6 +103037,7 @@ item_db: (
Atk: 50
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
@@ -102988,11 +103056,98 @@ item_db: (
Atk: 50
Job: {
Gunslinger: true
+ Rebellion: true
}
Loc: "EQP_AMMO"
Subtype: "A_BULLET"
Script: <" bonus bAtkEle, Ele_Water; ">
},
+{
+ Id: 13228
+ AegisName: "Flare_Bullet"
+ Name: "Flare Bullet"
+ Type: "IT_AMMO"
+ Buy: 15
+ Weight: 5
+ Atk: 50
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_AMMO"
+ Subtype: "A_BULLET"
+ Script: <" bonus bAtkEle, Ele_Fire; ">
+},
+{
+ Id: 13229
+ AegisName: "Lightning_Bullet"
+ Name: "Lightning Bullet"
+ Type: "IT_AMMO"
+ Buy: 15
+ Weight: 5
+ Atk: 50
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_AMMO"
+ Subtype: "A_BULLET"
+ Script: <" bonus bAtkEle, Ele_Wind; ">
+},
+{
+ Id: 13230
+ AegisName: "Ice_Bullet"
+ Name: "Ice Bullet"
+ Type: "IT_AMMO"
+ Buy: 15
+ Weight: 5
+ Atk: 50
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_AMMO"
+ Subtype: "A_BULLET"
+ Script: <" bonus bAtkEle, Ele_Water; ">
+},
+{
+ Id: 13231
+ AegisName: "Poison_Bullet"
+ Name: "Poison Bullet"
+ Type: "IT_AMMO"
+ Buy: 15
+ Weight: 5
+ Atk: 50
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_AMMO"
+ Subtype: "A_BULLET"
+ Script: <"
+ bonus bAtkEle, Ele_Poison;
+ bonus2 bAddEff, Eff_Poison, 500;
+ ">
+},
+{
+ Id: 13232
+ AegisName: "Blind_Bullet"
+ Name: "Blind Bullet"
+ Type: "IT_AMMO"
+ Buy: 15
+ Weight: 5
+ Atk: 50
+ Job: {
+ Gunslinger: true
+ Rebellion: true
+ }
+ Loc: "EQP_AMMO"
+ Subtype: "A_BULLET"
+ Script: <"
+ bonus bAtkEle, Ele_Dark;
+ bonus2 bAddEff, Eff_Blind, 500;
+ ">
+},
//== Shurikens & Kunais ====================================
{
@@ -153464,6 +153619,13 @@ item_db: (
Name: "S_Genesis_Earing"
},
{
+ Id: 25187
+ AegisName: "Slug_Bullet"
+ Name: "Slug Bullet"
+ Buy: 1200
+ Weight: 1200
+},
+{
Id: 25258
AegisName: "BrokenArrow"
Name: "BrokenArrow"
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index c0c726f25..4f5c6ad9b 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -64487,7 +64487,43 @@ mob_db: (
//2428,G_L_SEYREN
//2429,G_L_EREMES
//2430,G_L_HARWORD
-//2431,G_L_SHECIL
+{
+ Id: 2431
+ SpriteName: "G_L_SHECIL"
+ Name: "Hunter Shecil"
+ Lv: 98
+ Hp: 8835
+ Sp: 1
+ AttackRange: 14
+ Attack: [574, 223]
+ Def: 68
+ Mdef: 13
+ Stats: {
+ Str: 108
+ Agi: 113
+ Vit: 60
+ Int: 72
+ Dex: 148
+ Luk: 37
+ }
+ ViewRange: 10
+ ChaseRange: 12
+ Size: "Size_Medium"
+ Race: "RC_DemiHuman"
+ Element: ("Ele_Wind", 3)
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ CanAttack: true
+ Angry: true
+ ChangeTargetMelee: true
+ ChangeTargetChase: true
+ }
+ MoveSpeed: 160
+ AttackDelay: 432
+ AttackMotion: 400
+ DamageMotion: 288
+},
//2432,G_L_KATRINN
//2433,G_L_MAGALETA
//2434,G_L_YGNIZEM
@@ -83975,6 +84011,30 @@ mob_db: (
//3156,EXPLORATION_ROVER
//3166,M_E_DEVILING
{
+ Id: 3169
+ SpriteName: "J_REB_SHECIL1"
+ Name: "Shooting Target"
+ Size: "Size_Small"
+ Race: "RC_Formless"
+ Element: ("Ele_Neutral", 1)
+ Mode: {
+ CanMove: true
+ }
+ MoveSpeed: 200
+},
+{
+ Id: 3170
+ SpriteName: "J_REB_SHECIL2"
+ Name: "Shooting Target"
+ Size: "Size_Small"
+ Race: "RC_Formless"
+ Element: ("Ele_Neutral", 1)
+ Mode: {
+ CanMove: true
+ }
+ MoveSpeed: 200
+},
+{
Id: 3181
SpriteName: "E1_FELOCK"
Name: "Captain Ferlock"
diff --git a/npc/re/jobs/2e/rebellion.txt b/npc/re/jobs/2e/rebellion.txt
new file mode 100644
index 000000000..53beb11f5
--- /dev/null
+++ b/npc/re/jobs/2e/rebellion.txt
@@ -0,0 +1,1035 @@
+//================= Hercules Script =======================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2020 Hercules Dev Team
+//= Copyright (C) Dastgir
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Rebellion Job Quest
+//================= Description ===========================================
+//= Job change Quest from Gunslinger -> Rebellion
+//================= Current Version =======================================
+//= 1.0
+//=========================================================================
+
+job_gun,1,1,1 script Administrator1 CLEAR_NPC,{
+ callfunc("F_GM_NPC");
+ mes("Please enter the password.");
+ .@success = callfunc("F_GM_NPC", 1854, 0);
+ if (.@sucess != 1)
+ close();
+
+ mes("[Time Administrator]");
+ mes("What time would you like to return?");
+ next();
+ .@select = select("Cancel", "Test monster spawn", "Start from beginning", "Furnace Zone", "Shooting Zone", "Complete the test");
+ if (.@select == 1) {
+ close();
+ } else if (.@select == 2) {
+ donpcevent("#target::OnStart");
+ donpcevent("#nontarget::OnStart");
+ close();
+ } else if (.@select == 4) {
+ .@questComplete = 12341;
+ } else if (.@select == 5) {
+ .@questComplete = 12342;
+ } else if (.@select == 6) {
+ .@questComplete = 12344;
+ }
+ for (.@i = 12340; .@i <= 12345; .@i++) {
+ erasequest(.@i);
+ if (.@i <= .@questComplete) {
+ setquest(.@i);
+ completequest(.@i);
+ }
+ }
+ close();
+
+OnInit:
+ disablenpc(strnpcinfo(NPC_NAME));
+ end;
+}
+
+// Warps
+job_gun,56,26,0 warp rebelroom#1 2,2,einbroch,49,97
+job_gun,18,10,0 warp rebelroom#2 2,2,job_gun,81,29
+job_gun,165,22,0 warp rebelroom#3 2,2,job_gun,196,35
+job_gun,197,49,0 warp rebelroom#4 2,2,job_gun,157,21
+
+job_gun,88,144,0 warp shootingrange#1 3,3,job_gun,93,123
+job_gun,105,97,0 warp shootingrange#2 3,3,job_gun,125,98
+job_gun,156,115,0 warp shootingrange#3 3,3,job_gun,157,137
+job_gun,152,154,0 warp shootingrange#4 3,3,job_gun,135,154
+job_gun,130,146,0 warp shootingrange#5 3,3,job_gun,120,130
+
+job_gun,165,18,1 script Furnace Controller#1 CLEAR_NPC,{
+ if (Class != Job_Gunslinger) {
+ mes("Only authorized user can do the operation.");
+ close();
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+ if (questprogress(12342) != 1) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+ mes("Do you want to dredge the mold up from the furnace?");
+ next();
+ if (select("Quit.", "Begin.") == 1) {
+ mes("Switch to the Standby mode.");
+ close();
+ }
+ hideonnpc("Furnace Controller#1");
+ donpcevent("Furnace Controller#2::OnStart");
+ mes("Initializing Furnace Controller ZX-3100...");
+ close();
+
+OnInit:
+ hideoffnpc("Furnace Controller#1");
+ end;
+}
+
+job_gun,214,36,1 script Auto Anvil#1 CLEAR_NPC,{
+ if (Class != Job_Gunslinger) {
+ mes("Only authorized user can do the operation.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ mes("Unauthorized firearm creation has been detected. Report to Manager Elwin.");
+ close();
+ }
+ if (checkweight(Tiny_Flame, 1) == 0) {
+ mes("You have too many items, please reduce them to continue.");
+ close();
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL || countitem(Steel_Article_) <= 4 || questprogress(12342) != 1) {
+ mes("Not an authorized user. Abort the operation.");
+ close();
+ }
+
+ mes("Do you want to use the auto anvil and shape the standard Steel Artifacts into a firearm?");
+ next();
+ if (select("Quit.", "Begin.") == 1) {
+ mes("For your safety, please step away from the auto anvil.");
+ close();
+ }
+ if (rand(1, 10) > 6) {
+ specialeffect(EF_REPAIRWEAPON);
+ mes("You have successfully created a firearm using the auto anvil. ^ff0000Please report before your transformation expires^000000.");
+ delitem(Steel_Article_, 5);
+ getitem(Tiny_Flame, 1);
+ } else {
+ specialeffect(EF_SUI_EXPLOSION);
+ mes("Failed to create a firearm.");
+ delitem(Steel_Article_, 5);
+ }
+ close();
+
+OnInit:
+ hideoffnpc("Auto Anvil#1");
+ end;
+}
+
+job_gun,165,18,1 script Furnace Controller#2 CLEAR_NPC,{
+ mes("The system is busy dredging a completed mold from the furnace.");
+ close();
+
+OnInit:
+ hideonnpc("Furnace Controller#2");
+ end;
+
+OnStart:
+ hideoffnpc("Furnace Controller#2");
+ sleep(3000);
+ mapannounce("job_gun", "Furnace Controller: Dredging a mold up from the furnace... Workers, stand by at the production line.", bc_map, "0x00ff44");
+ sleep(500);
+ .@wh_start = 0;
+ while (true) {
+ if (.@wh_start >= 30)
+ break;
+
+ .@eff_rnd = rand(1, 100);
+ if (.@eff_rnd < 33) { // 0 - 32
+ donpcevent("Heating Furnace#3::OnStart");
+ } else if (.@eff_rnd > 66) { // 67-100
+ donpcevent("Heating Furnace#4::OnStart");
+ } else { // 33-66
+ donpcevent("Heating Furnace#5::OnStart");
+ }
+ sleep(200);
+ makeitem(Steel_Article, 1, "job_gun", rand(127, 143), rand(26, 29));
+ if (rand(1, 10) > 7) {
+ makeitem(Steel_Article_, 1, "job_gun", rand(127, 143), rand(26, 29));
+ }
+ .@wh_start += 1;
+ sleep(500);
+
+ }
+ sleep(2000);
+ mapannounce("job_gun", "Furnace Controller: Finishing the operation... Entering Standby mode in 15 seconds.", bc_map, "0x00ff44");
+ sleep(15000);
+ hideonnpc("Furnace Controller#2");
+ hideoffnpc("Furnace Controller#1");
+ end;
+}
+
+job_gun,130,31,1 script Heating Furnace#3 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+job_gun,136,31,1 script Heating Furnace#4 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+job_gun,141,31,1 script Heating Furnace#5 CLEAR_NPC,{
+ end;
+
+OnStart:
+ specialeffect(EF_FIREPILLAR);
+ sleep(500);
+ specialeffect(EF_FIREPILLARBOMB);
+ end;
+}
+
+function script F_summonTargetMonster {
+ .@monster_id = getarg(0);
+ .@max_mob_count = getarg(1);
+ .@monster_name$ = getarg(2);
+ .@event_name$ = getarg(3);
+ while(true) {
+ .@mob_dead_num = mobcount("job_gun", .@event_name$);
+ if (.@mob_dead_num >= .@max_mob_count)
+ break;
+
+ switch(rand(1, 5)) {
+ case 1:
+ .@mobx = rand(88, 99);
+ .@moby = rand(143, 147);
+ break;
+ case 2:
+ .@mobx = rand(92, 96);
+ .@moby = rand(95, 122);
+ break;
+ case 3:
+ .@mobx = rand(143, 159);
+ .@moby = rand(99, 100);
+ break;
+ case 4:
+ .@mobx = rand(157, 158);
+ .@moby = rand(137, 160);
+ break;
+ case 5:
+ .@mobx = rand(119, 134);
+ .@moby = rand(156, 160);
+ break;
+ }
+ monster("job_gun", .@mobx, .@moby, .@monster_name$, .@monster_id, 1, .@event_name$);
+ }
+ return;
+}
+
+job_gun,1,4,1 script #target CLEAR_NPC,{
+ end;
+
+OnStart:
+ killmonster("job_gun", "#target::OnTargetDead");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+
+OnInit:
+ hideonnpc("#target");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+
+OnTargetDead:
+ hideonnpc("#target");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL1, 16, _("Standard-issue Target"), "#target::OnTargetDead");
+ end;
+}
+
+job_gun,1,5,1 script #nontarget CLEAR_NPC,{
+ end;
+OnStart:
+ killmonster("job_gun", "#nontarget::OnNonTargetDead");
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+
+OnInit:
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+
+OnNonTargetDead:
+ hideonnpc("#nontarget");
+ callfunc("F_summonTargetMonster", J_REB_SHECIL2, 56, _("Defective Target"), "#nontarget::OnNonTargetDead");
+ end;
+}
+
+moc_fild12,261,318,3 script Suspicious Man 4_M_MOCASS2,2,2,{
+ end;
+OnTouch:
+ if (Class != Job_Gunslinger || BaseLevel < 99 || JobLevel < 70)
+ end;
+ if (questprogress(12340) < 1) {
+ mes("[Suspicious Man]");
+ mes("Finally I've found you, Vagabond Spike! Your neck is mine!");
+ next();
+ select("Say what?");
+
+ mes("[Suspicious Man]");
+ mes("*Snort* Don't pretend like you don't know. Look at this poster! You're in it!");
+ next();
+ select("I see the resemblance, but that's not me.");
+
+ mesf("[%s]", strcharinfo(PC_NAME));
+ mes("Forget the resemblance. Where did you get that poster? I've never committed a crime.");
+ next();
+ mes("[Suspicious Man]");
+ mes("I knew you'd try to lie your way out.");
+ next();
+ mes("[Suspicious Man]");
+ mes("The ^0000ffEinbroch Private Pub^000000 has released that wanted poster. You have many bounty hunters like me on your heels.");
+ next();
+ mes("[Suspicious Man]");
+ mes("I don't care if you're the right one so long as you look it and I can take you dead or alive.");
+ next();
+ } else {
+ mes("[Suspicious Man]");
+ mes("It's you again! You've got guts to come back here!");
+ next();
+ }
+ switch (select("Make a run for it.", "Fight him.")) {
+ case 1:
+ mes("^0000ffI should run for now and think about this later.^000000");
+ close2();
+ break;
+ case 2:
+ mes("^0000ffHe's not the only bounty hunter after me, if he's telling the truth. I need time to strategize.^000000");
+ close2();
+ break;
+ }
+ setquest(12340);
+ warp("moc_fild12", 186, 83);
+ end;
+}
+
+einbroch,54,97,3 script Bouncer 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Bouncer]");
+ mes("No loitering around the venue.");
+ close();
+ }
+ if (questprogress(12340) < 1) {
+ mes("[Bouncer]");
+ mes("Under construction, can't get in.");
+ close();
+ } else if (questprogress(12340) == 1) {
+ mes("[Bouncer]");
+ mes("*Gasp* You! I thought you were already captured. Ooh, doesn't matter now. You're my Get Out of Jail Free card!");
+ next();
+ select("I'm not the criminal you think I am!");
+ mes("[Bouncer]");
+ mes("You aren't?");
+ next();
+ mes("^0000ffThe bouncer examines your face.^000000");
+ next();
+ mes("[Bouncer]");
+ mes("Hm, you bear a striking resemblance, though you don't look not as menacing as that criminal Spike");
+ next();
+ select("I want to talk to the poster publisher.");
+ mes("[Bouncer]");
+ mes("Your problem is a bit out of my league. Get in. If I find out you're the real deal all along, I'll see that you'll never see the outside again.");
+ close2();
+ warp("job_gun", 81, 29);
+ } else if (questprogress(12340) > 1) {
+ mes("[Bouncer]");
+ mes("You're back. Why?");
+ next();
+ if (select("I want in.", "I was passing by.") == 2) {
+ mes("[Bouncer]");
+ mes("You're silly.");
+ close();
+ }
+ mes("[Bouncer]");
+ mes("Go ahead. Stay out of trouble.");
+ close2();
+ warp("job_gun", 70, 28);
+ }
+ end;
+}
+
+job_gun,68,33,3 script Ruthless Rebellion 4_F_REBELLION,2,2,{
+ mes("[Ruthless Rebellion]");
+ mes("Do you know how to use a gun?");
+ close();
+}
+
+job_gun,78,33,6 script Suspicious Gunslinger 4_M_JOB_BLACKSMITH,2,2,{
+ mes("[Suspicious Gunslinger]");
+ mes("... ");
+ next();
+ mes("[Quiet Gunslinger]");
+ mes("Don't say I look like a blacksmith you know.");
+ close();
+}
+
+job_gun,74,24,6 script Drunken Man 4_M_LIEMAN,2,2,{
+ mes("[Drunken Man]");
+ mes("*Hiccups* Oh, I'm the owner here.");
+ mes("Oh wait, am I in the pub or someplace else? Zzz...");
+ close();
+}
+
+job_gun,64,33,6 script Anxious Man 4_M_ALCHE_A,2,2,{
+ mes("[Anxious Man]");
+ mes("Maybe I'm in the wrong place. This place doesn't look like a pub.");
+ close();
+}
+
+job_gun,86,29,3 script Kulbertinov 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Kulbertinov]");
+ mes("Are you looking for me?");
+ close();
+ }
+ if (questprogress(12340) < 1) {
+ mes("[Kulbertinov]");
+ mes("Can I help you?");
+ close();
+ } else if (questprogress(12340) == 1) {
+ mes("[Kulbertinov]");
+ mes("What do you want?");
+ next();
+ select("I'm mistaken for a criminal!");
+ mes("[Kulbertinov]");
+ mes("Wait a minute... Mwah hah hah!");
+ next();
+ mes("^0000ffHe scans your face, then guffaws.^000000");
+ next();
+ mes("[Kulbertinov]");
+ mes("I'm sorry. For a moment, I thought Spike came back to life. He was found dead three days ago.");
+ next();
+ select("He was captured already?");
+ mes("[Kulbertinov]");
+ mes("Yes, and the bounty hunter was already paid. The news hasn't spread, and you're the spitting image of him. Go figure.");
+ next();
+ select("You have to do something!");
+ mes("[Kulbertinov]");
+ mes("I'm sorry, but I can't talk to every single bounty hunter for you. Of course, I'm willing to compensate for your inconvenience.");
+ next();
+ mes("[Kulbertinov]");
+ mes("Hey, how about you join our ranks? At the very last, you won't get shot.");
+ next();
+ select("You want me become a bounty hunter?");
+ mes("[Kulbertinov]");
+ mes("No, bounty hunting is just a pastime. We're the experts of all the firearms in the world.");
+ next();
+ mes("[Kulbertinov]");
+ mes("Carefree spirits!");
+ mes("Magical spitfires!");
+ mes("We call ourselves the ^0000ffRebellion^000000.");
+ next();
+ mes("[Kulbertinov]");
+ mes("You look like you know how to use a gun. How'd you like to join our ranks? You won't have to worry about other bounty hunters anymore too.");
+ next();
+ switch (select("Let me think it over.", "I don't think I have a choice.")) {
+ case 1:
+ mes("[Kulbertinov]");
+ mes("You can think it over and over, but the answer won't change. Just take the offer.");
+ break;
+ case 2:
+ mes("[Kulbertinov]");
+ mes("Good thinking. Might as well do it now and get it over with.");
+ break;
+ }
+ next();
+ mes("[Kulbertinov]");
+ mes("Talk to Enwin Conick. She guides drifting spirits like you to the way of the Rebellion. I'll send word to her. Ah, and don't point your gun at her.");
+ setquest(12341);
+ completequest(12340);
+ } else if (questprogress(12340) > 1) {
+ mes("[Kulbertinov]");
+ mes("Do you have business with Elwin Conick?");
+ next();
+ if (select("No.", "Send me to Elwin Conick.") == 1) {
+ mes("[Kulbertinov]");
+ mes("All right. Care for a shot of vodka?");
+ close();
+ }
+ mes("[Kulbertinov]");
+ mes("Okay, I'll let her know.");
+ }
+ close2();
+ warp("job_gun", 19, 15);
+ end;
+}
+
+job_gun,19,24,3 script Elwin Conick#1 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12341) == 1) {
+ mes("[Elwin Conick]");
+ mes("Do you to join us Rebellions?");
+ next();
+ mes("^0000ffThe short woman with keen eyes stares into your eyes.^000000");
+ next();
+ mes("[Elwin Conick]");
+ mes("Sign here.");
+ next();
+ mes("^0000ffThe undersigned party [_____] will not speak of the test even if he or she suffers injury, mutilation, or death in an unforeseen accident that may occur during the test.^000000");
+ next();
+ select("WHAT?!");
+ mes("[Elwin Conick]");
+ mes("Do you want join us or not?");
+ next();
+ if (select("I give up.", "...I'll sign.") == 1) {
+ mes("[Elwin Conick]");
+ mes("Your choice.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Good. Now, follow me.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ if (questprogress(12342) == 1) {
+ mes("[Elwin Conick]");
+ mes("Do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("Your choice.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Follow me.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ if (questprogress(12343) == 1) {
+ mes("[Elwin Conick]");
+ mes("You still have Ivan's shooting test, do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Remember to give your best.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ if (questprogress(12343) > 1) {
+ mes("[Elwin Conick]");
+ mes("Ivan's shooting test have not finished yet, do you want to try again?");
+ next();
+ if (select("I give up.", "Do it.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("Remember to give your best.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ if (questprogress(12345) == 1) {
+ mes("[Elwin Conick]");
+ mes("Ivan is waiting for you, go find him.");
+ close2();
+ warp("job_gun", 120, 130);
+ end;
+ }
+ mes("[Elwin Conick]");
+ mes("You have no more test to take. Why don't you go out and have a drink?");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+}
+
+job_gun,117,46,3 script Elwin Conick#2 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) == G_L_SHECIL) {
+ mes("^0000ffYou are already in the test form. If you have finished all your tests, report to Elwin Conick in the Assembly Room^000000.");
+ close();
+ } else if (getstatus(SC_MONSTER_TRANSFORM, 1) > 1) {
+ mes("[Elwin Conick]");
+ mes("Look at yourself, do you really want to test?");
+ next();
+ mes("^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000");
+ next();
+ if (select("Wait.", "Go away.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax..");
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Come back when you aren't in any form.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12341) == 1) {
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close();
+ }
+ setquest(12342);
+ completequest(12341);
+ .@showDialog = true;
+ } else if (questprogress(12342) == 1) {
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ mes("[Elwin Conick]");
+ mes("Any leftover Steel Artifacts must be returned after the test.");
+ close();
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close();
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ close2();
+ end;
+ }
+ .@showDialog = true;
+ }
+ if (.@showDialog) {
+ mes("[Elwin Conick]");
+ mes("Listen up. I'm not going to great lengths trying to explain the test to you.");
+ next();
+ select("Okay.");
+ mes("[Elwin Conick]");
+ mes("This is where the firearm molds are cast. Everywhere you can see Steel Artifacts are being produced.");
+ next();
+ mes("[Elwin Conick]");
+ mes("You'll be asked to control switches on the machine and select 5 standard Steel Artifacts.");
+ next();
+ mes("[Elwin Conick]");
+ mes("You'll then take them to the next Assembly Room and assemble them into a complete firearm. You'll be given 3 minutes to finish all that. ^0000ffTo check the elapsed time, you'll be transformed into a different job^000000.");
+ next();
+ mes("[Elwin Conick]");
+ mes("I'll be in the next room, waiting for you to bring me a complete firearm. Remember, ^0000ffyou fail the test when your transformation expires after 3 minutes^000000.");
+ montransform(G_L_SHECIL, 180000);
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Ah? Are you lost? You need to register first and then get back here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+}
+
+job_gun,198,39,3 script Elwin Conick#3 4_F_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Elwin Conick]");
+ mes("If you don't want to join Rebellions, just get out.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12342) != 1) {
+ mes("[Elwin Conick]");
+ mes("Ah? Are you lost? You need to register first and then get back here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) == G_L_SHECIL) {
+ if (countitem(Tiny_Flame) == 0) {
+ mes("[Elwin Conick]");
+ mes("Are you done? I don't see any completed firearm in your inventory.");
+ close();
+ }
+ delitem(Tiny_Flame, 1);
+ mes("[Elwin Conick]");
+ mes("It's shoddy but not bad, given the time. You passed.");
+ next();
+ mes("[Elwin Conick]");
+ mes("Let me take all your leftover test materials.");
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ }
+ next();
+ mes("[Elwin Conick]");
+ mes("Now you can move on to the next course. Ivan Sidorenko will oversee your test.");
+ completequest(12342);
+ close2();
+ warp("job_gun", 120, 133);
+ end;
+
+ } else if (getstatus(SC_MONSTER_TRANSFORM, 1) > 1) {
+ mes("[Elwin Conick]");
+ mes("Look at yourself, do you really want to test?");
+ next();
+ mes("^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000");
+ next();
+ if (select("Wait.", "Go away.") == 1) {
+ mes("[Elwin Conick]");
+ mes("It's not worth to give up, now go out and relax..");
+ close();
+ }
+ mes("[Elwin Conick]");
+ mes("Come back when you aren't in any form.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ } else {
+ mes("[Elwin Conick]");
+ mes("Time over. You failed the test. Let me take all your leftover test materials.");
+ .@st_job1 = countitem(Steel_Article);
+ .@st_job2 = countitem(Steel_Article_);
+ if (.@st_job1 > 0) {
+ delitem(Steel_Article, .@st_job1);
+ }
+ if (.@st_job2 > 0) {
+ delitem(Steel_Article_, .@st_job2);
+ }
+ if (countitem(Tiny_Flame) > 0) {
+ delitem(Tiny_Flame, 1);
+ }
+ next();
+ mes("[Elwin Conick]");
+ mes("Let's start again.");
+ close2();
+ warp("job_gun", 117, 41);
+ end;
+ }
+ end;
+}
+
+job_gun,120,138,3 script Ivan Sidorenko#1 4_M_REBELLION,2,2,{
+ if (Class != Job_Gunslinger) {
+ mes("[Ivan Sidorenko]");
+ mes("This is shooting test area, you can't come here as you like.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12342) < 2) {
+ mes("[Ivan Sidorenko]");
+ mes("There seems to be a mistake, you can't stay here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (questprogress(12343) < 1) {
+ mes("[Ivan Sidorenko]");
+ mes("Hey, stay focused--we're using live ammo here, and you can get shot anytime.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Let me make this quick. Basically you'll be running in this shooting range consisting of 5 sections.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("The objective is to find enemies in the midst of a crowd quickly and without fail.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Among all the targets, you must shoot only the ^0000ffStandard-issue Targets^000000. If you make a mistake, you'll lose points.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("Let's try. There aren't many ^0000ffStandard-issue Targets^000000, so keep your eyes peeled.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("^0000ffYou have 3 minutes to finish this test. If you can't finish before your transformation expires^000000, you'll fail. If that happens, just follow the path back to me.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("^0000ffYou'll fail if you miss a Standard-issue Target, or shoot 3 incorrect targets^000000. Let's get started.");
+ setquest(12343);
+ setquest(12344);
+ montransform(G_L_SHECIL, 180000);
+ close2();
+ warp("job_gun", 102, 146);
+ end;
+ } else if (questprogress(12343) == 1) {
+ .@standard_target = 0;
+ .@failed_target = 0;
+ .@total_target = 0;
+ if (questprogress(12343, HUNTING) == 2) {
+ .@standard_target = 10;
+ }
+ if (questprogress(12344, HUNTING) == 2) {
+ .@failed_target = 2;
+ }
+ if (getstatus(SC_MONSTER_TRANSFORM, 1) != G_L_SHECIL) {
+ .@total_target = 5;
+ }
+ .@target_count = .@standard_target - (.@failed_target + .@total_target); //
+ if (.@target_count > 9) { // Killed 10 Standard, 0 Failed
+ completequest(12343);
+ completequest(12344);
+ setquest(12345);
+ mes("[Ivan Sidorenko]");
+ mes("Good job. I didn't think you could pass so quickly.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.");
+ close2();
+ warp("job_gun", 210, 132);
+ end;
+ } else if (.@target_count == 8) { // Killed 10 Standard, 3 failed
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You're quick enough, but you shot too many incorrect targets. You failed.");
+ next();
+ } else if (.@target_count == 5) { // Timeout
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You accurate enough, but you took too much time. Slow Rebellions don't survive long enough.");
+ next();
+ } else if (.@target_count < 5) { // Timeout and failed targets
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("You failed at both speed and accuracy. How did you survive this long?");
+ next();
+ } else {
+ erasequest(12343);
+ erasequest(12344);
+ mes("[Ivan Sidorenko]");
+ mes("There's a problem, the statistic seems to be wrong. Well... This can happen sometimes.");
+ next();
+ }
+ mes("[Ivan Sidorenko]");
+ mes("Let's try again. Be more careful this time.");
+ setquest(12343);
+ setquest(12344);
+ montransform(G_L_SHECIL, 180000);
+ close2();
+ warp("job_gun", 102, 146);
+ end;
+ } else {
+ mes("[Ivan Sidorenko]");
+ mes("How did you not leave?");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.");
+ close2();
+ warp("job_gun", 210, 132);
+ end;
+ }
+ end;
+}
+
+job_gun,220,132,3 script Ivan Sidorenko#2 4_M_REBELLION,2,2,{
+ .@now_weight = MaxWeight - Weight;
+ if (checkweight(Knife, 1) == 0) {
+ mes("You have too many items, please reduce them to continue.");
+ close();
+ }
+ if (.@now_weight < 1000) {
+ mes("The items in your inventory are weighing you down. Lighten your weight first.");
+ close();
+ }
+ if (questprogress(12345) != 1) {
+ mes("[Ivan Sidorenko]");
+ mes("There must have been a mistake. You aren't supposed to remain here.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ }
+ if (Class == Job_Gunslinger) {
+ if (BaseLevel < 99 || JobLevel < 70) {
+ mes("[Ivan Sidorenko]");
+ mes("Huh? You look so weak? I have nothing more to say.");
+ close();
+ }
+ if (SkillPoint != 0) {
+ mes("[Ivan Sidorenko]");
+ mes("Oh no~ You still have Skill Points.");
+ close();
+ }
+ mes("[Ivan Sidorenko]");
+ mes("Kulbertinov, Elwin, and I've evaluated your Rebellion test results.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("And...");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("You've met all our requirements including the attitude and the test performance.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("That's right, you're now a member of the Rebellion. Get ready to be wowed.");
+ next();
+ jobchange(Job_Rebellion);
+ completequest(12345);
+ mes("[Ivan Sidorenko]");
+ mes("And Elwin wants you to have this. Take good care of it. He made it for you.");
+ getitem(Freedom_Flame, 1);
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("See you later.");
+ close2();
+ warp("job_gun", 81, 29);
+ end;
+ } else if (Class == Job_Rebellion) {
+ mes("[Ivan Sidorenko]");
+ mes("This life should be fun, not boring.");
+ next();
+ mes("[Ivan Sidorenko]");
+ mes("And by becoming a Rebellion your life should be upgraded. So, go and create a great journey, make us proud!");
+ close();
+ } else {
+ mes("[Ivan Sidorenko]");
+ mes("Do you have something to say to me, don't you?");
+ close();
+ }
+}
+
+job_gun,220,138,4 trader Prop Vending Machine 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(Slug_Bullet_1);
+ sellitem(Slug_Bullet_2);
+ sellitem(Slug_Bullet_3);
+ sellitem(Slug_Bullet_4);
+ sellitem(Slug_Bullet_5);
+ sellitem(Fullmetal_Jacket_Bullet);
+ sellitem(Mine_Projectile);
+ sellitem(Dragon_Tail_Missile);
+ end;
+}
+
+job_gun,216,138,4 script Butler Karlex 1_M_01,{
+ mes("[Butler Karlex]");
+ mes("Use this temporary storage to keep your items safe while on the Advancement test.");
+ next();
+ .@select = select("Cancel", "Open the storage.");
+ mes("[Butler Karlex]");
+ mes("Thank you for using the service.");
+ close2();
+ if (.@select == 2) {
+ openstorage();
+ }
+ end;
+}
+
+prontera,92,209,4 trader Rebellion Weapons 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(H_FEATHER_H_FIRE);
+ sellitem(ALTAIR_ARES);
+ sellitem(COLORSCOPE);
+ sellitem(RAG203);
+ sellitem(DEATHFIRE);
+ sellitem(R_THUNDER);
+ sellitem(P_BREAKER);
+ sellitem(MINIMAY);
+ sellitem(TEMPEST);
+ sellitem(END_OF_HORIZON);
+ sellitem(Southern_Cross_R);
+ end;
+}
+
+prontera,96,209,4 trader Rebellion Accessories 2_VENDING_MACHINE1,{
+ end;
+OnInit:
+ sellitem(Slug_Bullet);
+ sellitem(Fullmetal_Jacket_Bullet);
+ sellitem(Mine_Projectile);
+ sellitem(Dragon_Tail_Missile);
+ sellitem(Special_Alloy_Trap);
+ sellitem(Bullet);
+ sellitem(Silver_Bullet_);
+ sellitem(Shell_Of_Blood_);
+ sellitem(AP_Ammo);
+ sellitem(Blaze_Bullet);
+ sellitem(Freezing_Bullet);
+ sellitem(Electric_Shock_Bullet);
+ sellitem(Magical_Stone_Bullet);
+ sellitem(Sanctified_Bullet);
+ sellitem(Flare_Bullet);
+ sellitem(Lightning_Bullet);
+ sellitem(Poison_Bullet);
+ sellitem(Blind_Bullet);
+ sellitem(Ice_Bullet);
+ end;
+}
diff --git a/npc/re/scripts_jobs.conf b/npc/re/scripts_jobs.conf
index f112334de..6dd99e813 100644
--- a/npc/re/scripts_jobs.conf
+++ b/npc/re/scripts_jobs.conf
@@ -40,6 +40,7 @@
"npc/re/jobs/1-1e/taekwon.txt",
// - 2e
"npc/re/jobs/2e/kagerou_oboro.txt",
+"npc/re/jobs/2e/rebellion.txt",
// - 3-1
"npc/re/jobs/3-1/archbishop.txt",
"npc/re/jobs/3-1/mechanic.txt",