Browse Source

@job ninja/gs.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5506 54d463be-8e91-2dee-dedb-b68131a5f0ec
Vicious 19 years ago
parent
commit
598056945a
7 changed files with 267 additions and 254 deletions
  1. 1 0
      Changelog-Trunk.txt
  2. 2 0
      conf-tmpl/msg_athena.conf
  3. 60 60
      db/item_db.txt
  4. 54 54
      db/skill_tree.txt
  5. 1 1
      src/map/atcommand.c
  6. 136 136
      src/map/map.h
  7. 13 3
      src/map/pc.c

+ 1 - 0
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

+ 2 - 0
conf-tmpl/msg_athena.conf

@@ -498,6 +498,8 @@
 616: Taekwon
 617: Star Gladiator
 618: Soul Linker
+619: Gunslinger
+620: Ninja
 //...
 650: Unknown Job
 

+ 60 - 60
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,,{}

+ 54 - 54
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#

+ 1 - 1
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 },

+ 136 - 136
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 {

+ 13 - 3
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;