summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt1
-rw-r--r--conf-tmpl/msg_athena.conf2
-rw-r--r--db/item_db.txt120
-rw-r--r--db/skill_tree.txt108
-rw-r--r--src/map/atcommand.c2
-rw-r--r--src/map/map.h272
-rw-r--r--src/map/pc.c16
7 files changed, 267 insertions, 254 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 382eb9270..61188b61a 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -5,6 +5,7 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
2006/03/07
+ * @job ninja/gunslinger. No skill tree or anything yet. [Vicious]
* Gospel won't start taking effect until after 10 secs have passed since
invocation. [Skotlex]
* Now if a skill has inf set to 4 (self skill) and inf2 512 (cannot target
diff --git a/conf-tmpl/msg_athena.conf b/conf-tmpl/msg_athena.conf
index af87144c1..00d54932b 100644
--- a/conf-tmpl/msg_athena.conf
+++ b/conf-tmpl/msg_athena.conf
@@ -498,6 +498,8 @@
616: Taekwon
617: Star Gladiator
618: Soul Linker
+619: Gunslinger
+620: Ninja
//...
650: Unknown Job
diff --git a/db/item_db.txt b/db/item_db.txt
index 6d757609c..e82b40477 100644
--- a/db/item_db.txt
+++ b/db/item_db.txt
@@ -2377,74 +2377,74 @@
//12141,Fifth_Stage,Fifth Stage,2,,10,,,,,,127918079,7,2,,,,,,{}
// Guns
-//13100,Branch,Branch,,,,,,,,,,,,,,,,,{} //Slot: 3
-//13101,Six_Shooter,Six Shooter,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13102,Six_Shooter_,Six Shooter,,,,,,,,,,,,,,,,,{} //Slot: 2
-//13103,Crimson_Bolt,Crimson Bolt,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13104,Crimson_Bolt_,Crimson Bolt,,,,,,,,,,,,,,,,,{} //Slot: 2
-//13105,Garrison,Garrison,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13106,Garrison_,Garrison,,,,,,,,,,,,,,,,,{} //Slot: 2
-//13107,Gold_Lux,Gold Lux,,,,,,,,,,,,,,,,,{} //Slot: 0
-//13108,Cyclone,Cyclone,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13109,Cyclone_,Cyclone,,,,,,,,,,,,,,,,,{} //Slot: 2
-//13110,Dusk,Dusk,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13111,Rolling_Stone,Rolling Stone,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13112,Black_Rose,Black Rose,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13113,Gate_Keeper,Gate Keeper,,,,,,,,,,,,,,,,,{} //Slot: 0
-//13114,Drifter,Drifter,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13115,Butcher,Butcher,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13116,Butcher_,Butcher,,,,,,,,,,,,,,,,,{} //Slot: 2
-//13117,Destroyer,Destroyer,,,,,,,,,,,,,,,,,{} //Slot: 0
-//13118,Destroyer_,Destroyer,,,,,,,,,,,,,,,,,{} //Slot: 1
-//13119,Inferno,Inferno,,,,,,,,,,,,,,,,,{} //Slot: 1
+13100,Branch,Branch,4,10,,500,20,,9,3,134217728,0,2,2,1,1,1,,{}
+13101,Six_Shooter,Six Shooter,4,10,,400,30,,9,1,134217728,0,2,2,1,1,1,,{ bonus bHit,-10; }
+13102,Six_Shooter,Six Shooter,4,10,,400,30,,9,2,134217728,0,2,2,1,1,1,,{ bonus bHit,-10; }
+13103,Crimson_Bolt,Crimson Bolt,4,10,,450,45,,9,1,134217728,0,2,2,2,6,1,,{ bonus bHit,-10; }
+13104,Crimson_Bolt_,Crimson Bolt,4,10,,450,45,,9,2,134217728,0,2,2,2,6,1,,{ bonus bHit,-10; }
+13105,Garrison,Garrison,4,10,,500,70,,9,1,134217728,0,2,2,2,22,1,,{ bonus bHit,-10; }
+13106,Garrison_,Garrison,4,10,,500,70,,9,2,134217728,0,2,2,2,22,1,,{ bonus bHit,-10; }
+13107,Gold_Lux,Gold Lux,4,10,,500,20,,9,0,134217728,0,2,2,3,12,1,,{ bonus bHit,-10; }
+13108,Cyclone,Cyclone,4,10,,700,130,,9,1,134217728,0,2,2,2,24,1,,{ bonus bHit,10; bonus bCritical,10; }
+13109,Cyclone_,Cyclone,4,10,,700,130,,9,2,134217728,0,2,2,2,24,1,,{ bonus bHit,10; bonus bCritical,10; }
+13110,Dusk,Dusk,4,10,,750,160,,9,1,134217728,0,2,2,1,1,1,,{ bonus bHit,10; bonus bCritical,10; }
+13111,Rolling_Stone,Rolling Stone,4,10,,900,135,,9,1,134217728,0,2,2,1,14,1,,{ bonus bSplashRange,1; }
+13112,Black_Rose,Black Rose,4,10,,900,180,,9,1,134217728,0,2,2,2,35,1,,{ bonus bSplashRange,1; }
+13113,Gate_Keeper,Gate Keeper,4,10,,1000,195,,9,0,134217728,0,2,2,2,6,1,,{ bonus bSplashRange,1; }
+13114,Drifter,Drifter,4,10,,2300,50,,9,1,134217728,0,2,2,2,55,1,,{}
+13115,Butcher,Butcher,4,10,,2500,75,,9,1,134217728,0,2,2,2,68,1,,{ bonus2 bCriticalAddRace,RC_Brute,5; }
+13116,Butcher_,Butcher,4,10,,2500,75,,9,2,134217728,0,2,2,2,68,1,,{ bonus2 bCriticalAddRace,RC_Brute,5; }
+13117,Destroyer,Destroyer,4,10,,1200,220,,9,0,134217728,0,2,2,2,52,1,,{ bonus bHit,-10; } //break armor at close range
+13118,Destroyer_,Destroyer,4,10,,1200,220,,9,1,134217728,0,2,2,2,52,1,,{ bonus bHit,-10; } //break armor at close range
+13119,Inferno,Inferno,4,10,,1250,280,,9,1,134217728,0,2,2,2,65,1,,{}
// Bullets
-//13200,Bullet,Bullet,,,,,,,,,,,,,,,,,{}
-//13201,Silver_Bullet,Silver Bullet,,,,,,,,,,,,,,,,,{}
-//13202,Shell_of_Blood,Shell of Blood,,,,,,,,,,,,,,,,,{}
-//13203,Flare_Sphere,Flare Sphere,,,,,,,,,,,,,,,,,{}
-//13204,Lightning_Sphere,Lightning Sphere,,,,,,,,,,,,,,,,,{}
-//13205,Poison_Sphere,Poison Sphere,,,,,,,,,,,,,,,,,{}
-//13206,Blind_Sphere,Blind Sphere,,,,,,,,,,,,,,,,,{}
-//13207,Freezing_Sphere,Freezing Sphere,,,,,,,,,,,,,,,,,{}
+13200,Bullet,Bullet,10,1,,2,10,,,,134217728,7,2,32768,,1,,,{}
+13201,Silver_Bullet,Silver Bullet,10,1,,2,15,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Holy; }
+13202,Shell_of_Blood,Shell of Blood,10,1,,2,30,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Bleeding,500; }
+13203,Flare_Sphere,Flare Sphere,10,1,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Fire; }
+13204,Lightning_Sphere,Lightning Sphere,10,1,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Wind; }
+13205,Poison_Sphere,Poison Sphere,10,1,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Poison,500; }
+13206,Blind_Sphere,Blind Sphere,10,1,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus2 bAddEff,Eff_Blind,500; }
+13207,Freezing_Sphere,Freezing Sphere,10,1,,5,50,,,,134217728,7,2,32768,,1,,,{ bonus bAtkEle,Ele_Water; }
// Shurikens & Kunais
-//13250,Shuriken,Shuriken,,,,,,,,,,,,,,,,,{}
-//13251,Raincloud_Shuriken,Raincloud Shuriken,,,,,,,,,,,,,,,,,{}
-//13252,Flash_Shuriken,Flash Shuriken,,,,,,,,,,,,,,,,,{}
-//13253,Pointed_Leaf_Shuriken,Pointed Leaf Shuriken,,,,,,,,,,,,,,,,,{}
-//13254,Piercing_Thorn_Shuriken,Piercing Thorn Shuriken,,,,,,,,,,,,,,,,,{}
-//13255,Kunai_of_Frozen_Icicle,Kunai of Frozen Icicle,,,,,,,,,,,,,,,,,{}
-//13256,Kunai_of_Black_Earth,Kunai of Black Earth,,,,,,,,,,,,,,,,,{}
-//13257,Kunai_of_Violent_Winds,Kunai of Violent Winds,,,,,,,,,,,,,,,,,{}
-//13258,Kunai_of_Fierce_Heat,Kunai of Fierce Heat,,,,,,,,,,,,,,,,,{}
-//13259,Kunai_of_Deadly_Poison,Kunai of Deadly Poison,,,,,,,,,,,,,,,,,{}
+13250,Shuriken,Shuriken,10,1,,10,10,,,,268435456,7,2,32768,,1,,,{}
+13251,Raincloud_Shuriken,Raincloud Shuriken,10,1,,20,30,,,,268435456,7,2,32768,,1,,,{}
+13252,Flash_Shuriken,Flash Shuriken,10,1,,30,45,,,,268435456,7,2,32768,,1,,,{}
+13253,Pointed_Leaf_Shuriken,Pointed Leaf Shuriken,10,1,,30,70,,,,268435456,7,2,32768,,1,,,{}
+13254,Piercing_Thorn_Shuriken,Piercing Thorn Shuriken,10,1,,20,100,,,,268435456,7,2,32768,,1,,,{}
+13255,Kunai_of_Frozen_Icicle,Kunai of Frozen Icicle,10,1,,50,30,,,,268435456,7,2,32768,,1,,,{} bonus bAtkEle,Ele_Water; }
+13256,Kunai_of_Black_Earth,Kunai of Black Earth,10,1,,50,30,,,,268435456,7,2,32768,,1,,,{} bonus bAtkEle,Ele_Earth; }
+13257,Kunai_of_Violent_Winds,Kunai of Violent Winds,10,1,,50,30,,,,268435456,7,2,32768,,1,,,{} bonus bAtkEle,Ele_Wind; }
+13258,Kunai_of_Fierce_Heat,Kunai of Fierce Heat,10,1,,50,30,,,,268435456,7,2,32768,,1,,,{} bonus bAtkEle,Ele_Fire; }
+13259,Kunai_of_Deadly_Poison,Kunai of Deadly Poison,10,1,,50,30,,,,268435456,7,2,32768,,1,,,{} bonus2 bAddEff,Eff_Poison,500; }
// Ninja Stones
-//7521,Burning_Stone,Burning Stone,,,,,,,,,,,,,,,,,{}
-//7522,Freezing_Stone,Freezing Stone,,,,,,,,,,,,,,,,,{}
-//7523,Windchime_Stone,Windchime Stone,,,,,,,,,,,,,,,,,{}
-//7524,Fang_,Fang,,,,,,,,,,,,,,,,,{}
+7521,Burning_Stone,Burning Stone,3,10,,10,,,,,,0,2,,,,,,{}
+7522,Freezing_Stone,Freezing Stone,3,10,,10,,,,,,0,2,,,,,,{}
+7523,Windchime_Stone,Windchime Stone,3,10,,10,,,,,,0,2,,,,,,{}
+7524,Fang_,Fang,3,10,,10,,,,,,0,2,,,,,,{}
// Ninja Weapons
-//13006,Gokurin,Gokurin,,,,,,,,,,,,,,,,,{}
-//13007,Jitte,Jitte,,,,,,,,,,,,,,,,,{}
-//13008,Jitte_,Jitte,,,,,,,,,,,,,,,,,{}
-//13009,Kamaitachi,Kamaitachi,,,,,,,,,,,,,,,,,{}
-//13010,Ashura,Ashura,,,,,,,,,,,,,,,,,{}
-//13011,Ashura_,Ashura,,,,,,,,,,,,,,,,,{}
-//13012,Murasame,Murasame,,,,,,,,,,,,,,,,,{}
-//13013,Murasame_,Murasame,,,,,,,,,,,,,,,,,{}
-//13014,Hakujin,Hakujin,,,,,,,,,,,,,,,,,{}
-//13015,Hakujin_,Hakujin,,,,,,,,,,,,,,,,,{}
+13006,Gokurin,Gokurin,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus2 bAddEff,Eff_Curse,500; }
+13007,Jitte,Jitte,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus bBreakWeaponRate,500; }
+13008,Jitte_,Jitte,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus bBreakWeaponRate,500; }
+13009,Kamaitachi,Kamaitachi,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus bCritical,1; }
+13010,Ashura,Ashura,4,0,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{}
+13011,Ashura_,Ashura,4,0,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{}
+13012,Murasame,Murasame,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus2 bCriticalAddRace,RC_DemiHuman,5; }
+13013,Murasame_,Murasame,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{}
+13014,Hakujin,Hakujin,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus4 bAutoSpell,28,10,20,0; }
+13015,Hakujin_,Hakujin,4,10,,1000,140,,1,0,268435456,0,2,2,4,45,1,,{ bonus4 bAutoSpell,28,10,20,0; }
// Ninja Kazema Shurikens
-//13300,Kazemashuriken_Beneki,Kazemashuriken Beneki,,,,,,,,,,,,,,,,,{}
-//13301,Kazemashuriken_Daisharin,Kazemashuriken Daisharin,,,,,,,,,,,,,,,,,{}
-//13302,Kazemashuriken_Daisharin_,Kazemashuriken Daisharin,,,,,,,,,,,,,,,,,{}
-//13303,Kazemashuriken_Rekka,Kazemashuriken Rekka,,,,,,,,,,,,,,,,,{}
+13300,Kazemashuriken_Beneki,Kazemashuriken Beneki,4,10,,1500,80,,1,0,268435456,0,2,2,1,3,1,,{}
+13301,Kazemashuriken_Daisharin,Kazemashuriken Daisharin,4,10,,1500,80,,1,0,268435456,0,2,2,1,3,1,,{bonus2 bAddEff,Eff_Bleeding,500; }
+13302,Kazemashuriken_Daisharin,Kazemashuriken Daisharin,4,10,,1500,80,,1,0,268435456,0,2,2,1,3,1,,{ bonus2 bAddEff,Eff_Bleeding,500; }
+13303,Kazemashuriken_Rekka,Kazemashuriken Rekka,4,10,,1500,80,,1,0,268435456,0,2,2,1,3,1,,{ bonus3 bAutoSpell,19,10,100; }
-//2117,Gauntlet,Gauntlet,,,,,,,,,,,,,,,,,{}
-//2118,Gauntlet_,Gauntlet,,,,,,,,,,,,,,,,,{}
-//2119,Superior_Gauntlet,Superior Gauntlet,,,,,,,,,,,,,,,,,{}
-//2120,Superior_Gauntlet_,Superior Gauntlet,,,,,,,,,,,,,,,,,{}
+2117,Gauntlet,Gauntlet,5,10,,150,,4,,0,268435456,0,2,32,,20,1,,{}
+2118,Gauntlet_,Gauntlet,5,10,,150,,4,,1,268435456,0,2,32,,20,1,,{}
+2119,Superior_Gauntlet,Superior Gauntlet,5,10,,150,,7,,0,268435456,0,2,32,,30,1,,{}
+2120,Superior_Gauntlet_,Superior Gauntlet,5,10,,150,,7,,0,268435456,0,2,32,,30,1,,{}
diff --git a/db/skill_tree.txt b/db/skill_tree.txt
index 7fe907107..8b7566010 100644
--- a/db/skill_tree.txt
+++ b/db/skill_tree.txt
@@ -585,6 +585,12 @@
21,258,10,55,10,0,0,0,0,0,0,0,0 //CR_SPEARQUICKEN#Spear Quicken#
21,1002,1,0,0,0,0,0,0,0,0,0,0 //CR_SHRINK#Shrink#
21,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
+//WeddingClass
+22,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
+22,334,1,0,0,0,0,0,0,0,0,0,0 //WE_MALE#I Will Protect You#
+22,335,5,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
+22,336,5,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
+22,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
//SuperNovice
23,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
23,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -638,12 +644,53 @@
23,52,10,0,0,0,0,0,0,0,0,0,0 //TF_POISON#Envenom#
23,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
23,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-//WeddingClass
-22,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
-22,334,1,0,0,0,0,0,0,0,0,0,0 //WE_MALE#I Will Protect You#
-22,335,5,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
-22,336,5,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
-22,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
+//Gunslinger
+24,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin#
+24,501,1,0,0,0,0,0,0,0,0,0,0 //GS_FLING#Fling#
+24,502,1,0,0,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
+24,503,1,0,0,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
+24,504,1,0,0,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
+24,505,1,0,0,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment#
+24,506,1,0,0,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
+24,507,1,0,0,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet#
+24,508,1,0,0,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker#
+24,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action#
+24,510,10,0,0,0,0,0,0,0,0,0,0 //GS_SNAKEEYE#Snake Eye#
+24,511,10,0,0,0,0,0,0,0,0,0,0 //GS_CHAINACTION#Chain Action#
+24,512,10,0,0,0,0,0,0,0,0,0,0 //GS_TRACKING#Tracking#
+24,513,5,0,0,0,0,0,0,0,0,0,0 //GS_DISARM#Disarm#
+24,514,10,0,0,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT#Piercing Shot#
+24,515,10,0,0,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER#Rapid Shower#
+24,516,10,0,0,0,0,0,0,0,0,0,0 //GS_DESPERADO#Desperado#
+24,517,10,0,0,0,0,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
+24,518,10,0,0,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
+24,519,5,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
+24,520,10,0,0,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
+24,521,10,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
+//Ninja
+25,522,10,0,0,0,0,0,0,0,0,0,0 //NJ_TOBIDOUGU#NJ_TOBIDOUGU#
+25,523,10,0,0,0,0,0,0,0,0,0,0 //NJ_SYURIKEN#NJ_SYURIKEN#
+25,524,5,0,0,0,0,0,0,0,0,0,0 //NJ_KUNAI#NJ_KUNAI#
+25,525,5,0,0,0,0,0,0,0,0,0,0 //NJ_HUUMA#NJ_HUUMA#
+25,526,10,0,0,0,0,0,0,0,0,0,0 //NJ_ZENYNAGE#NJ_ZENYNAGE#
+25,527,5,0,0,0,0,0,0,0,0,0,0 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI#
+25,528,10,0,0,0,0,0,0,0,0,0,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI#
+25,529,10,0,0,0,0,0,0,0,0,0,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP#
+25,530,5,0,0,0,0,0,0,0,0,0,0 //NJ_KIRIKAGE#NJ_KIRIKAGE#
+25,531,5,0,0,0,0,0,0,0,0,0,0 //NJ_UTSUSEMI#NJ_UTSUSEMI#
+25,532,10,0,0,0,0,0,0,0,0,0,0 //NJ_BUNSINJYUTSU#NJ_BUNSINJYUTSU#
+25,533,10,0,0,0,0,0,0,0,0,0,0 //NJ_NINPOU#NJ_NINPOU#
+25,534,10,0,0,0,0,0,0,0,0,0,0 //NJ_KOUENKA#NJ_KOUENKA#
+25,535,10,0,0,0,0,0,0,0,0,0,0 //NJ_KAENSIN#NJ_KAENSIN#
+25,536,5,0,0,0,0,0,0,0,0,0,0 //NJ_BAKUENRYU#NJ_BAKUENRYU#
+25,537,10,0,0,0,0,0,0,0,0,0,0 //NJ_HYOUSENSOU#NJ_HYOUSENSOU#
+25,538,10,0,0,0,0,0,0,0,0,0,0 //NJ_SUITON#NJ_SUITON#
+25,539,5,0,0,0,0,0,0,0,0,0,0 //NJ_HYOUSYOURAKU#NJ_HYOUSYOURAKU#
+25,540,10,0,0,0,0,0,0,0,0,0,0 //NJ_HUUJIN#NJ_HUUJIN#
+25,541,5,0,0,0,0,0,0,0,0,0,0 //NJ_RAIGEKISAI#NJ_RAIGEKISAI#
+25,542,5,0,0,0,0,0,0,0,0,0,0 //NJ_KAMAITACHI#NJ_KAMAITACHI#
+25,543,5,0,0,0,0,0,0,0,0,0,0 //NJ_NEN#NJ_NEN#
+25,544,10,0,0,0,0,0,0,0,0,0,0 //NJ_ISSEN#NJ_ISSEN#
//NoviceHigh
4001,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
4001,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -2123,51 +2170,4 @@
4049,471,3,452,1,0,0,0,0,0,0,0,0 //SL_SKE#Esk#
4049,472,3,447,1,0,0,0,0,0,0,0,0 //SL_SKA#Eska#
4049,494,5,451,1,0,0,0,0,0,0,0,0 //SL_HIGH#Spirit of Rebirth#
-4049,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-//Gunslinger
-24,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin#
-24,501,1,0,0,0,0,0,0,0,0,0,0 //GS_FLING#Fling#
-24,502,1,0,0,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
-24,503,1,0,0,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
-24,504,1,0,0,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
-24,505,1,0,0,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment#
-24,506,1,0,0,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
-24,507,1,0,0,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet#
-24,508,1,0,0,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker#
-24,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action#
-24,510,10,0,0,0,0,0,0,0,0,0,0 //GS_SNAKEEYE#Snake Eye#
-24,511,10,0,0,0,0,0,0,0,0,0,0 //GS_CHAINACTION#Chain Action#
-24,512,10,0,0,0,0,0,0,0,0,0,0 //GS_TRACKING#Tracking#
-24,513,5,0,0,0,0,0,0,0,0,0,0 //GS_DISARM#Disarm#
-24,514,10,0,0,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT#Piercing Shot#
-24,515,10,0,0,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER#Rapid Shower#
-24,516,10,0,0,0,0,0,0,0,0,0,0 //GS_DESPERADO#Desperado#
-24,517,10,0,0,0,0,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
-24,518,10,0,0,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
-24,519,5,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
-24,520,10,0,0,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
-24,521,10,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
-//Ninja
-25,522,10,0,0,0,0,0,0,0,0,0,0 //NJ_TOBIDOUGU#NJ_TOBIDOUGU#
-25,523,10,0,0,0,0,0,0,0,0,0,0 //NJ_SYURIKEN#NJ_SYURIKEN#
-25,524,5,0,0,0,0,0,0,0,0,0,0 //NJ_KUNAI#NJ_KUNAI#
-25,525,5,0,0,0,0,0,0,0,0,0,0 //NJ_HUUMA#NJ_HUUMA#
-25,526,10,0,0,0,0,0,0,0,0,0,0 //NJ_ZENYNAGE#NJ_ZENYNAGE#
-25,527,5,0,0,0,0,0,0,0,0,0,0 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI#
-25,528,10,0,0,0,0,0,0,0,0,0,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI#
-25,529,10,0,0,0,0,0,0,0,0,0,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP#
-25,530,5,0,0,0,0,0,0,0,0,0,0 //NJ_KIRIKAGE#NJ_KIRIKAGE#
-25,531,5,0,0,0,0,0,0,0,0,0,0 //NJ_UTSUSEMI#NJ_UTSUSEMI#
-25,532,10,0,0,0,0,0,0,0,0,0,0 //NJ_BUNSINJYUTSU#NJ_BUNSINJYUTSU#
-25,533,10,0,0,0,0,0,0,0,0,0,0 //NJ_NINPOU#NJ_NINPOU#
-25,534,10,0,0,0,0,0,0,0,0,0,0 //NJ_KOUENKA#NJ_KOUENKA#
-25,535,10,0,0,0,0,0,0,0,0,0,0 //NJ_KAENSIN#NJ_KAENSIN#
-25,536,5,0,0,0,0,0,0,0,0,0,0 //NJ_BAKUENRYU#NJ_BAKUENRYU#
-25,537,10,0,0,0,0,0,0,0,0,0,0 //NJ_HYOUSENSOU#NJ_HYOUSENSOU#
-25,538,10,0,0,0,0,0,0,0,0,0,0 //NJ_SUITON#NJ_SUITON#
-25,539,5,0,0,0,0,0,0,0,0,0,0 //NJ_HYOUSYOURAKU#NJ_HYOUSYOURAKU#
-25,540,10,0,0,0,0,0,0,0,0,0,0 //NJ_HUUJIN#NJ_HUUJIN#
-25,541,5,0,0,0,0,0,0,0,0,0,0 //NJ_RAIGEKISAI#NJ_RAIGEKISAI#
-25,542,5,0,0,0,0,0,0,0,0,0,0 //NJ_KAMAITACHI#NJ_KAMAITACHI#
-25,543,5,0,0,0,0,0,0,0,0,0,0 //NJ_NEN#NJ_NEN#
-25,544,10,0,0,0,0,0,0,0,0,0,0 //NJ_ISSEN#NJ_ISSEN#
+4049,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# \ No newline at end of file
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index d517cc9e6..b9dd48ae4 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -2263,7 +2263,7 @@ int atcommand_jobchange(
{ "baby bard", 4042 },
{ "baby dancer", 4043 },
{ "super baby", 4045 },
- { "taekwon", 4046 },
+ { "taekwon", 4046 },
{ "taekwon boy", 4046 },
{ "taekwon girl", 4046 },
{ "star gladiator", 4047 },
diff --git a/src/map/map.h b/src/map/map.h
index b73237760..4eeb86957 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -267,12 +267,12 @@ enum {
enum {
BL_NUL = 0x000,
BL_PC = 0x001,
- BL_MOB = 0x002,
- BL_PET = 0x004,
- BL_ITEM = 0x008,
- BL_SKILL = 0x010,
+ BL_MOB = 0x002,
+ BL_PET = 0x004,
+ BL_ITEM = 0x008,
+ BL_SKILL = 0x010,
BL_NPC = 0x020,
- BL_CHAT = 0x040,
+ BL_CHAT = 0x040,
BL_HOMUNCULUS = 0x080 //[blackhole89]
};
@@ -328,34 +328,34 @@ struct vending {
};
struct weapon_data {
- int atkmods[3];
- // all the variables except atkmods get zero'ed in each call of status_calc_pc
+ int atkmods[3];
+ // all the variables except atkmods get zero'ed in each call of status_calc_pc
// NOTE: if you want to add a non-zeroed variable, you need to update the memset call
// in status_calc_pc as well! All the following are automatically zero'ed. [Skotlex]
- int watk;
- int watk2;
- int atk_ele;
- int overrefine;
- int star;
- int ignore_def_ele;
- int ignore_def_race;
- int def_ratio_atk_ele;
- int def_ratio_atk_race;
- int addele[10];
- int addrace[12];
- int addrace2[12];
- int addsize[3];
-
- short ignore_def_mob;
- short hp_drain_rate;
- short hp_drain_per;
- short hp_drain_value;
- short sp_drain_rate;
- short sp_drain_per;
- short sp_drain_value;
- short add_damage_classid[MAX_PC_BONUS];
- int add_damage_classrate[MAX_PC_BONUS];
- int add_damage_class_count;
+ int watk;
+ int watk2;
+ int atk_ele;
+ int overrefine;
+ int star;
+ int ignore_def_ele;
+ int ignore_def_race;
+ int def_ratio_atk_ele;
+ int def_ratio_atk_race;
+ int addele[10];
+ int addrace[12];
+ int addrace2[12];
+ int addsize[3];
+
+ short ignore_def_mob;
+ short hp_drain_rate;
+ short hp_drain_per;
+ short hp_drain_value;
+ short sp_drain_rate;
+ short sp_drain_per;
+ short sp_drain_value;
+ short add_damage_classid[MAX_PC_BONUS];
+ int add_damage_classrate[MAX_PC_BONUS];
+ int add_damage_class_count;
};
struct skill_unit_group;
@@ -544,40 +544,40 @@ struct map_session_data {
struct weapon_data right_weapon;
struct weapon_data left_weapon;
- int paramc[6],paramcard[6];
-
- // here start arrays to be globally zeroed at the beginning of status_calc_pc()
-
- int paramb[6];
- int parame[6];
- int subele[10];
- int subrace[12];
- int subrace2[12];
- int subsize[3];
- int addeff[SC_COMMON_MAX-SC_COMMON_MIN+1];
- int addeff2[SC_COMMON_MAX-SC_COMMON_MIN+1];
- int reseff[SC_COMMON_MAX-SC_COMMON_MIN+1];
- int weapon_coma_ele[10];
- int weapon_coma_race[12];
- int weapon_atk[16];
- int weapon_atk_rate[16];
- int arrow_addele[10];
- int arrow_addrace[12];
- int arrow_addsize[3];
- int arrow_addeff[SC_COMMON_MAX-SC_COMMON_MIN+1];
- int arrow_addeff2[SC_COMMON_MAX-SC_COMMON_MIN+1];
- int magic_addele[10];
- int magic_addrace[12];
- int magic_addsize[3];
- int critaddrace[12];
- int expaddrace[12];
- int itemhealrate[7];
- int addeff3[SC_COMMON_MAX-SC_COMMON_MIN+1];
- short addeff3_type[SC_COMMON_MAX-SC_COMMON_MIN+1];
- short sp_gain_race[12];
- short unequip_losehp[11];
- short unequip_losesp[11];
- // zeroed arrays end here.
+ int paramc[6],paramcard[6];
+
+ // here start arrays to be globally zeroed at the beginning of status_calc_pc()
+
+ int paramb[6];
+ int parame[6];
+ int subele[10];
+ int subrace[12];
+ int subrace2[12];
+ int subsize[3];
+ int addeff[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ int addeff2[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ int reseff[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ int weapon_coma_ele[10];
+ int weapon_coma_race[12];
+ int weapon_atk[16];
+ int weapon_atk_rate[16];
+ int arrow_addele[10];
+ int arrow_addrace[12];
+ int arrow_addsize[3];
+ int arrow_addeff[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ int arrow_addeff2[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ int magic_addele[10];
+ int magic_addrace[12];
+ int magic_addsize[3];
+ int critaddrace[12];
+ int expaddrace[12];
+ int itemhealrate[7];
+ int addeff3[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ short addeff3_type[SC_COMMON_MAX-SC_COMMON_MIN+1];
+ short sp_gain_race[12];
+ short unequip_losehp[11];
+ short unequip_losesp[11];
+ // zeroed arrays end here.
// zeroed structures start here
struct s_autospell{
short id, lv, rate, card_id;
@@ -594,79 +594,79 @@ struct map_session_data {
int race, rate;
} add_drop[MAX_PC_BONUS];
// zeroed structures end here
- // zeroed vars start here.
- int hit;
- int flee, flee2;
- int critical;
- int aspd;
- int def, def2;
- int mdef, mdef2;
- int def_ele;
- int matk1, matk2;
- int base_atk;
- int arrow_atk,arrow_ele,arrow_cri,arrow_hit,arrow_range;
- int nhealhp,nhealsp,nshealhp,nshealsp,nsshealhp,nsshealsp;
- int critical_def,double_rate;
- int long_attack_atk_rate; //Long range atk rate, not weapon based. [Skotlex]
- int near_attack_def_rate,long_attack_def_rate,magic_def_rate,misc_def_rate;
- int ignore_mdef_ele;
- int ignore_mdef_race;
- int perfect_hit;
- int perfect_hit_add;
- int get_zeny_rate;
- int get_zeny_num; //Added Get Zeny Rate [Skotlex]
- int double_add_rate;
- int short_weapon_damage_return,long_weapon_damage_return;
- int magic_damage_return; // AppleGirl Was Here
- int random_attack_increase_add,random_attack_increase_per; // [Valaris]
- int break_weapon_rate,break_armor_rate;
- int crit_atk_rate;
- int hp_loss_rate;
- int sp_loss_rate;
- int classchange; // [Valaris]
- unsigned int setitem_hash, setitem_hash2; //Split in 2 because shift operations only work on int ranges. [Skotlex]
-
- short attackrange,attackrange_;
- short splash_range, splash_add_range;
- short add_steal_rate;
- short hp_loss_value;
- short sp_loss_value;
- short hp_loss_type;
- short sp_drain_type;
- short sp_gain_value, hp_gain_value;
+ // zeroed vars start here.
+ int hit;
+ int flee, flee2;
+ int critical;
+ int aspd;
+ int def, def2;
+ int mdef, mdef2;
+ int def_ele;
+ int matk1, matk2;
+ int base_atk;
+ int arrow_atk,arrow_ele,arrow_cri,arrow_hit,arrow_range;
+ int nhealhp,nhealsp,nshealhp,nshealsp,nsshealhp,nsshealsp;
+ int critical_def,double_rate;
+ int long_attack_atk_rate; //Long range atk rate, not weapon based. [Skotlex]
+ int near_attack_def_rate,long_attack_def_rate,magic_def_rate,misc_def_rate;
+ int ignore_mdef_ele;
+ int ignore_mdef_race;
+ int perfect_hit;
+ int perfect_hit_add;
+ int get_zeny_rate;
+ int get_zeny_num; //Added Get Zeny Rate [Skotlex]
+ int double_add_rate;
+ int short_weapon_damage_return,long_weapon_damage_return;
+ int magic_damage_return; // AppleGirl Was Here
+ int random_attack_increase_add,random_attack_increase_per; // [Valaris]
+ int break_weapon_rate,break_armor_rate;
+ int crit_atk_rate;
+ int hp_loss_rate;
+ int sp_loss_rate;
+ int classchange; // [Valaris]
+ unsigned int setitem_hash, setitem_hash2; //Split in 2 because shift operations only work on int ranges. [Skotlex]
+
+ short attackrange,attackrange_;
+ short splash_range, splash_add_range;
+ short add_steal_rate;
+ short hp_loss_value;
+ short sp_loss_value;
+ short hp_loss_type;
+ short sp_drain_type;
+ short sp_gain_value, hp_gain_value;
short sp_vanish_rate;
short sp_vanish_per;
short add_drop_count;
unsigned short unbreakable; // chance to prevent ANY equipment breaking [celest]
- unsigned short unbreakable_equip; //100% break resistance on certain equipment
- unsigned short unstripable_equip;
- short no_regen;
- short add_def_count,add_mdef_count;
- short add_dmg_count,add_mdmg_count;
-
- // zeroed vars end here.
-
- int amotion,dmotion;
- int castrate,delayrate,hprate,sprate,dsprate;
- int atk_rate;
- int aspd_rate,speed_rate,hprecov_rate,sprecov_rate;
- int matk_rate;
- int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
- int speed_add_rate, aspd_add_rate;
-
- int hp_loss_tick;
- int sp_loss_tick;
-
- int itemid;
- short itemindex; //Used item's index in sd->inventory [Skotlex]
-
+ unsigned short unbreakable_equip; //100% break resistance on certain equipment
+ unsigned short unstripable_equip;
+ short no_regen;
+ short add_def_count,add_mdef_count;
+ short add_dmg_count,add_mdmg_count;
+
+ // zeroed vars end here.
+
+ int amotion,dmotion;
+ int castrate,delayrate,hprate,sprate,dsprate;
+ int atk_rate;
+ int aspd_rate,speed_rate,hprecov_rate,sprecov_rate;
+ int matk_rate;
+ int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
+ int speed_add_rate, aspd_add_rate;
+
+ int hp_loss_tick;
+ int sp_loss_tick;
+
+ int itemid;
+ short itemindex; //Used item's index in sd->inventory [Skotlex]
+
short catch_target_class; // pet catching, stores a pet class to catch (short now) [zzo]
- short spiritball, spiritball_old;
- int spirit_timer[MAX_SKILL_LEVEL];
-
- int die_counter;
- short doridori_counter;
+ short spiritball, spiritball_old;
+ int spirit_timer[MAX_SKILL_LEVEL];
+
+ int die_counter;
+ short doridori_counter;
char potion_success_counter;
int reg_num;
@@ -730,10 +730,10 @@ struct map_session_data {
#endif
int duel_group; // duel vars [LuzZza]
- int duel_invite;
-
- char away_message[128]; // [LuzZza]
-
+ int duel_invite;
+
+ char away_message[128]; // [LuzZza]
+
};
struct {
diff --git a/src/map/pc.c b/src/map/pc.c
index 8e3d58c6e..0b3cd1185 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4011,6 +4011,10 @@ unsigned short pc_mapid2jobid(unsigned short class_, int sex) {
return JOB_TAEKWON;
case MAPID_WEDDING:
return JOB_WEDDING;
+ case MAPID_GUNSLINGER:
+ return JOB_GUNSLINGER;
+ case MAPID_NINJA:
+ return JOB_NINJA;
case MAPID_XMAS: // [Valaris]
return JOB_XMAS;
//2_1 classes
@@ -4175,8 +4179,6 @@ char * job_name(int class_) {
case JOB_WEDDING:
case JOB_SUPER_NOVICE:
- case JOB_GUNSLINGER:
- case JOB_NINJA:
case JOB_XMAS:
return msg_txt(570 - JOB_WEDDING+class_);
@@ -4254,6 +4256,11 @@ char * job_name(int class_) {
return msg_txt(617);
case JOB_SOUL_LINKER:
return msg_txt(618);
+
+ case JOB_GUNSLINGER:
+ return msg_txt(619);
+ case JOB_NINJA:
+ return msg_txt(620);
default:
return msg_txt(650);
@@ -6036,7 +6043,10 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
return 1;
else if (upper == 2)
b_class = JOB_SUPER_BABY;
- } else if (job < JOB_SUPER_BABY-JOB_NOVICE_HIGH+JOB_SUPER_NOVICE+2) {
+ } else if (job == JOB_GUNSLINGER || job == JOB_NINJA) {
+ if (upper > 0)
+ return 1;
+ } else if (job < JOB_SUPER_BABY-JOB_NOVICE_HIGH+JOB_SUPER_NOVICE+1) {
// Min is SuperNovice +1 -> Becomes Novice High [Skotlex]
// Max is SuperBaby-NoviceHigh+1 -> Becomes Super Baby
b_class += JOB_NOVICE_HIGH - JOB_SUPER_NOVICE -1;