Job Improvement Project - Genetic (#3284)
* Fixes #2571. * Updates Homunculus skills from kRO maintenance: http://ro.gnjoy.com/news/update/View.asp?seq=218&curpage=1 * Updates Genetic skills from kRO maintenance: http://ro.gnjoy.com/news/update/View.asp?seq=246&curpage=1 Thanks to @Tokeiburu, @Badarosk0, @Balferian, and @Haydrich!
This commit is contained in:
parent
24ecebcaf3
commit
652d77eb02
@ -50,7 +50,7 @@ homunculus_auto_vapor: 80
|
|||||||
homunculus_max_level: 99
|
homunculus_max_level: 99
|
||||||
|
|
||||||
// Max level for Homunculus S
|
// Max level for Homunculus S
|
||||||
homunculus_S_max_level: 150
|
homunculus_S_max_level: 175
|
||||||
|
|
||||||
// Growth level for Homunculus S
|
// Growth level for Homunculus S
|
||||||
// This is the level at which homunculus S can use their growth tables
|
// This is the level at which homunculus S can use their growth tables
|
||||||
@ -70,3 +70,8 @@ homunculus_autofeed_always: yes
|
|||||||
// You will only receive items if 'homunculus_autoloot' is activated,
|
// You will only receive items if 'homunculus_autoloot' is activated,
|
||||||
// otherwise they will be dropped on the ground as usual.
|
// otherwise they will be dropped on the ground as usual.
|
||||||
hom_idle_no_share: no
|
hom_idle_no_share: no
|
||||||
|
|
||||||
|
// The rate at which homunculus gain experience from kills. (Note 2)
|
||||||
|
// Only applies to renewal mode.
|
||||||
|
// Official: 10%
|
||||||
|
homunculus_exp_gain: 10
|
||||||
|
@ -89,31 +89,31 @@
|
|||||||
//Eira
|
//Eira
|
||||||
6048,8022,5,128,0,0,0,0,0,0,0,0,0,0,0 //MH_LIGHT_OF_REGENE
|
6048,8022,5,128,0,0,0,0,0,0,0,0,0,0,0 //MH_LIGHT_OF_REGENE
|
||||||
6048,8023,5,114,0,0,0,0,0,0,0,0,0,0,0 //MH_OVERED_BOOST
|
6048,8023,5,114,0,0,0,0,0,0,0,0,0,0,0 //MH_OVERED_BOOST
|
||||||
6048,8024,5,106,0,0,0,0,0,0,0,0,0,0,0 //MH_ERASER_CUTTER
|
6048,8024,10,106,0,0,0,0,0,0,0,0,0,0,0 //MH_ERASER_CUTTER
|
||||||
6048,8025,5,121,0,0,0,0,0,0,0,0,0,0,0 //MH_XENO_SLASHER
|
6048,8025,10,121,0,0,0,0,0,0,0,0,0,0,0 //MH_XENO_SLASHER
|
||||||
6048,8026,5,137,0,0,0,0,0,0,0,0,0,0,0 //MH_SILENT_BREEZE
|
6048,8026,5,137,0,0,0,0,0,0,0,0,0,0,0 //MH_SILENT_BREEZE
|
||||||
//Bayeri
|
//Bayeri
|
||||||
6049,8031,5,105,0,0,0,0,0,0,0,0,0,0,0 //MH_STAHL_HORN
|
6049,8031,10,105,0,0,0,0,0,0,0,0,0,0,0 //MH_STAHL_HORN
|
||||||
6049,8032,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_GOLDENE_FERSE
|
6049,8032,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_GOLDENE_FERSE
|
||||||
6049,8033,5,121,0,0,0,0,0,0,0,0,0,0,0 //MH_STEINWAND
|
6049,8033,5,121,0,0,0,0,0,0,0,0,0,0,0 //MH_STEINWAND
|
||||||
6049,8034,5,138,0,0,0,0,0,0,0,0,0,0,0 //MH_HEILIGE_STANGE
|
6049,8034,10,138,0,0,0,0,0,0,0,0,0,0,0 //MH_HEILIGE_STANGE
|
||||||
6049,8035,5,130,0,0,0,0,0,0,0,0,0,0,0 //MH_ANGRIFFS_MODUS
|
6049,8035,5,130,0,0,0,0,0,0,0,0,0,0,0 //MH_ANGRIFFS_MODUS
|
||||||
//Sera
|
//Sera
|
||||||
6050,8018,5,132,0,0,0,0,0,0,0,0,0,0,0 //MH_SUMMON_LEGION
|
6050,8018,5,132,0,0,0,0,0,0,0,0,0,0,0 //MH_SUMMON_LEGION
|
||||||
6050,8019,5,105,0,0,0,0,0,0,0,0,0,0,0 //MH_NEEDLE_OF_PARALYZE
|
6050,8019,10,105,0,0,0,0,0,0,0,0,0,0,0 //MH_NEEDLE_OF_PARALYZE
|
||||||
6050,8020,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_POISON_MIST
|
6050,8020,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_POISON_MIST
|
||||||
6050,8021,5,123,0,0,0,0,0,0,0,0,0,0,0 //MH_PAIN_KILLER
|
6050,8021,10,123,0,0,0,0,0,0,0,0,0,0,0 //MH_PAIN_KILLER
|
||||||
//Dieter
|
//Dieter
|
||||||
6051,8039,5,122,0,0,0,0,0,0,0,0,0,0,0 //MH_MAGMA_FLOW
|
6051,8039,5,122,0,0,0,0,0,0,0,0,0,0,0 //MH_MAGMA_FLOW
|
||||||
6051,8040,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_GRANITIC_ARMOR
|
6051,8040,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_GRANITIC_ARMOR
|
||||||
6051,8041,5,109,0,0,0,0,0,0,0,0,0,0,0 //MH_LAVA_SLIDE
|
6051,8041,10,109,0,0,0,0,0,0,0,0,0,0,0 //MH_LAVA_SLIDE
|
||||||
6051,8042,5,131,0,0,0,0,0,0,0,0,0,0,0 //MH_PYROCLASTIC
|
6051,8042,10,131,0,0,0,0,0,0,0,0,0,0,0 //MH_PYROCLASTIC
|
||||||
6051,8043,5,102,0,0,0,0,0,0,0,0,0,0,0 //MH_VOLCANIC_ASH
|
6051,8043,5,102,0,0,0,0,0,0,0,0,0,0,0 //MH_VOLCANIC_ASH
|
||||||
//Elanor
|
//Elanor
|
||||||
6052,8027,1,100,0,0,0,0,0,0,0,0,0,0,0 //MH_STYLE_CHANGE
|
6052,8027,1,100,0,0,0,0,0,0,0,0,0,0,0 //MH_STYLE_CHANGE
|
||||||
6052,8028,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_SONIC_CRAW
|
6052,8028,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_SONIC_CRAW
|
||||||
6052,8029,5,114,0,0,0,0,0,0,0,0,0,0,0 //MH_SILVERVEIN_RUSH
|
6052,8029,10,114,0,0,0,0,0,0,0,0,0,0,0 //MH_SILVERVEIN_RUSH
|
||||||
6052,8030,5,128,0,0,0,0,0,0,0,0,0,0,0 //MH_MIDNIGHT_FRENZY
|
6052,8030,10,128,0,0,0,0,0,0,0,0,0,0,0 //MH_MIDNIGHT_FRENZY
|
||||||
6052,8036,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_TINDER_BREAKER
|
6052,8036,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_TINDER_BREAKER
|
||||||
6052,8037,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_CBC
|
6052,8037,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_CBC
|
||||||
6052,8038,5,133,0,0,0,0,0,0,0,0,0,0,0 //MH_EQC
|
6052,8038,5,133,0,0,0,0,0,0,0,0,0,0,0 //MH_EQC
|
||||||
|
@ -27355,24 +27355,10 @@ Body:
|
|||||||
ItemCost:
|
ItemCost:
|
||||||
- Item: Mandragora_Flowerpot
|
- Item: Mandragora_Flowerpot
|
||||||
Amount: 1
|
Amount: 1
|
||||||
- Id: 2493
|
# - Id: 2493 # Removed on kRO
|
||||||
Name: GN_SLINGITEM
|
# Name: GN_SLINGITEM
|
||||||
Description: Sling Item
|
# Description: Sling Item
|
||||||
MaxLevel: 1
|
# MaxLevel: 1
|
||||||
TargetType: Support
|
|
||||||
DamageFlags:
|
|
||||||
NoDamage: true
|
|
||||||
Flags:
|
|
||||||
NoTargetSelf: true
|
|
||||||
Range: 11
|
|
||||||
Hit: Single
|
|
||||||
HitCount: 1
|
|
||||||
Cooldown: 1000
|
|
||||||
Requires:
|
|
||||||
SpCost: 4
|
|
||||||
Ammo:
|
|
||||||
Throwweapon: true
|
|
||||||
AmmoAmount: 1
|
|
||||||
- Id: 2494
|
- Id: 2494
|
||||||
Name: GN_CHANGEMATERIAL
|
Name: GN_CHANGEMATERIAL
|
||||||
Description: Change Material
|
Description: Change Material
|
||||||
@ -27399,21 +27385,10 @@ Body:
|
|||||||
Amount: 5
|
Amount: 5
|
||||||
- Level: 2
|
- Level: 2
|
||||||
Amount: 40
|
Amount: 40
|
||||||
- Id: 2496
|
# - Id: 2496 # Removed on kRO
|
||||||
Name: GN_MAKEBOMB
|
# Name: GN_MAKEBOMB
|
||||||
Description: Create Bomb
|
# Description: Create Bomb
|
||||||
MaxLevel: 2
|
# MaxLevel: 2
|
||||||
TargetType: Self
|
|
||||||
DamageFlags:
|
|
||||||
NoDamage: true
|
|
||||||
Hit: Single
|
|
||||||
HitCount: 1
|
|
||||||
Requires:
|
|
||||||
SpCost:
|
|
||||||
- Level: 1
|
|
||||||
Amount: 5
|
|
||||||
- Level: 2
|
|
||||||
Amount: 40
|
|
||||||
- Id: 2497
|
- Id: 2497
|
||||||
Name: GN_S_PHARMACY
|
Name: GN_S_PHARMACY
|
||||||
Description: Special Pharmacy
|
Description: Special Pharmacy
|
||||||
@ -27425,17 +27400,10 @@ Body:
|
|||||||
HitCount: 1
|
HitCount: 1
|
||||||
Requires:
|
Requires:
|
||||||
SpCost: 12
|
SpCost: 12
|
||||||
- Id: 2498
|
# - Id: 2498 # Removed on kRO
|
||||||
Name: GN_SLINGITEM_RANGEMELEEATK
|
# Name: GN_SLINGITEM_RANGEMELEEATK
|
||||||
Description: Sling Item Attack
|
# Description: Sling Item Attack
|
||||||
MaxLevel: 1
|
# MaxLevel: 1
|
||||||
Type: Weapon
|
|
||||||
TargetType: Attack
|
|
||||||
Range: 11
|
|
||||||
Hit: Single
|
|
||||||
HitCount: 1
|
|
||||||
Requires:
|
|
||||||
SpCost: 1
|
|
||||||
- Id: 2533
|
- Id: 2533
|
||||||
Name: ALL_ODINS_RECALL
|
Name: ALL_ODINS_RECALL
|
||||||
Description: Odin's Recall
|
Description: Odin's Recall
|
||||||
|
@ -179,4 +179,3 @@
|
|||||||
2303,2048 //SC_BLOODYLUST
|
2303,2048 //SC_BLOODYLUST
|
||||||
2419,2048 //WM_POEMOFNETHERWORLD
|
2419,2048 //WM_POEMOFNETHERWORLD
|
||||||
2482,2048 //GN_WALLOFTHORN
|
2482,2048 //GN_WALLOFTHORN
|
||||||
2493,2048 //GN_SLINGITEM
|
|
||||||
|
@ -3403,10 +3403,8 @@
|
|||||||
4071,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4071,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4071,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4071,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4071,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4071,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4071,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4071,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4071,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4071,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4071,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4071,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
@ -3847,10 +3845,8 @@
|
|||||||
4078,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4078,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4078,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4078,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4078,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4078,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4078,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4078,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4078,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4078,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4078,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4078,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
@ -5056,10 +5052,8 @@
|
|||||||
4107,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4107,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4107,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4107,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4107,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4107,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4107,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4107,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4107,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4107,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4107,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4107,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
|
@ -1,151 +1,176 @@
|
|||||||
// Homunculus Experience Tables
|
// Homunculus Experience Tables
|
||||||
347
|
50
|
||||||
545
|
110
|
||||||
891
|
180
|
||||||
1485
|
260
|
||||||
2178
|
350
|
||||||
3168
|
630
|
||||||
3762
|
950
|
||||||
4158
|
1310
|
||||||
4505
|
1710
|
||||||
4900
|
2150
|
||||||
5390
|
3180
|
||||||
5880
|
4300
|
||||||
5978
|
5510
|
||||||
6223
|
6810
|
||||||
6566
|
8200
|
||||||
7203
|
10800
|
||||||
7840
|
13560
|
||||||
8232
|
16480
|
||||||
8624
|
19560
|
||||||
8924
|
22800
|
||||||
9409
|
28090
|
||||||
9991
|
33630
|
||||||
10670
|
39420
|
||||||
11446
|
45460
|
||||||
12610
|
51750
|
||||||
13580
|
61150
|
||||||
14550
|
70910
|
||||||
15520
|
81030
|
||||||
16490
|
91510
|
||||||
17460
|
102350
|
||||||
18430
|
117580
|
||||||
19400
|
133300
|
||||||
20370
|
149510
|
||||||
21340
|
166210
|
||||||
22504
|
183400
|
||||||
23280
|
206480
|
||||||
25220
|
230200
|
||||||
26675
|
254560
|
||||||
28130
|
279560
|
||||||
28800
|
305200
|
||||||
30240
|
338450
|
||||||
31680
|
372510
|
||||||
32640
|
407380
|
||||||
34560
|
443060
|
||||||
36000
|
479550
|
||||||
36480
|
525590
|
||||||
38400
|
572630
|
||||||
40320
|
620670
|
||||||
42720
|
669710
|
||||||
45120
|
719750
|
||||||
47040
|
781500
|
||||||
48960
|
844460
|
||||||
50880
|
908630
|
||||||
52800
|
974010
|
||||||
54720
|
1040600
|
||||||
56640
|
1121280
|
||||||
59040
|
1203400
|
||||||
60480
|
1286960
|
||||||
62400
|
1371960
|
||||||
64320
|
1458400
|
||||||
66240
|
1561530
|
||||||
67200
|
1666350
|
||||||
70080
|
1772860
|
||||||
73920
|
1881060
|
||||||
76800
|
1990950
|
||||||
80640
|
2120350
|
||||||
84480
|
2251710
|
||||||
87360
|
2385030
|
||||||
91200
|
2520310
|
||||||
104500
|
2657550
|
||||||
121600
|
2817340
|
||||||
133000
|
2979380
|
||||||
147250
|
3143670
|
||||||
154850
|
3310210
|
||||||
161500
|
3479000
|
||||||
171000
|
3673600
|
||||||
178600
|
3870760
|
||||||
185250
|
4070480
|
||||||
190000
|
4272760
|
||||||
218500
|
4477600
|
||||||
247000
|
4711730
|
||||||
285000
|
4948750
|
||||||
332500
|
5188660
|
||||||
380000
|
5431460
|
||||||
456000
|
5677150
|
||||||
522500
|
5955830
|
||||||
570000
|
6237750
|
||||||
646000
|
6522910
|
||||||
712500
|
6811310
|
||||||
855000
|
7102950
|
||||||
950000
|
7431500
|
||||||
1140000
|
7763660
|
||||||
1425000
|
8099430
|
||||||
1710000
|
8438810
|
||||||
1995000
|
8781800
|
||||||
2280000
|
9165840
|
||||||
2660000
|
9553880
|
||||||
3135000
|
9945920
|
||||||
3800000
|
10350000
|
||||||
4124000
|
10462000
|
||||||
4260000
|
10580000
|
||||||
4462000
|
10700000
|
||||||
4527000
|
10826000
|
||||||
4779000
|
10980000
|
||||||
4921000
|
11150000
|
||||||
4984000
|
11334000
|
||||||
5118000
|
11520000
|
||||||
5353000
|
11712000
|
||||||
5438000
|
11906000
|
||||||
5507000
|
12108000
|
||||||
5610000
|
12317000
|
||||||
5776000
|
12530000
|
||||||
5867000
|
12745000
|
||||||
6000000
|
12968000
|
||||||
6116000
|
13193000
|
||||||
6241000
|
13420000
|
||||||
6373000
|
13653000
|
||||||
6498000
|
13890000
|
||||||
6639000
|
14130000
|
||||||
6720000
|
14374200
|
||||||
6907000
|
14620000
|
||||||
7025000
|
14870000
|
||||||
7105000
|
15123200
|
||||||
7264000
|
15378000
|
||||||
7454000
|
15638000
|
||||||
7611000
|
15900000
|
||||||
7688000
|
16164000
|
||||||
7735000
|
16430000
|
||||||
7940000
|
16698000
|
||||||
8020000
|
16970000
|
||||||
8198000
|
17245000
|
||||||
8318000
|
17523000
|
||||||
8376000
|
17804000
|
||||||
8469000
|
18090000
|
||||||
8528000
|
18380000
|
||||||
8573000
|
18675000
|
||||||
8650000
|
18974000
|
||||||
8701000
|
19280000
|
||||||
8769000
|
19588000
|
||||||
8814000
|
19900000
|
||||||
8820000
|
20215000
|
||||||
8826000
|
20534000
|
||||||
8838000
|
20854200
|
||||||
8887000
|
21180000
|
||||||
8905000
|
21509500
|
||||||
8916000
|
21847000
|
||||||
8922000
|
22197000
|
||||||
8966000
|
22558000
|
||||||
9094000
|
22930000
|
||||||
0
|
23320000
|
||||||
|
24500000
|
||||||
|
25750000
|
||||||
|
26750000
|
||||||
|
28000000
|
||||||
|
29000000
|
||||||
|
30250000
|
||||||
|
31250000
|
||||||
|
32500000
|
||||||
|
33500000
|
||||||
|
34750000
|
||||||
|
36250000
|
||||||
|
38050000
|
||||||
|
40210000
|
||||||
|
42800000
|
||||||
|
47982500
|
||||||
|
50572500
|
||||||
|
53680000
|
||||||
|
57410000
|
||||||
|
61887500
|
||||||
|
70842500
|
||||||
|
75320000
|
||||||
|
80692500
|
||||||
|
87140000
|
||||||
|
94875000
|
||||||
|
0
|
||||||
|
@ -616,67 +616,69 @@
|
|||||||
//-- Petti Tail Noodle <-- GN_MIX_COOKING Lv1, Mix Cook Book, 1 Melange Pot, 2 Petti Tail, 1 Fine Noodle, 1 Cool Gravy
|
//-- Petti Tail Noodle <-- GN_MIX_COOKING Lv1, Mix Cook Book, 1 Melange Pot, 2 Petti Tail, 1 Fine Noodle, 1 Cool Gravy
|
||||||
245,12434,27,2495,1,11022,0,6248,1,6260,2,6261,1,6262,1
|
245,12434,27,2495,1,11022,0,6248,1,6260,2,6261,1,6262,1
|
||||||
|
|
||||||
//---- Create Bomb --- ItemLV=28 ---------------
|
//---- Create Bomb --- ItemLV=28 --------------- Removed skill (free slot)
|
||||||
//-- Apple Bomb <-- GN_MAKEBOMB Lv1, Apple Bomb CB, 1 Apple, 1 Scell, 1 Detonator, 1 Gun Powder
|
|
||||||
246,13260,28,2496,1,6279,0,512,1,911,1,1051,1,6244,1
|
|
||||||
//-- Coconut Bomb <-- GN_MAKEBOMB Lv1, Coconut Bomb CB, 1 Detonator, 1 Coconut Fruit, 2 Gun Powder
|
|
||||||
247,13261,28,2496,1,6281,0,1051,1,6263,1,6244,2
|
|
||||||
//-- Melon Bomb <-- GN_MAKEBOMB Lv1, Melon Bomb CB, 1 Sticky Mucus, 1 Detonator, 2 Gun Powder, 1 Melon
|
|
||||||
248,13262,28,2496,1,6282,0,938,1,1051,1,6244,2,6264,1
|
|
||||||
//-- Pineapple Bomb <-- GN_MAKEBOMB Lv1, Pinepple Bomb CB, 1 Cactus Needle, 1 Detonator, 3 Gun Powder, 1 Pineapple
|
|
||||||
249,13263,28,2496,1,6280,0,952,1,1051,1,6244,3,6265,1
|
|
||||||
//-- Banana Bomb <-- GN_MAKEBOMB Lv1, Banana Bomb CB, 1 Banana, 1 Detonator, 4 Gun Powder, 1 Mould Powder
|
|
||||||
250,13264,28,2496,1,6283,0,513,1,1051,1,6244,4,7001,1
|
|
||||||
|
|
||||||
//---- Special Pharmacy --- ItemLV=29 ----------
|
//---- Special Pharmacy --- ItemLV=29 ----------
|
||||||
//-- Seed Of Horny Plant <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Prickly Fruit
|
//-- Seed Of Horny Plant <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Prickly Fruit
|
||||||
251,6210,29,2497,1,6284,0,576,10
|
246,6210,29,2497,1,6284,0,576,10
|
||||||
//-- Bloodsuck Plant Seed <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Root Of Maneater
|
//-- Bloodsuck Plant Seed <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Root Of Maneater
|
||||||
252,6211,29,2497,1,6284,0,1033,10
|
247,6211,29,2497,1,6284,0,1033,10
|
||||||
//-- Bomb Mushroom Spore <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Mushroom Spore, 2 Gun Powder, 5 Poison Spore
|
//-- Bomb Mushroom Spore <-- GN_S_PHARMACY Lv1, Plant Genetic Grow, 10 Mushroom Spore, 2 Gun Powder, 5 Poison Spore
|
||||||
253,6212,29,2497,1,6284,0,921,10,6244,2,7033,5
|
248,6212,29,2497,1,6284,0,921,10,6244,2,7033,5
|
||||||
//-- HP Increase Potion (Small) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 10 White Herb, 5 Monster's Feed, 10 Empty Bottle, 1 Hot Sauce
|
//-- HP Increase Potion (Small) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 10 White Herb, 5 Monster's Feed, 10 Empty Bottle, 1 Hot Sauce
|
||||||
254,12422,29,2497,1,11023,0,509,10,528,5,713,10,7455,1
|
249,12422,29,2497,1,11023,0,509,10,528,5,713,10,7455,1
|
||||||
//-- HP Increase Potion (Medium) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 10 Yellow Herb, 10 White Herb, 10 Empty Bottle, 1 Hot Sauce
|
//-- HP Increase Potion (Medium) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 10 Yellow Herb, 10 White Herb, 10 Empty Bottle, 1 Hot Sauce
|
||||||
255,12423,29,2497,1,11023,0,508,10,509,10,713,10,7455,1
|
250,12423,29,2497,1,11023,0,508,10,509,10,713,10,7455,1
|
||||||
//-- HP Increase Potion (Large) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 15 White Herb, 3 Fruit Of Mastela, 1 Holy Water, 10 Empty Bottle, 1 Hot Sauce
|
//-- HP Increase Potion (Large) <-- GN_S_PHARMACY Lv1, Increase Stamina Study, 15 White Herb, 3 Fruit Of Mastela, 1 Holy Water, 10 Empty Bottle, 1 Hot Sauce
|
||||||
256,12424,29,2497,1,11023,0,509,15,522,3,523,1,713,10,7455,1
|
251,12424,29,2497,1,11023,0,509,15,522,3,523,1,713,10,7455,1
|
||||||
//-- SP Increase Potion (Small) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 10 Grape, 10 Lemon, 10 Empty Bottle, 1 Sweet Sauce
|
//-- SP Increase Potion (Small) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 10 Grape, 10 Lemon, 10 Empty Bottle, 1 Sweet Sauce
|
||||||
257,12425,29,2497,1,11024,0,514,10,568,10,713,10,7453,1
|
252,12425,29,2497,1,11024,0,514,10,568,10,713,10,7453,1
|
||||||
//-- SP Increase Potion (Medium) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 10 Blue Herb, 10 Honey, 10 Empty Bottle, 1 Sweet Sauce
|
//-- SP Increase Potion (Medium) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 10 Blue Herb, 10 Honey, 10 Empty Bottle, 1 Sweet Sauce
|
||||||
258,12426,29,2497,1,11024,0,510,10,518,10,713,10,7453,1
|
253,12426,29,2497,1,11024,0,510,10,518,10,713,10,7453,1
|
||||||
//-- SP Increase Potion (Large) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 15 Blue Herb, 10 Royal Jelly, 10 Empty Bottle, 1 Sweet Sauce
|
//-- SP Increase Potion (Large) <-- GN_S_PHARMACY Lv1, Vital Drink CB, 15 Blue Herb, 10 Royal Jelly, 10 Empty Bottle, 1 Sweet Sauce
|
||||||
259,12427,29,2497,1,11024,0,510,15,526,10,713,10,7453,1
|
254,12427,29,2497,1,11024,0,510,15,526,10,713,10,7453,1
|
||||||
//-- Enrich White Potion Z <-- GN_S_PHARMACY Lv1, Quality Potion Book, 20 White Potion, 10 White Herb, 1 Alchol, 10 Empty Cylinder
|
//-- Enrich White Potion Z <-- GN_S_PHARMACY Lv1, Quality Potion Book, 20 White Potion, 10 White Herb, 1 Alchol, 10 Empty Cylinder
|
||||||
260,12428,29,2497,1,6285,0,504,20,509,10,970,1,1092,10
|
255,12428,29,2497,1,6285,0,504,20,509,10,970,1,1092,10
|
||||||
//-- Vitata 500 <-- GN_S_PHARMACY Lv1, Quality Potion Book, 10 Blue Herb, 10 Grape, 10 Honey, 10 Empty Cylinder
|
//-- Vitata 500 <-- GN_S_PHARMACY Lv1, Quality Potion Book, 10 Blue Herb, 10 Grape, 10 Honey, 10 Empty Cylinder
|
||||||
261,12436,29,2497,1,6285,0,510,10,514,10,518,10,1092,10
|
256,12436,29,2497,1,6285,0,510,10,514,10,518,10,1092,10
|
||||||
//-- Enrich Celermine Juice <-- GN_S_PHARMACY Lv1, Quality Potion Book, 5 Center Potion, 5 Awakening Potion, 10 Empty Cylinder, 5 Hot Sauce
|
//-- Enrich Celermine Juice <-- GN_S_PHARMACY Lv1, Quality Potion Book, 5 Center Potion, 5 Awakening Potion, 10 Empty Cylinder, 5 Hot Sauce
|
||||||
262,12437,29,2497,1,6285,0,645,5,656,5,1092,10,7455,5
|
257,12437,29,2497,1,6285,0,645,5,656,5,1092,10,7455,5
|
||||||
//-- Cure Free <-- GN_S_PHARMACY Lv1, Quality Potion Book, 20 Green Herb, 1 Fruit Of Mastela, 5 Panacea, 1 Leaf Of Yggdrasil, 10 Empty Cylinder
|
//-- Cure Free <-- GN_S_PHARMACY Lv1, Quality Potion Book, 20 Green Herb, 1 Fruit Of Mastela, 5 Panacea, 1 Leaf Of Yggdrasil, 10 Empty Cylinder
|
||||||
263,12475,29,2497,1,6285,0,511,20,522,1,525,5,610,1,1092,10
|
258,12475,29,2497,1,6285,0,511,20,522,1,525,5,610,1,1092,10
|
||||||
|
//-- Golden X <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Yggdrasilberry, 5 Gold
|
||||||
|
//259,100231,29,2497,1,1092,10,607,10,969,5
|
||||||
|
//-- Red Herb Activator <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 45 Red Herb, 5 Yggdrasil Seed
|
||||||
|
//260,100232,29,2497,1,1092,10,507,45,608,5
|
||||||
|
//-- Blue Herb Activator <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 15 Blue Herb, 5 Yggdrasil Seed
|
||||||
|
//261,100233,29,2497,1,1092,10,510,15,608,5
|
||||||
|
//-- Concentrated Red Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 Red Syrup
|
||||||
|
//262,1100003,29,2497,1,1092,10,1093,10,11621,15
|
||||||
|
//-- Concentrated Blue Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 Blue Syrup
|
||||||
|
//263,1100004,29,2497,1,1092,10,1093,10,11624,15
|
||||||
|
//-- Concentrated Golden Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 White Syrup, 15 Yellow Syrup
|
||||||
|
//264,1100005,29,2497,1,1092,10,1093,10,11623,15,11622,15
|
||||||
//===============================================
|
//===============================================
|
||||||
|
|
||||||
//--------------------LEVEL 30-----------
|
//--------------------LEVEL 30-----------
|
||||||
// Novice Red Potion (569) <-- 2 Red Herbs, 1 Apple
|
// Novice Red Potion (569) <-- 2 Red Herbs, 1 Apple
|
||||||
264,569,30,0,0,11058,0,507,2,512,1
|
265,569,30,0,0,11058,0,507,2,512,1
|
||||||
// Novice Magnifier (12325) <-- 3 Fine-grained Trunk, 1 Jellopy
|
// Novice Magnifier (12325) <-- 3 Fine-grained Trunk, 1 Jellopy
|
||||||
265,12325,30,0,0,11058,0,1066,3,909,1
|
266,12325,30,0,0,11058,0,1066,3,909,1
|
||||||
// Novice Fly Wing (12323) <-- 2 Fluffs, 2 Feathers, 2 Jellopies
|
// Novice Fly Wing (12323) <-- 2 Fluffs, 2 Feathers, 2 Jellopies
|
||||||
266,12323,30,0,0,11058,0,914,2,949,2,909,2
|
267,12323,30,0,0,11058,0,914,2,949,2,909,2
|
||||||
// Novice Cutter (13040) <-- 10 Shells, 10 Worm Peelings, 1 Phracon
|
// Novice Cutter (13040) <-- 10 Shells, 10 Worm Peelings, 1 Phracon
|
||||||
267,13040,30,0,0,11058,0,935,10,955,10,1010,1
|
268,13040,30,0,0,11058,0,935,10,955,10,1010,1
|
||||||
// Little Unripe Apple (12846) <-- 1 Apple, 1 Green Herb
|
// Little Unripe Apple (12846) <-- 1 Apple, 1 Green Herb
|
||||||
268,12846,30,0,0,11058,0,512,1,511,1
|
269,12846,30,0,0,11058,0,512,1,511,1
|
||||||
// Four Leaf Clover (706) <-- 200 Clovers, 200 Sticky Mucus
|
// Four Leaf Clover (706) <-- 200 Clovers, 200 Sticky Mucus
|
||||||
269,706,30,0,0,11058,0,705,200,938,200
|
270,706,30,0,0,11058,0,705,200,938,200
|
||||||
// Banana Juice (532) <-- 1 Banana, 1 Milk
|
// Banana Juice (532) <-- 1 Banana, 1 Milk
|
||||||
270,532,30,0,0,11058,0,513,1,519,1
|
271,532,30,0,0,11058,0,513,1,519,1
|
||||||
// Apple Juice (531) <-- 1 Apple, 1 Milk
|
// Apple Juice (531) <-- 1 Apple, 1 Milk
|
||||||
271,531,30,0,0,11058,0,512,1,519,1
|
272,531,30,0,0,11058,0,512,1,519,1
|
||||||
// Carrot Juice (534) <-- 1 Carrot, 1 Milk
|
// Carrot Juice (534) <-- 1 Carrot, 1 Milk
|
||||||
272,534,30,0,0,11058,0,515,1,519,1
|
273,534,30,0,0,11058,0,515,1,519,1
|
||||||
// Grape Juice (533) <-- 1 Grape, 1 Milk
|
// Grape Juice (533) <-- 1 Grape, 1 Milk
|
||||||
273,533,30,0,0,11058,0,514,1,519,1
|
274,533,30,0,0,11058,0,514,1,519,1
|
||||||
// Unripe Apple (619) <-- 10 Sticky Mucus, 20 Green Herbs, 10 Apples
|
// Unripe Apple (619) <-- 10 Sticky Mucus, 20 Green Herbs, 10 Apples
|
||||||
274,619,30,0,0,11058,0,938,10,511,20,512,10
|
275,619,30,0,0,11058,0,938,10,511,20,512,10
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -56,7 +56,6 @@
|
|||||||
395,4 //CG_MOONLIT
|
395,4 //CG_MOONLIT
|
||||||
409,4 //WE_CALLPARENT
|
409,4 //WE_CALLPARENT
|
||||||
410,4 //WE_CALLBABY
|
410,4 //WE_CALLBABY
|
||||||
491,4 //CR_CULTIVATION
|
|
||||||
530,4 //NJ_KIRIKAGE
|
530,4 //NJ_KIRIKAGE
|
||||||
691,4 //CASH_ASSUMPTIO
|
691,4 //CASH_ASSUMPTIO
|
||||||
2284,4 //SC_FATALMENACE
|
2284,4 //SC_FATALMENACE
|
||||||
@ -79,7 +78,6 @@
|
|||||||
395,8 //CG_MOONLIT
|
395,8 //CG_MOONLIT
|
||||||
409,8 //WE_CALLPARENT
|
409,8 //WE_CALLPARENT
|
||||||
410,8 //WE_CALLBABY
|
410,8 //WE_CALLBABY
|
||||||
491,8 //CR_CULTIVATION
|
|
||||||
411,8 //TK_RUN
|
411,8 //TK_RUN
|
||||||
426,8 //TK_HIGHJUMP
|
426,8 //TK_HIGHJUMP
|
||||||
427,8 //SG_FEEL
|
427,8 //SG_FEEL
|
||||||
@ -132,7 +130,6 @@
|
|||||||
409,16 // WE_CALLPARENT
|
409,16 // WE_CALLPARENT
|
||||||
410,16 // WE_CALLBABY
|
410,16 // WE_CALLBABY
|
||||||
426,16 // TK_HIGHJUMP
|
426,16 // TK_HIGHJUMP
|
||||||
491,16 // CR_CULTIVATION
|
|
||||||
529,16 // NJ_SHADOWJUMP
|
529,16 // NJ_SHADOWJUMP
|
||||||
// 530,16 // NJ_KIRIKAGE
|
// 530,16 // NJ_KIRIKAGE
|
||||||
691,16 // CASH_ASSUMPTIO
|
691,16 // CASH_ASSUMPTIO
|
||||||
@ -219,11 +216,9 @@
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
232,2048 //AM_CANNIBALIZE
|
232,2048 //AM_CANNIBALIZE
|
||||||
233,2048 //AM_SPHEREMINE
|
233,2048 //AM_SPHEREMINE
|
||||||
491,2048 //CR_CULTIVATION
|
|
||||||
1013,2048 //BS_GREED
|
1013,2048 //BS_GREED
|
||||||
2419,2048 //WM_POEMOFNETHERWORLD
|
2419,2048 //WM_POEMOFNETHERWORLD
|
||||||
2482,2048 //GN_WALLOFTHORN
|
2482,2048 //GN_WALLOFTHORN
|
||||||
2493,2048 //GN_SLINGITEM
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// Zone 8 - WOE:TE Dungeons
|
// Zone 8 - WOE:TE Dungeons
|
||||||
|
@ -1266,7 +1266,6 @@
|
|||||||
4019,478,10,231,5,0,0,0,0,0,0,0,0 //CR_SLIMPITCHER#Aid Condensed Potion#
|
4019,478,10,231,5,0,0,0,0,0,0,0,0 //CR_SLIMPITCHER#Aid Condensed Potion#
|
||||||
4019,479,5,234,5,235,5,236,5,237,5,0,0 //CR_FULLPROTECTION#Full Protection#
|
4019,479,5,234,5,235,5,236,5,237,5,0,0 //CR_FULLPROTECTION#Full Protection#
|
||||||
4019,490,10,229,5,230,5,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
|
4019,490,10,229,5,230,5,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
|
||||||
4019,491,2,0,0,0,0,0,0,0,0,0,0 //CR_CULTIVATION#Cultivation#
|
|
||||||
4019,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
|
4019,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
|
||||||
4019,446,1,0,0,0,0,0,0,0,0,0,0 //AM_BERSERKPITCHER#Berserk Pitcher#
|
4019,446,1,0,0,0,0,0,0,0,0,0,0 //AM_BERSERKPITCHER#Berserk Pitcher#
|
||||||
4019,496,1,228,10,0,0,0,0,0,0,0,0 //AM_TWILIGHT1#Twilight Alchemy 1#
|
4019,496,1,228,10,0,0,0,0,0,0,0,0 //AM_TWILIGHT1#Twilight Alchemy 1#
|
||||||
@ -3434,10 +3433,8 @@
|
|||||||
4071,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4071,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4071,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4071,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4071,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4071,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4071,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4071,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4071,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4071,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4071,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4071,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
@ -3860,7 +3857,6 @@
|
|||||||
4078,478,10,231,5,0,0,0,0,0,0,0,0 //CR_SLIMPITCHER#Aid Condensed Potion#
|
4078,478,10,231,5,0,0,0,0,0,0,0,0 //CR_SLIMPITCHER#Aid Condensed Potion#
|
||||||
4078,479,5,234,5,235,5,236,5,237,5,0,0 //CR_FULLPROTECTION#Full Protection#
|
4078,479,5,234,5,235,5,236,5,237,5,0,0 //CR_FULLPROTECTION#Full Protection#
|
||||||
4078,490,10,229,5,230,5,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
|
4078,490,10,229,5,230,5,0,0,0,0,0,0 //CR_ACIDDEMONSTRATION#Acid Demonstration#
|
||||||
4078,491,2,0,0,0,0,0,0,0,0,0,0 //CR_CULTIVATION#Cultivation#
|
|
||||||
4078,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
|
4078,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
|
||||||
4078,446,1,0,0,0,0,0,0,0,0,0,0 //AM_BERSERKPITCHER#Berserk Pitcher#
|
4078,446,1,0,0,0,0,0,0,0,0,0,0 //AM_BERSERKPITCHER#Berserk Pitcher#
|
||||||
4078,496,1,228,10,0,0,0,0,0,0,0,0 //AM_TWILIGHT1#Twilight Alchemy 1#
|
4078,496,1,228,10,0,0,0,0,0,0,0,0 //AM_TWILIGHT1#Twilight Alchemy 1#
|
||||||
@ -3880,10 +3876,8 @@
|
|||||||
4078,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4078,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4078,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4078,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4078,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4078,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4078,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4078,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4078,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4078,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4078,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4078,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
@ -5102,10 +5096,8 @@
|
|||||||
4107,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
4107,2486,5,2485,3,0,0,0,0,0,0,0,0 //GN_FIRE_EXPANSION#Fire Expansion#
|
||||||
4107,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
4107,2490,5,2480,3,0,0,0,0,0,0,0,0 //GN_HELLS_PLANT#Hell's Plant#
|
||||||
4107,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
4107,2492,5,2490,3,0,0,0,0,0,0,0,0 //GN_MANDRAGORA#Howling of Mandragora#
|
||||||
4107,2493,1,2494,1,0,0,0,0,0,0,0,0 //GN_SLINGITEM#Sling Item#
|
|
||||||
4107,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
4107,2494,1,0,0,0,0,0,0,0,0,0,0 //GN_CHANGEMATERIAL#Change Material#
|
||||||
4107,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
4107,2495,2,2497,1,0,0,0,0,0,0,0,0 //GN_MIX_COOKING#Mix Cooking#
|
||||||
4107,2496,2,2495,1,0,0,0,0,0,0,0,0 //GN_MAKEBOMB#Create Bomb#
|
|
||||||
4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
|
||||||
4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
|
||||||
4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
|
||||||
|
@ -1046,7 +1046,7 @@ bool battle_check_sc(struct block_list *src, struct block_list *target, struct s
|
|||||||
status_change_end(target, SC_SAFETYWALL, INVALID_TIMER);
|
status_change_end(target, SC_SAFETYWALL, INVALID_TIMER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sc->data[SC_NEUTRALBARRIER] && ((d->flag&(BF_LONG|BF_MAGIC)) == BF_LONG || skill_id == CR_ACIDDEMONSTRATION)) {
|
if (sc->data[SC_NEUTRALBARRIER] && (d->flag&(BF_LONG|BF_MAGIC)) == BF_LONG) {
|
||||||
d->dmg_lv = ATK_MISS;
|
d->dmg_lv = ATK_MISS;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1350,7 +1350,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|||||||
if (sc->data[SC_DEFENDER] &&
|
if (sc->data[SC_DEFENDER] &&
|
||||||
skill_id != NJ_ZENYNAGE && skill_id != KO_MUCHANAGE &&
|
skill_id != NJ_ZENYNAGE && skill_id != KO_MUCHANAGE &&
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) || skill_id == CR_ACIDDEMONSTRATION || skill_id == GN_FIRE_EXPANSION_ACID))
|
((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) || skill_id == GN_FIRE_EXPANSION_ACID))
|
||||||
#else
|
#else
|
||||||
(flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON))
|
(flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON))
|
||||||
#endif
|
#endif
|
||||||
@ -3876,6 +3876,13 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|||||||
skillratio += 100 + 50 * skill_lv;
|
skillratio += 100 + 50 * skill_lv;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
#ifdef RENEWAL
|
||||||
|
case CR_ACIDDEMONSTRATION:
|
||||||
|
skillratio += -100 + 200 * skill_lv + sstatus->int_ + sstatus->vit; // !TODO: Confirm status bonus
|
||||||
|
if (target->type == BL_PC)
|
||||||
|
skillratio /= 2;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case CG_ARROWVULCAN:
|
case CG_ARROWVULCAN:
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
skillratio += 400 + 100 * skill_lv;
|
skillratio += 400 + 100 * skill_lv;
|
||||||
@ -4405,47 +4412,26 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_CARTCANNON:
|
case GN_CARTCANNON:
|
||||||
// ATK [{( Cart Remodeling Skill Level x 50 ) x ( INT / 40 )} + ( Cart Cannon Skill Level x 60 )] %
|
// ATK [{( INT / (6 - ( Cart Remodeling Skill Level ) )} + ( Cart Cannon Skill Level x 350 )] %
|
||||||
skillratio += -100 + 60 * skill_lv + ((sd) ? pc_checkskill(sd, GN_REMODELING_CART) : 1) * 50 * status_get_int(src) / 40;
|
skillratio += -100 + 350 * skill_lv + sstatus->int_ / (6 - (sd ? pc_checkskill(sd, GN_REMODELING_CART) : 1));
|
||||||
|
RE_LVL_DMOD(100);
|
||||||
break;
|
break;
|
||||||
case GN_SPORE_EXPLOSION:
|
case GN_SPORE_EXPLOSION:
|
||||||
skillratio += -100 + 150 * skill_lv + 200 + status_get_int(src);
|
if (wd->miscflag & 2048)
|
||||||
|
skillratio += 200; // Target
|
||||||
|
skillratio += -100 + 180 * skill_lv + sstatus->int_;
|
||||||
RE_LVL_DMOD(100);
|
RE_LVL_DMOD(100);
|
||||||
break;
|
break;
|
||||||
case GN_WALLOFTHORN:
|
case GN_WALLOFTHORN:
|
||||||
skillratio += 10 * skill_lv;
|
skillratio += 10 * skill_lv;
|
||||||
break;
|
break;
|
||||||
case GN_CRAZYWEED_ATK:
|
case GN_CRAZYWEED_ATK:
|
||||||
skillratio += 400 + 100 * skill_lv;
|
skillratio += -100 + 700 + 100 * skill_lv;
|
||||||
|
RE_LVL_DMOD(100);
|
||||||
break;
|
break;
|
||||||
case GN_SLINGITEM_RANGEMELEEATK:
|
case GN_HELLS_PLANT_ATK:
|
||||||
if( sd ) {
|
skillratio += -100 + 500 * skill_lv + sstatus->int_ * (10 - (sd ? pc_checkskill(sd, AM_CANNIBALIZE) : 0)); // !TODO: Confirm INT and Cannibalize bonus
|
||||||
switch( sd->itemid ) {
|
RE_LVL_DMOD(100);
|
||||||
case ITEMID_APPLE_BOMB:
|
|
||||||
skillratio += 200 + status_get_str(src) + status_get_dex(src);
|
|
||||||
break;
|
|
||||||
case ITEMID_COCONUT_BOMB:
|
|
||||||
case ITEMID_PINEAPPLE_BOMB:
|
|
||||||
skillratio += 700 + status_get_str(src) + status_get_dex(src);
|
|
||||||
break;
|
|
||||||
case ITEMID_MELON_BOMB:
|
|
||||||
skillratio += 400 + status_get_str(src) + status_get_dex(src);
|
|
||||||
break;
|
|
||||||
case ITEMID_BANANA_BOMB:
|
|
||||||
skillratio += 777 + status_get_str(src) + status_get_dex(src);
|
|
||||||
break;
|
|
||||||
case ITEMID_BLACK_LUMP:
|
|
||||||
skillratio += -100 + (status_get_str(src) + status_get_agi(src) + status_get_dex(src)) / 3;
|
|
||||||
break;
|
|
||||||
case ITEMID_BLACK_HARD_LUMP:
|
|
||||||
skillratio += -100 + (status_get_str(src) + status_get_agi(src) + status_get_dex(src)) / 2;
|
|
||||||
break;
|
|
||||||
case ITEMID_VERY_HARD_LUMP:
|
|
||||||
skillratio += -100 + status_get_str(src) + status_get_agi(src) + status_get_dex(src);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
RE_LVL_DMOD(100);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
// Physical Elemantal Spirits Attack Skills
|
// Physical Elemantal Spirits Attack Skills
|
||||||
case EL_CIRCLE_OF_FIRE:
|
case EL_CIRCLE_OF_FIRE:
|
||||||
@ -4503,28 +4489,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
|||||||
skillratio += -100 + 20 * skill_lv;
|
skillratio += -100 + 20 * skill_lv;
|
||||||
break;
|
break;
|
||||||
case MH_NEEDLE_OF_PARALYZE:
|
case MH_NEEDLE_OF_PARALYZE:
|
||||||
skillratio += 600 + 100 * skill_lv;
|
skillratio += -100 + 300 * skill_lv * status_get_lv(src) / 100 + sstatus->dex; // !TODO: Confirm Base Level and DEX bonus
|
||||||
break;
|
break;
|
||||||
case MH_STAHL_HORN:
|
case MH_STAHL_HORN:
|
||||||
skillratio += 400 + 100 * skill_lv * status_get_lv(src) / 150;
|
skillratio += 900 + 100 * skill_lv * status_get_lv(src) / 150 + sstatus->vit; // !TODO: Confirm VIT bonus
|
||||||
break;
|
break;
|
||||||
case MH_LAVA_SLIDE:
|
case MH_LAVA_SLIDE:
|
||||||
skillratio += -100 + 70 * skill_lv;
|
skillratio += -100 + 70 * skill_lv;
|
||||||
break;
|
break;
|
||||||
case MH_SONIC_CRAW:
|
case MH_SONIC_CRAW:
|
||||||
skillratio += -100 + 40 * skill_lv * status_get_lv(src) / 150;
|
skillratio += -100 + 60 * skill_lv * status_get_lv(src) / 150;
|
||||||
break;
|
break;
|
||||||
case MH_SILVERVEIN_RUSH:
|
case MH_SILVERVEIN_RUSH:
|
||||||
skillratio += -100 + 150 * skill_lv * status_get_lv(src) / 100;
|
skillratio += -100 + 250 * skill_lv * status_get_lv(src) / 100 + sstatus->str; // !TODO: Confirm STR bonus
|
||||||
break;
|
break;
|
||||||
case MH_MIDNIGHT_FRENZY:
|
case MH_MIDNIGHT_FRENZY:
|
||||||
skillratio += -100 + 300 * skill_lv * status_get_lv(src) / 150;
|
skillratio += -100 + 350 * skill_lv * status_get_lv(src) / 150 + sstatus->str; // !TODO: Confirm STR bonus
|
||||||
break;
|
|
||||||
case MH_TINDER_BREAKER:
|
|
||||||
skillratio += -100 + (100 * skill_lv + 3 * status_get_str(src)) * status_get_lv(src) / 120;
|
|
||||||
break;
|
|
||||||
case MH_CBC:
|
|
||||||
skillratio += 300 * skill_lv + 4 * status_get_lv(src);
|
|
||||||
break;
|
break;
|
||||||
case MH_MAGMA_FLOW:
|
case MH_MAGMA_FLOW:
|
||||||
skillratio += -100 + (100 * skill_lv + 3 * status_get_lv(src)) * status_get_lv(src) / 120;
|
skillratio += -100 + (100 * skill_lv + 3 * status_get_lv(src)) * status_get_lv(src) / 120;
|
||||||
@ -5746,7 +5726,16 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
} else
|
} else
|
||||||
ATK_ADD(wd.damage, wd.damage2, (sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src));
|
ATK_ADD(wd.damage, wd.damage2, (sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MH_TINDER_BREAKER:
|
||||||
|
ATK_ADD(wd.damage, wd.damage2, 2500 * skill_lv + status_get_lv(src)); // !TODO: Confirm base level bonus
|
||||||
|
break;
|
||||||
|
case MH_CBC:
|
||||||
|
ATK_ADD(wd.damage, wd.damage2, 4000 * skill_lv + status_get_lv(src)); // !TODO: Confirm base level bonus
|
||||||
|
break;
|
||||||
|
case MH_EQC:
|
||||||
|
ATK_ADD(wd.damage, wd.damage2, 6000 * skill_lv + status_get_lv(src)); // !TODO: Confirm base level bonus
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sd) {
|
if(sd) {
|
||||||
@ -5799,7 +5788,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
switch(skill_id) {
|
switch(skill_id) {
|
||||||
case NJ_ISSEN:
|
case NJ_ISSEN:
|
||||||
case ASC_BREAKER:
|
case ASC_BREAKER:
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
case GN_FIRE_EXPANSION_ACID:
|
case GN_FIRE_EXPANSION_ACID:
|
||||||
break; //These skills will do a card fix later
|
break; //These skills will do a card fix later
|
||||||
default:
|
default:
|
||||||
@ -5820,7 +5808,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
switch (skill_id) {
|
switch (skill_id) {
|
||||||
case MC_CARTREVOLUTION:
|
case MC_CARTREVOLUTION:
|
||||||
case MO_INVESTIGATE:
|
case MO_INVESTIGATE:
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
case SR_GATEOFHELL:
|
case SR_GATEOFHELL:
|
||||||
case GN_FIRE_EXPANSION_ACID:
|
case GN_FIRE_EXPANSION_ACID:
|
||||||
case KO_BAKURETSU:
|
case KO_BAKURETSU:
|
||||||
@ -5882,7 +5869,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
switch (skill_id) {
|
switch (skill_id) {
|
||||||
case NJ_ISSEN:
|
case NJ_ISSEN:
|
||||||
case ASC_BREAKER:
|
case ASC_BREAKER:
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
case GN_FIRE_EXPANSION_ACID:
|
case GN_FIRE_EXPANSION_ACID:
|
||||||
return wd; //These skills will do a GVG fix later
|
return wd; //These skills will do a GVG fix later
|
||||||
default:
|
default:
|
||||||
@ -6481,17 +6467,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
skillratio += 1100;
|
skillratio += 1100;
|
||||||
break;
|
break;
|
||||||
case MH_ERASER_CUTTER:
|
case MH_ERASER_CUTTER:
|
||||||
skillratio += 400 + 100 * skill_lv + (skill_lv%2 > 0 ? 0 : 300);
|
|
||||||
break;
|
|
||||||
case MH_XENO_SLASHER:
|
case MH_XENO_SLASHER:
|
||||||
if(skill_lv%2)
|
skillratio += -100 + 350 * skill_lv * status_get_lv(src) / 100 + sstatus->int_; // !TODO: Confirm Base Level and INT bonus
|
||||||
skillratio += 350 + 50 * skill_lv; //500:600:700
|
|
||||||
else
|
|
||||||
skillratio += 400 + 100 * skill_lv; //700:900
|
|
||||||
break;
|
break;
|
||||||
case MH_HEILIGE_STANGE:
|
case MH_HEILIGE_STANGE:
|
||||||
skillratio += 400 + 250 * skill_lv;
|
skillratio += -100 + 1000 + 250 * skill_lv * status_get_lv(src) / 150 + sstatus->vit; // !TODO: Confirm VIT bonus
|
||||||
skillratio = (skillratio * status_get_lv(src)) / 150;
|
|
||||||
break;
|
break;
|
||||||
case MH_POISON_MIST:
|
case MH_POISON_MIST:
|
||||||
skillratio += -100 + 40 * skill_lv * status_get_lv(src) / 100;
|
skillratio += -100 + 40 * skill_lv * status_get_lv(src) / 100;
|
||||||
@ -6548,7 +6528,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
}
|
}
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
switch(skill_id) { // These skills will do a card fix later
|
switch(skill_id) { // These skills will do a card fix later
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
case ASC_BREAKER:
|
case ASC_BREAKER:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -6686,7 +6665,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
switch(skill_id) {
|
switch(skill_id) {
|
||||||
case ASC_BREAKER:
|
case ASC_BREAKER:
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
return ad; //These skills will do a GVG fix later
|
return ad; //These skills will do a GVG fix later
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -6886,7 +6864,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|||||||
md.damage = 0;
|
md.damage = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CR_ACIDDEMONSTRATION:
|
|
||||||
case GN_FIRE_EXPANSION_ACID:
|
case GN_FIRE_EXPANSION_ACID:
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
// Official Renewal formula [helvetica]
|
// Official Renewal formula [helvetica]
|
||||||
@ -6979,19 +6956,12 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|||||||
case GN_THORNS_TRAP:
|
case GN_THORNS_TRAP:
|
||||||
md.damage = 100 + 200 * skill_lv + status_get_int(src);
|
md.damage = 100 + 200 * skill_lv + status_get_int(src);
|
||||||
break;
|
break;
|
||||||
case GN_HELLS_PLANT_ATK:
|
|
||||||
//[{( Hell Plant Skill Level x Casters Base Level ) x 10 } + {( Casters INT x 7 ) / 2 } x { 18 + ( Casters Job Level / 4 )] x ( 5 / ( 10 - Summon Flora Skill Level ))
|
|
||||||
md.damage = skill_lv * status_get_lv(src) * 10 + status_get_int(src) * 7 / 2 * (18 + (sd ? sd->status.job_level : 0) / 4) * 5 / (10 - (sd ? pc_checkskill(sd, AM_CANNIBALIZE) : 0));
|
|
||||||
break;
|
|
||||||
case RL_B_TRAP:
|
case RL_B_TRAP:
|
||||||
// kRO 2014-02-12: Damage: Caster's DEX, Target's current HP, Skill Level
|
// kRO 2014-02-12: Damage: Caster's DEX, Target's current HP, Skill Level
|
||||||
md.damage = status_get_dex(src) * 10 + (skill_lv * 3 * status_get_hp(target)) / 100;
|
md.damage = status_get_dex(src) * 10 + (skill_lv * 3 * status_get_hp(target)) / 100;
|
||||||
if (status_bl_has_mode(target, MD_STATUS_IMMUNE))
|
if (status_bl_has_mode(target, MD_STATUS_IMMUNE))
|
||||||
md.damage /= 10;
|
md.damage /= 10;
|
||||||
break;
|
break;
|
||||||
case MH_EQC:
|
|
||||||
md.damage = max(tstatus->hp - sstatus->hp, 0);
|
|
||||||
break;
|
|
||||||
case NPC_MAXPAIN_ATK:
|
case NPC_MAXPAIN_ATK:
|
||||||
if (ssc && ssc->data[SC_MAXPAIN])
|
if (ssc && ssc->data[SC_MAXPAIN])
|
||||||
md.damage = ssc->data[SC_MAXPAIN]->val2;
|
md.damage = ssc->data[SC_MAXPAIN]->val2;
|
||||||
@ -8907,6 +8877,7 @@ static const struct _battle_data {
|
|||||||
{ "hom_idle_no_share", &battle_config.hom_idle_no_share, 0, 0, INT_MAX, },
|
{ "hom_idle_no_share", &battle_config.hom_idle_no_share, 0, 0, INT_MAX, },
|
||||||
{ "devotion_standup_fix", &battle_config.devotion_standup_fix, 1, 0, 1, },
|
{ "devotion_standup_fix", &battle_config.devotion_standup_fix, 1, 0, 1, },
|
||||||
{ "feature.bgqueue", &battle_config.feature_bgqueue, 1, 0, 1, },
|
{ "feature.bgqueue", &battle_config.feature_bgqueue, 1, 0, 1, },
|
||||||
|
{ "homunculus_exp_gain", &battle_config.homunculus_exp_gain, 10, 0, 100, },
|
||||||
|
|
||||||
#include "../custom/battle_config_init.inc"
|
#include "../custom/battle_config_init.inc"
|
||||||
};
|
};
|
||||||
|
@ -673,6 +673,7 @@ struct Battle_Config
|
|||||||
int hom_idle_no_share;
|
int hom_idle_no_share;
|
||||||
int devotion_standup_fix;
|
int devotion_standup_fix;
|
||||||
int feature_bgqueue;
|
int feature_bgqueue;
|
||||||
|
int homunculus_exp_gain;
|
||||||
|
|
||||||
#include "../custom/battle_config_struct.inc"
|
#include "../custom/battle_config_struct.inc"
|
||||||
};
|
};
|
||||||
|
@ -1606,7 +1606,7 @@ void read_homunculus_expdb(void)
|
|||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
continue;
|
continue;
|
||||||
ShowError("Can't read %s\n",line);
|
ShowError("read_homunculus_expdb: Can't read %s\n",line);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (fgets(line, sizeof(line), fp) && j < MAX_LEVEL) {
|
while (fgets(line, sizeof(line), fp) && j < MAX_LEVEL) {
|
||||||
@ -1618,7 +1618,7 @@ void read_homunculus_expdb(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (hexptbl[MAX_LEVEL - 1]) { // Last permitted level have to be 0!
|
if (hexptbl[MAX_LEVEL - 1]) { // Last permitted level have to be 0!
|
||||||
ShowWarning("read_hexptbl: Reached max level in %s [%d]. Remaining lines were not read.\n ",path,MAX_LEVEL);
|
ShowWarning("read_homunculus_expdb: Reached max level in %s [%d]. Remaining lines were not read.\n ",path,MAX_LEVEL);
|
||||||
hexptbl[MAX_LEVEL - 1] = 0;
|
hexptbl[MAX_LEVEL - 1] = 0;
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
@ -176,21 +176,10 @@ enum genetic_item_list
|
|||||||
ITEMID_VITATA500,
|
ITEMID_VITATA500,
|
||||||
ITEMID_CONCENTRATED_CEROMAIN_SOUP,
|
ITEMID_CONCENTRATED_CEROMAIN_SOUP,
|
||||||
ITEMID_CURE_FREE = 12475,
|
ITEMID_CURE_FREE = 12475,
|
||||||
ITEMID_APPLE_BOMB = 13260,
|
ITEMID_BLACK_LUMP = 13265,
|
||||||
ITEMID_COCONUT_BOMB,
|
|
||||||
ITEMID_MELON_BOMB,
|
|
||||||
ITEMID_PINEAPPLE_BOMB,
|
|
||||||
ITEMID_BANANA_BOMB,
|
|
||||||
ITEMID_BLACK_LUMP,
|
|
||||||
ITEMID_BLACK_HARD_LUMP,
|
ITEMID_BLACK_HARD_LUMP,
|
||||||
ITEMID_VERY_HARD_LUMP,
|
ITEMID_VERY_HARD_LUMP,
|
||||||
ITEMID_MYSTERIOUS_POWDER,
|
ITEMID_MYSTERIOUS_POWDER,
|
||||||
ITEMID_HP_INC_POTS_TO_THROW = 13275,
|
|
||||||
ITEMID_HP_INC_POTM_TO_THROW,
|
|
||||||
ITEMID_HP_INC_POTL_TO_THROW,
|
|
||||||
ITEMID_SP_INC_POTS_TO_THROW,
|
|
||||||
ITEMID_SP_INC_POTM_TO_THROW,
|
|
||||||
ITEMID_SP_INC_POTL_TO_THROW,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///Guillotine Cross
|
///Guillotine Cross
|
||||||
|
@ -489,6 +489,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, t_tick tick)
|
|||||||
skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
|
skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
|
||||||
if (sc->data[SC_BANDING])
|
if (sc->data[SC_BANDING])
|
||||||
skill_unit_move_unit_group(skill_id2group(sc->data[SC_BANDING]->val4), bl->m, x1-x0, y1-y0);
|
skill_unit_move_unit_group(skill_id2group(sc->data[SC_BANDING]->val4), bl->m, x1-x0, y1-y0);
|
||||||
|
if (sc->data[SC_HELLS_PLANT])
|
||||||
|
skill_unit_move_unit_group(skill_id2group(sc->data[SC_HELLS_PLANT]->val4), bl->m, x1-x0, y1-y0);
|
||||||
|
|
||||||
if (sc->data[SC_NEUTRALBARRIER_MASTER])
|
if (sc->data[SC_NEUTRALBARRIER_MASTER])
|
||||||
skill_unit_move_unit_group(skill_id2group(sc->data[SC_NEUTRALBARRIER_MASTER]->val2), bl->m, x1-x0, y1-y0);
|
skill_unit_move_unit_group(skill_id2group(sc->data[SC_NEUTRALBARRIER_MASTER]->val2), bl->m, x1-x0, y1-y0);
|
||||||
|
@ -2607,7 +2607,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
base_exp = (unsigned int)cap_value(exp, 1, UINT_MAX);
|
base_exp = (unsigned int)cap_value(exp, 1, UINT_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (map_getmapflag(m, MF_NOJOBEXP) || !md->db->job_exp || md->dmglog[i].flag == MDLF_HOMUN) //Homun earned job-exp is always lost.
|
if (map_getmapflag(m, MF_NOJOBEXP) || !md->db->job_exp
|
||||||
|
#ifndef RENEWAL
|
||||||
|
|| md->dmglog[i].flag == MDLF_HOMUN // Homun earned job-exp is always lost.
|
||||||
|
#endif
|
||||||
|
)
|
||||||
job_exp = 0;
|
job_exp = 0;
|
||||||
else {
|
else {
|
||||||
double exp = apply_rate2(md->db->job_exp, per, 1);
|
double exp = apply_rate2(md->db->job_exp, per, 1);
|
||||||
@ -2648,8 +2652,13 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
flag = 0;
|
flag = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(base_exp && md->dmglog[i].flag == MDLF_HOMUN) //tmpsd[i] is null if it has no homunc.
|
#ifdef RENEWAL
|
||||||
|
if (base_exp && tmpsd[i] && tmpsd[i]->hd)
|
||||||
|
hom_gainexp(tmpsd[i]->hd, base_exp * battle_config.homunculus_exp_gain / 100); // Homunculus only receive 10% of EXP
|
||||||
|
#else
|
||||||
|
if (base_exp && md->dmglog[i].flag == MDLF_HOMUN) //tmpsd[i] is null if it has no homunc.
|
||||||
hom_gainexp(tmpsd[i]->hd, base_exp);
|
hom_gainexp(tmpsd[i]->hd, base_exp);
|
||||||
|
#endif
|
||||||
if(flag) {
|
if(flag) {
|
||||||
if(base_exp || job_exp) {
|
if(base_exp || job_exp) {
|
||||||
if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {
|
if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {
|
||||||
|
@ -10415,6 +10415,10 @@ BUILDIN_FUNC(getexp)
|
|||||||
job = (int) cap_value(job * bonus, 0, INT_MAX);
|
job = (int) cap_value(job * bonus, 0, INT_MAX);
|
||||||
|
|
||||||
pc_gainexp(sd, NULL, base, job, 1);
|
pc_gainexp(sd, NULL, base, job, 1);
|
||||||
|
#ifdef RENEWAL
|
||||||
|
if (base && sd->hd)
|
||||||
|
hom_gainexp(sd->hd, base * battle_config.homunculus_exp_gain / 100); // Homunculus only receive 10% of EXP
|
||||||
|
#endif
|
||||||
|
|
||||||
return SCRIPT_CMD_SUCCESS;
|
return SCRIPT_CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1575,6 +1575,7 @@
|
|||||||
export_constant(SC_USE_SKILL_SP_SHA);
|
export_constant(SC_USE_SKILL_SP_SHA);
|
||||||
export_constant(SC_SP_SHA);
|
export_constant(SC_SP_SHA);
|
||||||
export_constant(SC_SOULCURSE);
|
export_constant(SC_SOULCURSE);
|
||||||
|
export_constant(SC_HELLS_PLANT);
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
export_constant(SC_EXTREMITYFIST2);
|
export_constant(SC_EXTREMITYFIST2);
|
||||||
#endif
|
#endif
|
||||||
|
@ -446,8 +446,6 @@ unsigned short skill_dummy2skill_id(unsigned short skill_id) {
|
|||||||
return GN_CRAZYWEED;
|
return GN_CRAZYWEED;
|
||||||
case GN_HELLS_PLANT_ATK:
|
case GN_HELLS_PLANT_ATK:
|
||||||
return GN_HELLS_PLANT;
|
return GN_HELLS_PLANT;
|
||||||
case GN_SLINGITEM_RANGEMELEEATK:
|
|
||||||
return GN_SLINGITEM;
|
|
||||||
case RL_R_TRIP_PLUSATK:
|
case RL_R_TRIP_PLUSATK:
|
||||||
return RL_R_TRIP;
|
return RL_R_TRIP;
|
||||||
case NPC_MAXPAIN_ATK:
|
case NPC_MAXPAIN_ATK:
|
||||||
@ -1869,31 +1867,9 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
|||||||
case SO_VARETYR_SPEAR:
|
case SO_VARETYR_SPEAR:
|
||||||
sc_start(src,bl, SC_STUN, 5 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
sc_start(src,bl, SC_STUN, 5 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||||
break;
|
break;
|
||||||
case GN_SLINGITEM_RANGEMELEEATK:
|
|
||||||
if( sd ) {
|
|
||||||
switch( sd->itemid ) { // Starting SCs here instead of do it in skill_additional_effect to simplify the code.
|
|
||||||
case ITEMID_COCONUT_BOMB:
|
|
||||||
sc_start(src,bl, SC_STUN, 5 + sd->status.job_level / 2, skill_lv, 1000 * sd->status.job_level / 3);
|
|
||||||
sc_start2(src,bl, SC_BLEEDING, 3 + sd->status.job_level / 2, skill_lv, src->id, 1000 * status_get_lv(src) / 4 + sd->status.job_level / 3);
|
|
||||||
break;
|
|
||||||
case ITEMID_MELON_BOMB:
|
|
||||||
sc_start4(src, bl, SC_MELON_BOMB, 100, skill_lv, 20 + sd->status.job_level, 10 + sd->status.job_level / 2, 0, 1000 * status_get_lv(src) / 4);
|
|
||||||
break;
|
|
||||||
case ITEMID_BANANA_BOMB:
|
|
||||||
{
|
|
||||||
uint16 duration = (battle_config.banana_bomb_duration ? battle_config.banana_bomb_duration : 1000 * sd->status.job_level / 4);
|
|
||||||
|
|
||||||
sc_start(src,bl, SC_BANANA_BOMB_SITDOWN, status_get_lv(src) + sd->status.job_level + sstatus->dex / 6 - status_get_lv(bl) - tstatus->agi / 4 - tstatus->luk / 5, skill_lv, duration);
|
|
||||||
sc_start(src,bl, SC_BANANA_BOMB, 100, skill_lv, 30000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sd->itemid = -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case GN_HELLS_PLANT_ATK:
|
case GN_HELLS_PLANT_ATK:
|
||||||
sc_start(src,bl, SC_STUN, 20 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv));
|
sc_start(src,bl, SC_STUN, 20 + 10 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||||
sc_start2(src,bl, SC_BLEEDING, 5 + 5 * skill_lv, skill_lv, src->id,skill_get_time2(skill_id, skill_lv));
|
sc_start2(src,bl, SC_BLEEDING, 5 + 5 * skill_lv, skill_lv, src->id,skill_get_time(skill_id, skill_lv));
|
||||||
break;
|
break;
|
||||||
case EL_WIND_SLASH: // Non confirmed rate.
|
case EL_WIND_SLASH: // Non confirmed rate.
|
||||||
sc_start2(src,bl, SC_BLEEDING, 25, skill_lv, src->id, skill_get_time(skill_id,skill_lv));
|
sc_start2(src,bl, SC_BLEEDING, 25, skill_lv, src->id, skill_get_time(skill_id,skill_lv));
|
||||||
@ -1934,23 +1910,13 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MH_LAVA_SLIDE:
|
case MH_LAVA_SLIDE:
|
||||||
sc_start4(src,bl, SC_BURNING, 10 * skill_lv, skill_lv, 1000, src->id, 0, skill_get_time2(skill_id, skill_lv));
|
sc_start4(src,bl, SC_BURNING, 5 * skill_lv, skill_lv, 1000, src->id, 0, skill_get_time2(skill_id, skill_lv));
|
||||||
break;
|
break;
|
||||||
case MH_STAHL_HORN:
|
case MH_STAHL_HORN:
|
||||||
sc_start(src,bl, SC_STUN, (20 + 4 * (skill_lv-1)), skill_lv, skill_get_time(skill_id, skill_lv));
|
sc_start(src,bl, SC_STUN, 20 + 2 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||||
break;
|
break;
|
||||||
case MH_NEEDLE_OF_PARALYZE:
|
case MH_NEEDLE_OF_PARALYZE:
|
||||||
sc_start(src,bl, SC_PARALYSIS, 40 + (5*skill_lv), skill_lv, skill_get_time(skill_id, skill_lv));
|
sc_start(src,bl, SC_PARALYSIS, 30 + 5 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||||
break;
|
|
||||||
case MH_SILVERVEIN_RUSH:
|
|
||||||
sc_start4(src,bl,SC_STUN,20 + (5*skill_lv),skill_lv,src->id,0,0,skill_get_time(skill_id,skill_lv));
|
|
||||||
break;
|
|
||||||
case MH_MIDNIGHT_FRENZY:
|
|
||||||
{
|
|
||||||
TBL_HOM *hd = BL_CAST(BL_HOM,src);
|
|
||||||
int spiritball = (hd?hd->homunculus.spiritball:1);
|
|
||||||
sc_start4(src,bl,SC_FEAR,spiritball*(10+2*skill_lv),skill_lv,src->id,0,0,skill_get_time(skill_id,skill_lv));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case MH_XENO_SLASHER:
|
case MH_XENO_SLASHER:
|
||||||
sc_start4(src, bl, SC_BLEEDING, skill_lv, skill_lv, src->id, 0, 0, skill_get_time2(skill_id, skill_lv));
|
sc_start4(src, bl, SC_BLEEDING, skill_lv, skill_lv, src->id, 0, 0, skill_get_time2(skill_id, skill_lv));
|
||||||
@ -3579,12 +3545,6 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|||||||
else // the central target doesn't display an animation
|
else // the central target doesn't display an animation
|
||||||
dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -2, DMG_SPLASH); // needs -2(!) as skill level
|
dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -2, DMG_SPLASH); // needs -2(!) as skill level
|
||||||
break;
|
break;
|
||||||
case GN_SPORE_EXPLOSION:
|
|
||||||
if (flag&SD_ANIMATION)
|
|
||||||
dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, NV_BASIC, -1, DMG_SPLASH);
|
|
||||||
else
|
|
||||||
dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -2, DMG_SPLASH);
|
|
||||||
break;
|
|
||||||
case WL_HELLINFERNO:
|
case WL_HELLINFERNO:
|
||||||
case SR_EARTHSHAKER:
|
case SR_EARTHSHAKER:
|
||||||
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,skill_id,-2,DMG_SINGLE);
|
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,skill_id,-2,DMG_SINGLE);
|
||||||
@ -3632,15 +3592,13 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|||||||
case EL_HURRICANE_ATK:
|
case EL_HURRICANE_ATK:
|
||||||
case KO_BAKURETSU:
|
case KO_BAKURETSU:
|
||||||
case GN_CRAZYWEED_ATK:
|
case GN_CRAZYWEED_ATK:
|
||||||
|
case GN_HELLS_PLANT_ATK:
|
||||||
case SU_SV_ROOTTWIST_ATK:
|
case SU_SV_ROOTTWIST_ATK:
|
||||||
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,-1,DMG_SPLASH);
|
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,-1,DMG_SPLASH);
|
||||||
break;
|
break;
|
||||||
case GN_FIRE_EXPANSION_ACID:
|
case GN_FIRE_EXPANSION_ACID:
|
||||||
dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, CR_ACIDDEMONSTRATION, skill_lv, DMG_MULTI_HIT);
|
dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, CR_ACIDDEMONSTRATION, skill_lv, DMG_MULTI_HIT);
|
||||||
break;
|
break;
|
||||||
case GN_SLINGITEM_RANGEMELEEATK:
|
|
||||||
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,GN_SLINGITEM,-2,DMG_SINGLE);
|
|
||||||
break;
|
|
||||||
case EL_STONE_RAIN:
|
case EL_STONE_RAIN:
|
||||||
dmg.dmotion = clif_skill_damage(dsrc,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,-1,(flag&1)?DMG_MULTI_HIT:DMG_SPLASH);
|
dmg.dmotion = clif_skill_damage(dsrc,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,-1,(flag&1)?DMG_MULTI_HIT:DMG_SPLASH);
|
||||||
break;
|
break;
|
||||||
@ -3967,7 +3925,6 @@ static int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
|
|||||||
case NPC_REVERBERATION:
|
case NPC_REVERBERATION:
|
||||||
case WM_REVERBERATION:
|
case WM_REVERBERATION:
|
||||||
case GN_THORNS_TRAP:
|
case GN_THORNS_TRAP:
|
||||||
case GN_HELLS_PLANT:
|
|
||||||
case RL_B_TRAP:
|
case RL_B_TRAP:
|
||||||
case SC_ESCAPE:
|
case SC_ESCAPE:
|
||||||
//Non stackable on themselves and traps (including venom dust which does not has the trap inf2 set)
|
//Non stackable on themselves and traps (including venom dust which does not has the trap inf2 set)
|
||||||
@ -4044,7 +4001,6 @@ static int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16
|
|||||||
range = 2;
|
range = 2;
|
||||||
break;
|
break;
|
||||||
case SC_MANHOLE:
|
case SC_MANHOLE:
|
||||||
case GN_HELLS_PLANT:
|
|
||||||
range = 0;
|
range = 0;
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
@ -4844,6 +4800,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
case NPC_PETRIFYATTACK:
|
case NPC_PETRIFYATTACK:
|
||||||
case NPC_CURSEATTACK:
|
case NPC_CURSEATTACK:
|
||||||
case NPC_SLEEPATTACK:
|
case NPC_SLEEPATTACK:
|
||||||
|
#ifdef RENEWAL
|
||||||
|
case CR_ACIDDEMONSTRATION:
|
||||||
|
#endif
|
||||||
case LK_AURABLADE:
|
case LK_AURABLADE:
|
||||||
case LK_SPIRALPIERCE:
|
case LK_SPIRALPIERCE:
|
||||||
case ML_SPIRALPIERCE:
|
case ML_SPIRALPIERCE:
|
||||||
@ -4905,7 +4864,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
case SR_GENTLETOUCH_QUIET:
|
case SR_GENTLETOUCH_QUIET:
|
||||||
case WM_SEVERE_RAINSTORM_MELEE:
|
case WM_SEVERE_RAINSTORM_MELEE:
|
||||||
case WM_GREAT_ECHO:
|
case WM_GREAT_ECHO:
|
||||||
case GN_SLINGITEM_RANGEMELEEATK:
|
|
||||||
case KO_SETSUDAN:
|
case KO_SETSUDAN:
|
||||||
case RL_MASS_SPIRAL:
|
case RL_MASS_SPIRAL:
|
||||||
case RL_BANISHING_BUSTER:
|
case RL_BANISHING_BUSTER:
|
||||||
@ -5228,6 +5186,13 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
if( skill_area_temp[1] != bl->id && !inf2[INF2_ISNPC] )
|
if( skill_area_temp[1] != bl->id && !inf2[INF2_ISNPC] )
|
||||||
sflag |= SD_ANIMATION; // original target gets no animation (as well as all NPC skills)
|
sflag |= SD_ANIMATION; // original target gets no animation (as well as all NPC skills)
|
||||||
|
|
||||||
|
switch (skill_id) {
|
||||||
|
case GN_SPORE_EXPLOSION:
|
||||||
|
if (flag&2 && skill_area_temp[1] == bl->id)
|
||||||
|
sflag |= 2048; // Flag for main target
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// If a enemy player is standing next to a mob when splash Es- skill is casted, the player won't get hurt.
|
// If a enemy player is standing next to a mob when splash Es- skill is casted, the player won't get hurt.
|
||||||
if ((skill_id == SP_SHA || skill_id == SP_SWHOO) && !battle_config.allow_es_magic_pc && bl->type != BL_MOB)
|
if ((skill_id == SP_SHA || skill_id == SP_SWHOO) && !battle_config.allow_es_magic_pc && bl->type != BL_MOB)
|
||||||
break;
|
break;
|
||||||
@ -5293,7 +5258,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
//SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets
|
//SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets
|
||||||
//special case: Venom Splasher uses a different range for searching than for splashing
|
//special case: Venom Splasher uses a different range for searching than for splashing
|
||||||
if( flag&SD_LEVEL || skill_get_nk(skill_id, NK_SPLASHSPLIT) )
|
if( flag&SD_LEVEL || skill_get_nk(skill_id, NK_SPLASHSPLIT) )
|
||||||
skill_area_temp[0] = map_foreachinallrange(skill_area_sub, bl, (skill_id == AS_SPLASHER || skill_id == GN_SPORE_EXPLOSION)?1:skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count);
|
skill_area_temp[0] = map_foreachinallrange(skill_area_sub, bl, (skill_id == AS_SPLASHER)?1:skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count);
|
||||||
|
|
||||||
// recursive invocation of skill_castend_damage_id() with flag|1
|
// recursive invocation of skill_castend_damage_id() with flag|1
|
||||||
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, 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), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
|
||||||
@ -5574,8 +5539,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
case SN_FALCONASSAULT:
|
case SN_FALCONASSAULT:
|
||||||
#ifndef RENEWAL
|
#ifndef RENEWAL
|
||||||
case PA_PRESSURE:
|
case PA_PRESSURE:
|
||||||
#endif
|
|
||||||
case CR_ACIDDEMONSTRATION:
|
case CR_ACIDDEMONSTRATION:
|
||||||
|
#endif
|
||||||
case TF_THROWSTONE:
|
case TF_THROWSTONE:
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
case ASC_BREAKER:
|
case ASC_BREAKER:
|
||||||
@ -5584,7 +5549,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
case GS_FLING:
|
case GS_FLING:
|
||||||
case NJ_ZENYNAGE:
|
case NJ_ZENYNAGE:
|
||||||
case GN_THORNS_TRAP:
|
case GN_THORNS_TRAP:
|
||||||
case GN_HELLS_PLANT_ATK:
|
|
||||||
case RL_B_TRAP:
|
case RL_B_TRAP:
|
||||||
skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag);
|
skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag);
|
||||||
break;
|
break;
|
||||||
@ -6223,16 +6187,12 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
|||||||
case MH_CBC:
|
case MH_CBC:
|
||||||
case MH_EQC:
|
case MH_EQC:
|
||||||
{
|
{
|
||||||
int duration = 0;
|
|
||||||
TBL_HOM *hd = BL_CAST(BL_HOM,src);
|
TBL_HOM *hd = BL_CAST(BL_HOM,src);
|
||||||
duration = max(skill_lv,(status_get_str(src)/7 - status_get_str(bl)/10))*1000; //Yommy formula
|
int duration = max(skill_lv, (status_get_str(src) / 7 - status_get_str(bl) / 10)) * 1000; //Yommy formula
|
||||||
|
|
||||||
if (skill_id == MH_TINDER_BREAKER && unit_movepos(src, bl->x, bl->y, 1, 1)) {
|
if (skill_id == MH_TINDER_BREAKER && unit_movepos(src, bl->x, bl->y, 1, 1)) {
|
||||||
clif_blown(src);
|
clif_blown(src);
|
||||||
clif_skill_poseffect(src,skill_id,skill_lv,bl->x,bl->y,tick);
|
clif_skill_poseffect(src,skill_id,skill_lv,bl->x,bl->y,tick);
|
||||||
} else if (skill_id == MH_EQC && status_bl_has_mode(bl, MD_STATUS_IMMUNE)) {
|
|
||||||
clif_skill_fail(hd->master, skill_id, USESKILL_FAIL_TOTARGET, 0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,
|
||||||
sc_start4(src,bl,status_skill2sc(skill_id),100,skill_lv,src->id,0,0,duration));
|
sc_start4(src,bl,status_skill2sc(skill_id),100,skill_lv,src->id,0,0,duration));
|
||||||
@ -11090,7 +11050,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
break;
|
break;
|
||||||
case GN_SPORE_EXPLOSION:
|
case GN_SPORE_EXPLOSION:
|
||||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
||||||
sc_start4(src, bl, type, 100, skill_lv, skill_id, src->id, skill_get_time(skill_id, skill_lv), skill_get_time(skill_id, skill_lv));
|
skill_castend_damage_id(src, bl, skill_id, skill_lv, tick, flag|1|2); // First attack to target
|
||||||
|
sc_start4(src, bl, type, 100, skill_lv, skill_id, src->id, 0, skill_get_time(skill_id, skill_lv));
|
||||||
break;
|
break;
|
||||||
case GN_MANDRAGORA:
|
case GN_MANDRAGORA:
|
||||||
if( flag&1 ) {
|
if( flag&1 ) {
|
||||||
@ -11109,63 +11070,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
clif_skill_nodamage(src,src,skill_id,skill_lv,1);
|
clif_skill_nodamage(src,src,skill_id,skill_lv,1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_SLINGITEM:
|
|
||||||
if( sd ) {
|
|
||||||
int ammo_id;
|
|
||||||
|
|
||||||
i = sd->equip_index[EQI_AMMO];
|
|
||||||
if( i < 0 )
|
|
||||||
break; // No ammo.
|
|
||||||
ammo_id = sd->inventory_data[i]->nameid;
|
|
||||||
if( ammo_id <= 0 )
|
|
||||||
break;
|
|
||||||
sd->itemid = ammo_id;
|
|
||||||
if( itemdb_group_item_exists(IG_BOMB, ammo_id) ) {
|
|
||||||
if(battle_check_target(src,bl,BCT_ENEMY) > 0) {// Only attack if the target is an enemy.
|
|
||||||
if( ammo_id == ITEMID_PINEAPPLE_BOMB )
|
|
||||||
map_foreachincell(skill_area_sub,bl->m,bl->x,bl->y,BL_CHAR,src,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
|
|
||||||
else
|
|
||||||
skill_attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag);
|
|
||||||
} else //Otherwise, it fails, shows animation and removes items.
|
|
||||||
clif_skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,USESKILL_FAIL,0);
|
|
||||||
} else if (itemdb_group_item_exists(IG_THROWABLE, ammo_id)) {
|
|
||||||
switch (ammo_id) {
|
|
||||||
case ITEMID_HP_INC_POTS_TO_THROW: // MaxHP +(500 + Thrower BaseLv * 10 / 3) and heals 1% MaxHP
|
|
||||||
sc_start2(src, bl, SC_PROMOTE_HEALTH_RESERCH, 100, 2, 1, 500000);
|
|
||||||
status_percent_heal(bl, 1, 0);
|
|
||||||
break;
|
|
||||||
case ITEMID_HP_INC_POTM_TO_THROW: // MaxHP +(1500 + Thrower BaseLv * 10 / 3) and heals 2% MaxHP
|
|
||||||
sc_start2(src, bl, SC_PROMOTE_HEALTH_RESERCH, 100, 2, 2, 500000);
|
|
||||||
status_percent_heal(bl, 2, 0);
|
|
||||||
break;
|
|
||||||
case ITEMID_HP_INC_POTL_TO_THROW: // MaxHP +(2500 + Thrower BaseLv * 10 / 3) and heals 5% MaxHP
|
|
||||||
sc_start2(src, bl, SC_PROMOTE_HEALTH_RESERCH, 100, 2, 3, 500000);
|
|
||||||
status_percent_heal(bl, 5, 0);
|
|
||||||
break;
|
|
||||||
case ITEMID_SP_INC_POTS_TO_THROW: // MaxSP +(Thrower BaseLv / 10 - 5)% and recovers 2% MaxSP
|
|
||||||
sc_start2(src, bl, SC_ENERGY_DRINK_RESERCH, 100, 2, 1, 500000);
|
|
||||||
status_percent_heal(bl, 0, 2);
|
|
||||||
break;
|
|
||||||
case ITEMID_SP_INC_POTM_TO_THROW: // MaxSP +(Thrower BaseLv / 10)% and recovers 4% MaxSP
|
|
||||||
sc_start2(src, bl, SC_ENERGY_DRINK_RESERCH, 100, 2, 2, 500000);
|
|
||||||
status_percent_heal(bl, 0, 4);
|
|
||||||
break;
|
|
||||||
case ITEMID_SP_INC_POTL_TO_THROW: // MaxSP +(Thrower BaseLv / 10 + 5)% and recovers 8% MaxSP
|
|
||||||
sc_start2(src, bl, SC_ENERGY_DRINK_RESERCH, 100, 2, 3, 500000);
|
|
||||||
status_percent_heal(bl, 0, 8);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (dstsd)
|
|
||||||
run_script(sd->inventory_data[i]->script, 0, dstsd->bl.id, fake_nd->bl.id);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
|
||||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);// This packet is received twice actually, I think it is to show the animation.
|
|
||||||
break;
|
|
||||||
case GN_MIX_COOKING:
|
case GN_MIX_COOKING:
|
||||||
case GN_MAKEBOMB:
|
|
||||||
case GN_S_PHARMACY:
|
case GN_S_PHARMACY:
|
||||||
if( sd ) {
|
if( sd ) {
|
||||||
int qty = 1;
|
int qty = 1;
|
||||||
@ -11173,7 +11078,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
sd->skill_lv_old = skill_lv;
|
sd->skill_lv_old = skill_lv;
|
||||||
if( skill_id != GN_S_PHARMACY && skill_lv > 1 )
|
if( skill_id != GN_S_PHARMACY && skill_lv > 1 )
|
||||||
qty = 10;
|
qty = 10;
|
||||||
clif_cooking_list(sd,(skill_id - GN_MIX_COOKING) + 27,skill_id,qty,skill_id==GN_MAKEBOMB?5:6);
|
clif_cooking_list(sd,(skill_id - GN_MIX_COOKING) + 27,skill_id,qty,6);
|
||||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -11412,8 +11317,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
struct block_list *s_bl = battle_get_master(src);
|
struct block_list *s_bl = battle_get_master(src);
|
||||||
if(s_bl) sc_start(src, s_bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
if(s_bl) sc_start(src, s_bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||||
sc_start2(src, src, type, 100, skill_lv, hd->homunculus.level, skill_get_time(skill_id, skill_lv));
|
sc_start2(src, src, type, 100, skill_lv, hd->homunculus.level, skill_get_time(skill_id, skill_lv));
|
||||||
hd->homunculus.intimacy = hom_intimacy_grade2intimacy(HOMGRADE_NEUTRAL); //change to neutral
|
|
||||||
if(sd) clif_send_homdata(sd, SP_INTIMATE, hd->homunculus.intimacy/100); //refresh intimacy info
|
|
||||||
skill_blockhomun_start(hd, skill_id, skill_get_cooldown(skill_id, skill_lv));
|
skill_blockhomun_start(hd, skill_id, skill_get_cooldown(skill_id, skill_lv));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -12523,7 +12426,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
|||||||
case SO_PSYCHIC_WAVE:
|
case SO_PSYCHIC_WAVE:
|
||||||
case SO_VACUUM_EXTREME:
|
case SO_VACUUM_EXTREME:
|
||||||
case GN_THORNS_TRAP:
|
case GN_THORNS_TRAP:
|
||||||
case GN_HELLS_PLANT:
|
|
||||||
case SO_EARTHGRAVE:
|
case SO_EARTHGRAVE:
|
||||||
case SO_DIAMONDDUST:
|
case SO_DIAMONDDUST:
|
||||||
case SO_FIRE_INSIGNIA:
|
case SO_FIRE_INSIGNIA:
|
||||||
@ -13070,6 +12972,12 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GN_HELLS_PLANT:
|
||||||
|
skill_clear_unitgroup(src);
|
||||||
|
if ((sg = skill_unitsetting(src, skill_id, skill_lv, src->x, src->y, 0)) != nullptr)
|
||||||
|
sc_start4(src, src, type, 100, skill_lv, 0, 0, sg->group_id, skill_get_time(skill_id, skill_lv));
|
||||||
|
break;
|
||||||
|
|
||||||
case SO_FIREWALK:
|
case SO_FIREWALK:
|
||||||
case SO_ELECTRICWALK:
|
case SO_ELECTRICWALK:
|
||||||
if( sc && sc->data[type] )
|
if( sc && sc->data[type] )
|
||||||
@ -13512,9 +13420,6 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_
|
|||||||
break;
|
break;
|
||||||
case WZ_QUAGMIRE: //The target changes to "all" if used in a gvg map. [Skotlex]
|
case WZ_QUAGMIRE: //The target changes to "all" if used in a gvg map. [Skotlex]
|
||||||
case AM_DEMONSTRATION:
|
case AM_DEMONSTRATION:
|
||||||
case GN_HELLS_PLANT:
|
|
||||||
if( skill_id == GN_HELLS_PLANT && map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) )
|
|
||||||
return NULL;
|
|
||||||
if (battle_config.vs_traps_bctall && (src->type&battle_config.vs_traps_bctall) && map_flag_vs(src->m))
|
if (battle_config.vs_traps_bctall && (src->type&battle_config.vs_traps_bctall) && map_flag_vs(src->m))
|
||||||
target = BCT_ALL;
|
target = BCT_ALL;
|
||||||
break;
|
break;
|
||||||
@ -14913,12 +14818,8 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case UNT_HELLS_PLANT:
|
case UNT_HELLS_PLANT:
|
||||||
if ((tsc && tsc->data[SC__MANHOLE]) || status_isimmune(bl))
|
|
||||||
break;
|
|
||||||
if( battle_check_target(&unit->bl,bl,BCT_ENEMY) > 0 )
|
if( battle_check_target(&unit->bl,bl,BCT_ENEMY) > 0 )
|
||||||
skill_attack(skill_get_type(GN_HELLS_PLANT_ATK), ss, &unit->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, SCSTART_NONE);
|
skill_attack(skill_get_type(GN_HELLS_PLANT_ATK), ss, &unit->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, SCSTART_NONE);
|
||||||
if( ss != bl) // The caster is the only one who can step on the Plants without destroying them
|
|
||||||
sg->limit = DIFF_TICK(tick, sg->tick) + 100;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNT_ZEPHYR:
|
case UNT_ZEPHYR:
|
||||||
@ -15646,7 +15547,6 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_MIX_COOKING:
|
case GN_MIX_COOKING:
|
||||||
case GN_MAKEBOMB:
|
|
||||||
case GN_S_PHARMACY:
|
case GN_S_PHARMACY:
|
||||||
case GN_CHANGEMATERIAL:
|
case GN_CHANGEMATERIAL:
|
||||||
if( sd->menuskill_id != skill_id )
|
if( sd->menuskill_id != skill_id )
|
||||||
@ -16673,7 +16573,6 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_MIX_COOKING:
|
case GN_MIX_COOKING:
|
||||||
case GN_MAKEBOMB:
|
|
||||||
case GN_S_PHARMACY:
|
case GN_S_PHARMACY:
|
||||||
case GN_CHANGEMATERIAL:
|
case GN_CHANGEMATERIAL:
|
||||||
if( sd->menuskill_id != skill_id )
|
if( sd->menuskill_id != skill_id )
|
||||||
@ -18325,7 +18224,7 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
|||||||
std::shared_ptr<s_skill_db> skill = skill_db.find(unit->group->skill_id);
|
std::shared_ptr<s_skill_db> skill = skill_db.find(unit->group->skill_id);
|
||||||
|
|
||||||
//It deletes everything except traps and barriers
|
//It deletes everything except traps and barriers
|
||||||
if ((!skill->inf2[INF2_ISTRAP] && !skill->inf2[INF2_IGNORELANDPROTECTOR]) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) {
|
if ((!skill->inf2[INF2_ISTRAP] && !skill->inf2[INF2_IGNORELANDPROTECTOR]) || unit->group->skill_id == WZ_FIREPILLAR) {
|
||||||
if (skill->unit_flag[UF_RANGEDSINGLEUNIT]) {
|
if (skill->unit_flag[UF_RANGEDSINGLEUNIT]) {
|
||||||
if (unit->val2&(1 << UF_RANGEDSINGLEUNIT))
|
if (unit->val2&(1 << UF_RANGEDSINGLEUNIT))
|
||||||
skill_delunitgroup(unit->group);
|
skill_delunitgroup(unit->group);
|
||||||
@ -19146,11 +19045,15 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
|||||||
case SG_SUN_WARM:
|
case SG_SUN_WARM:
|
||||||
case SG_MOON_WARM:
|
case SG_MOON_WARM:
|
||||||
case SG_STAR_WARM:
|
case SG_STAR_WARM:
|
||||||
|
case LG_BANDING:
|
||||||
|
case GN_HELLS_PLANT:
|
||||||
{
|
{
|
||||||
struct status_change *sc = NULL;
|
status_change *sc = status_get_sc(src);
|
||||||
if( (sc = status_get_sc(src)) != NULL && sc->data[SC_WARM] ) {
|
sc_type type = status_skill2sc(group->skill_id);
|
||||||
sc->data[SC_WARM]->val4 = 0;
|
|
||||||
status_change_end(src, SC_WARM, INVALID_TIMER);
|
if (sc && sc->data[type]) {
|
||||||
|
sc->data[type]->val4 = 0;
|
||||||
|
status_change_end(src, type, INVALID_TIMER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -19176,15 +19079,6 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LG_BANDING:
|
|
||||||
{
|
|
||||||
struct status_change *sc = NULL;
|
|
||||||
if( (sc = status_get_sc(src)) && sc->data[SC_BANDING] ) {
|
|
||||||
sc->data[SC_BANDING]->val4 = 0;
|
|
||||||
status_change_end(src,SC_BANDING,INVALID_TIMER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->type==BL_PC && group->state.ammo_consume)
|
if (src->type==BL_PC && group->state.ammo_consume)
|
||||||
@ -20058,7 +19952,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
} while( j >= 0 && x > 0 );
|
} while( j >= 0 && x > 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((equip = (itemdb_isequip(nameid) && skill_id != GN_CHANGEMATERIAL && skill_id != GN_MAKEBOMB )))
|
if ((equip = (itemdb_isequip(nameid) && skill_id != GN_CHANGEMATERIAL )))
|
||||||
wlv = itemdb_wlv(nameid);
|
wlv = itemdb_wlv(nameid);
|
||||||
|
|
||||||
if (!equip) {
|
if (!equip) {
|
||||||
@ -20201,7 +20095,6 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
case ITEMID_SP_INCREASE_POTION_MEDIUM:
|
case ITEMID_SP_INCREASE_POTION_MEDIUM:
|
||||||
difficulty += 15;
|
difficulty += 15;
|
||||||
break;
|
break;
|
||||||
case ITEMID_BANANA_BOMB:
|
|
||||||
case ITEMID_HP_INCREASE_POTION_MEDIUM:
|
case ITEMID_HP_INCREASE_POTION_MEDIUM:
|
||||||
case ITEMID_SP_INCREASE_POTION_LARGE:
|
case ITEMID_SP_INCREASE_POTION_LARGE:
|
||||||
case ITEMID_VITATA500:
|
case ITEMID_VITATA500:
|
||||||
@ -20231,7 +20124,6 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
make_per = 10000;
|
make_per = 10000;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_MAKEBOMB:
|
|
||||||
case GN_MIX_COOKING:
|
case GN_MIX_COOKING:
|
||||||
{
|
{
|
||||||
int difficulty = 30 + rnd()%120; // Random number between (30 ~ 150)
|
int difficulty = 30 + rnd()%120; // Random number between (30 ~ 150)
|
||||||
@ -20240,25 +20132,14 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
qty = ~(5 + rnd()%5) + 1;
|
qty = ~(5 + rnd()%5) + 1;
|
||||||
|
|
||||||
switch(nameid){// difficulty factor
|
switch(nameid){// difficulty factor
|
||||||
case ITEMID_APPLE_BOMB:
|
|
||||||
difficulty += 5;
|
|
||||||
break;
|
|
||||||
case ITEMID_COCONUT_BOMB:
|
|
||||||
case ITEMID_MELON_BOMB:
|
|
||||||
difficulty += 10;
|
|
||||||
break;
|
|
||||||
case ITEMID_SAVAGE_FULL_ROAST:
|
case ITEMID_SAVAGE_FULL_ROAST:
|
||||||
case ITEMID_COCKTAIL_WARG_BLOOD:
|
case ITEMID_COCKTAIL_WARG_BLOOD:
|
||||||
case ITEMID_MINOR_STEW:
|
case ITEMID_MINOR_STEW:
|
||||||
case ITEMID_SIROMA_ICED_TEA:
|
case ITEMID_SIROMA_ICED_TEA:
|
||||||
case ITEMID_DROSERA_HERB_SALAD:
|
case ITEMID_DROSERA_HERB_SALAD:
|
||||||
case ITEMID_PETITE_TAIL_NOODLES:
|
case ITEMID_PETITE_TAIL_NOODLES:
|
||||||
case ITEMID_PINEAPPLE_BOMB:
|
|
||||||
difficulty += 15;
|
difficulty += 15;
|
||||||
break;
|
break;
|
||||||
case ITEMID_BANANA_BOMB:
|
|
||||||
difficulty += 20;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( make_per >= 30 && make_per > difficulty)
|
if( make_per >= 30 && make_per > difficulty)
|
||||||
@ -20381,7 +20262,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
tmp_item.amount = 0;
|
tmp_item.amount = 0;
|
||||||
|
|
||||||
for (i = 0; i < qty; i++) { //Apply quantity modifiers.
|
for (i = 0; i < qty; i++) { //Apply quantity modifiers.
|
||||||
if ((skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY) && make_per > 1) {
|
if ((skill_id == GN_MIX_COOKING || skill_id == GN_S_PHARMACY) && make_per > 1) {
|
||||||
tmp_item.amount = qty;
|
tmp_item.amount = qty;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -20484,7 +20365,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
|
map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY) {
|
if (skill_id == GN_MIX_COOKING || skill_id == GN_S_PHARMACY) {
|
||||||
clif_produceeffect(sd,6,nameid);
|
clif_produceeffect(sd,6,nameid);
|
||||||
clif_misceffect(&sd->bl,5);
|
clif_misceffect(&sd->bl,5);
|
||||||
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_SUCCESS);
|
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_SUCCESS);
|
||||||
@ -20548,7 +20429,6 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
|||||||
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL);
|
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GN_MAKEBOMB:
|
|
||||||
case GN_S_PHARMACY:
|
case GN_S_PHARMACY:
|
||||||
case GN_CHANGEMATERIAL:
|
case GN_CHANGEMATERIAL:
|
||||||
clif_produceeffect(sd,7,nameid);
|
clif_produceeffect(sd,7,nameid);
|
||||||
|
@ -962,6 +962,7 @@ void initChangeTables(void)
|
|||||||
set_sc( GN_SPORE_EXPLOSION , SC_SPORE_EXPLOSION , EFST_SPORE_EXPLOSION, SCB_NONE );
|
set_sc( GN_SPORE_EXPLOSION , SC_SPORE_EXPLOSION , EFST_SPORE_EXPLOSION, SCB_NONE );
|
||||||
set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER , SC_SMOKEPOWDER , EFST_FIRE_EXPANSION_SMOKE_POWDER, SCB_FLEE );
|
set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER , SC_SMOKEPOWDER , EFST_FIRE_EXPANSION_SMOKE_POWDER, SCB_FLEE );
|
||||||
set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_TEARGAS , EFST_FIRE_EXPANSION_TEAR_GAS , SCB_HIT|SCB_FLEE );
|
set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_TEARGAS , EFST_FIRE_EXPANSION_TEAR_GAS , SCB_HIT|SCB_FLEE );
|
||||||
|
add_sc( GN_HELLS_PLANT , SC_HELLS_PLANT );
|
||||||
set_sc( GN_MANDRAGORA , SC_MANDRAGORA , EFST_MANDRAGORA , SCB_INT );
|
set_sc( GN_MANDRAGORA , SC_MANDRAGORA , EFST_MANDRAGORA , SCB_INT );
|
||||||
set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , EFST_ILLUSIONDOPING , SCB_HIT );
|
set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , EFST_ILLUSIONDOPING , SCB_HIT );
|
||||||
|
|
||||||
@ -1622,8 +1623,6 @@ void initChangeTables(void)
|
|||||||
StatusChangeStateTable[SC_STOP] |= SCS_NOMOVE;
|
StatusChangeStateTable[SC_STOP] |= SCS_NOMOVE;
|
||||||
StatusChangeStateTable[SC_CLOSECONFINE] |= SCS_NOMOVE;
|
StatusChangeStateTable[SC_CLOSECONFINE] |= SCS_NOMOVE;
|
||||||
StatusChangeStateTable[SC_CLOSECONFINE2] |= SCS_NOMOVE;
|
StatusChangeStateTable[SC_CLOSECONFINE2] |= SCS_NOMOVE;
|
||||||
StatusChangeStateTable[SC_TINDER_BREAKER] |= SCS_NOMOVE;
|
|
||||||
StatusChangeStateTable[SC_TINDER_BREAKER2] |= SCS_NOMOVE;
|
|
||||||
StatusChangeStateTable[SC_MADNESSCANCEL] |= SCS_NOMOVE;
|
StatusChangeStateTable[SC_MADNESSCANCEL] |= SCS_NOMOVE;
|
||||||
#ifndef RENEWAL
|
#ifndef RENEWAL
|
||||||
StatusChangeStateTable[SC_GRAVITATION] |= SCS_NOMOVE|SCS_NOMOVECOND;
|
StatusChangeStateTable[SC_GRAVITATION] |= SCS_NOMOVE|SCS_NOMOVECOND;
|
||||||
@ -6760,8 +6759,6 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
|
|||||||
return cap_value(flee,1,SHRT_MAX);
|
return cap_value(flee,1,SHRT_MAX);
|
||||||
if(sc->data[SC_OVERED_BOOST]) //Should be final and unmodifiable by any means
|
if(sc->data[SC_OVERED_BOOST]) //Should be final and unmodifiable by any means
|
||||||
return sc->data[SC_OVERED_BOOST]->val2;
|
return sc->data[SC_OVERED_BOOST]->val2;
|
||||||
if(sc->data[SC_TINDER_BREAKER] || sc->data[SC_TINDER_BREAKER2])
|
|
||||||
return 1; // 1 = min flee
|
|
||||||
|
|
||||||
// Fixed value
|
// Fixed value
|
||||||
if(sc->data[SC_INCFLEE])
|
if(sc->data[SC_INCFLEE])
|
||||||
@ -6828,6 +6825,8 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
|
|||||||
flee -= flee * (40 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
|
flee -= flee * (40 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
|
||||||
if( sc->data[SC_WIND_STEP_OPTION] )
|
if( sc->data[SC_WIND_STEP_OPTION] )
|
||||||
flee += flee * sc->data[SC_WIND_STEP_OPTION]->val2 / 100;
|
flee += flee * sc->data[SC_WIND_STEP_OPTION]->val2 / 100;
|
||||||
|
if( sc->data[SC_TINDER_BREAKER] || sc->data[SC_TINDER_BREAKER2] )
|
||||||
|
flee -= flee * 50 / 100;
|
||||||
if( sc->data[SC_ZEPHYR] )
|
if( sc->data[SC_ZEPHYR] )
|
||||||
flee += sc->data[SC_ZEPHYR]->val2;
|
flee += sc->data[SC_ZEPHYR]->val2;
|
||||||
if(sc->data[SC_ASH])
|
if(sc->data[SC_ASH])
|
||||||
@ -6916,7 +6915,7 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
|
|||||||
if(sc->data[SC_ODINS_POWER])
|
if(sc->data[SC_ODINS_POWER])
|
||||||
def -= 20 * sc->data[SC_ODINS_POWER]->val1;
|
def -= 20 * sc->data[SC_ODINS_POWER]->val1;
|
||||||
if( sc->data[SC_ANGRIFFS_MODUS] )
|
if( sc->data[SC_ANGRIFFS_MODUS] )
|
||||||
def -= 30 + 20 * sc->data[SC_ANGRIFFS_MODUS]->val1;
|
def -= 20 + 10 * sc->data[SC_ANGRIFFS_MODUS]->val1;
|
||||||
if(sc->data[SC_STONEHARDSKIN])
|
if(sc->data[SC_STONEHARDSKIN])
|
||||||
def += sc->data[SC_STONEHARDSKIN]->val1;
|
def += sc->data[SC_STONEHARDSKIN]->val1;
|
||||||
if(sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
|
if(sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
|
||||||
@ -10668,21 +10667,19 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
status_zap(bl, status->hp-1, val2?0:status->sp);
|
status_zap(bl, status->hp-1, val2?0:status->sp);
|
||||||
return 1;
|
return 1;
|
||||||
break;
|
break;
|
||||||
case SC_TINDER_BREAKER2:
|
|
||||||
case SC_CLOSECONFINE2:
|
case SC_CLOSECONFINE2:
|
||||||
{
|
{
|
||||||
struct block_list *src2 = val2?map_id2bl(val2):NULL;
|
struct block_list *src2 = val2?map_id2bl(val2):NULL;
|
||||||
struct status_change *sc2 = src2?status_get_sc(src2):NULL;
|
struct status_change *sc2 = src2?status_get_sc(src2):NULL;
|
||||||
enum sc_type type2 = ((type == SC_TINDER_BREAKER2)?SC_TINDER_BREAKER:SC_CLOSECONFINE);
|
struct status_change_entry *sce2 = sc2?sc2->data[SC_CLOSECONFINE]:NULL;
|
||||||
struct status_change_entry *sce2 = sc2?sc2->data[type2]:NULL;
|
|
||||||
|
|
||||||
if (src2 && sc2) {
|
if (src2 && sc2) {
|
||||||
if (!sce2) // Start lock on caster.
|
if (!sce2) // Start lock on caster.
|
||||||
sc_start4(src2,src2,type2,100,val1,1,0,0,tick+1000);
|
sc_start4(src2,src2,SC_CLOSECONFINE,100,val1,1,0,0,tick+1000);
|
||||||
else { // Increase count of locked enemies and refresh time.
|
else { // Increase count of locked enemies and refresh time.
|
||||||
(sce2->val2)++;
|
(sce2->val2)++;
|
||||||
delete_timer(sce2->timer, status_change_timer);
|
delete_timer(sce2->timer, status_change_timer);
|
||||||
sce2->timer = add_timer(gettick()+tick+1000, status_change_timer, src2->id, type2);
|
sce2->timer = add_timer(gettick()+tick+1000, status_change_timer, src2->id, SC_CLOSECONFINE);
|
||||||
}
|
}
|
||||||
} else // Status failed.
|
} else // Status failed.
|
||||||
return 0;
|
return 0;
|
||||||
@ -11553,7 +11550,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
break;
|
break;
|
||||||
case SC_ANGRIFFS_MODUS:
|
case SC_ANGRIFFS_MODUS:
|
||||||
val2 = 50 + 20 * val1; // atk bonus
|
val2 = 50 + 20 * val1; // atk bonus
|
||||||
val3 = 40 + 20 * val1; // Flee reduction.
|
val3 = 25 + 10 * val1; // Flee reduction.
|
||||||
val4 = tick/1000; // hp/sp reduction timer
|
val4 = tick/1000; // hp/sp reduction timer
|
||||||
tick_time = 1000;
|
tick_time = 1000;
|
||||||
break;
|
break;
|
||||||
@ -11563,8 +11560,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
val4 = 2 + 2 * val1; // Chance of holy attack
|
val4 = 2 + 2 * val1; // Chance of holy attack
|
||||||
break;
|
break;
|
||||||
case SC_OVERED_BOOST:
|
case SC_OVERED_BOOST:
|
||||||
val2 = 300 + 40*val1; // flee bonus
|
val2 = 400 + 40 * val1; // flee bonus
|
||||||
val3 = 179 + 2*val1; // aspd bonus
|
val3 = 180 + 2 * val1; // aspd bonus
|
||||||
val4 = 50; // def reduc %
|
val4 = 50; // def reduc %
|
||||||
break;
|
break;
|
||||||
case SC_GRANITIC_ARMOR:
|
case SC_GRANITIC_ARMOR:
|
||||||
@ -12130,8 +12127,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
case SC_CONFUSION:
|
case SC_CONFUSION:
|
||||||
case SC_CLOSECONFINE:
|
case SC_CLOSECONFINE:
|
||||||
case SC_CLOSECONFINE2:
|
case SC_CLOSECONFINE2:
|
||||||
case SC_TINDER_BREAKER:
|
|
||||||
case SC_TINDER_BREAKER2:
|
|
||||||
case SC_BITE:
|
case SC_BITE:
|
||||||
case SC_THORNSTRAP:
|
case SC_THORNSTRAP:
|
||||||
case SC_MEIKYOUSISUI:
|
case SC_MEIKYOUSISUI:
|
||||||
@ -12879,10 +12874,6 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
|||||||
status_damage(NULL,bl,damage,0,0,1,0);
|
status_damage(NULL,bl,damage,0,0,1,0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SC_PYROCLASTIC:
|
|
||||||
if(bl->type == BL_PC)
|
|
||||||
skill_break_equip(bl,bl,EQP_WEAPON,10000,BCT_SELF);
|
|
||||||
break;
|
|
||||||
case SC_RUN:
|
case SC_RUN:
|
||||||
{
|
{
|
||||||
struct unit_data *ud = unit_bl2ud(bl);
|
struct unit_data *ud = unit_bl2ud(bl);
|
||||||
@ -13030,19 +13021,16 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
|||||||
skill_castend_damage_id(src, bl, sce->val2, sce->val1, gettick(), SD_LEVEL );
|
skill_castend_damage_id(src, bl, sce->val2, sce->val1, gettick(), SD_LEVEL );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SC_TINDER_BREAKER2:
|
|
||||||
case SC_CLOSECONFINE2:{
|
case SC_CLOSECONFINE2:{
|
||||||
struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL;
|
struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL;
|
||||||
struct status_change *sc2 = src?status_get_sc(src):NULL;
|
struct status_change *sc2 = src?status_get_sc(src):NULL;
|
||||||
enum sc_type type2 = ((type==SC_CLOSECONFINE2)?SC_CLOSECONFINE:SC_TINDER_BREAKER);
|
if (src && sc2 && sc2->data[SC_CLOSECONFINE]) {
|
||||||
if (src && sc2 && sc2->data[type2]) {
|
|
||||||
// If status was already ended, do nothing.
|
// If status was already ended, do nothing.
|
||||||
// Decrease count
|
// Decrease count
|
||||||
if (type==SC_TINDER_BREAKER2 || (--(sc2->data[type2]->val1) <= 0)) // No more holds, free him up.
|
if (--(sc2->data[SC_CLOSECONFINE]->val1) <= 0) // No more holds, free him up.
|
||||||
status_change_end(src, type2, INVALID_TIMER);
|
status_change_end(src, SC_CLOSECONFINE, INVALID_TIMER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case SC_TINDER_BREAKER:
|
|
||||||
case SC_CLOSECONFINE:
|
case SC_CLOSECONFINE:
|
||||||
if (sce->val2 > 0) {
|
if (sce->val2 > 0) {
|
||||||
// Caster has been unlocked... nearby chars need to be unlocked.
|
// Caster has been unlocked... nearby chars need to be unlocked.
|
||||||
@ -13113,6 +13101,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
|||||||
break;
|
break;
|
||||||
case SC_WARM:
|
case SC_WARM:
|
||||||
case SC__MANHOLE:
|
case SC__MANHOLE:
|
||||||
|
case SC_BANDING:
|
||||||
|
case SC_HELLS_PLANT:
|
||||||
if (sce->val4) { // Clear the group.
|
if (sce->val4) { // Clear the group.
|
||||||
struct skill_unit_group* group = skill_id2group(sce->val4);
|
struct skill_unit_group* group = skill_id2group(sce->val4);
|
||||||
sce->val4 = 0;
|
sce->val4 = 0;
|
||||||
@ -13206,14 +13196,6 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
|||||||
skill_delunitgroup(group);
|
skill_delunitgroup(group);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SC_BANDING:
|
|
||||||
if(sce->val4) {
|
|
||||||
struct skill_unit_group *group = skill_id2group(sce->val4);
|
|
||||||
sce->val4 = 0;
|
|
||||||
if( group ) // Might have been cleared before status ended, e.g. land protector
|
|
||||||
skill_delunitgroup(group);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SC_CURSEDCIRCLE_ATKER:
|
case SC_CURSEDCIRCLE_ATKER:
|
||||||
if( sce->val2 ) // Used the default area size cause there is a chance the caster could knock back and can't clear the target.
|
if( sce->val2 ) // Used the default area size cause there is a chance the caster could knock back and can't clear the target.
|
||||||
map_foreachinallrange(status_change_timer_sub, bl, AREA_SIZE + 3, BL_CHAR, bl, sce, SC_CURSEDCIRCLE_TARGET, gettick());
|
map_foreachinallrange(status_change_timer_sub, bl, AREA_SIZE + 3, BL_CHAR, bl, sce, SC_CURSEDCIRCLE_TARGET, gettick());
|
||||||
@ -13962,7 +13944,6 @@ TIMER_FUNC(status_change_timer){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SC_SPLASHER:
|
case SC_SPLASHER:
|
||||||
case SC_SPORE_EXPLOSION:
|
|
||||||
// Custom Venom Splasher countdown timer
|
// Custom Venom Splasher countdown timer
|
||||||
// if (sce->val4 % 1000 == 0) {
|
// if (sce->val4 % 1000 == 0) {
|
||||||
// char timer[10];
|
// char timer[10];
|
||||||
@ -14670,16 +14651,13 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SC_TINDER_BREAKER:
|
case SC_CLOSECONFINE:
|
||||||
case SC_CLOSECONFINE:{
|
|
||||||
enum sc_type type2 = ((type==SC_CLOSECONFINE)?SC_CLOSECONFINE2:SC_TINDER_BREAKER2);
|
|
||||||
// Lock char has released the hold on everyone...
|
// Lock char has released the hold on everyone...
|
||||||
if (tsc && tsc->data[type2] && tsc->data[type2]->val2 == src->id) {
|
if (tsc && tsc->data[SC_CLOSECONFINE2] && tsc->data[SC_CLOSECONFINE2]->val2 == src->id) {
|
||||||
tsc->data[type2]->val2 = 0;
|
tsc->data[SC_CLOSECONFINE2]->val2 = 0;
|
||||||
status_change_end(bl, type2, INVALID_TIMER);
|
status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case SC_CURSEDCIRCLE_TARGET:
|
case SC_CURSEDCIRCLE_TARGET:
|
||||||
if( tsc && tsc->data[SC_CURSEDCIRCLE_TARGET] && tsc->data[SC_CURSEDCIRCLE_TARGET]->val2 == src->id ) {
|
if( tsc && tsc->data[SC_CURSEDCIRCLE_TARGET] && tsc->data[SC_CURSEDCIRCLE_TARGET]->val2 == src->id ) {
|
||||||
clif_bladestop(bl, tsc->data[SC_CURSEDCIRCLE_TARGET]->val2, 0);
|
clif_bladestop(bl, tsc->data[SC_CURSEDCIRCLE_TARGET]->val2, 0);
|
||||||
|
@ -920,6 +920,8 @@ enum sc_type : int16 {
|
|||||||
SC_SP_SHA,
|
SC_SP_SHA,
|
||||||
SC_SOULCURSE,
|
SC_SOULCURSE,
|
||||||
|
|
||||||
|
SC_HELLS_PLANT,
|
||||||
|
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
||||||
#endif
|
#endif
|
||||||
|
@ -2932,6 +2932,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
|
|||||||
status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
|
status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
|
||||||
status_change_end(bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER);
|
status_change_end(bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER);
|
||||||
status_change_end(bl, SC_STEALTHFIELD_MASTER, INVALID_TIMER);
|
status_change_end(bl, SC_STEALTHFIELD_MASTER, INVALID_TIMER);
|
||||||
|
status_change_end(bl, SC_HELLS_PLANT, INVALID_TIMER);
|
||||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||||
status_change_end(bl, SC__MANHOLE, INVALID_TIMER);
|
status_change_end(bl, SC__MANHOLE, INVALID_TIMER);
|
||||||
status_change_end(bl, SC_VACUUM_EXTREME, INVALID_TIMER);
|
status_change_end(bl, SC_VACUUM_EXTREME, INVALID_TIMER);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user