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:
aleos89 2014-02-06 13:34:39 -05:00
parent 899f3c117c
commit 4019fb4531
16 changed files with 243 additions and 177 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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#

View File

@ -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

View File

@ -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

View File

@ -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#

View File

@ -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_);

View File

@ -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)]

View File

@ -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 )

View File

@ -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;

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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 ) {

View File

@ -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);