Bug Fixes
* Dragon Breath (Fire and Water) are no longer reduced by DEF or Flee. (bugreport:8378) * Crush Strike no longer ignores caster's % damage cards. * Phantom Thrust is now single enemy targetable. * Fixed Gates of Hell SP cost, range, and sphere cost. (bugreport:7898) * Cleaned up Tiger Cannon splash damage and remaining HP/SP consumption. (bugreport:8538) * Fixed Rising Dragon HP/SP regen to work with Spiritual Cadence. * Corrected Magic Decoy item requirement define not checking for PTS. * Poem of Netherworld now targets everyone except party members. (bugreport:7741) * Adjusted a couple skills that have infinite timers to not displays negative time to the client. (bugreport:8549) * Fixed Sorcerer's Spirit max HP formula. (bugreport:8315) * Fixed Banding not giving the Overawe effect. (bugreport:7641) * Fixed Weapon Crush not casting at all. (bugreport:8583) * Fixed Demonic Fire damage formulas from Fire Expansion. * Fixed Fire Expansion - Smoke Powder not giving ranged and melee damage reduction. (bugreport:7841) * Fixed Fire Expansion - Tear Gas not draining HP and not displaying the /cry emoticon. (bugreport:7841) * Fixed Issen (Killing Stroke) damage formula for pre-renewal. (bugreport:4071) * Adjusted Warg Strike to be a misc type attack and ignore target's Flee. (bugreport:7599) * Updated Throw Kunai damage formulas for renewal and pre-renewal. (bugreport:7119) * Severe Rainstorm is no longer castable on Land Protector. (bugreport:7097) * Fixed Tropic, Chilly Air, Wild Storm, and Upheaval options not casting their specific autocast skills. * Updated Fire Cloak, Water Drop, Wind Curtain, and Stone Shield to 100% property resistance and damage. * Updated Heater, Cooler, Blast, and Cursed Soil damage formulas. * Increased SP cost of Psychic Wave when Heater, Cooler, Blast, or Cursed Soil are active. * Updated Zephyr Flee increase bonus. * Fixed Elemental HP and ATK2 formulas. * Fixed Sienna Execrate not consuming 2 Red Gemstones. (bugreport:7494) * Fixed Shadow Chaser's Masquerade skills success rate formula. (bugreport:7436) * Fixed Exceed Break to restore walk speed when cast is cancelled. (bugreport:7681) * Vacuum Extreme no longer affects users who are in Hallucination Walk. * Fixed Hallucination Walk missing magic avoidance. * Adjusted Lif's Mental Change skill duration to 1 minute, 3 minutes, and 5 minutes respectively per level. * Hovering will now specifically ignore Skid Trap, Land Mine, Ankle Snare, Flasher, Shockwave Trap, Sandman, Freezing Trap, Blast Mine, Claymore Trap , Quagmire, Gravitation Field, Volcano, Deluge, Whirlwind, Watery Evasion, Electric Walk, Fire Walk, Vacuum Extreme, Windmill, and Moon Slasher. (bugreport:7179) * Raging Trifecta will now display an animation on usage. (bugreport:1307) * Cleaned up Auto Shadow Spell check for the specific skills it can cast. (bugreport:8582)
This commit is contained in:
parent
899f3c117c
commit
4019fb4531
@ -1737,7 +1737,8 @@ SC_QUEST_BUFF1 589
|
||||
SC_QUEST_BUFF2 590
|
||||
SC_QUEST_BUFF3 591
|
||||
SC_ALL_RIDING 592
|
||||
SC_EXTREMITYFIST2 593
|
||||
SC_TEARGAS_SOB 593
|
||||
SC_EXTREMITYFIST2 594
|
||||
|
||||
//Status Icon
|
||||
SI_BLANK -1
|
||||
|
@ -1464,7 +1464,7 @@
|
||||
//-- WM_DOMINION_IMPULSE
|
||||
2417,0,1000,0,0,0,0
|
||||
//-- WM_SEVERE_RAINSTORM
|
||||
2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000
|
||||
2418,1500:2000:2500:3000:3500,1000,0,3300,0,5000:5500:6000:6500:7000
|
||||
//-- WM_POEMOFNETHERWORLD
|
||||
2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0
|
||||
//-- WM_VOICEOFSIREN
|
||||
@ -1572,7 +1572,7 @@
|
||||
//-- GN_CRAZYWEED_ATK
|
||||
2484,0,0,0,100,0,0
|
||||
//-- GN_DEMONIC_FIRE
|
||||
2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000
|
||||
2485,3000:3500:4000:4500:5000,500,0,10000:0:16000:25000:0,8000:16000:24000:32000:40000,5000
|
||||
//-- GN_FIRE_EXPANSION
|
||||
2486,2000,500,0,0,0,0
|
||||
//-- GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
@ -1723,7 +1723,7 @@
|
||||
//-- HLIF_AVOID
|
||||
8002,0,35000,0,40000:35000:30000:25000:20000,0,0
|
||||
//-- HLIF_CHANGE
|
||||
8004,0,600000:900000:1200000,0,60000:120000:180000,0,0
|
||||
8004,0,600000:900000:1200000,0,60000:180000:300000,0,0
|
||||
//-- HAMI_CASTLE
|
||||
8005,0,0,0,0,60000:70000:80000:90000:129000,0
|
||||
//-- HAMI_DEFENCE
|
||||
|
@ -59,7 +59,7 @@
|
||||
// 0x0200- spell range affected by NJ_SHADOWJUMP
|
||||
// 0x0400- spell range affected by WL_RADIUS
|
||||
// 0x0800- spell range affected by RA_RESEARCHTRAP
|
||||
// 0x1000- spell that can't be copied
|
||||
// 0x1000- Spell that does not affect user that has NC_HOVERING active
|
||||
// 0x2000- spell that can be using while riding warg
|
||||
// 0x4000- spell that can't be used while in mado
|
||||
// 17 Name
|
||||
@ -182,7 +182,7 @@
|
||||
89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
||||
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
||||
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x1020, WZ_QUAGMIRE,Quagmire
|
||||
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
||||
|
||||
//****
|
||||
@ -211,15 +211,15 @@
|
||||
|
||||
//****
|
||||
// Hunter
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x2000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x2000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x2000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x2800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x2800, HT_CLAYMORETRAP,Claymore Trap
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800, HT_CLAYMORETRAP,Claymore Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000, HT_TALKIEBOX,Talkie Box
|
||||
126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, HT_BEASTBANE,Beast Bane
|
||||
@ -361,7 +361,7 @@
|
||||
247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0, AM_RESURRECTHOMUN,Homunculus Resurrection
|
||||
|
||||
//****
|
||||
// Creator
|
||||
// Crusader
|
||||
248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, CR_TRUST,Faith
|
||||
249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_AUTOGUARD,Guard
|
||||
250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0, CR_SHIELDCHARGE,Smite
|
||||
@ -405,9 +405,9 @@
|
||||
282,9,6,16,4,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20, SA_LIGHTNINGLOADER,Endow Tornado
|
||||
283,9,6,16,2,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20, SA_SEISMICWEAPON,Endow Quake
|
||||
284,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, SA_DRAGONOLOGY,Dragonology
|
||||
285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_VOLCANO,Volcano
|
||||
286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_DELUGE,Deluge
|
||||
287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_VIOLENTGALE,Whirlwind
|
||||
285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_VOLCANO,Volcano
|
||||
286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_DELUGE,Deluge
|
||||
287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_VIOLENTGALE,Whirlwind
|
||||
288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_LANDPROTECTOR,Magnetic Earth
|
||||
289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20, SA_DISPELL,Dispell
|
||||
290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, SA_ABRACADABRA,Hocus-pocus
|
||||
@ -697,7 +697,7 @@
|
||||
481,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, HP_MANARECHARGE,Mana Recharge
|
||||
482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0, PF_DOUBLECASTING,Double Casting
|
||||
483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0,0x20, HW_GANBANTEIN,Ganbantein
|
||||
484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x30, HW_GRAVITATION,Gravitation Field
|
||||
484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x1030, HW_GRAVITATION,Gravitation Field
|
||||
485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0,0x4000, WS_CARTTERMINATION,Cart Termination
|
||||
486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000, WS_OVERTHRUSTMAX,Maximum Power Thrust
|
||||
487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x8, CG_LONGINGFREEDOM,Longing for Freedom
|
||||
@ -743,7 +743,7 @@
|
||||
// Ninja
|
||||
522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,0x0, NJ_TOBIDOUGU,Shuriken Training
|
||||
523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x0, NJ_SYURIKEN,Throw Shuriken
|
||||
524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,0x0, NJ_KUNAI,Throw Kunai
|
||||
524,9,8,1,-1,0x48,0,5,3,no,0,0,0,weapon,0,0x0, NJ_KUNAI,Throw Kunai
|
||||
525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,yes,0,0,0,weapon,0,0x0, NJ_HUUMA,Throw Huuma Shuriken
|
||||
526,9,6,1,0,0x50,0,10,1,no,0,0x18000,0,misc,0,0x0, NJ_ZENYNAGE,Throw Zeny
|
||||
527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3,0x0, NJ_TATAMIGAESHI,Improvised Defense
|
||||
@ -757,7 +757,7 @@
|
||||
535,0,8,4,3,0,0,10,1,yes,0,0,0,magic,1,0x0, NJ_KAENSIN,Crimson Fire Formation
|
||||
536,9,8,1,3,0x2,2,5,3,yes,0,0,0,magic,0,0x0, NJ_BAKUENRYU,Raging Fire Dragon
|
||||
537,9,8,1,1,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,0,0x0, NJ_HYOUSENSOU,Spear of Ice
|
||||
538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x0, NJ_SUITON,Hidden Water
|
||||
538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x1000, NJ_SUITON,Hidden Water
|
||||
539,0,6,4,1,0x2,3,5,1,yes,0,0,0,magic,0,0x0, NJ_HYOUSYOURAKU,Ice Meteor
|
||||
540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0,0x0, NJ_HUUJIN,Wind Blade
|
||||
541,9,6,4,4,0x2,2:2:3:3:4,5,1,yes,0,0,0,magic,0,0x0, NJ_RAIGEKISAI,Lightning Strike of Destruction
|
||||
@ -886,11 +886,11 @@
|
||||
2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0, RK_WINDCUTTER,Wind Cutter
|
||||
2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0, RK_IGNITIONBREAK,Ignition Break
|
||||
2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, RK_DRAGONTRAINING,Dragon Training
|
||||
2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2008,9,6,2,3,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0, RK_DRAGONHOWLING,Dragon Howling
|
||||
2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RK_RUNEMASTERY,Rune Mastery
|
||||
2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RK_MILLENNIUMSHIELD,Millenium Shield
|
||||
2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,0x0, RK_CRUSHSTRIKE,Crush Strike
|
||||
2012,1,6,4,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0, RK_CRUSHSTRIKE,Crush Strike
|
||||
2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_REFRESH,Refresh
|
||||
2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_GIANTGROWTH,Giant Growth
|
||||
2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_STONEHARDSKIN,Stone Hard Skin
|
||||
@ -898,7 +898,7 @@
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0, RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
|
||||
2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_ABUNDANCE,Abundance
|
||||
2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
|
||||
//****
|
||||
// WL Warlock
|
||||
@ -947,7 +947,7 @@
|
||||
2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_POISONINGWEAPON,Poisoning Weapon
|
||||
2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_WEAPONBLOCKING,Weapon Blocking
|
||||
2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0, GC_COUNTERSLASH,Counter Slash
|
||||
2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush
|
||||
2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush
|
||||
2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, GC_VENOMPRESSURE,Venom Pressure
|
||||
2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0, GC_POISONSMOKE,Poison Smoke
|
||||
2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40, GC_CLOAKINGEXCEED,Cloaking Exceed
|
||||
@ -993,7 +993,7 @@
|
||||
2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery
|
||||
2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000, RA_WUGRIDER,Warg Rider
|
||||
2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000, RA_WUGDASH,Warg Dash
|
||||
2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2243,9,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite
|
||||
2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
@ -1077,7 +1077,7 @@
|
||||
2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0, LG_OVERBRAND,Over Brand
|
||||
2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, LG_PRESTIGE,Prestige
|
||||
2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0, LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
|
||||
2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0, LG_MOONSLASHER,Moon Slasher
|
||||
2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x1000, LG_MOONSLASHER,Moon Slasher
|
||||
2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0, LG_RAYOFGENESIS,Ray of Genesis
|
||||
2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0, LG_PIETY,Piety
|
||||
2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0,0x0, LG_EARTHDRIVE,Earth Drive
|
||||
@ -1090,14 +1090,14 @@
|
||||
2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0, SR_SKYNETBLOW,Sky Net Blow
|
||||
2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0, SR_EARTHSHAKER,Earth Shaker
|
||||
2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0, SR_FALLENEMPIRE,Fallen Empire
|
||||
2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
|
||||
2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2330,-2,6,1,-1,0x2,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon
|
||||
2331,1:2:3:3:4:4:5:5:6:7,6,1,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
|
||||
2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0, SR_CURSEDCIRCLE,Cursed Circle
|
||||
2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_LIGHTNINGWALK,Lightning Walk
|
||||
2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0, SR_KNUCKLEARROW,Knuckle Arrow
|
||||
2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0, SR_WINDMILL,Windmill
|
||||
2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x1000, SR_WINDMILL,Windmill
|
||||
2338,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0, SR_RAISINGDRAGON,Raising Dragon
|
||||
2339,0,0,0,0,0,0,5,1,no,0,0,0,none,0,0x0, SR_GENTLETOUCH,Gentle Touch
|
||||
2340,0,6,4,0,0x3,2,1,1,no,0,0,0,none,0,0x0, SR_ASSIMILATEPOWER,Assimilate Power
|
||||
@ -1154,8 +1154,8 @@
|
||||
|
||||
//****
|
||||
// SO Sorcerer (statis blocking need to be confirmed)
|
||||
2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20, SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
|
||||
2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20, SO_ELECTRICWALK,Electric Walk
|
||||
2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020, SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
|
||||
2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020, SO_ELECTRICWALK,Electric Walk
|
||||
2445,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x20, SO_SPELLFIST,Spell Fist
|
||||
2446,9,6,2,2,0,0,5,-3,yes,0,0,0,magic,0,0x20, SO_EARTHGRAVE,Earth Grave
|
||||
2447,9,6,2,1,0,0,5,-5,yes,0,0,0,magic,0,0x20, SO_DIAMONDDUST,Diamond Dust
|
||||
@ -1164,7 +1164,7 @@
|
||||
2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x20, SO_CLOUD_KILL,Cloud Kill
|
||||
2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x20, SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true?
|
||||
2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SO_WARMER,Warmer
|
||||
2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SO_VACUUM_EXTREME,Vacuum Extreme
|
||||
2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SO_VACUUM_EXTREME,Vacuum Extreme
|
||||
2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20, SO_VARETYR_SPEAR,Varetyr Spear
|
||||
2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20, SO_ARRULLO,Arrullo
|
||||
2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0, SO_EL_CONTROL,Spirit Control
|
||||
@ -1195,7 +1195,7 @@
|
||||
2483,11,6,2,0,0x3,4,10,1,yes,0,0x2000,0,weapon,0,0x0, GN_CRAZYWEED,Crazy Weed
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x2000,0,weapon,0,0x0, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion
|
||||
2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
|
||||
2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
|
||||
2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
|
@ -599,7 +599,7 @@
|
||||
2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_JACKFROST#Jack Frost#
|
||||
2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_MARSHOFABYSS#Marsh of Abyss#
|
||||
2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_RECOGNIZEDSPELL#Recognized Spell#
|
||||
2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate#
|
||||
2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate#
|
||||
|
||||
2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_STASIS#Stasis#
|
||||
2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_DRAINLIFE#Drain Life#
|
||||
@ -758,8 +758,8 @@
|
||||
2327,0,0,8:9:10:11:12,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_SKYNETBLOW#Sky Net Blow#
|
||||
2328,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_EARTHSHAKER#Earth Shaker#
|
||||
2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_FALLENEMPIRE#Fallen Empire#
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON#Tiger Cannon#
|
||||
2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_HELLGATE#Hell Gate#
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,0,0,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON#Tiger Cannon#
|
||||
2331,0,0,1,0,-11:-12:-13:-14:-15:-16:-17:-18:-19:-20,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_HELLGATE#Hell Gate#
|
||||
2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAMPAGEBLASTER#Rampage Blaster#
|
||||
2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CRESCENTELBOW#Crescent Elbow#
|
||||
2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CURSEDCIRCLE#Cursed Circle#
|
||||
|
@ -1482,7 +1482,7 @@
|
||||
//-- WM_DOMINION_IMPULSE
|
||||
2417,0,1000,0,0,0,0,-1
|
||||
//-- WM_SEVERE_RAINSTORM
|
||||
2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000,500
|
||||
2418,1500:2000:2500:3000:3500,1000,0,3300,0,5000:5500:6000:6500:7000,500
|
||||
//-- WM_POEMOFNETHERWORLD
|
||||
2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0,-1
|
||||
//-- WM_VOICEOFSIREN
|
||||
@ -1594,7 +1594,7 @@
|
||||
//-- GN_CRAZYWEED_ATK
|
||||
2484,0,0,0,100,0,0,-1
|
||||
//-- GN_DEMONIC_FIRE
|
||||
2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000,-1
|
||||
2485,3000:3500:4000:4500:5000,500,0,10000:0:16000:25000:0,8000:16000:24000:32000:40000,5000,-1
|
||||
//-- GN_FIRE_EXPANSION
|
||||
2486,2000,500,0,0,0,0,-1
|
||||
//-- GN_FIRE_EXPANSION_SMOKE_POWDER
|
||||
@ -1763,7 +1763,7 @@
|
||||
//-- HLIF_AVOID
|
||||
8002,0,35000,0,40000:35000:30000:25000:20000,0,0,-1
|
||||
//-- HLIF_CHANGE
|
||||
8004,0,600000:900000:1200000,0,60000:120000:180000,0,0,-1
|
||||
8004,0,600000:900000:1200000,0,60000:180000:300000,0,0,-1
|
||||
//-- HAMI_CASTLE
|
||||
8005,0,0,0,0,60000:70000:80000:90000:129000,0,-1
|
||||
//-- HAMI_DEFENCE
|
||||
|
@ -59,7 +59,7 @@
|
||||
// 0x0200- spell range affected by NJ_SHADOWJUMP
|
||||
// 0x0400- spell range affected by WL_RADIUS
|
||||
// 0x0800- spell range affected by RA_RESEARCHTRAP
|
||||
// 0x1000- free
|
||||
// 0x1000- Spell that does not affect user that has NC_HOVERING active
|
||||
// 0x2000- spell that can be using while riding warg
|
||||
// 0x4000- spell that can't be used while in mado
|
||||
// 17 Name
|
||||
@ -182,7 +182,7 @@
|
||||
89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20, WZ_STORMGUST,Storm Gust
|
||||
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_EARTHSPIKE,Earth Spike
|
||||
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20, WZ_HEAVENDRIVE,Heaven's Drive
|
||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20, WZ_QUAGMIRE,Quagmire
|
||||
92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x1020, WZ_QUAGMIRE,Quagmire
|
||||
93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0, WZ_ESTIMATION,Sense
|
||||
|
||||
//****
|
||||
@ -211,15 +211,15 @@
|
||||
|
||||
//****
|
||||
// Hunter
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x2000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x2000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x2000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x2800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x2800, HT_CLAYMORETRAP,Claymore Trap
|
||||
115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000, HT_SKIDTRAP,Skid Trap
|
||||
116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_LANDMINE,Land Mine
|
||||
117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000, HT_ANKLESNARE,Ankle Snare
|
||||
118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_SHOCKWAVE,Shockwave Trap
|
||||
119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000, HT_SANDMAN,Sandman
|
||||
120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000, HT_FLASHER,Flasher
|
||||
121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800, HT_FREEZINGTRAP,Freezing Trap
|
||||
122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800, HT_BLASTMINE,Blast Mine
|
||||
123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800, HT_CLAYMORETRAP,Claymore Trap
|
||||
124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0, HT_REMOVETRAP,Remove Trap
|
||||
125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000, HT_TALKIEBOX,Talkie Box
|
||||
126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0, HT_BEASTBANE,Beast Bane
|
||||
@ -361,7 +361,7 @@
|
||||
247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0, AM_RESURRECTHOMUN,Homunculus Resurrection
|
||||
|
||||
//****
|
||||
// Creator
|
||||
// Crusader
|
||||
248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, CR_TRUST,Faith
|
||||
249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0, CR_AUTOGUARD,Guard
|
||||
250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0, CR_SHIELDCHARGE,Smite
|
||||
@ -405,9 +405,9 @@
|
||||
282,9,6,16,4,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20, SA_LIGHTNINGLOADER,Endow Tornado
|
||||
283,9,6,16,2,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20, SA_SEISMICWEAPON,Endow Quake
|
||||
284,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, SA_DRAGONOLOGY,Dragonology
|
||||
285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_VOLCANO,Volcano
|
||||
286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_DELUGE,Deluge
|
||||
287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_VIOLENTGALE,Whirlwind
|
||||
285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_VOLCANO,Volcano
|
||||
286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_DELUGE,Deluge
|
||||
287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SA_VIOLENTGALE,Whirlwind
|
||||
288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SA_LANDPROTECTOR,Magnetic Earth
|
||||
289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20, SA_DISPELL,Dispell
|
||||
290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0, SA_ABRACADABRA,Hocus-pocus
|
||||
@ -697,7 +697,7 @@
|
||||
481,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, HP_MANARECHARGE,Mana Recharge
|
||||
482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0, PF_DOUBLECASTING,Double Casting
|
||||
483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0,0x20, HW_GANBANTEIN,Ganbantein
|
||||
484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x30, HW_GRAVITATION,Gravitation Field
|
||||
484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x1030, HW_GRAVITATION,Gravitation Field
|
||||
485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0,0x4000, WS_CARTTERMINATION,Cart Termination
|
||||
486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000, WS_OVERTHRUSTMAX,Maximum Power Thrust
|
||||
487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x8, CG_LONGINGFREEDOM,Longing for Freedom
|
||||
@ -757,7 +757,7 @@
|
||||
535,0,8,4,3,0,0,10,1,yes,0,0,0,magic,1,0x0, NJ_KAENSIN,Crimson Fire Formation
|
||||
536,9,8,1,3,0x2,2,5,3,yes,0,0,0,magic,0,0x0, NJ_BAKUENRYU,Raging Fire Dragon
|
||||
537,9,8,1,1,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,0,0x0, NJ_HYOUSENSOU,Spear of Ice
|
||||
538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x0, NJ_SUITON,Hidden Water
|
||||
538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x1000, NJ_SUITON,Hidden Water
|
||||
539,0,6,4,1,0x2,3,5,1,yes,0,0,0,magic,0,0x0, NJ_HYOUSYOURAKU,Ice Meteor
|
||||
540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0,0x0, NJ_HUUJIN,Wind Blade
|
||||
541,9,6,2,4,0x2,2:2:3:3:4,5,1,yes,0,0,0,magic,0,0x0, NJ_RAIGEKISAI,Lightning Strike of Destruction
|
||||
@ -886,11 +886,11 @@
|
||||
2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0, RK_WINDCUTTER,Wind Cutter
|
||||
2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0, RK_IGNITIONBREAK,Ignition Break
|
||||
2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0, RK_DRAGONTRAINING,Dragon Training
|
||||
2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2008,9,6,2,3,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0, RK_DRAGONBREATH,Dragon Breath
|
||||
2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0, RK_DRAGONHOWLING,Dragon Howling
|
||||
2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RK_RUNEMASTERY,Rune Mastery
|
||||
2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RK_MILLENNIUMSHIELD,Millenium Shield
|
||||
2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,0x0, RK_CRUSHSTRIKE,Crush Strike
|
||||
2012,1,6,4,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0, RK_CRUSHSTRIKE,Crush Strike
|
||||
2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_REFRESH,Refresh
|
||||
2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_GIANTGROWTH,Giant Growth
|
||||
2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_STONEHARDSKIN,Stone Hard Skin
|
||||
@ -898,7 +898,7 @@
|
||||
2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0, RK_STORMBLAST,Storm Blast
|
||||
2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0, RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
|
||||
2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0, RK_ABUNDANCE,Abundance
|
||||
2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RK_PHANTOMTHRUST,Phantom Thrust
|
||||
|
||||
//****
|
||||
// WL Warlock
|
||||
@ -947,7 +947,7 @@
|
||||
2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_POISONINGWEAPON,Poisoning Weapon
|
||||
2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, GC_WEAPONBLOCKING,Weapon Blocking
|
||||
2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0, GC_COUNTERSLASH,Counter Slash
|
||||
2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush
|
||||
2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0, GC_WEAPONCRUSH,Weapon Crush
|
||||
2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, GC_VENOMPRESSURE,Venom Pressure
|
||||
2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0, GC_POISONSMOKE,Poison Smoke
|
||||
2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40, GC_CLOAKINGEXCEED,Cloaking Exceed
|
||||
@ -993,7 +993,7 @@
|
||||
2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0, RA_WUGMASTERY,Warg Mastery
|
||||
2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000, RA_WUGRIDER,Warg Rider
|
||||
2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000, RA_WUGDASH,Warg Dash
|
||||
2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2243,9,6,1,-1,0x40,0,5,1,no,0,0,0,misc,0,0x2000, RA_WUGSTRIKE,Warg Strike
|
||||
2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80, RA_WUGBITE,Warg Bite
|
||||
2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, RA_TOOTHOFWUG,Tooth of Warg
|
||||
2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0, RA_SENSITIVEKEEN,Sensitive Keen
|
||||
@ -1077,7 +1077,7 @@
|
||||
2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0, LG_OVERBRAND,Over Brand
|
||||
2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, LG_PRESTIGE,Prestige
|
||||
2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0, LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
|
||||
2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0, LG_MOONSLASHER,Moon Slasher
|
||||
2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x1000, LG_MOONSLASHER,Moon Slasher
|
||||
2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0, LG_RAYOFGENESIS,Ray of Genesis
|
||||
2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0, LG_PIETY,Piety
|
||||
2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0,0x0, LG_EARTHDRIVE,Earth Drive
|
||||
@ -1090,14 +1090,14 @@
|
||||
2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0, SR_SKYNETBLOW,Sky Net Blow
|
||||
2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0, SR_EARTHSHAKER,Earth Shaker
|
||||
2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0, SR_FALLENEMPIRE,Fallen Empire
|
||||
2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
|
||||
2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2330,-2,6,1,-1,0x2,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0, SR_TIGERCANNON,Tiger Cannon
|
||||
2331,1:2:3:3:4:4:5:5:6:7,6,1,0,0,0,10,0,no,0,0,0,none,0,0x0, SR_HELLGATE,Hell Gate
|
||||
2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, SR_RAMPAGEBLASTER,Rampage Blaster
|
||||
2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
|
||||
2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0, SR_CURSEDCIRCLE,Cursed Circle
|
||||
2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, SR_LIGHTNINGWALK,Lightning Walk
|
||||
2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0, SR_KNUCKLEARROW,Knuckle Arrow
|
||||
2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0, SR_WINDMILL,Windmill
|
||||
2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x1000, SR_WINDMILL,Windmill
|
||||
2338,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0, SR_RAISINGDRAGON,Raising Dragon
|
||||
2339,0,0,0,0,0,0,5,1,no,0,0,0,none,0,0x0, SR_GENTLETOUCH,Gentle Touch
|
||||
2340,0,6,4,0,0x3,2,1,1,no,0,0,0,none,0,0x0, SR_ASSIMILATEPOWER,Assimilate Power
|
||||
@ -1154,8 +1154,8 @@
|
||||
|
||||
//****
|
||||
// SO Sorcerer (statis blocking need to be confirmed)
|
||||
2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20, SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
|
||||
2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20, SO_ELECTRICWALK,Electric Walk
|
||||
2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020, SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
|
||||
2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020, SO_ELECTRICWALK,Electric Walk
|
||||
2445,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x20, SO_SPELLFIST,Spell Fist
|
||||
2446,9,6,2,2,0,0,5,-3,yes,0,0,0,magic,0,0x20, SO_EARTHGRAVE,Earth Grave
|
||||
2447,9,6,2,1,0,0,5,-5,yes,0,0,0,magic,0,0x20, SO_DIAMONDDUST,Diamond Dust
|
||||
@ -1164,7 +1164,7 @@
|
||||
2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x20, SO_CLOUD_KILL,Cloud Kill
|
||||
2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x20, SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true?
|
||||
2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SO_WARMER,Warmer
|
||||
2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20, SO_VACUUM_EXTREME,Vacuum Extreme
|
||||
2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1020, SO_VACUUM_EXTREME,Vacuum Extreme
|
||||
2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20, SO_VARETYR_SPEAR,Varetyr Spear
|
||||
2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20, SO_ARRULLO,Arrullo
|
||||
2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0, SO_EL_CONTROL,Spirit Control
|
||||
@ -1195,7 +1195,7 @@
|
||||
2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED,Crazy Weed
|
||||
2484,0,6,2,2,0x2,2,10,1,no,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack
|
||||
2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
|
||||
2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion
|
||||
2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
|
||||
2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
|
||||
2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
|
||||
@ -1303,7 +1303,7 @@
|
||||
5001,1,8,1,-1,0,0,5,3,no,0,0,0,weapon,0,0x0, GC_DARKCROW,Dark Claw
|
||||
5002,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RA_UNLIMIT,Unlimited
|
||||
5003,7,6,1,-1,0x2,4:5:6:7:8,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
|
||||
5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5004,9,6,2,1,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
|
||||
5005,0,6,4,0,0x3,3,1,1,no,0,0,0,none,0,0x0, RK_LUXANIMA,Lux Anima
|
||||
5006,1,6,2,3,0,0,5,1,no,0,0,3,misc,0,0x0, NC_MAGMA_ERUPTION,Magma Eruption
|
||||
5007,0,6,4,0,0x3,5:6:7:8:9,5,1,no,0,0,0,none,0,0x0, WM_FRIGG_SONG,Frigg's Song
|
||||
|
@ -599,7 +599,7 @@
|
||||
2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_JACKFROST#Jack Frost#
|
||||
2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_MARSHOFABYSS#Marsh of Abyss#
|
||||
2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_RECOGNIZEDSPELL#Recognized Spell#
|
||||
2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate#
|
||||
2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate#
|
||||
|
||||
2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_STASIS#Stasis#
|
||||
2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_DRAINLIFE#Drain Life#
|
||||
@ -758,8 +758,8 @@
|
||||
2327,0,0,8:9:10:11:12,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_SKYNETBLOW#Sky Net Blow#
|
||||
2328,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_EARTHSHAKER#Earth Shaker#
|
||||
2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_FALLENEMPIRE#Fallen Empire#
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON#Tiger Cannon#
|
||||
2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_HELLGATE#Hell Gate#
|
||||
2330,0,0,1:2:3:4:5:6:7:8:9:10,0,0,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_TIGERCANNON#Tiger Cannon#
|
||||
2331,0,0,1,0,-11:-12:-13:-14:-15:-16:-17:-18:-19:-20,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_HELLGATE#Hell Gate#
|
||||
2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAMPAGEBLASTER#Rampage Blaster#
|
||||
2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CRESCENTELBOW#Crescent Elbow#
|
||||
2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CURSEDCIRCLE#Cursed Circle#
|
||||
|
@ -1039,6 +1039,13 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
damage >>= 2; //75% reduction
|
||||
}
|
||||
|
||||
if( sc->data[SC_SMOKEPOWDER] ) {
|
||||
if( (flag&(BF_SHORT|BF_WEAPON)) == (BF_SHORT|BF_WEAPON) )
|
||||
damage -= 15 * damage / 100; // 15% reduction to physical melee attacks
|
||||
else if( (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) )
|
||||
damage -= 50 * damage / 100; // 50% reduction to physical ranged attacks
|
||||
}
|
||||
|
||||
// Compressed code, fixed by map.h [Epoque]
|
||||
if (src->type == BL_MOB) {
|
||||
int i;
|
||||
@ -2605,7 +2612,7 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list
|
||||
}
|
||||
#else
|
||||
case NJ_ISSEN:
|
||||
wd.damage = 40*sstatus->str +skill_lv*(sstatus->hp/10 + 35);
|
||||
wd.damage = 40 * sstatus->str + (8 / 100) * skill_lv * sstatus->hp;
|
||||
wd.damage2 = 0;
|
||||
break;
|
||||
case LK_SPIRALPIERCE:
|
||||
@ -3137,6 +3144,11 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
|
||||
skillratio += 20*(skill_lv-1);
|
||||
#endif
|
||||
break;
|
||||
#ifdef RENEWAL
|
||||
case NJ_KUNAI:
|
||||
skillratio *= 3; // 3x300% ATK
|
||||
break;
|
||||
#endif
|
||||
case NJ_HUUMA:
|
||||
skillratio += 50 + 150*skill_lv;
|
||||
break;
|
||||
@ -3458,10 +3470,10 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
|
||||
case SR_TIGERCANNON:// ATK [((Caster consumed HP + SP) / 4) x Caster Base Level / 100] %
|
||||
{
|
||||
int hp = (int64)status_get_max_hp(src) * (10 + 2 * skill_lv) / 100,
|
||||
sp = (int64)status_get_max_sp(src) * (6 + skill_lv) / 100;
|
||||
sp = (int64)status_get_max_sp(src) * (5 + 1 * skill_lv) / 100;
|
||||
skillratio = ((int64)hp+sp) / 4;
|
||||
if( sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE ) // ATK [((Caster consumed HP + SP) / 2) x Caster Base Level / 100] %
|
||||
skillratio = (int64)hp+sp / 2;
|
||||
skillratio = ((int64)hp+sp) / 2;
|
||||
RE_LVL_DMOD(100);
|
||||
}
|
||||
break;
|
||||
@ -4851,10 +4863,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
|
||||
if( skill_id == SO_PSYCHIC_WAVE ) {
|
||||
if( sc && sc->count ) {
|
||||
if( sc->data[SC_HEATER_OPTION] ) s_ele = sc->data[SC_HEATER_OPTION]->val4;
|
||||
else if( sc->data[SC_COOLER_OPTION] ) s_ele = sc->data[SC_COOLER_OPTION]->val4;
|
||||
if( sc->data[SC_HEATER_OPTION] ) s_ele = sc->data[SC_HEATER_OPTION]->val3;
|
||||
else if( sc->data[SC_COOLER_OPTION] ) s_ele = sc->data[SC_COOLER_OPTION]->val3;
|
||||
else if( sc->data[SC_BLAST_OPTION] ) s_ele = sc->data[SC_BLAST_OPTION]->val3;
|
||||
else if( sc->data[SC_CURSED_SOIL_OPTION] ) s_ele = sc->data[SC_CURSED_SOIL_OPTION]->val4;
|
||||
else if( sc->data[SC_CURSED_SOIL_OPTION] ) s_ele = sc->data[SC_CURSED_SOIL_OPTION]->val3;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5219,7 +5231,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
skillratio = 60 * skill_lv;
|
||||
RE_LVL_DMOD(100);
|
||||
if( sc && sc->data[SC_HEATER_OPTION] )
|
||||
skillratio += sc->data[SC_HEATER_OPTION]->val3;
|
||||
skillratio += sd ? sd->status.job_level / 2 : 0;
|
||||
break;
|
||||
case SO_ELECTRICWALK:
|
||||
skillratio = 60 * skill_lv;
|
||||
@ -5231,33 +5243,23 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_SEISMICWEAPON) : skill_get_max(SA_SEISMICWEAPON)) + sstatus->int_ * skill_lv );
|
||||
RE_LVL_DMOD(100);
|
||||
if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
|
||||
skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
|
||||
skillratio += sd ? sd->status.job_level * 5 : 0;
|
||||
break;
|
||||
case SO_DIAMONDDUST:
|
||||
skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_FROSTWEAPON) : skill_get_max(SA_FROSTWEAPON)) + sstatus->int_ * skill_lv );
|
||||
RE_LVL_DMOD(100);
|
||||
if( sc && sc->data[SC_COOLER_OPTION] )
|
||||
skillratio += sc->data[SC_COOLER_OPTION]->val3;
|
||||
skillratio += sd ? sd->status.job_level * 5 : 0;
|
||||
break;
|
||||
case SO_POISON_BUSTER:
|
||||
skillratio += 900 + 300 * skill_lv;
|
||||
RE_LVL_DMOD(120);
|
||||
if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
|
||||
skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
|
||||
skillratio += sd ? sd->status.job_level * 5 : 0;
|
||||
break;
|
||||
case SO_PSYCHIC_WAVE:
|
||||
skillratio = skill_lv * 70 + (sstatus->int_ * 3);
|
||||
RE_LVL_DMOD(100);
|
||||
if( sc ){
|
||||
if( sc->data[SC_HEATER_OPTION] )
|
||||
skillratio += sc->data[SC_HEATER_OPTION]->val3;
|
||||
else if(sc->data[SC_COOLER_OPTION] )
|
||||
skillratio += sc->data[SC_COOLER_OPTION]->val3;
|
||||
else if(sc->data[SC_BLAST_OPTION] )
|
||||
skillratio += sc->data[SC_BLAST_OPTION]->val2;
|
||||
else if(sc->data[SC_CURSED_SOIL_OPTION] )
|
||||
skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val3;
|
||||
}
|
||||
break;
|
||||
case SO_VARETYR_SPEAR: //MATK [{( Endow Tornado skill level x 50 ) + ( Caster INT x Varetyr Spear Skill level )} x Caster Base Level / 100 ] %
|
||||
skillratio = status_get_int(src) * skill_lv + ((sd) ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : skill_get_max(SA_LIGHTNINGLOADER));
|
||||
@ -5269,13 +5271,13 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
skillratio = skill_lv * 40;
|
||||
RE_LVL_DMOD(100);
|
||||
if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
|
||||
skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
|
||||
skillratio += sd ? sd->status.job_level : 0;
|
||||
break;
|
||||
case GN_DEMONIC_FIRE:
|
||||
if( skill_lv > 20) // Fire expansion Lv.2
|
||||
skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 3; // Need official INT bonus. [LimitLine]
|
||||
skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 10;
|
||||
else if( skill_lv > 10 ) // Fire expansion Lv.1
|
||||
skillratio += 110 + 20 * (skill_lv - 10) / 2;
|
||||
skillratio += 110 + 20 * (skill_lv - 10) + status_get_int(src) + ((sd) ? sd->status.job_level : 50);
|
||||
else
|
||||
skillratio += 110 + 20 * skill_lv;
|
||||
break;
|
||||
@ -5390,9 +5392,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
|
||||
if(ad.damage<1)
|
||||
ad.damage=1;
|
||||
else if(sc){//only applies when hit
|
||||
// TODO: there is another factor that contribute with the damage and need to be formulated. [malufett]
|
||||
switch(skill_id){
|
||||
else if(sc) { //only applies when hit
|
||||
switch(skill_id) {
|
||||
case MG_LIGHTNINGBOLT:
|
||||
case MG_THUNDERSTORM:
|
||||
case MG_FIREBOLT:
|
||||
@ -5401,8 +5402,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
case MG_FROSTDIVER:
|
||||
case WZ_EARTHSPIKE:
|
||||
case WZ_HEAVENDRIVE:
|
||||
if(sc->data[SC_GUST_OPTION] || sc->data[SC_PETROLOGY_OPTION]
|
||||
|| sc->data[SC_PYROTECHNIC_OPTION] || sc->data[SC_AQUAPLAY_OPTION])
|
||||
if(sc->data[SC_GUST_OPTION] || sc->data[SC_PETROLOGY_OPTION] || sc->data[SC_PYROTECHNIC_OPTION] || sc->data[SC_AQUAPLAY_OPTION])
|
||||
ad.damage += (6 + sstatus->int_/4) + max(sstatus->dex-10,0)/30;
|
||||
break;
|
||||
}
|
||||
@ -5613,6 +5613,11 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
||||
if (tsd) md.damage>>=1;
|
||||
#endif
|
||||
break;
|
||||
#ifndef RENEWAL
|
||||
case NJ_KUNAI:
|
||||
md.damage = 90; // 3x90 unreducable, unavoidable, and neutral damage.
|
||||
break;
|
||||
#endif
|
||||
case NJ_ZENYNAGE:
|
||||
case KO_MUCHANAGE:
|
||||
md.damage = skill_get_zeny(skill_id ,skill_lv);
|
||||
@ -6448,6 +6453,20 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
||||
}
|
||||
}
|
||||
|
||||
if( sd && sc && (sc->data[SC_TROPIC_OPTION] || sc->data[SC_CHILLY_AIR_OPTION] || sc->data[SC_WILD_STORM_OPTION] || sc->data[SC_UPHEAVAL_OPTION]) )
|
||||
{ // Autocast one Bolt depending on status change.
|
||||
int skill_id = 0;
|
||||
if( sc->data[SC_TROPIC_OPTION] ) skill_id = sc->data[SC_TROPIC_OPTION]->val3;
|
||||
else if( sc->data[SC_CHILLY_AIR_OPTION] ) skill_id = sc->data[SC_CHILLY_AIR_OPTION]->val3;
|
||||
else if( sc->data[SC_WILD_STORM_OPTION] ) skill_id = sc->data[SC_WILD_STORM_OPTION]->val2;
|
||||
else if( sc->data[SC_UPHEAVAL_OPTION] ) skill_id = sc->data[SC_UPHEAVAL_OPTION]->val2;
|
||||
|
||||
sd->state.autocast = 1;
|
||||
if( skill_id && rand()%100 < (sd->status.job_level / 2) )
|
||||
skill_castend_damage_id(src, target, skill_id, (int)floor(sd->status.job_level / 10), tick, flag);
|
||||
sd->state.autocast = 0;
|
||||
}
|
||||
|
||||
if (wd.flag & BF_WEAPON && src != target && damage > 0) {
|
||||
if (battle_config.left_cardfix_to_right)
|
||||
battle_drain(sd, target, wd.damage, wd.damage, tstatus->race, tstatus->class_);
|
||||
|
@ -77,13 +77,13 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet
|
||||
i = db->status.size+1; // summon level
|
||||
|
||||
//[(Caster's Max HP/ 3 ) + (Caster's INT x 10 )+ (Caster's Job Level x 20 )] x [(Elemental Summon Level + 2) / 3]
|
||||
ele.hp = ele.max_hp = (sd->battle_status.max_hp/3 + sd->battle_status.int_*10 + sd->status.job_level) * ((i + 2) / 3);
|
||||
ele.hp = ele.max_hp = (sd->battle_status.max_hp/3 + sd->battle_status.int_*10 + sd->status.job_level*20) * ((i + 2) / 3);
|
||||
//Caster's Max SP /4
|
||||
ele.sp = ele.max_sp = sd->battle_status.max_sp/4;
|
||||
//Caster's [ Max SP / (18 / Elemental Summon Skill Level) 1- 100 ]
|
||||
ele.atk = (sd->battle_status.max_sp / (18 / i) * 1 - 100);
|
||||
//Caster's [ Max SP / (18 / Elemental Summon Skill Level) ]
|
||||
ele.atk2 = sd->battle_status.max_sp / 18;
|
||||
ele.atk2 = sd->battle_status.max_sp / (18 / i);
|
||||
//Caster's HIT + (Caster's Base Level)
|
||||
ele.hit = sd->battle_status.hit + sd->status.base_level;
|
||||
//[Elemental Summon Skill Level x (Caster's INT / 2 + Caster's DEX / 4)]
|
||||
|
@ -428,7 +428,7 @@ struct item_data* itemdb_exists(int nameid);
|
||||
#define itemdb_viewid(n) (itemdb_search(n)->view_id)
|
||||
#define itemdb_autoequip(n) (itemdb_search(n)->flag.autoequip)
|
||||
#define itemdb_is_rune(n) ((n >= ITEMID_NAUTHIZ && n <= ITEMID_HAGALAZ) || n == ITEMID_LUX_ANIMA)
|
||||
#define itemdb_is_element(n) (n >= ITEMID_CRYSTAL_BLUE && n <= ITEMID_YELLOW_LIVE)
|
||||
#define itemdb_is_element(n) (n >= ITEMID_SCARLET_PTS && n <= ITEMID_SCARLET_PTS)
|
||||
#define itemdb_is_spellbook(n) (n >= ITEMID_MAGIC_BOOK_FB && n <= ITEMID_MAGIC_BOOK_DL)
|
||||
#define itemdb_is_poison(n) (n >= ITEMID_PARALYSE && n <= ITEMID_VENOMBLEED)
|
||||
#define itemid_isgemstone(id) ( (id) >= ITEMID_YELLOW_GEMSTONE && (id) <= ITEMID_BLUE_GEMSTONE )
|
||||
|
109
src/map/skill.c
109
src/map/skill.c
@ -1465,7 +1465,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint
|
||||
case SO_DIAMONDDUST:
|
||||
rate = 5 + 5 * skill_lv;
|
||||
if( sc && sc->data[SC_COOLER_OPTION] )
|
||||
rate += rate * sc->data[SC_COOLER_OPTION]->val2 / 100;
|
||||
rate += sd ? sd->status.job_level / 5 : 0;
|
||||
sc_start(src,bl, SC_CRYSTALIZE, rate, skill_lv, skill_get_time2(skill_id, skill_lv));
|
||||
break;
|
||||
case SO_VARETYR_SPEAR:
|
||||
@ -2740,6 +2740,10 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
sp = sp/((skill_lv|1)*(skill_lv|1)); //Estimate SP cost of a single water-ball
|
||||
status_heal(bl, 0, sp, 2);
|
||||
}
|
||||
if( (dmg.damage || dmg.damage2) && tsc && tsc->data[SC_HALLUCINATIONWALK] && rand()%100 < tsc->data[SC_HALLUCINATIONWALK]->val3 ) {
|
||||
dmg.damage = dmg.damage2 = 0;
|
||||
dmg.dmg_lv = ATK_MISS;
|
||||
}
|
||||
}
|
||||
|
||||
damage = dmg.damage + dmg.damage2;
|
||||
@ -3900,7 +3904,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case CG_ARROWVULCAN:
|
||||
case HW_MAGICCRASHER:
|
||||
case ITM_TOMAHAWK:
|
||||
case MO_TRIPLEATTACK:
|
||||
case CH_CHAINCRUSH:
|
||||
case CH_TIGERFIST:
|
||||
case PA_SHIELDCHAIN: // Shield Chain
|
||||
@ -3968,7 +3971,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
case NC_PILEBUNKER:
|
||||
case NC_COLDSLOWER:
|
||||
case NC_ARMSCANNON:
|
||||
if (sd) pc_overheat(sd,1);
|
||||
if (sd) pc_overheat(sd, 1);
|
||||
case MO_TRIPLEATTACK:
|
||||
case RK_WINDCUTTER:
|
||||
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag|SD_ANIMATION);
|
||||
break;
|
||||
@ -5029,7 +5033,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
|
||||
break;
|
||||
}
|
||||
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
||||
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_damage_id);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -8910,10 +8914,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case SC_UNLUCKY:
|
||||
case SC_WEAKNESS:
|
||||
if( !(tsc && tsc->data[type]) ) {
|
||||
//((rand(myDEX / 12, myDEX / 4) + myJobLevel + 10 * skLevel) + myLevel / 10) - (targetLevel / 10 + targetLUK / 10 + (targetMaxWeight - targetWeight) / 1000 + rand(targetAGI / 6, targetAGI / 3))
|
||||
int rate = rnd_value(sstatus->dex/12,sstatus->dex/4) + 10*skill_lv + (sd?sd->status.job_level:0) + status_get_lv(src)/10
|
||||
- status_get_lv(bl)/10 - tstatus->luk/10 - (dstsd?(dstsd->max_weight-dstsd->weight)/10000:0) - rnd_value(tstatus->agi/6,tstatus->agi/3);
|
||||
rate = cap_value(rate, skill_lv+sstatus->dex/20, 100);
|
||||
int rate = status_get_lv(src) / 10 + rnd_value(sstatus->dex / 12, sstatus->dex / 4) + ( sd ? sd->status.job_level : 50 ) + 10 * skill_lv
|
||||
- (status_get_lv(bl) / 10 + rnd_value(tstatus->agi / 6, tstatus->agi / 3) + tstatus->luk / 10 + ( dstsd ? (dstsd->max_weight / 10 - dstsd->weight / 10 ) / 100 : 0));
|
||||
rate = cap_value(rate, skill_lv + sstatus->dex / 20, 100);
|
||||
clif_skill_nodamage(src,bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv)));
|
||||
} else if( sd )
|
||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||
@ -8921,9 +8924,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
|
||||
case SC_IGNORANCE:
|
||||
if( !(tsc && tsc->data[type]) ) {
|
||||
int rate = rnd_value(sstatus->dex/12,sstatus->dex/4) + 10*skill_lv + (sd?sd->status.job_level:0) + status_get_lv(src)/10
|
||||
- status_get_lv(bl)/10 - tstatus->luk/10 - (dstsd?(dstsd->max_weight-dstsd->weight)/10000:0) - rnd_value(tstatus->agi/6,tstatus->agi/3);
|
||||
rate = cap_value(rate, skill_lv+sstatus->dex/20, 100);
|
||||
int rate = status_get_lv(src) / 10 + rnd_value(sstatus->dex / 12, sstatus->dex / 4) + ( sd ? sd->status.job_level : 50 ) + 10 * skill_lv
|
||||
- (status_get_lv(bl) / 10 + rnd_value(tstatus->agi / 6, tstatus->agi / 3) + tstatus->luk / 10 + ( dstsd ? (dstsd->max_weight / 10 - dstsd->weight / 10 ) / 100 : 0));
|
||||
rate = cap_value(rate, skill_lv + sstatus->dex / 20, 100);
|
||||
if (clif_skill_nodamage(src,bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv)))) {
|
||||
int sp = 100 * skill_lv;
|
||||
if( dstmd ) sp = dstmd->level * 2;
|
||||
@ -11778,6 +11781,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill
|
||||
interval = limit;
|
||||
val2 = 1;
|
||||
case WM_POEMOFNETHERWORLD: // Can't be placed on top of Land Protector.
|
||||
case WM_SEVERE_RAINSTORM:
|
||||
if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) )
|
||||
return NULL;
|
||||
break;
|
||||
@ -11789,7 +11793,6 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill
|
||||
break;
|
||||
case SO_VACUUM_EXTREME:
|
||||
range++;
|
||||
|
||||
break;
|
||||
case GN_WALLOFTHORN:
|
||||
if( flag&1 )
|
||||
@ -11999,11 +12002,11 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
|
||||
|
||||
sc = status_get_sc(bl);
|
||||
|
||||
if (sc && (sc->data[SC_HOVERING]
|
||||
|| (sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE && sg->skill_id != WL_EARTHSTRAIN )
|
||||
))
|
||||
if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE && sg->skill_id != WL_EARTHSTRAIN)
|
||||
return 0; //Hidden characters are immune to AoE skills except to these. [Skotlex]
|
||||
//Under hovering characters are immune to trap and ground target skills.
|
||||
|
||||
if (sc && sc->data[SC_HOVERING] && skill_get_inf3(sg->skill_id)&INF3_NO_EFF_HOVERING)
|
||||
return 0; // Under Hovering characters are immune to trap and ground target skills.
|
||||
|
||||
type = status_skill2sc(sg->skill_id);
|
||||
sce = (sc && type != -1)?sc->data[type]:NULL;
|
||||
@ -12215,13 +12218,13 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
tsd = BL_CAST(BL_PC, bl);
|
||||
tsc = status_get_sc(bl);
|
||||
|
||||
if ( tsc && tsc->data[SC_HOVERING] )
|
||||
return 0; //Under hovering characters are immune to trap and ground target skills.
|
||||
|
||||
tstatus = status_get_status_data(bl);
|
||||
type = status_skill2sc(sg->skill_id);
|
||||
skill_id = sg->skill_id;
|
||||
|
||||
if (tsc && tsc->data[SC_HOVERING] && skill_get_inf3(skill_id)&INF3_NO_EFF_HOVERING)
|
||||
return 0; // Under Hovering characters are immune to trap and ground target skills.
|
||||
|
||||
if (sg->interval == -1) {
|
||||
switch (sg->unit_id) {
|
||||
case UNT_ANKLESNARE: //These happen when a trap is splash-triggered by multiple targets on the same cell.
|
||||
@ -12711,7 +12714,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
skill_attack(BF_WEAPON,ss,&src->bl,bl,WM_SEVERE_RAINSTORM_MELEE,sg->skill_lv,tick,0);
|
||||
break;
|
||||
case UNT_NETHERWORLD:
|
||||
if( !(status_get_mode(bl)&MD_BOSS) && ss != bl && battle_check_target(&src->bl, bl, BCT_PARTY) > 0 ) {
|
||||
if( !(status_get_mode(bl)&MD_BOSS) && ss != bl && battle_check_target(&src->bl, bl, BCT_NOPARTY) > 0 ) {
|
||||
if( !(tsc && tsc->data[type]) ){
|
||||
sc_start(ss, bl, type, 100, sg->skill_lv, skill_get_time2(sg->skill_id,sg->skill_lv));
|
||||
sg->limit = DIFF_TICK(tick,sg->tick);
|
||||
@ -12744,25 +12747,22 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
case 1:
|
||||
case 2:
|
||||
default:
|
||||
sc_start(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv,
|
||||
skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
skill_attack(skill_get_type(sg->skill_id), ss, &src->bl, bl,
|
||||
sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0);
|
||||
sc_start(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
skill_attack(skill_get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0);
|
||||
break;
|
||||
case 3:
|
||||
skill_attack(skill_get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl,
|
||||
CR_ACIDDEMONSTRATION, ((sd) ? pc_checkskill(sd, CR_ACIDDEMONSTRATION) : skill_get_max(CR_ACIDDEMONSTRATION)), tick, 0);
|
||||
skill_attack(skill_get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl, CR_ACIDDEMONSTRATION, ((sd) ? pc_checkskill(sd, CR_ACIDDEMONSTRATION) : skill_get_max(CR_ACIDDEMONSTRATION)), tick, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_SMOKE_POWDER:
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_SMOKE_POWDER), 100, sg->skill_lv, 1000);
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_SMOKE_POWDER), 100, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_FIRE_EXPANSION_TEAR_GAS:
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_TEAR_GAS), 100, sg->skill_lv, 1000);
|
||||
sc_start(ss, bl, status_skill2sc(GN_FIRE_EXPANSION_TEAR_GAS), 100, sg->skill_lv, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_HELLS_PLANT:
|
||||
@ -12818,15 +12818,18 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
break;
|
||||
|
||||
case UNT_VACUUM_EXTREME:
|
||||
{// TODO: official behavior in gvg area. [malufett]
|
||||
{
|
||||
int sec = sg->limit - DIFF_TICK(tick, sg->tick);
|
||||
int range = skill_get_unit_range(sg->skill_id, sg->skill_lv);
|
||||
|
||||
if( tsc && tsc->data[SC_HALLUCINATIONWALK] ) // Don't affect the target if Hallucination Walk is active
|
||||
break;
|
||||
|
||||
if( tsc && !tsc->data[type] &&
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) <= range)// don't consider outer bounderies
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) <= range) // Don't consider outer boundaries
|
||||
sc_start(ss, bl, type, 100, sg->skill_lv, sec);
|
||||
|
||||
if( unit_is_walking(bl) && // wait until target stop walking
|
||||
if( unit_is_walking(bl) && // Wait until the target has stopped walking
|
||||
( tsc && tsc->data[type] && tsc->data[type]->val4 >= tsc->data[type]->val3-range ))
|
||||
break;
|
||||
|
||||
@ -12834,18 +12837,23 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
||||
break;
|
||||
|
||||
if( unit_is_walking(bl) &&
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) > range )// going outside of boundaries? then force it to stop
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) > range ) // Going outside of boundary? Then force target to stop
|
||||
unit_stop_walking(bl,1);
|
||||
|
||||
if( !unit_is_walking(bl) &&
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) <= range && // only snap if the target is inside the range or
|
||||
src->bl.x != bl->x && src->bl.y != bl->y){// diagonal position parallel to VE's center
|
||||
unit_movepos(bl, src->bl.x, src->bl.y, 0, 0);
|
||||
clif_fixpos(bl);
|
||||
distance_xy(src->bl.x, src->bl.y, bl->x, bl->y) <= range && // Only snap if the target is inside the range or
|
||||
src->bl.x != bl->x && src->bl.y != bl->y) { // at a diagonal position parallel to Vacuum Extreme's center
|
||||
unit_movepos(bl, src->bl.x, src->bl.y, 0, 0);
|
||||
clif_fixpos(bl);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_BANDING:
|
||||
if( battle_check_target(&src->bl, bl, BCT_ENEMY) > 0 && !(status_get_mode(bl)&MD_BOSS) && !(tsc && tsc->data[SC_BANDING_DEFENCE]) )
|
||||
sc_start(ss, bl, SC_BANDING_DEFENCE, (status_get_lv(src) / 5) + (sg->skill_lv * 5) - (status_get_agi(bl) / 10), 90, skill_get_time2(sg->skill_id, sg->skill_lv));
|
||||
break;
|
||||
|
||||
case UNT_FIRE_MANTLE:
|
||||
if( battle_check_target(&src->bl, bl, BCT_ENEMY) > 0 )
|
||||
skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
|
||||
@ -13900,7 +13908,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
}
|
||||
break;
|
||||
/**
|
||||
* Guilotine Cross
|
||||
* Guillotine Cross
|
||||
**/
|
||||
case GC_HALLUCINATIONWALK:
|
||||
if( sc && (sc->data[SC_HALLUCINATIONWALK] || sc->data[SC_HALLUCINATIONWALK_POSTDELAY]) ) {
|
||||
@ -14198,7 +14206,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
||||
if (!pc_checkequip2(sd,reqeqit,EQI_ACC_L,EQI_MAX)) {
|
||||
char output[128];
|
||||
//clif_skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, reqeqit);
|
||||
sprintf(output,"need to put on [%d] in order to use.",reqeqit);
|
||||
sprintf(output,"Please equip with a %d.",reqeqit); // Officially, some Mechanic skills failure message displays this rather than just "Skill has failed."
|
||||
clif_colormes(sd,color_table[COLOR_RED],output);
|
||||
return false;
|
||||
}
|
||||
@ -14302,7 +14310,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|
||||
int maxcount = (skill_id==AM_CANNIBALIZE)? 6-skill_lv : skill_get_maxcount(skill_id,skill_lv);
|
||||
int mob_class = (skill_id==AM_CANNIBALIZE)? summons[skill_lv-1] :MOBID_MARINE_SPHERE;
|
||||
if(battle_config.land_skill_limit && maxcount>0 && (battle_config.land_skill_limit&BL_PC)) {
|
||||
i = map_foreachinmap(skill_check_condition_mob_master_sub ,sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c);
|
||||
i = map_foreachinmap(skill_check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c);
|
||||
if(c >= maxcount ||
|
||||
(skill_id==AM_CANNIBALIZE && c != i && battle_config.summon_flora&2))
|
||||
{ //Fails when: exceed max limit. There are other plant types already out.
|
||||
@ -14784,8 +14792,8 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
|
||||
req.sp -= req.sp * (5 + 5 * pc_checkskill(sd,SO_EL_SYMPATHY)) / 100;
|
||||
break;
|
||||
case SO_PSYCHIC_WAVE:
|
||||
if( sc && sc->data[SC_BLAST_OPTION] )
|
||||
req.sp += req.sp * 150 / 100;
|
||||
if( sc && (sc->data[SC_HEATER_OPTION] || sc->data[SC_COOLER_OPTION] || sc->data[SC_CURSED_SOIL_OPTION] || sc->data[SC_BLAST_OPTION]) )
|
||||
req.sp += req.sp * 50 / 100;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -16766,9 +16774,12 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap)
|
||||
break;
|
||||
|
||||
case UNT_FEINTBOMB: {
|
||||
struct block_list *src = map_id2bl(group->src_id);
|
||||
if( src )
|
||||
struct block_list *src = map_id2bl(group->src_id);
|
||||
struct status_change *sc;
|
||||
if (src && (sc = status_get_sc(src)) != NULL && sc->data[SC_HIDING]) { // Copycat explodes if caster is still hidden.
|
||||
map_foreachinrange(skill_area_sub, &group->unit->bl, unit->range, splash_target(src), src, SC_FEINTBOMB, group->skill_lv, tick, BCT_ENEMY|SD_ANIMATION|1, skill_castend_damage_id);
|
||||
status_change_end(src, SC_HIDING, INVALID_TIMER);
|
||||
}
|
||||
skill_delunit(unit);
|
||||
break;
|
||||
}
|
||||
@ -16777,8 +16788,7 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap)
|
||||
{
|
||||
struct block_list *src = map_id2bl(group->src_id);
|
||||
struct status_change *sc;
|
||||
if( !src || (sc = status_get_sc(src)) == NULL || !sc->data[SC_BANDING] )
|
||||
{
|
||||
if( !src || (sc = status_get_sc(src)) == NULL || !sc->data[SC_BANDING] ) {
|
||||
skill_delunit(unit);
|
||||
break;
|
||||
}
|
||||
@ -17874,7 +17884,7 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
md = mob_once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE);
|
||||
md = mob_once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE);
|
||||
if( md ) {
|
||||
struct unit_data *ud = unit_bl2ud(&md->bl);
|
||||
md->master_id = sd->bl.id;
|
||||
@ -17939,6 +17949,7 @@ int skill_spellbook (struct map_session_data *sd, int nameid) {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int skill_select_menu(struct map_session_data *sd,uint16 skill_id) {
|
||||
int id, lv, prob, aslvl = 0;
|
||||
nullpo_ret(sd);
|
||||
@ -17948,18 +17959,18 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id) {
|
||||
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
|
||||
}
|
||||
|
||||
if( skill_id >= GS_GLITTERING || skill_get_type(skill_id) != BF_MAGIC ||
|
||||
(id = sd->status.skill[skill_id].id) == 0 || sd->status.skill[skill_id].flag != SKILL_FLAG_PLAGIARIZED ) {
|
||||
if( !(skill_get_inf2(sd->status.skill[skill_id].id)&INF2_AUTOSHADOWSPELL) || (id = sd->status.skill[skill_id].id) == 0 || sd->status.skill[skill_id].flag != SKILL_FLAG_PLAGIARIZED ) {
|
||||
clif_skill_fail(sd,SC_AUTOSHADOWSPELL,0,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
lv = (aslvl + 1) / 2; // The level the skill will be autocasted
|
||||
lv = min(lv,sd->status.skill[skill_id].lv);
|
||||
prob = (aslvl == 10) ? 15 : (30 - 2 * aslvl); // Probability at level 10 was increased to 15.
|
||||
prob = (aslvl >= 10) ? 15 : (30 - 2 * aslvl); // Probability at level 10 was increased to 15.
|
||||
sc_start4(&sd->bl,&sd->bl,SC__AUTOSHADOWSPELL,100,id,lv,prob,0,skill_get_time(SC_AUTOSHADOWSPELL,aslvl));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int skill_elementalanalysis(struct map_session_data* sd, int n, uint16 skill_lv, unsigned short* item_list) {
|
||||
int i;
|
||||
|
||||
|
@ -86,7 +86,7 @@ enum e_skill_inf3 {
|
||||
INF3_EFF_SHADOWJUMP = 0x0200, // spell range affected by NJ_SHADOWJUMP
|
||||
INF3_EFF_RADIUS = 0x0400, // spell range affected by WL_RADIUS
|
||||
INF3_EFF_RESEARCHTRAP = 0x0800, // spell range affected by RA_RESEARCHTRAP
|
||||
//INF3_ = 0x1000, // free
|
||||
INF3_NO_EFF_HOVERING = 0x1000, // Spell that does not affect user that has SC_HOVERING active
|
||||
INF3_USABLE_WARG = 0x2000, // spell that can be use while riding warg
|
||||
INF3_DIS_MADO = 0x4000, // spell that can't be used while in mado
|
||||
//... add other spell list option here
|
||||
|
@ -2644,8 +2644,6 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
|
||||
bonus += sc->data[SC_SERVICE4U]->val2;
|
||||
if(sc->data[SC_MERC_SPUP])
|
||||
bonus += sc->data[SC_MERC_SPUP]->val2;
|
||||
if(sc->data[SC_RAISINGDRAGON])
|
||||
bonus += (2 + sc->data[SC_RAISINGDRAGON]->val1);
|
||||
if(sc->data[SC_LIFE_FORCE_F])
|
||||
bonus += sc->data[SC_LIFE_FORCE_F]->val1;
|
||||
}
|
||||
@ -3886,7 +3884,6 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
|
||||
|| sc->data[SC_TRICKDEAD]
|
||||
|| sc->data[SC_BLEEDING]
|
||||
|| sc->data[SC_MAGICMUSHROOM]
|
||||
|| sc->data[SC_RAISINGDRAGON]
|
||||
|| sc->data[SC_SATURDAYNIGHTFEVER]
|
||||
) // No regen
|
||||
regen->flag = 0;
|
||||
@ -3897,7 +3894,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
|
||||
sc->data[SC_MAXIMIZEPOWER] ||
|
||||
#endif
|
||||
( (bl->type == BL_PC && ((TBL_PC*)bl)->class_&MAPID_UPPERMASK) == MAPID_MONK &&
|
||||
(sc->data[SC_EXTREMITYFIST] || (sc->data[SC_EXPLOSIONSPIRITS] && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)))
|
||||
(sc->data[SC_EXTREMITYFIST] || ((sc->data[SC_EXPLOSIONSPIRITS] || sc->data[SC_RAISINGDRAGON]) && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)))
|
||||
)
|
||||
) // No natural SP regen
|
||||
regen->flag &=~RGN_SP;
|
||||
@ -5199,6 +5196,8 @@ static unsigned short status_calc_ematk(struct block_list *bl, struct status_cha
|
||||
matk += sc->data[SC_MATKFOOD]->val1;
|
||||
if(sc->data[SC_MANA_PLUS])
|
||||
matk += sc->data[SC_MANA_PLUS]->val1;
|
||||
if(sc->data[SC_COOLER_OPTION])
|
||||
matk += sc->data[SC_COOLER_OPTION]->val2;
|
||||
if(sc->data[SC_AQUAPLAY_OPTION])
|
||||
matk += sc->data[SC_AQUAPLAY_OPTION]->val2;
|
||||
if(sc->data[SC_CHILLY_AIR_OPTION])
|
||||
@ -8397,9 +8396,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
else
|
||||
val4 |= battle_config.monster_cloak_check_type&7;
|
||||
break;
|
||||
case SC_SIGHTBLASTER:
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
case SC_SIGHT: /* splash status */
|
||||
case SC_RUWACH:
|
||||
case SC_SIGHTBLASTER:
|
||||
val3 = skill_get_splash(val2, val1); // Val2 should bring the skill-id.
|
||||
val2 = tick/250;
|
||||
tick_time = 10; // [GodLesZ] tick time
|
||||
@ -8936,6 +8936,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
/* Arch Bishop */
|
||||
case SC_RENOVATIO:
|
||||
val4 = tick / 5000;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 5000;
|
||||
break;
|
||||
case SC_SECRAMENT:
|
||||
@ -8947,6 +8948,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC_WEAPONBLOCKING:
|
||||
val2 = 10 + 2 * val1; // Chance
|
||||
val4 = tick / 3000;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 3000; // [GodLesZ] tick time
|
||||
break;
|
||||
case SC_TOXIN:
|
||||
@ -9047,6 +9049,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val2 = 50 - 10 * val1; // ASPD
|
||||
val3 = 20 * val1; // CRITICAL
|
||||
val4 = tick / 1000;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 1000; // [GodLesZ] tick time
|
||||
break;
|
||||
case SC__ENERVATION:
|
||||
@ -9205,6 +9208,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val2 = 15 + 5 * val1; // Reflect amount
|
||||
val3 = val1*5 + 25; // Number of reflects
|
||||
val4 = tick/1000; // Number of SP cycles (duration)
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 1000; // [GodLesZ] tick time
|
||||
break;
|
||||
case SC_FORCEOFVANGUARD: // This is not the official way to handle it but I think we should use it. [pakpil]
|
||||
@ -9229,6 +9233,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val1 += (10 * pc_checkskill(sd,CR_DEFENDER)) * (status_get_lv(bl) / 100);
|
||||
break;
|
||||
case SC_BANDING:
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 5000; // [GodLesZ] tick time
|
||||
break;
|
||||
case SC_MAGNETICFIELD:
|
||||
@ -9241,6 +9246,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val3 = (sd?sd->status.job_level:50);
|
||||
}
|
||||
val4 = tick / 5000;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 5000; // [GodLesZ] tick time
|
||||
status_change_clear_buffs(bl,3); // Remove buffs/debuffs
|
||||
break;
|
||||
@ -9274,25 +9280,26 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val4 = ( status_get_vit(src)/4 ) * val1; // STAT DEF increase: [(Caster VIT / 4) x Skill Level]
|
||||
}
|
||||
break;
|
||||
case SC_PYROTECHNIC_OPTION:
|
||||
val2 = 60;
|
||||
break;
|
||||
case SC_HEATER_OPTION:
|
||||
val2 = 120; // !TODO: Watk. Renewal (Atk2)
|
||||
val3 = 33; // % Increase effects.
|
||||
val4 = 3; // Change into fire element.
|
||||
val2 = 120; // Watk. Renewal (Atk2)
|
||||
val3 = ELE_FIRE; // Change into fire element.
|
||||
break;
|
||||
case SC_TROPIC_OPTION:
|
||||
val2 = 180; // !TODO: Watk. Renewal (Atk2)
|
||||
val2 = 180; // Watk. Renewal (Atk2)
|
||||
val3 = MG_FIREBOLT;
|
||||
break;
|
||||
case SC_AQUAPLAY_OPTION:
|
||||
val2 = 40;
|
||||
break;
|
||||
case SC_COOLER_OPTION:
|
||||
val2 = 80; // % Freezing chance
|
||||
val3 = 33; // % increased damage
|
||||
val4 = 1; // Change into water elemet
|
||||
val2 = 80;
|
||||
val3 = ELE_WATER; // Change into water element.
|
||||
break;
|
||||
case SC_CHILLY_AIR_OPTION:
|
||||
val2 = 120; // !TODO: Matk. Renewal (Matk1)
|
||||
val2 = 120; // Matk. Renewal (Matk1)
|
||||
val3 = MG_COLDBOLT;
|
||||
break;
|
||||
case SC_WIND_STEP_OPTION:
|
||||
@ -9300,7 +9307,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
break;
|
||||
case SC_BLAST_OPTION:
|
||||
val2 = 20;
|
||||
val3 = ELE_WIND;
|
||||
val3 = ELE_WIND; // Change into wind element.
|
||||
break;
|
||||
case SC_WILD_STORM_OPTION:
|
||||
val2 = MG_LIGHTNINGBOLT;
|
||||
@ -9311,8 +9318,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
break;
|
||||
case SC_CURSED_SOIL_OPTION:
|
||||
val2 = 10; //HP rate bonus
|
||||
val3 = 33;
|
||||
val4 = 2;
|
||||
val3 = ELE_EARTH; // Change into earth element.
|
||||
break;
|
||||
case SC_UPHEAVAL_OPTION:
|
||||
val2 = WZ_EARTHSPIKE;
|
||||
@ -9324,7 +9330,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC_WATER_DROP_OPTION:
|
||||
case SC_WIND_CURTAIN_OPTION:
|
||||
case SC_STONE_SHIELD_OPTION:
|
||||
val2 = 20; // Elemental modifier. Not confirmed.
|
||||
val2 = 100; // Elemental modifier.
|
||||
break;
|
||||
case SC_CIRCLE_OF_FIRE:
|
||||
case SC_FIRE_CLOAK:
|
||||
@ -9342,7 +9348,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val3 = 20; // Reductions. Atk2, Flee1, Matk1 ????
|
||||
break;
|
||||
case SC_ZEPHYR:
|
||||
val2 = 22; // Flee.
|
||||
val2 = 25; // Flee.
|
||||
break;
|
||||
case SC_TIDAL_WEAPON:
|
||||
val2 = 20; // Increase Elemental's attack.
|
||||
@ -9354,6 +9360,16 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC_POWER_OF_GAIA:
|
||||
val2 = 20; //HP rate bonus
|
||||
break;
|
||||
case SC_TEARGAS:
|
||||
val3 = status_get_max_hp(bl) * 5 / 100; // Drain 5% HP
|
||||
val4 = tick / 2000;
|
||||
tick_time = 2000;
|
||||
sc_start(src, bl, SC_TEARGAS_SOB, 100, 0, 1|2|8); // Sob Emoticon
|
||||
break;
|
||||
case SC_TEARGAS_SOB:
|
||||
val4 = tick / 3000;
|
||||
tick_time = 3000;
|
||||
break;
|
||||
case SC_MELON_BOMB:
|
||||
case SC_BANANA_BOMB:
|
||||
val1 = 15;
|
||||
@ -9371,6 +9387,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val3 = val1 * 2;
|
||||
case SC_IZAYOI:
|
||||
val2 = tick/1000;
|
||||
if( type == SC_IZAYOI )
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
tick_time = 1000;
|
||||
break;
|
||||
case SC_ZANGETSU:
|
||||
@ -9465,11 +9483,13 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val2 = 6 - val1;
|
||||
tick_time = 1000;
|
||||
val4 = tick / tick_time;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
break;
|
||||
case SC_KINGS_GRACE:
|
||||
val2 = 3 + val1; //HP Recover rate
|
||||
tick_time = 1000;
|
||||
val4 = tick / tick_time;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
break;
|
||||
case SC_TELEKINESIS_INTENSE:
|
||||
val2 = 10 * val1; // sp consum / casttime reduc %
|
||||
@ -9484,6 +9504,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val3 = 1000 + 100 * val1; // healing
|
||||
tick_time = 10000;
|
||||
val4 = tick / tick_time;
|
||||
tick = -1; // Duration sent to the client should be infinite
|
||||
break;
|
||||
case SC_FLASHCOMBO:
|
||||
val2 = (20 * val1) + 20; // atk bonus
|
||||
@ -11589,6 +11610,18 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
return 0;
|
||||
|
||||
case SC_TEARGAS:
|
||||
if(!status_charge(bl, 0, sce->val3))
|
||||
break; // Not enough HP to continue.
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
break;
|
||||
case SC_TEARGAS_SOB:
|
||||
if( --(sce->val4) >= 0 ) {
|
||||
clif_emotion(bl, E_SOB);
|
||||
sc_timer_next(3000 + tick, status_change_timer, bl->id, data);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case SC_STOMACHACHE:
|
||||
if( --(sce->val4) > 0 ) {
|
||||
status_charge(bl,0,sce->val2); // Reduce 8 every 10 seconds.
|
||||
|
@ -697,6 +697,8 @@ typedef enum sc_type {
|
||||
|
||||
SC_ALL_RIDING,
|
||||
|
||||
SC_TEARGAS_SOB,
|
||||
|
||||
#ifdef RENEWAL
|
||||
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
||||
#endif
|
||||
|
@ -2194,7 +2194,7 @@ static int unit_attack_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
* &2: Cancel only if skill is cancellable
|
||||
* @return Success(1); Fail(0);
|
||||
*/
|
||||
int unit_skillcastcancel(struct block_list *bl,int type)
|
||||
int unit_skillcastcancel(struct block_list *bl, char type)
|
||||
{
|
||||
struct map_session_data *sd = NULL;
|
||||
struct unit_data *ud = unit_bl2ud( bl);
|
||||
@ -2232,7 +2232,7 @@ int unit_skillcastcancel(struct block_list *bl,int type)
|
||||
|
||||
ud->skilltimer = INVALID_TIMER;
|
||||
|
||||
if( sd && pc_checkskill(sd,SA_FREECAST) > 0 )
|
||||
if( sd && (pc_checkskill(sd,SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK) )
|
||||
status_calc_bl(&sd->bl, SCB_SPEED);
|
||||
|
||||
if( sd ) {
|
||||
|
@ -115,7 +115,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
|
||||
int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv, int casttime, int castcancel);
|
||||
|
||||
// Cancel unit cast
|
||||
int unit_skillcastcancel(struct block_list *bl,int type);
|
||||
int unit_skillcastcancel(struct block_list *bl, char type);
|
||||
|
||||
int unit_counttargeted(struct block_list *bl);
|
||||
int unit_set_target(struct unit_data* ud, int target_id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user