Browse Source

*Added 'status_icon' param for *bonus_script script, thank QQfoolsorellina for the suggestion (https://github.com/rathena/rathena/commit/99098c1#commitcomment-4558795)
--> bonus_script "<script code>",<duration>{,<flag>{,<type>{,<status_icon>{,<char_id>}}}};
* Please update your sql database (main database) with upgrade_20131227.sql

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>

Cydh Ramdh 11 years ago
parent
commit
be05bc399b

+ 1 - 1
conf/msg_conf/map_msg.conf

@@ -1528,7 +1528,7 @@
 
 // @dropall
 1492: Usage: @dropall {<type>}
-1493: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10
+1493: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, armor = 4, weapon = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10
 1494: %d items are dropped (%d skipped)!
 
 //Banking

+ 771 - 0
db/const.txt

@@ -1677,6 +1677,777 @@ SC_MTF_MLEATKED 584
 SC_MTF_CRIDAMAGE 585
 SC_EXTREMITYFIST2	586
 
+//Status Icon
+SI_BLANK	-1
+SI_PROVOKE	0
+SI_ENDURE	1
+SI_TWOHANDQUICKEN	2
+SI_CONCENTRATE	3
+SI_HIDING	4
+SI_CLOAKING	5
+SI_ENCPOISON	6
+SI_POISONREACT	7
+SI_QUAGMIRE	8
+SI_ANGELUS	9
+SI_BLESSING	10
+SI_SIGNUMCRUCIS	11
+SI_INCREASEAGI	12
+SI_DECREASEAGI	13
+SI_SLOWPOISON	14
+SI_IMPOSITIO	15
+SI_SUFFRAGIUM	16
+SI_ASPERSIO	17
+SI_BENEDICTIO	18
+SI_KYRIE	19
+SI_MAGNIFICAT	20
+SI_GLORIA	21
+SI_AETERNA	22
+SI_ADRENALINE	23
+SI_WEAPONPERFECTION	24
+SI_OVERTHRUST	25
+SI_MAXIMIZEPOWER	26
+SI_RIDING	27
+SI_FALCON	28
+SI_TRICKDEAD	29
+SI_LOUD	30
+SI_ENERGYCOAT	31
+SI_BROKENARMOR	32
+SI_BROKENWEAPON	33
+SI_HALLUCINATION	34
+SI_WEIGHT50	35
+SI_WEIGHT90	36
+SI_ASPDPOTION0	37
+SI_ASPDPOTION1	38
+SI_ASPDPOTION2	39
+SI_ASPDPOTIONINFINITY	40
+SI_SPEEDPOTION1	41
+SI_MOVHASTE_INFINITY	42
+SI_AUTOCOUNTER	43
+SI_SPLASHER	44
+SI_ANKLESNARE	45
+SI_ACTIONDELAY	46
+SI_NOACTION	47
+SI_IMPOSSIBLEPICKUP	48
+SI_BARRIER	49
+SI_STRIPWEAPON	50
+SI_STRIPSHIELD	51
+SI_STRIPARMOR	52
+SI_STRIPHELM	53
+SI_CP_WEAPON	54
+SI_CP_SHIELD	55
+SI_CP_ARMOR	56
+SI_CP_HELM	57
+SI_AUTOGUARD	58
+SI_REFLECTSHIELD	59
+SI_DEVOTION	60
+SI_PROVIDENCE	61
+SI_DEFENDER	62
+SI_MAGICROD	63
+SI_WEAPONPROPERTY	64
+SI_AUTOSPELL	65
+SI_SPECIALZONE	66
+SI_MASK	67
+SI_SPEARQUICKEN	68
+SI_BDPLAYING	69
+SI_WHISTLE	70
+SI_ASSASSINCROSS	71
+SI_POEMBRAGI	72
+SI_APPLEIDUN	73
+SI_HUMMING	74
+SI_DONTFORGETME	75
+SI_FORTUNEKISS	76
+SI_SERVICEFORYOU	77
+SI_RICHMANKIM	78
+SI_ETERNALCHAOS	79
+SI_DRUMBATTLEFIELD	80
+SI_RINGNIBELUNGEN	81
+SI_ROKISWEIL	82
+SI_INTOABYSS	83
+SI_SIEGFRIED	84
+SI_BLADESTOP	85
+SI_EXPLOSIONSPIRITS	86
+SI_STEELBODY	87
+SI_EXTREMITYFIST	88
+SI_COMBOATTACK	89
+SI_FIREWEAPON	90
+SI_WATERWEAPON	91
+SI_WINDWEAPON	92
+SI_EARTHWEAPON	93
+SI_MAGICATTACK	94
+SI_STOP	95
+SI_WEAPONBRAKER	96
+SI_UNDEAD	97
+SI_POWERUP	98
+SI_AGIUP	99
+SI_SIEGEMODE	100
+SI_INVISIBLE	101
+SI_STATUSONE	102
+SI_AURABLADE	103
+SI_PARRYING	104
+SI_CONCENTRATION	105
+SI_TENSIONRELAX	106
+SI_BERSERK	107
+SI_SACRIFICE	108
+SI_GOSPEL	109
+SI_ASSUMPTIO	110
+SI_BASILICA	111
+SI_LANDENDOW	112
+SI_MAGICPOWER	113
+SI_EDP	114
+SI_TRUESIGHT	115
+SI_WINDWALK	116
+SI_MELTDOWN	117
+SI_CARTBOOST	118
+SI_CHASEWALK	119
+SI_REJECTSWORD	120
+SI_MARIONETTE	121
+SI_MARIONETTE2	122
+SI_MOONLIT	123
+SI_BLEEDING	124
+SI_JOINTBEAT	125
+SI_MINDBREAKER	126
+SI_MEMORIZE	127
+SI_FOGWALL	128
+SI_SPIDERWEB	129
+SI_BABY	130
+SI_SUB_WEAPONPROPERTY	131
+SI_AUTOBERSERK	132
+SI_RUN	133
+SI_BUMP	134
+SI_READYSTORM	135
+SI_STORMKICK_READY	136
+SI_READYDOWN	137
+SI_DOWNKICK_READY	138
+SI_READYTURN	139
+SI_TURNKICK_READY	140
+SI_READYCOUNTER	141
+SI_COUNTER_READY	142
+SI_DODGE	143
+SI_DODGE_READY	144
+SI_SPURT	145
+SI_SHADOWWEAPON	146
+SI_ADRENALINE2	147
+SI_GHOSTWEAPON	148
+SI_SPIRIT	149
+SI_PLUSATTACKPOWER	150
+SI_PLUSMAGICPOWER	151
+SI_DEVIL	152
+SI_KAITE	153
+SI_SWOO	154
+SI_STAR2	155
+SI_KAIZEL	156
+SI_KAAHI	157
+SI_KAUPE	158
+SI_SMA	159
+SI_NIGHT	160
+SI_ONEHAND	161
+SI_FRIEND	162
+SI_FRIENDUP	163
+SI_SG_WARM	164
+SI_WARM	165
+SI_EMOTION	168
+SI_SUN_COMFORT	169
+SI_MOON_COMFORT	170
+SI_STAR_COMFORT	171
+SI_EXPUP	172
+SI_GDSKILL_BATTLEORDER	173
+SI_GDSKILL_REGENERATION	174
+SI_GDSKILL_POSTDELAY	175
+SI_RESISTHANDICAP	176
+SI_MAXHPPERCENT	177
+SI_MAXSPPERCENT	178
+SI_DEFENCE	179
+SI_SLOWDOWN	180
+SI_PRESERVE	181
+SI_INCSTR	182
+SI_NOT_EXTREMITYFIST	183
+SI_INTRAVISION	184
+SI_MOVESLOW_POTION	185
+SI_DOUBLECAST	186
+SI_GRAVITATION	187
+SI_MAXOVERTHRUST	188
+SI_LONGING	189
+SI_HERMODE	190
+SI_TAROT	191
+SI_HLIF_AVOID	192
+SI_HFLI_FLEET	193
+SI_HFLI_SPEED	194
+SI_HLIF_CHANGE	195
+SI_HAMI_BLOODLUST	196
+SI_SHRINK	197
+SI_SIGHTBLASTER	198
+SI_WINKCHARM	199
+SI_CLOSECONFINE	200
+SI_CLOSECONFINE2	201
+SI_DISABLEMOVE	202
+SI_MADNESSCANCEL	203
+SI_GATLINGFEVER	204
+SI_EARTHSCROLL	205
+SI_UTSUSEMI	206
+SI_BUNSINJYUTSU	207
+SI_NEN	208
+SI_ADJUSTMENT	209
+SI_ACCURACY	210
+SI_NJ_SUITON	211
+SI_PET	212
+SI_MENTAL	213
+SI_EXPMEMORY	214
+SI_PERFORMANCE	215
+SI_GAIN	216
+SI_GRIFFON	217
+SI_DRIFT	218
+SI_WALLSHIFT	219
+SI_REINCARNATION	220
+SI_PATTACK	221
+SI_PSPEED	222
+SI_PDEFENSE	223
+SI_PCRITICAL	224
+SI_RANKING	225
+SI_PTRIPLE	226
+SI_DENERGY	227
+SI_WAVE1	228
+SI_WAVE2	229
+SI_WAVE3	230
+SI_WAVE4	231
+SI_DAURA	232
+SI_DFREEZER	233
+SI_DPUNISH	234
+SI_DBARRIER	235
+SI_DWARNING	236
+SI_MOUSEWHEEL	237
+SI_DGAUGE	238
+SI_DACCEL	239
+SI_DBLOCK	240
+SI_FOODSTR	241
+SI_FOODAGI	242
+SI_FOODVIT	243
+SI_FOODDEX	244
+SI_FOODINT	245
+SI_FOODLUK	246
+SI_FOODFLEE	247
+SI_FOODHIT	248
+SI_FOODCRI	249
+SI_EXPBOOST	250
+SI_LIFEINSURANCE	251
+SI_ITEMBOOST	252
+SI_BOSSMAPINFO	253
+SI_DA_ENERGY	254
+SI_DA_FIRSTSLOT	255
+SI_DA_HEADDEF	256
+SI_DA_SPACE	257
+SI_DA_TRANSFORM	258
+SI_DA_ITEMREBUILD	259
+SI_DA_ILLUSION	260
+SI_DA_DARKPOWER	261
+SI_DA_EARPLUG	262
+SI_DA_CONTRACT	263
+SI_DA_BLACK	264
+SI_DA_MAGICCART	265
+SI_CRYSTAL	266
+SI_DA_REBUILD	267
+SI_DA_EDARKNESS	268
+SI_DA_EGUARDIAN	269
+SI_DA_TIMEOUT	270
+SI_FOOD_STR_CASH	271
+SI_FOOD_AGI_CASH	272
+SI_FOOD_VIT_CASH	273
+SI_FOOD_DEX_CASH	274
+SI_FOOD_INT_CASH	275
+SI_FOOD_LUK_CASH	276
+SI_MERC_FLEEUP	277
+SI_MERC_ATKUP	278
+SI_MERC_HPUP	279
+SI_MERC_SPUP	280
+SI_MERC_HITUP	281
+SI_SLOWCAST	282
+SI_MAGICMIRROR	283
+SI_STONESKIN	284
+SI_ANTIMAGIC	285
+SI_CRITICALWOUND	286
+SI_NPC_DEFENDER	287
+SI_NOACTION_WAIT	288
+SI_MOVHASTE_HORSE	289
+SI_DEF_RATE	290
+SI_MDEF_RATE	291
+SI_INCHEALRATE	292
+SI_S_LIFEPOTION	293
+SI_L_LIFEPOTION	294
+SI_INCCRI	295
+SI_PLUSAVOIDVALUE	296
+SI_ATKER_ASPD	297
+SI_TARGET_ASPD	298
+SI_ATKER_MOVESPEED	299
+SI_ATKER_BLOOD	300
+SI_TARGET_BLOOD	301
+SI_ARMOR_PROPERTY	302
+SI_REUSE_LIMIT_A	303
+SI_HELLPOWER	304
+SI_STEAMPACK	305
+SI_REUSE_LIMIT_B	306
+SI_REUSE_LIMIT_C	307
+SI_REUSE_LIMIT_D	308
+SI_REUSE_LIMIT_E	309
+SI_REUSE_LIMIT_F	310
+SI_INVINCIBLE	311
+SI_CASH_PLUSONLYJOBEXP	312
+SI_PARTYFLEE	313
+SI_ANGEL_PROTECT	314
+SI_ENDURE_MDEF	315
+SI_ENCHANTBLADE	316
+SI_DEATHBOUND	317
+SI_REFRESH	318
+SI_GIANTGROWTH	319
+SI_STONEHARDSKIN	320
+SI_VITALITYACTIVATION	321
+SI_FIGHTINGSPIRIT	322
+SI_ABUNDANCE	323
+SI_REUSE_MILLENNIUMSHIELD	324
+SI_REUSE_CRUSHSTRIKE	325
+SI_REUSE_REFRESH	326
+SI_REUSE_STORMBLAST	327
+SI_VENOMIMPRESS	328
+SI_EPICLESIS	329
+SI_ORATIO	330
+SI_LAUDAAGNUS	331
+SI_LAUDARAMUS	332
+SI_CLOAKINGEXCEED	333
+SI_HALLUCINATIONWALK	334
+SI_HALLUCINATIONWALK_POSTDELAY	335
+SI_RENOVATIO	336
+SI_WEAPONBLOCKING	337
+SI_WEAPONBLOCKING_POSTDELAY	338
+SI_ROLLINGCUTTER	339
+SI_EXPIATIO	340
+SI_POISONINGWEAPON	341
+SI_TOXIN	342
+SI_PARALYSE	343
+SI_VENOMBLEED	344
+SI_MAGICMUSHROOM	345
+SI_DEATHHURT	346
+SI_PYREXIA	347
+SI_OBLIVIONCURSE	348
+SI_LEECHESEND	349
+SI_DUPLELIGHT	350
+SI_FROSTMISTY	351
+SI_FEARBREEZE	352
+SI_ELECTRICSHOCKER	353
+SI_MARSHOFABYSS	354
+SI_RECOGNIZEDSPELL	355
+SI_STASIS	356
+SI_WUGRIDER	357
+SI_WUGDASH	358
+SI_WUGBITE	359
+SI_CAMOUFLAGE	360
+SI_ACCELERATION	361
+SI_HOVERING	362
+SI_SPHERE_1	363
+SI_SPHERE_2	364
+SI_SPHERE_3	365
+SI_SPHERE_4	366
+SI_SPHERE_5	367
+SI_MVPCARD_TAOGUNKA	368
+SI_MVPCARD_MISTRESS	369
+SI_MVPCARD_ORCHERO	370
+SI_MVPCARD_ORCLORD	371
+SI_OVERHEAT_LIMITPOINT	372
+SI_OVERHEAT	373
+SI_SHAPESHIFT	374
+SI_INFRAREDSCAN	375
+SI_MAGNETICFIELD	376
+SI_NEUTRALBARRIER	377
+SI_NEUTRALBARRIER_MASTER	378
+SI_STEALTHFIELD	379
+SI_STEALTHFIELD_MASTER	380
+SI_MANU_ATK	381
+SI_MANU_DEF	382
+SI_SPL_ATK	383
+SI_SPL_DEF	384
+SI_REPRODUCE	385
+SI_MANU_MATK	386
+SI_SPL_MATK	387
+SI_STR_SCROLL	388
+SI_INT_SCROLL	389
+SI_LG_REFLECTDAMAGE	390
+SI_FORCEOFVANGUARD	391
+SI_BUCHEDENOEL	392
+SI_AUTOSHADOWSPELL	393
+SI_SHADOWFORM	394
+SI_RAID	395
+SI_SHIELDSPELL_DEF	396
+SI_SHIELDSPELL_MDEF	397
+SI_SHIELDSPELL_REF	398
+SI_BODYPAINT	399
+SI_EXEEDBREAK	400
+SI_ADORAMUS	401
+SI_PRESTIGE	402
+SI_INVISIBILITY	403
+SI_DEADLYINFECT	404
+SI_BANDING	405
+SI_EARTHDRIVE	406
+SI_INSPIRATION	407
+SI_ENERVATION	408
+SI_GROOMY	409
+SI_RAISINGDRAGON	410
+SI_IGNORANCE	411
+SI_LAZINESS	412
+SI_LIGHTNINGWALK	413
+SI_ACARAJE	414
+SI_UNLUCKY	415
+SI_CURSEDCIRCLE_ATKER	416
+SI_CURSEDCIRCLE_TARGET	417
+SI_WEAKNESS	418
+SI_CRESCENTELBOW	419
+SI_NOEQUIPACCESSARY	420
+SI_STRIPACCESSARY	421
+SI_MANHOLE	422
+SI_POPECOOKIE	423
+SI_FALLENEMPIRE	424
+SI_GENTLETOUCH_ENERGYGAIN	425
+SI_GENTLETOUCH_CHANGE	426
+SI_GENTLETOUCH_REVITALIZE	427
+SI_BLOODYLUST	428
+SI_SWINGDANCE	429
+SI_SYMPHONYOFLOVERS	430
+SI_PROPERTYWALK	431
+SI_SPELLFIST	432
+SI_NETHERWORLD	433
+SI_VOICEOFSIREN	434
+SI_DEEPSLEEP	435
+SI_SIRCLEOFNATURE	436
+SI_COLD	437
+SI_GLOOMYDAY	438
+SI_SONGOFMANA	439
+SI_CLOUDKILL	440
+SI_DANCEWITHWUG	441
+SI_RUSHWINDMILL	442
+SI_ECHOSONG	443
+SI_HARMONIZE	444
+SI_STRIKING	445
+SI_WARMER	446
+SI_MOONLITSERENADE	447
+SI_SATURDAYNIGHTFEVER	448
+SI_SITDOWN_FORCE	449
+SI_ANALYZE	450
+SI_LERADSDEW	451
+SI_MELODYOFSINK	452
+SI_WARCRYOFBEYOND	453
+SI_UNLIMITEDHUMMINGVOICE	454
+SI_SPELLBOOK1	455
+SI_SPELLBOOK2	456
+SI_SPELLBOOK3	457
+SI_FREEZE_SP	458
+SI_GN_TRAINING_SWORD	459
+SI_GN_REMODELING_CART	460
+SI_CARTSBOOST	461
+SI_FIXEDCASTINGTM_REDUCE	462
+SI_THORNTRAP	463
+SI_BLOODSUCKER	464
+SI_SPORE_EXPLOSION	465
+SI_DEMONIC_FIRE	466
+SI_FIRE_EXPANSION_SMOKE_POWDER	467
+SI_FIRE_EXPANSION_TEAR_GAS	468
+SI_BLOCKING_PLAY	469
+SI_MANDRAGORA	470
+SI_ACTIVATE	471
+SI_SECRAMENT	472
+SI_ASSUMPTIO2	473
+SI_TK_SEVENWIND	474
+SI_LIMIT_ODINS_RECALL	475
+SI_STOMACHACHE	476
+SI_MYSTERIOUS_POWDER	477
+SI_MELON_BOMB	478
+SI_BANANA_BOMB_SITDOWN_POSTDELAY	479
+SI_PROMOTE_HEALTH_RESERCH	480
+SI_ENERGY_DRINK_RESERCH	481
+SI_EXTRACT_WHITE_POTION_Z	482
+SI_VITATA_500	483
+SI_EXTRACT_SALAMINE_JUICE	484
+SI_BOOST500	485
+SI_FULL_SWING_K	486
+SI_MANA_PLUS	487
+SI_MUSTLE_M	488
+SI_LIFE_FORCE_F	489
+SI_VACUUM_EXTREME	490
+SI_SAVAGE_STEAK	491
+SI_COCKTAIL_WARG_BLOOD	492
+SI_MINOR_BBQ	493
+SI_SIROMA_ICE_TEA	494
+SI_DROCERA_HERB_STEAMED	495
+SI_PUTTI_TAILS_NOODLES	496
+SI_BANANA_BOMB	497
+SI_SUMMON_AGNI	498
+SI_SPELLBOOK4	499
+SI_SPELLBOOK5	500
+SI_SPELLBOOK6	501
+SI_SPELLBOOK7	502
+SI_ELEMENTAL_AGGRESSIVE	503
+SI_RETURN_TO_ELDICASTES	504
+SI_BANDING_DEFENCE	505
+SI_SKELSCROLL	506
+SI_DISTRUCTIONSCROLL	507
+SI_ROYALSCROLL	508
+SI_IMMUNITYSCROLL	509
+SI_MYSTICSCROLL	510
+SI_BATTLESCROLL	511
+SI_ARMORSCROLL	512
+SI_FREYJASCROLL	513
+SI_SOULSCROLL	514
+SI_CIRCLE_OF_FIRE	515
+SI_CIRCLE_OF_FIRE_OPTION	516
+SI_FIRE_CLOAK	517
+SI_FIRE_CLOAK_OPTION	518
+SI_WATER_SCREEN	519
+SI_WATER_SCREEN_OPTION	520
+SI_WATER_DROP	521
+SI_WATER_DROP_OPTION	522
+SI_WIND_STEP	523
+SI_WIND_STEP_OPTION	524
+SI_WIND_CURTAIN	525
+SI_WIND_CURTAIN_OPTION	526
+SI_WATER_BARRIER	527
+SI_ZEPHYR	528
+SI_SOLID_SKIN	529
+SI_SOLID_SKIN_OPTION	530
+SI_STONE_SHIELD	531
+SI_STONE_SHIELD_OPTION	532
+SI_POWER_OF_GAIA	533
+SI_EL_WAIT	534
+SI_EL_PASSIVE	535
+SI_EL_DEFENSIVE	536
+SI_EL_OFFENSIVE	537
+SI_EL_COST	538
+SI_PYROTECHNIC	539
+SI_PYROTECHNIC_OPTION	540
+SI_HEATER	541
+SI_HEATER_OPTION	542
+SI_TROPIC	543
+SI_TROPIC_OPTION	544
+SI_AQUAPLAY	545
+SI_AQUAPLAY_OPTION	546
+SI_COOLER	547
+SI_COOLER_OPTION	548
+SI_CHILLY_AIR	549
+SI_CHILLY_AIR_OPTION	550
+SI_GUST	551
+SI_GUST_OPTION	552
+SI_BLAST	553
+SI_BLAST_OPTION	554
+SI_WILD_STORM	555
+SI_WILD_STORM_OPTION	556
+SI_PETROLOGY	557
+SI_PETROLOGY_OPTION	558
+SI_CURSED_SOIL	559
+SI_CURSED_SOIL_OPTION	560
+SI_UPHEAVAL	561
+SI_UPHEAVAL_OPTION	562
+SI_TIDAL_WEAPON	563
+SI_TIDAL_WEAPON_OPTION	564
+SI_ROCK_CRUSHER	565
+SI_ROCK_CRUSHER_ATK	566
+SI_FIRE_INSIGNIA	567
+SI_WATER_INSIGNIA	568
+SI_WIND_INSIGNIA	569
+SI_EARTH_INSIGNIA	570
+SI_EQUIPED_FLOOR	571
+SI_GUARDIAN_RECALL	572
+SI_MORA_BUFF	573
+SI_REUSE_LIMIT_G	574
+SI_REUSE_LIMIT_H	575
+SI_NEEDLE_OF_PARALYZE	576
+SI_PAIN_KILLER	577
+SI_G_LIFEPOTION	578
+SI_VITALIZE_POTION	579
+SI_LIGHT_OF_REGENE	580
+SI_OVERED_BOOST	581
+SI_SILENT_BREEZE	582
+SI_ODINS_POWER	583
+SI_STYLE_CHANGE	584
+SI_SONIC_CLAW_POSTDELAY	585
+SI_SILVERVEIN_RUSH_POSTDELAY	596
+SI_MIDNIGHT_FRENZY_POSTDELAY	597
+SI_GOLDENE_FERSE	598
+SI_ANGRIFFS_MODUS	599
+SI_TINDER_BREAKER	600
+SI_TINDER_BREAKER_POSTDELAY	601
+SI_CBC	602
+SI_CBC_POSTDELAY	603
+SI_EQC	604
+SI_MAGMA_FLOW	605
+SI_GRANITIC_ARMOR	606
+SI_PYROCLASTIC	607
+SI_VOLCANIC_ASH	608
+SI_SPIRITS_SAVEINFO1	609
+SI_SPIRITS_SAVEINFO2	610
+SI_MAGIC_CANDY	611
+SI_SEARCH_STORE_INFO	612
+SI_ALL_RIDING	613
+SI_ALL_RIDING_REUSE_LIMIT	614
+SI_MACRO	615
+SI_MACRO_POSTDELAY	616
+SI_BEER_BOTTLE_CAP	617
+SI_OVERLAPEXPUP	618
+SI_PC_IZ_DUN05	619
+SI_CRUSHSTRIKE	620
+SI_MONSTER_TRANSFORM	621
+SI_SIT	622
+SI_ONAIR	623
+SI_MTF_ASPD	624
+SI_MTF_RANGEATK	625
+SI_MTF_MATK	626
+SI_MTF_MLEATKED	627
+SI_MTF_CRIDAMAGE	628
+SI_REUSE_LIMIT_MTF	629
+SI_MACRO_PERMIT	630
+SI_MACRO_PLAY	631
+SI_SKF_CAST	632
+SI_SKF_ASPD	633
+SI_SKF_ATK	634
+SI_SKF_MATK	635
+SI_REWARD_PLUSONLYJOBEXP	636
+SI_HANDICAPSTATE_NORECOVER	637
+SI_SET_NUM_DEF	638
+SI_SET_NUM_MDEF	639
+SI_SET_PER_DEF	640
+SI_SET_PER_MDEF	641
+SI_PARTYBOOKING_SEARCH_DEALY	642
+SI_PARTYBOOKING_REGISTER_DEALY	643
+SI_PERIOD_TIME_CHECK_DETECT_SKILL	644
+SI_KO_JYUMONJIKIRI	645
+SI_MEIKYOUSISUI	646
+SI_ATTHASTE_CASH	647
+SI_EQUIPPED_DIVINE_ARMOR	648
+SI_EQUIPPED_HOLY_ARMOR	649
+SI_2011RWC	650
+SI_KYOUGAKU	651
+SI_IZAYOI	652
+SI_ZENKAI	653
+SI_KG_KAGEHUMI	654
+SI_KYOMU	655
+SI_KAGEMUSYA	656
+SI_ZANGETSU	657
+SI_PHI_DEMON	658
+SI_GENSOU	659
+SI_AKAITSUKI	660
+SI_TETANY	661
+SI_GM_BATTLE	662
+SI_GM_BATTLE2	663
+SI_2011RWC_SCROLL	664
+SI_ACTIVE_MONSTER_TRANSFORM	665
+SI_MYSTICPOWDER	666
+SI_ECLAGE_RECALL	667
+SI_ENTRY_QUEUE_APPLY_DELAY	668
+SI_REUSE_LIMIT_ECL	669
+SI_M_LIFEPOTION	670
+SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT	671
+SI_UNKNOWN_NAME	672
+SI_ON_PUSH_CART	673
+SI_HAT_EFFECT	674
+SI_FLOWER_LEAF	675
+SI_RAY_OF_PROTECTION	676
+SI_GLASTHEIM_ATK	677
+SI_GLASTHEIM_DEF	678
+SI_GLASTHEIM_HEAL	679
+SI_GLASTHEIM_HIDDEN	680
+SI_GLASTHEIM_STATE	681
+SI_GLASTHEIM_ITEMDEF	682
+SI_GLASTHEIM_HPSP	683
+SI_HOMUN_SKILL_POSTDELAY	684
+SI_ALMIGHTY	685
+SI_GVG_GIANT	686
+SI_GVG_GOLEM	687
+SI_GVG_STUN	688
+SI_GVG_STONE	689
+SI_GVG_FREEZ	690
+SI_GVG_SLEEP	691
+SI_GVG_CURSE	692
+SI_GVG_SILENCE	693
+SI_GVG_BLIND	694
+SI_CLIENT_ONLY_EQUIP_ARROW	695
+SI_CLAN_INFO	696
+SI_JP_EVENT01	697
+SI_JP_EVENT02	698
+SI_JP_EVENT03	699
+SI_JP_EVENT04	700
+SI_TELEPORT_FIXEDCASTINGDELAY	701
+SI_GEFFEN_MAGIC1	702
+SI_GEFFEN_MAGIC2	703
+SI_GEFFEN_MAGIC3	704
+SI_QUEST_BUFF1	705
+SI_QUEST_BUFF2	706
+SI_QUEST_BUFF3	707
+SI_REUSE_LIMIT_RECALL	708
+SI_SAVEPOSITION	709
+SI_HANDICAPSTATE_ICEEXPLO	710
+SI_FENRIR_CARD	711
+SI_REUSE_LIMIT_ASPD_POTION	712
+SI_MAXPAIN	713
+SI_PC_STOP	714
+SI_FRIGG_SONG	715
+SI_OFFERTORIUM	716
+SI_TELEKINESIS_INTENSE	717
+SI_MOONSTAR	718
+SI_STRANGELIGHTS	719
+SI_FULL_THROTTLE	720
+SI_REBOUND	721
+SI_UNLIMIT	722
+SI_KINGS_GRACE	723
+SI_ITEM_ATKMAX	724
+SI_ITEM_ATKMIN	725
+SI_ITEM_MATKMAX	726
+SI_ITEM_MATKMIN	727
+SI_SUPER_STAR	728
+SI_HIGH_RANKER	729
+SI_DARKCROW	730
+SI_2013_VALENTINE1	731
+SI_2013_VALENTINE2	732
+SI_2013_VALENTINE3	733
+SI_ILLUSIONDOPING	734
+SI_WIDEWEB	735
+SI_CHILL	736
+SI_BURNT	737
+SI_PCCAFE_PLAY_TIME	738
+SI_TWISTED_TIME	739
+SI_FLASHCOMBO	740
+SI_JITTER_BUFF1	741
+SI_JITTER_BUFF2	742
+SI_JITTER_BUFF3	743
+SI_JITTER_BUFF4	744
+SI_JITTER_BUFF5	745
+SI_JITTER_BUFF6	746
+SI_JITTER_BUFF7	747
+SI_JITTER_BUFF8	748
+SI_JITTER_BUFF9	749
+SI_JITTER_BUFF10	750
+SI_CUP_OF_BOZA	751
+SI_B_TRAP	752
+SI_E_CHAIN	753
+SI_E_QD_SHOT_READY	754
+SI_C_MARKER	755
+SI_H_MINE	756
+SI_H_MINE_SPLASH	757
+SI_P_ALTER	758
+SI_HEAT_BARREL	759
+SI_ANTI_M_BLAST	760
+SI_SLUGSHOT	761
+SI_SWORDCLAN	762
+SI_ARCWANDCLAN	763
+SI_GOLDENMACECLAN	764
+SI_CROSSBOWCLAN	765
+SI_PACKING_ENVELOPE1	766
+SI_PACKING_ENVELOPE2	767
+SI_PACKING_ENVELOPE3	768
+SI_PACKING_ENVELOPE4	769
+SI_PACKING_ENVELOPE5	770
+SI_PACKING_ENVELOPE6	771
+SI_PACKING_ENVELOPE7	772
+SI_PACKING_ENVELOPE8	773
+SI_PACKING_ENVELOPE9	774
+SI_PACKING_ENVELOPE10	775
+SI_GLASTHEIM_TRANS	776
+SI_ZONGZI_POUCH_TRANS	777
+SI_HEAT_BARREL_AFTER	778
+SI_DECORATION_OF_MUSIC	779
+
 e_gasp	0
 e_what	1
 e_ho	2

+ 8 - 4
doc/script_commands.txt

@@ -5146,7 +5146,7 @@ autobonus and autobonus3).
 
 ---------------------------------------
 
-*bonus_script "<script code>",<duration>{,<flag>{,<type>{,<char_id>}}};
+*bonus_script "<script code>",<duration>{,<flag>{,<type>{,<status_icon>{,<char_id>}}}};
 
 This command will attach a script to a player for a given duration, in seconds.
 After that time, the script will automatically expire. The same bonus cannot be
@@ -5156,15 +5156,19 @@ logs out.
 Note that the maximum number of 'bonus_script' commands that can run simultaneously
 for a player is 10 (MAX_PC_BONUS_SCRIPT in 'src/map/pc.h').
 
-Flags:
+Flags: (Default is 0)
 	&1: Remove when dead.
 	&2: Removable by Dispell.
 	&4: Removable by Clearance.
 	&8: Remove when player logs out.
 
 Types:
-	0: Buff
-	1: Debuff
+	This will be used to decide negative or positive buff for 'debuff_on_logout'
+	0: Ignore the buff type and won't be removed if the flag is not &8 (Default)
+	1: Buff
+	2: Debuff
+
+Status_icon: See db/const.txt at 'Status Icon'. Default is SI_BLANK or -1
 
 Example:
 	// Apple gives you +5 Str bonus for 1 minute when it's consumed.

+ 5 - 4
sql-files/main.sql

@@ -705,9 +705,10 @@ INSERT INTO `interreg` (`varname`, `value`) VALUES
 --
 
 CREATE TABLE IF NOT EXISTS `bonus_script` (
-  `char_id` int(11) NOT NULL,
+  `char_id` varchar(11) NOT NULL,
   `script` varchar(1024) NOT NULL,
-  `tick` int(11) NOT NULL,
-  `flag` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `type` tinyint(1) unsigned NOT NULL DEFAULT '0'
+  `tick` varchar(11) NOT NULL DEFAULT '0',
+  `flag` varchar(3) NOT NULL DEFAULT '0',
+  `type` char(1) NOT NULL DEFAULT '0',
+  `icon` varchar(3) NOT NULL DEFAULT '-1'
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

+ 5 - 0
sql-files/upgrades/upgrade_20131227.sql

@@ -0,0 +1,5 @@
+ALTER TABLE  `bonus_script` CHANGE  `char_id`  `char_id` VARCHAR( 11 ) NOT NULL;
+ALTER TABLE  `bonus_script` CHANGE  `tick`  `tick` VARCHAR( 11 ) NOT NULL DEFAULT '0';
+ALTER TABLE  `bonus_script` CHANGE  `flag`  `flag` VARCHAR( 3 ) NOT NULL DEFAULT '0';
+ALTER TABLE  `bonus_script` CHANGE  `type`  `type` CHAR( 1 ) NOT NULL DEFAULT '0';
+ALTER TABLE  `bonus_script` ADD  `icon` VARCHAR( 3 ) NOT NULL DEFAULT  '-1';

+ 7 - 4
src/char/char.c

@@ -5202,7 +5202,7 @@ void bonus_script_get(int fd) {
 		cid = RFIFOL(fd,2);
 		RFIFOSKIP(fd,6);
 
-		if (SQL_ERROR == Sql_Query(sql_handle,"SELECT `script`, `tick`, `flag`, `type` FROM `%s` WHERE `char_id`='%d'",
+		if (SQL_ERROR == Sql_Query(sql_handle,"SELECT `script`, `tick`, `flag`, `type`, `icon` FROM `%s` WHERE `char_id`='%d'",
 			bonus_script_db,cid))
 		{
 			Sql_ShowDebug(sql_handle);
@@ -5221,9 +5221,10 @@ void bonus_script_get(int fd) {
 				Sql_GetData(sql_handle,1,&data,NULL); bsdata.tick = atoi(data);
 				Sql_GetData(sql_handle,2,&data,NULL); bsdata.flag = atoi(data);
 				Sql_GetData(sql_handle,3,&data,NULL); bsdata.type = atoi(data);
+				Sql_GetData(sql_handle,4,&data,NULL); bsdata.icon = atoi(data);
 				memcpy(WFIFOP(fd,10+count*sizeof(struct bonus_script_data)),&bsdata,sizeof(struct bonus_script_data));
 			}
-			if (count >= 50)
+			if (count >= 20)
 				ShowWarning("Too many bonus_script for %d, some of them were not loaded.\n",cid);
 			if (count > 0) {
 				WFIFOW(fd,2) = 10 + count*sizeof(struct bonus_script_data);
@@ -5233,6 +5234,7 @@ void bonus_script_get(int fd) {
 				//Clear the data once loaded.
 				if (SQL_ERROR == Sql_Query(sql_handle,"DELETE FROM `%s` WHERE `char_id`='%d'",bonus_script_db,cid))
 					Sql_ShowDebug(sql_handle);
+				ShowInfo("Loaded %d bonus_script for char_id: %d\n",count,cid);
 			}
 		}
 		Sql_FreeResult(sql_handle);
@@ -5259,17 +5261,18 @@ void bonus_script_save(int fd) {
 			char esc_script[MAX_BONUS_SCRIPT_LENGTH] = "";
 
 			StringBuf_Init(&buf);
-			StringBuf_Printf(&buf,"INSERT INTO `%s` (`char_id`, `script`, `tick`, `flag`, `type`) VALUES ",bonus_script_db);
+			StringBuf_Printf(&buf,"INSERT INTO `%s` (`char_id`, `script`, `tick`, `flag`, `type`, `icon`) VALUES ",bonus_script_db);
 			for (i = 0; i < count; ++i) {
 				memcpy(&bs,RFIFOP(fd,10+i*sizeof(struct bonus_script_data)),sizeof(struct bonus_script_data));
 				Sql_EscapeString(sql_handle,esc_script,bs.script);
 				if (i > 0)
 					StringBuf_AppendStr(&buf,", ");
-				StringBuf_Printf(&buf,"(%d,'%s',%d,%d,%d)",cid,esc_script,bs.tick,bs.flag,bs.type);
+				StringBuf_Printf(&buf,"('%d','%s','%d','%d','%d','%d')",cid,esc_script,bs.tick,bs.flag,bs.type,bs.icon);
 			}
 			if (SQL_ERROR == Sql_QueryStr(sql_handle,StringBuf_Value(&buf)))
 				Sql_ShowDebug(sql_handle);
 			StringBuf_Destroy(&buf);
+			ShowInfo("Saved %d bonus_script for char_id: %d\n",count,cid);
 		}
 		RFIFOSKIP(fd,RFIFOW(fd,2));
 	}

+ 2 - 1
src/common/mmo.h

@@ -228,7 +228,8 @@ struct status_change_data {
 struct bonus_script_data {
 	char script[MAX_BONUS_SCRIPT_LENGTH];
 	long tick;
-	short type, flag;
+	char type;
+	short flag, icon;
 };
 
 struct skill_cooldown_data {

+ 15 - 5
src/map/chrif.c

@@ -1791,8 +1791,14 @@ int chrif_save_bsdata(struct map_session_data *sd) {
 	WFIFOW(char_fd,0) = 0x2b2e;
 	WFIFOL(char_fd,4) = sd->status.char_id;
 	
-	//Clear un-saved data
-	pc_bonus_script_check(sd,BONUS_FLAG_REM_ON_LOGOUT);
+	i = BONUS_FLAG_REM_ON_LOGOUT; //Remove bonus with this flag
+	if (battle_config.debuff_on_logout&1) //Remove negative buffs
+		i |= BONUS_FLAG_REM_DEBUFF;
+	if (battle_config.debuff_on_logout&2) //Remove positive buffs
+		i |= BONUS_FLAG_REM_BUFF;
+	
+	//Clear data that won't be stored
+	pc_bonus_script_clear(sd,i);
 
 	for (i = 0; i < MAX_PC_BONUS_SCRIPT; i++) {
 		if (!(&sd->bonus_script[i]) || !sd->bonus_script[i].script || strlen(sd->bonus_script[i].script_str) == 0)
@@ -1805,8 +1811,9 @@ int chrif_save_bsdata(struct map_session_data *sd) {
 		memcpy(bs.script,sd->bonus_script[i].script_str,strlen(sd->bonus_script[i].script_str)+1);
 		bs.tick = DIFF_TICK(timer->tick,tick);
 		bs.flag = sd->bonus_script[i].flag;
-		bs.type = (sd->bonus_script[i].isBuff) ? 1 : 0;
-		
+		bs.type = sd->bonus_script[i].type;
+		bs.icon = sd->bonus_script[i].icon;
+
 		memcpy(WFIFOP(char_fd,10+count*sizeof(struct bonus_script_data)),&bs,sizeof(struct bonus_script_data));
 		delete_timer(sd->bonus_script[i].tid,pc_bonus_script_timer);
 		pc_bonus_script_remove(sd,i);
@@ -1858,7 +1865,10 @@ int chrif_load_bsdata(int fd) {
 		sd->bonus_script[i].script = script;
 		sd->bonus_script[i].tick = gettick() + bs->tick;
 		sd->bonus_script[i].flag = (uint8)bs->flag;
-		sd->bonus_script[i].isBuff = (bs->type) ? true : false;
+		sd->bonus_script[i].type = bs->type;
+		sd->bonus_script[i].icon = bs->icon;
+		if (bs->icon != SI_BLANK) //Gives status icon if exist
+			clif_status_change(&sd->bl,sd->bonus_script[i].icon,1,bs->tick,1,0,0);
 		count_++;
 	}
 	if (count_)

+ 2 - 2
src/map/map.c

@@ -1677,7 +1677,7 @@ int map_quit(struct map_session_data *sd) {
 		status_change_end(&sd->bl, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_KYOUGAKU, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_C_MARKER, INVALID_TIMER);
-		if (battle_config.debuff_on_logout&1) {
+		if (battle_config.debuff_on_logout&1) { //Remove negative buffs
 			status_change_end(&sd->bl, SC_ORCISH, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_STRIPWEAPON, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_STRIPARMOR, INVALID_TIMER);
@@ -1697,7 +1697,7 @@ int map_quit(struct map_session_data *sd) {
 			status_change_end(&sd->bl, SC_ANTI_M_BLAST, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_B_TRAP, INVALID_TIMER);
 		}
-		if (battle_config.debuff_on_logout&2) {
+		if (battle_config.debuff_on_logout&2) { //Remove positive buffs
 			status_change_end(&sd->bl, SC_MAXIMIZEPOWER, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_MAXOVERTHRUST, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_STEELBODY, INVALID_TIMER);

+ 19 - 12
src/map/pc.c

@@ -6936,7 +6936,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 	}
 	
 	//Remove bonus_script when dead
-	pc_bonus_script_check(sd,BONUS_FLAG_REM_ON_DEAD);
+	pc_bonus_script_clear(sd,BONUS_FLAG_REM_ON_DEAD);
 
 	// changed penalty options, added death by player if pk_mode [Valaris]
 	if(battle_config.death_penalty_type
@@ -10371,7 +10371,7 @@ enum e_BANKING_WITHDRAW_ACK pc_bank_withdraw(struct map_session_data *sd, int mo
 
 /**
 * Clear Cirmson Marker data from caster
-* @param sd
+* @param sd: Player
 **/
 void pc_crimson_marker_clear(struct map_session_data *sd) {
 	uint8 i;
@@ -10388,7 +10388,7 @@ void pc_crimson_marker_clear(struct map_session_data *sd) {
 
 /**
 * Show version to player
-* @param sd
+* @param sd: Player
 **/
 void pc_show_version(struct map_session_data *sd) {
 	const char* svn = get_svn_revision();
@@ -10433,8 +10433,8 @@ int pc_bonus_script_timer(int tid, unsigned int tick, int id, intptr_t data) {
 
 /** [Cydh]
 * Remove bonus_script data from sd (not deleting timer)
-* @param sd target
-* @param i script index
+* @param sd: Target player
+* @param i: Bonus script index
 **/
 void pc_bonus_script_remove(struct map_session_data *sd, uint8 i) {
 	if (!sd || i >= MAX_PC_BONUS_SCRIPT)
@@ -10446,32 +10446,39 @@ void pc_bonus_script_remove(struct map_session_data *sd, uint8 i) {
 	sd->bonus_script[i].tick = 0;
 	sd->bonus_script[i].tid = 0;
 	sd->bonus_script[i].flag = 0;
+	clif_status_change(&sd->bl,sd->bonus_script[i].icon,0,0,0,0,0);
+	sd->bonus_script[i].icon = SI_BLANK;
 }
 
 /** [Cydh]
-* Clear all active timer(s) of bonus_script data from sd
-* @param sd target
-* @param flag reason to remove the bonus_script
+* Check then clear all active timer(s) of bonus_script data from player based on reason
+* @param sd: Target player
+* @param flag: Reason to remove the bonus_script. e_bonus_script_flags or e_bonus_script_types
 **/
-void pc_bonus_script_check(struct map_session_data *sd, enum e_bonus_script_flags flag) {
+void pc_bonus_script_clear(struct map_session_data *sd, uint16 flag) {
 	uint8 i, count = 0;
 	if (!sd)
 		return;
 
 	for (i = 0; i < MAX_PC_BONUS_SCRIPT; i++) {
-		if (&sd->bonus_script[i] && sd->bonus_script[i].script && sd->bonus_script[i].flag&flag) {
+		if (&sd->bonus_script[i] && sd->bonus_script[i].script &&
+			(sd->bonus_script[i].flag&flag || //Remove bonus script based on e_bonus_script_flags
+			(sd->bonus_script[i].type &&
+			(flag&BONUS_FLAG_REM_BUFF && sd->bonus_script[i].type == 1) || //Remove bonus script based on buff type
+			(flag&BONUS_FLAG_REM_DEBUFF && sd->bonus_script[i].type == 2)))) //Remove bonus script based on debuff type
+		{
 			delete_timer(sd->bonus_script[i].tid,pc_bonus_script_timer);
 			pc_bonus_script_remove(sd,i);
 			count++;
 		}
 	}
-	if (count && flag != BONUS_FLAG_REM_ON_LOGOUT) //Don't need do this if log out
+	if (count && !(flag&BONUS_FLAG_REM_ON_LOGOUT)) //Don't need to do this if log out
 		status_calc_pc(sd,false);
 }
 
 /** [Cydh]
  * Gives/removes SC_BASILICA when player steps in/out the cell with 'cell_basilica'
- * @param sd player
+ * @param sd: Target player
  */
 void pc_cell_basilica(struct map_session_data *sd) {
 	nullpo_retv(sd);

+ 7 - 6
src/map/pc.h

@@ -552,23 +552,24 @@ struct map_session_data {
 		int id;
 	} dmglog[DAMAGELOG_SIZE_PC];
 
-	struct s_crimson_marker {
+	struct s_crimson_marker { ///Store target that marked by Crimson Marker [Cydh]
 		int target[MAX_SKILL_CRIMSON_MARKER]; //Target id storage
 		uint8 count; //Count of target for skill like RL_D_TAIL
 	} c_marker;
-	bool flicker;
+	bool flicker; ///Is Flicker Skill skill as player's last action? [Cydh]
 
-	int storage_size; // Holds player storage size (VIP system).
+	int storage_size; /// Holds player storage size (VIP system).
 #ifdef VIP_ENABLE
 	struct vip_info  vip;
 #endif
-	//Timed bonus 'bonus_script' struct [Cydh]
+	///Timed bonus 'bonus_script' struct [Cydh]
 	struct s_script {
 		struct script_code *script;
 		char script_str[MAX_BONUS_SCRIPT_LENGTH]; //Used for comparing and storing on table
 		uint32 tick;
 		uint8 flag;
-		bool isBuff; //Can be used for deciding which bonus that buff or debuff
+		char type; //0 - Ignore; 1 - Buff; 2 - Debuff
+		int16 icon;
 		int tid;
 	} bonus_script[MAX_PC_BONUS_SCRIPT];
 };
@@ -1051,7 +1052,7 @@ void pc_show_version(struct map_session_data *sd);
 
 int pc_bonus_script_timer(int tid, unsigned int tick, int id, intptr_t data);
 void pc_bonus_script_remove(struct map_session_data *sd, uint8 i);
-void pc_bonus_script_check(struct map_session_data *sd, enum e_bonus_script_flags flag);
+void pc_bonus_script_clear(struct map_session_data *sd, uint16 flag);
 
 void pc_cell_basilica(struct map_session_data *sd);
 

+ 13 - 8
src/map/script.c

@@ -18212,7 +18212,7 @@ BUILDIN_FUNC(montransform) {
 }
 
 /** [Cydh]
- * bonus_script "<script code>",<duration>{,<flag>{,<type>{,<char_id>}}};
+ * bonus_script "<script code>",<duration>{,<flag>{,<type>{,<status_icon>{,<char_id>}}}};
  * @param "script code"
  * @param duration
  * @param flag
@@ -18220,14 +18220,15 @@ BUILDIN_FUNC(montransform) {
  **/
 BUILDIN_FUNC(bonus_script) {
 	uint8 i, flag = 0;
+	int16 icon = SI_BLANK;
 	uint32 dur;
-	bool isBuff = true;
+	char type = 0;
 	TBL_PC* sd;
 	const char *script_str = NULL;
 	struct script_code *script = NULL;
 
-	if (script_hasdata(st,6))
-		sd = map_charid2sd(script_getnum(st,6));
+	if (script_hasdata(st,7))
+		sd = map_charid2sd(script_getnum(st,7));
 	else
 		sd = script_rid2sd(st);
 
@@ -18237,8 +18238,8 @@ BUILDIN_FUNC(bonus_script) {
 	script_str = script_getstr(st,2);
 	dur = 1000 * abs(script_getnum(st,3));
 	FETCH(4,flag);
-	if (script_getnum(st,5) == 1)
-		isBuff = false;
+	FETCH(5,type);
+	FETCH(6,icon);
 
 	if (!strlen(script_str) || !dur) {
 		//ShowWarning("buildin_bonus_script: Invalid value(s). Skipping...\n");
@@ -18269,7 +18270,11 @@ BUILDIN_FUNC(bonus_script) {
 	sd->bonus_script[i].script = script;
 	sd->bonus_script[i].tick = gettick() + dur;
 	sd->bonus_script[i].flag = flag;
-	sd->bonus_script[i].isBuff = isBuff;
+	sd->bonus_script[i].type = type;
+	sd->bonus_script[i].icon = icon;
+
+	if (sd->bonus_script[i].icon != SI_BLANK) //Gives status icon if exist
+		clif_status_change(&sd->bl,sd->bonus_script[i].icon,1,dur,1,0,0);
 
 	status_calc_pc(sd,false);
 	return SCRIPT_CMD_SUCCESS;
@@ -18755,7 +18760,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF2(montransform, "transform", "vii????"), // Monster Transform [malufett/Hercules]
 	BUILDIN_DEF(vip_status,"i?"),
 	BUILDIN_DEF(vip_time,"i?"),
-	BUILDIN_DEF(bonus_script,"si???"),
+	BUILDIN_DEF(bonus_script,"si????"),
 	BUILDIN_DEF(getgroupitem,"i"),
 
 #include "../custom/script_def.inc"

+ 2 - 2
src/map/skill.c

@@ -6835,7 +6835,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 			//Remove bonus_script when dispelled
 			if (dstsd)
-				pc_bonus_script_check(dstsd,BONUS_FLAG_REM_ON_DISPELL);
+				pc_bonus_script_clear(dstsd,BONUS_FLAG_REM_ON_DISPELL);
 
 			if(!tsc || !tsc->count)
 				break;
@@ -8337,7 +8337,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 			//Remove bonus_script when cleared
 			if (dstsd)
-				pc_bonus_script_check(dstsd,BONUS_FLAG_REM_ON_CLEARANCE);
+				pc_bonus_script_clear(dstsd,BONUS_FLAG_REM_ON_CLEARANCE);
 
 			if(!tsc || !tsc->count)
 				break;

+ 37 - 37
src/map/status.c

@@ -210,7 +210,7 @@ void initChangeTables(void)
 	set_sc( TF_HIDING		, SC_HIDING		, SI_HIDING		, SCB_SPEED );
 	add_sc( TF_POISON		, SC_POISON		);
 	set_sc( KN_TWOHANDQUICKEN	, SC_TWOHANDQUICKEN	, SI_TWOHANDQUICKEN	, SCB_ASPD );
-	add_sc( KN_AUTOCOUNTER		, SC_AUTOCOUNTER	);
+	set_sc( KN_AUTOCOUNTER		, SC_AUTOCOUNTER	, SI_AUTOCOUNTER	, SCB_NONE );
 	set_sc( PR_IMPOSITIO		, SC_IMPOSITIO		, SI_IMPOSITIO		, SCB_WATK );
 	set_sc( PR_SUFFRAGIUM		, SC_SUFFRAGIUM		, SI_SUFFRAGIUM		, SCB_NONE );
 	set_sc( PR_ASPERSIO		, SC_ASPERSIO		, SI_ASPERSIO		, SCB_ATK_ELE );
@@ -231,7 +231,7 @@ void initChangeTables(void)
 	set_sc( BS_OVERTHRUST		, SC_OVERTHRUST		, SI_OVERTHRUST		, SCB_NONE );
 	set_sc( BS_MAXIMIZE		, SC_MAXIMIZEPOWER	, SI_MAXIMIZEPOWER	, SCB_REGEN );
 	add_sc( HT_LANDMINE		, SC_STUN		);
-	add_sc( HT_ANKLESNARE		, SC_ANKLE		);
+	set_sc( HT_ANKLESNARE	, SC_ANKLE	, SI_ANKLESNARE	, SCB_NONE );
 	add_sc( HT_SANDMAN		, SC_SLEEP		);
 	add_sc( HT_FLASHER		, SC_BLIND		);
 	add_sc( HT_FREEZINGTRAP		, SC_FREEZE		);
@@ -240,7 +240,7 @@ void initChangeTables(void)
 	set_sc( AS_ENCHANTPOISON	, SC_ENCPOISON		, SI_ENCPOISON		, SCB_ATK_ELE );
 	set_sc( AS_POISONREACT		, SC_POISONREACT	, SI_POISONREACT	, SCB_NONE );
 	add_sc( AS_VENOMDUST		, SC_POISON		);
-	add_sc( AS_SPLASHER		, SC_SPLASHER		);
+	set_sc( AS_SPLASHER		, SC_SPLASHER	, SI_SPLASHER	, SCB_NONE );
 	set_sc( NV_TRICKDEAD		, SC_TRICKDEAD		, SI_TRICKDEAD		, SCB_REGEN );
 	set_sc( SM_AUTOBERSERK		, SC_AUTOBERSERK	, SI_AUTOBERSERK	, SCB_NONE );
 	add_sc( TF_SPRINKLESAND		, SC_BLIND		);
@@ -268,7 +268,7 @@ void initChangeTables(void)
 	add_sc( NPC_MAGICALATTACK	, SC_MAGICALATTACK	);
 	set_sc( NPC_KEEPING		, SC_KEEPING		, SI_BLANK		, SCB_DEF );
 	add_sc( NPC_DARKBLESSING	, SC_COMA		);
-	set_sc( NPC_BARRIER		, SC_BARRIER		, SI_BLANK		, SCB_MDEF|SCB_DEF );
+	set_sc( NPC_BARRIER		, SC_BARRIER		, SI_BARRIER	, SCB_MDEF|SCB_DEF );
 	add_sc( NPC_DEFENDER		, SC_ARMOR		);
 	add_sc( NPC_LICK		, SC_STUN		);
 	set_sc( NPC_HALLUCINATION	, SC_HALLUCINATION	, SI_HALLUCINATION	, SCB_NONE );
@@ -292,19 +292,19 @@ void initChangeTables(void)
 	set_sc( CR_REFLECTSHIELD	, SC_REFLECTSHIELD	, SI_REFLECTSHIELD	, SCB_NONE );
 	add_sc( CR_HOLYCROSS		, SC_BLIND		);
 	add_sc( CR_GRANDCROSS		, SC_BLIND		);
-	add_sc( CR_DEVOTION		, SC_DEVOTION		);
+	set_sc( CR_DEVOTION		, SC_DEVOTION	, SI_DEVOTION	, SCB_NONE);
 	set_sc( CR_PROVIDENCE		, SC_PROVIDENCE		, SI_PROVIDENCE		, SCB_ALL );
 	set_sc( CR_DEFENDER		, SC_DEFENDER		, SI_DEFENDER		, SCB_SPEED|SCB_ASPD );
 	set_sc( CR_SPEARQUICKEN		, SC_SPEARQUICKEN	, SI_SPEARQUICKEN	, SCB_ASPD|SCB_CRI|SCB_FLEE );
 	set_sc( MO_STEELBODY		, SC_STEELBODY		, SI_STEELBODY		, SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED );
 	add_sc( MO_BLADESTOP		, SC_BLADESTOP_WAIT	);
-	add_sc( MO_BLADESTOP		, SC_BLADESTOP		);
+	set_sc( MO_BLADESTOP		, SC_BLADESTOP	, SI_BLADESTOP	, SCB_NONE );
 	set_sc( MO_EXPLOSIONSPIRITS	, SC_EXPLOSIONSPIRITS	, SI_EXPLOSIONSPIRITS	, SCB_CRI|SCB_REGEN );
 	set_sc( MO_EXTREMITYFIST	, SC_EXTREMITYFIST	, SI_BLANK		, SCB_REGEN );
 #ifdef RENEWAL
 	set_sc( MO_EXTREMITYFIST	, SC_EXTREMITYFIST2	, SI_EXTREMITYFIST	, SCB_NONE );
 #endif
-	add_sc( SA_MAGICROD		, SC_MAGICROD		);
+	set_sc( SA_MAGICROD		, SC_MAGICROD	, SI_MAGICROD	, SCB_NONE );
 	set_sc( SA_AUTOSPELL		, SC_AUTOSPELL		, SI_AUTOSPELL		, SCB_NONE );
 	set_sc( SA_FLAMELAUNCHER	, SC_FIREWEAPON		, SI_FIREWEAPON		, SCB_ATK_ELE );
 	set_sc( SA_FROSTWEAPON		, SC_WATERWEAPON	, SI_WATERWEAPON	, SCB_ATK_ELE );
@@ -315,24 +315,24 @@ void initChangeTables(void)
 	set_sc( SA_VIOLENTGALE		, SC_VIOLENTGALE	, SI_LANDENDOW		, SCB_FLEE );
 	add_sc( SA_REVERSEORCISH	, SC_ORCISH		);
 	add_sc( SA_COMA			, SC_COMA		);
-	set_sc( BD_ENCORE		, SC_DANCING		, SI_BLANK		, SCB_SPEED|SCB_REGEN );
-	add_sc( BD_RICHMANKIM		, SC_RICHMANKIM		);
-	set_sc( BD_ETERNALCHAOS		, SC_ETERNALCHAOS	, SI_BLANK		, SCB_DEF2 );
-	set_sc( BD_DRUMBATTLEFIELD	, SC_DRUMBATTLE		, SI_BLANK		, SCB_WATK|SCB_DEF );
-	set_sc( BD_RINGNIBELUNGEN	, SC_NIBELUNGEN		, SI_BLANK		, SCB_WATK );
-	add_sc( BD_ROKISWEIL		, SC_ROKISWEIL		);
-	add_sc( BD_INTOABYSS		, SC_INTOABYSS		);
-	set_sc( BD_SIEGFRIED		, SC_SIEGFRIED		, SI_BLANK		, SCB_ALL );
+	set_sc( BD_ENCORE		, SC_DANCING		, SI_BDPLAYING		, SCB_SPEED|SCB_REGEN );
+	set_sc( BD_RICHMANKIM		, SC_RICHMANKIM		, SI_RICHMANKIM	, SCB_NONE	);
+	set_sc( BD_ETERNALCHAOS		, SC_ETERNALCHAOS	, SI_ETERNALCHAOS	, SCB_DEF2 );
+	set_sc( BD_DRUMBATTLEFIELD	, SC_DRUMBATTLE		, SI_DRUMBATTLEFIELD	, SCB_WATK|SCB_DEF );
+	set_sc( BD_RINGNIBELUNGEN	, SC_NIBELUNGEN		, SI_RINGNIBELUNGEN		, SCB_WATK );
+	set_sc( BD_ROKISWEIL		, SC_ROKISWEIL	, SI_ROKISWEIL	, SCB_NONE );
+	set_sc( BD_INTOABYSS		, SC_INTOABYSS	, SI_INTOABYSS	, SCB_NONE );
+	set_sc( BD_SIEGFRIED		, SC_SIEGFRIED		, SI_SIEGFRIED	, SCB_ALL );
 	add_sc( BA_FROSTJOKER		, SC_FREEZE		);
-	set_sc( BA_WHISTLE		, SC_WHISTLE		, SI_BLANK		, SCB_FLEE|SCB_FLEE2 );
-	set_sc( BA_ASSASSINCROSS	, SC_ASSNCROS		, SI_BLANK		, SCB_ASPD );
-	add_sc( BA_POEMBRAGI		, SC_POEMBRAGI		);
-	set_sc( BA_APPLEIDUN		, SC_APPLEIDUN		, SI_BLANK		, SCB_MAXHP );
-	add_sc( DC_SCREAM		, SC_STUN		);
-	set_sc( DC_HUMMING		, SC_HUMMING		, SI_BLANK		, SCB_HIT );
-	set_sc( DC_DONTFORGETME		, SC_DONTFORGETME	, SI_BLANK		, SCB_SPEED|SCB_ASPD );
-	set_sc( DC_FORTUNEKISS		, SC_FORTUNE		, SI_BLANK		, SCB_CRI );
-	set_sc( DC_SERVICEFORYOU	, SC_SERVICE4U		, SI_BLANK		, SCB_ALL );
+	set_sc( BA_WHISTLE		, SC_WHISTLE		, SI_WHISTLE		, SCB_FLEE|SCB_FLEE2 );
+	set_sc( BA_ASSASSINCROSS	, SC_ASSNCROS		, SI_ASSASSINCROSS		, SCB_ASPD );
+	set_sc( BA_POEMBRAGI		, SC_POEMBRAGI	, SI_POEMBRAGI	, SCB_NONE	);
+	set_sc( BA_APPLEIDUN		, SC_APPLEIDUN		, SI_APPLEIDUN		, SCB_MAXHP );
+	add_sc( DC_SCREAM		, SC_STUN );
+	set_sc( DC_HUMMING		, SC_HUMMING		, SI_HUMMING		, SCB_HIT );
+	set_sc( DC_DONTFORGETME		, SC_DONTFORGETME	, SI_DONTFORGETME	, SCB_SPEED|SCB_ASPD );
+	set_sc( DC_FORTUNEKISS		, SC_FORTUNE		, SI_FORTUNEKISS	, SCB_CRI );
+	set_sc( DC_SERVICEFORYOU	, SC_SERVICE4U		, SI_SERVICEFORYOU	, SCB_ALL );
 	add_sc( NPC_DARKCROSS		, SC_BLIND		);
 	add_sc( NPC_GRANDDARKNESS	, SC_BLIND		);
 	set_sc( NPC_STOP		, SC_STOP		, SI_STOP		, SCB_NONE );
@@ -351,7 +351,7 @@ void initChangeTables(void)
 	add_sc( HP_BASILICA		, SC_BASILICA		);
 	set_sc( HW_MAGICPOWER		, SC_MAGICPOWER		, SI_MAGICPOWER		, SCB_MATK );
 	add_sc( PA_SACRIFICE		, SC_SACRIFICE		);
-	set_sc( PA_GOSPEL		, SC_GOSPEL		, SI_BLANK		, SCB_SPEED|SCB_ASPD );
+	set_sc( PA_GOSPEL		, SC_GOSPEL		, SI_GOSPEL		, SCB_SPEED|SCB_ASPD );
 	add_sc( PA_GOSPEL		, SC_SCRESIST		);
 	add_sc( CH_TIGERFIST		, SC_STOP		);
 	set_sc( ASC_EDP			, SC_EDP		, SI_EDP		, SCB_NONE );
@@ -359,7 +359,7 @@ void initChangeTables(void)
 	set_sc( SN_WINDWALK		, SC_WINDWALK		, SI_WINDWALK		, SCB_FLEE|SCB_SPEED );
 	set_sc( WS_MELTDOWN		, SC_MELTDOWN		, SI_MELTDOWN		, SCB_NONE );
 	set_sc( WS_CARTBOOST		, SC_CARTBOOST		, SI_CARTBOOST		, SCB_SPEED );
-	set_sc( ST_CHASEWALK		, SC_CHASEWALK		, SI_BLANK		, SCB_SPEED );
+	set_sc( ST_CHASEWALK		, SC_CHASEWALK		, SI_CHASEWALK		, SCB_SPEED );
 	set_sc( ST_REJECTSWORD		, SC_REJECTSWORD	, SI_REJECTSWORD	, SCB_NONE );
 	add_sc( ST_REJECTSWORD		, SC_AUTOCOUNTER	);
 	set_sc( CG_MARIONETTE		, SC_MARIONETTE		, SI_MARIONETTE		, SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
@@ -368,10 +368,10 @@ void initChangeTables(void)
 	add_sc( LK_HEADCRUSH		, SC_BLEEDING		);
 	set_sc( LK_JOINTBEAT		, SC_JOINTBEAT		, SI_JOINTBEAT		, SCB_BATK|SCB_DEF2|SCB_SPEED|SCB_ASPD );
 	add_sc( HW_NAPALMVULCAN		, SC_CURSE		);
-	set_sc( PF_MINDBREAKER		, SC_MINDBREAKER	, SI_BLANK		, SCB_MATK|SCB_MDEF2 );
-	add_sc( PF_MEMORIZE		, SC_MEMORIZE		);
-	add_sc( PF_FOGWALL		, SC_FOGWALL		);
-	set_sc( PF_SPIDERWEB		, SC_SPIDERWEB		, SI_BLANK		, SCB_FLEE );
+	set_sc( PF_MINDBREAKER		, SC_MINDBREAKER	, SI_MINDBREAKER	, SCB_MATK|SCB_MDEF2 );
+	set_sc( PF_MEMORIZE		, SC_MEMORIZE	, SI_MEMORIZE	, SCB_NONE );
+	set_sc( PF_FOGWALL		, SC_FOGWALL	, SI_FOGWALL	, SCB_NONE );
+	set_sc( PF_SPIDERWEB		, SC_SPIDERWEB		, SI_SPIDERWEB		, SCB_FLEE );
 	set_sc( WE_BABY			, SC_BABY		, SI_BABY		, SCB_NONE );
 	set_sc( TK_RUN			, SC_RUN		, SI_RUN		, SCB_SPEED|SCB_DSPD );
 	set_sc( TK_RUN			, SC_SPURT		, SI_SPURT		, SCB_STR );
@@ -400,18 +400,18 @@ void initChangeTables(void)
 	set_sc( SL_KAUPE		, SC_KAUPE		, SI_KAUPE		, SCB_NONE );
 	set_sc( SL_KAITE		, SC_KAITE		, SI_KAITE		, SCB_NONE );
 	add_sc( SL_STUN			, SC_STUN		);
-	set_sc( SL_SWOO			, SC_SWOO		, SI_BLANK		, SCB_SPEED );
+	set_sc( SL_SWOO			, SC_SWOO		, SI_SWOO		, SCB_SPEED );
 	set_sc( SL_SKE			, SC_SKE		, SI_BLANK		, SCB_BATK|SCB_WATK|SCB_DEF|SCB_DEF2 );
 	set_sc( SL_SKA			, SC_SKA		, SI_BLANK		, SCB_DEF|SCB_MDEF|SCB_ASPD );
 	set_sc( SL_SMA			, SC_SMA		, SI_SMA		, SCB_NONE );
 	set_sc( SM_SELFPROVOKE		, SC_PROVOKE		, SI_PROVOKE		, SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
 	set_sc( ST_PRESERVE		, SC_PRESERVE		, SI_PRESERVE		, SCB_NONE );
 	set_sc( PF_DOUBLECASTING	, SC_DOUBLECAST		, SI_DOUBLECAST		, SCB_NONE );
-	set_sc( HW_GRAVITATION		, SC_GRAVITATION	, SI_BLANK		, SCB_ASPD );
+	set_sc( HW_GRAVITATION		, SC_GRAVITATION	, SI_GRAVITATION	, SCB_ASPD );
 	add_sc( WS_CARTTERMINATION	, SC_STUN		);
 	set_sc( WS_OVERTHRUSTMAX	, SC_MAXOVERTHRUST	, SI_MAXOVERTHRUST	, SCB_NONE );
-	set_sc( CG_LONGINGFREEDOM	, SC_LONGING		, SI_BLANK		, SCB_SPEED|SCB_ASPD );
-	add_sc( CG_HERMODE		, SC_HERMODE		);
+	set_sc( CG_LONGINGFREEDOM	, SC_LONGING		, SI_LONGING		, SCB_SPEED|SCB_ASPD );
+	set_sc( CG_HERMODE		, SC_HERMODE	, SI_HERMODE	, SCB_NONE		);
 	set_sc( ITEM_ENCHANTARMS	, SC_ENCHANTARMS	, SI_BLANK		, SCB_ATK_ELE );
 	set_sc( SL_HIGH			, SC_SPIRIT		, SI_SPIRIT		, SCB_ALL );
 	set_sc( KN_ONEHAND		, SC_ONEHAND		, SI_ONEHAND		, SCB_ASPD );
@@ -529,8 +529,8 @@ void initChangeTables(void)
 	set_sc( GD_SOULCOLD		, SC_SOULCOLD		, SI_BLANK		, SCB_AGI );
 	set_sc( GD_HAWKEYES		, SC_HAWKEYES		, SI_BLANK		, SCB_DEX );
 
-	set_sc( GD_BATTLEORDER		, SC_BATTLEORDERS	, SI_BLANK		, SCB_STR|SCB_INT|SCB_DEX );
-	set_sc( GD_REGENERATION		, SC_REGENERATION	, SI_BLANK		, SCB_REGEN );
+	set_sc( GD_BATTLEORDER		, SC_BATTLEORDERS	, SI_GDSKILL_BATTLEORDER	, SCB_STR|SCB_INT|SCB_DEX );
+	set_sc( GD_REGENERATION		, SC_REGENERATION	, SI_GDSKILL_REGENERATION	, SCB_REGEN );
 
 	/* Rune Knight */
 	set_sc( RK_ENCHANTBLADE		, SC_ENCHANTBLADE	, SI_ENCHANTBLADE		, SCB_NONE );
@@ -2794,7 +2794,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 			run_script(data->script,0,sd->bl.id,0);
 	}
 
-	for (i = 0; i < MAX_PC_BONUS_SCRIPT; i++) { // Script Bonus
+	for (i = 0; i < MAX_PC_BONUS_SCRIPT; i++) { //Process script Bonus [Cydh]
 		if (!(&sd->bonus_script[i]) || !sd->bonus_script[i].script)
 			continue;
 		if (!sd->bonus_script[i].tid) //Just add timer only for new attached script

+ 43 - 47
src/map/status.h

@@ -738,13 +738,13 @@ enum si_type {
 	SI_ASPDPOTIONINFINITY = 40,
 	SI_SPEEDPOTION1		= 41,
 //	SI_MOVHASTE_INFINITY		= 42,
-//	SI_AUTOCOUNTER = 43,
-//	SI_SPLASHER = 44,
-//	SI_ANKLESNARE = 45,
+	SI_AUTOCOUNTER = 43,
+	SI_SPLASHER = 44,
+	SI_ANKLESNARE = 45,
 	SI_ACTIONDELAY		= 46,
 //	SI_NOACTION = 47,
 //	SI_IMPOSSIBLEPICKUP = 48,
-//	SI_BARRIER = 49,
+	SI_BARRIER = 49,
 	SI_STRIPWEAPON		= 50,
 	SI_STRIPSHIELD		= 51,
 	SI_STRIPARMOR		= 52,
@@ -755,32 +755,32 @@ enum si_type {
 	SI_CP_HELM		= 57,
 	SI_AUTOGUARD		= 58,
 	SI_REFLECTSHIELD	= 59,
-//	SI_DEVOTION = 60,
+	SI_DEVOTION = 60,
 	SI_PROVIDENCE		= 61,
 	SI_DEFENDER		= 62,
-//	SI_MAGICROD = 63,
+	SI_MAGICROD = 63,
 //	SI_WEAPONPROPERTY = 64,
 	SI_AUTOSPELL		= 65,
 //	SI_SPECIALZONE = 66,
 //	SI_MASK = 67,
 	SI_SPEARQUICKEN		= 68,
-//	SI_BDPLAYING = 69,
-//	SI_WHISTLE = 70,
-//	SI_ASSASSINCROSS = 71,
-//	SI_POEMBRAGI = 72,
-//	SI_APPLEIDUN = 73,
-//	SI_HUMMING = 74,
-//	SI_DONTFORGETME = 75,
-//	SI_FORTUNEKISS = 76,
-//	SI_SERVICEFORYOU = 77,
-//	SI_RICHMANKIM = 78,
-//	SI_ETERNALCHAOS = 79,
-//	SI_DRUMBATTLEFIELD = 80,
-//	SI_RINGNIBELUNGEN = 81,
-//	SI_ROKISWEIL = 82,
-//	SI_INTOABYSS = 83,
-//	SI_SIEGFRIED = 84,
-//	SI_BLADESTOP = 85,
+	SI_BDPLAYING = 69,
+	SI_WHISTLE = 70,
+	SI_ASSASSINCROSS = 71,
+	SI_POEMBRAGI = 72,
+	SI_APPLEIDUN = 73,
+	SI_HUMMING = 74,
+	SI_DONTFORGETME = 75,
+	SI_FORTUNEKISS = 76,
+	SI_SERVICEFORYOU = 77,
+	SI_RICHMANKIM = 78,
+	SI_ETERNALCHAOS = 79,
+	SI_DRUMBATTLEFIELD = 80,
+	SI_RINGNIBELUNGEN = 81,
+	SI_ROKISWEIL = 82,
+	SI_INTOABYSS = 83,
+	SI_SIEGFRIED = 84,
+	SI_BLADESTOP = 85,
 	SI_EXPLOSIONSPIRITS	= 86,
 	SI_STEELBODY		= 87,
 	SI_EXTREMITYFIST = 88,
@@ -804,9 +804,9 @@ enum si_type {
 	SI_TENSIONRELAX		= 106,
 	SI_BERSERK		= 107,
 //	SI_SACRIFICE = 108,
-//	SI_GOSPEL = 109,
+	SI_GOSPEL = 109,
 	SI_ASSUMPTIO		= 110,
-//	SI_BASILICA = 111,
+	SI_BASILICA = 111,
 	SI_LANDENDOW		= 112,
 	SI_MAGICPOWER		= 113,
 	SI_EDP			= 114,
@@ -814,17 +814,17 @@ enum si_type {
 	SI_WINDWALK		= 116,
 	SI_MELTDOWN		= 117,
 	SI_CARTBOOST		= 118,
-//	SI_CHASEWALK = 119,
+	SI_CHASEWALK = 119,
 	SI_REJECTSWORD		= 120,
 	SI_MARIONETTE		= 121,
 	SI_MARIONETTE2		= 122,
 	SI_MOONLIT		= 123,
 	SI_BLEEDING		= 124,
 	SI_JOINTBEAT		= 125,
-//	SI_MINDBREAKER = 126,
-//	SI_MEMORIZE = 127,
-//	SI_FOGWALL = 128,
-//	SI_SPIDERWEB = 129,
+	SI_MINDBREAKER = 126,
+	SI_MEMORIZE = 127,
+	SI_FOGWALL = 128,
+	SI_SPIDERWEB = 129,
 	SI_BABY			= 130,
 //	SI_SUB_WEAPONPROPERTY = 131,
 	SI_AUTOBERSERK		= 132,
@@ -849,7 +849,7 @@ enum si_type {
 	SI_PLUSMAGICPOWER = 151,
 	SI_DEVIL		= 152,
 	SI_KAITE		= 153,
-//	SI_SWOO = 154,
+	SI_SWOO = 154,
 //	SI_STAR2 = 155,
 	SI_KAIZEL		= 156,
 	SI_KAAHI		= 157,
@@ -868,8 +868,8 @@ enum si_type {
 	SI_MOON_COMFORT		= 170,
 	SI_STAR_COMFORT		= 171,
 //	SI_EXPUP = 172,
-//	SI_GDSKILL_BATTLEORDER = 173,
-//	SI_GDSKILL_REGENERATION = 174,
+	SI_GDSKILL_BATTLEORDER = 173,
+	SI_GDSKILL_REGENERATION = 174,
 //	SI_GDSKILL_POSTDELAY = 175,
 //	SI_RESISTHANDICAP = 176,
 //	SI_MAXHPPERCENT = 177,
@@ -882,10 +882,10 @@ enum si_type {
 	SI_INTRAVISION		= 184,
 //	SI_MOVESLOW_POTION = 185,
 	SI_DOUBLECAST		= 186,
-//	SI_GRAVITATION = 187,
+	SI_GRAVITATION = 187,
 	SI_MAXOVERTHRUST	= 188,
-//	SI_LONGING = 189,
-//	SI_HERMODE = 190,
+	SI_LONGING = 189,
+	SI_HERMODE = 190,
 	SI_TAROT		= 191, // the icon allows no doubt... but what is it really used for ?? [DracoRPG]
 //	SI_HLIF_AVOID = 192,
 //	SI_HFLI_FLEET = 193,
@@ -1000,7 +1000,7 @@ enum si_type {
 	SI_ARMOR_PROPERTY = 302,
 //	SI_REUSE_LIMIT_A = 303,
 	SI_HELLPOWER = 304,
-//	SI_STEAMPACK = 305,
+	SI_STEAMPACK = 305,
 //	SI_REUSE_LIMIT_B = 306,
 //	SI_REUSE_LIMIT_C = 307,
 //	SI_REUSE_LIMIT_D = 308,
@@ -1672,16 +1672,12 @@ enum scb_flag
 
 ///Enum for bonus_script's flag
 enum e_bonus_script_flags {
-	BONUS_FLAG_REM_ON_DEAD		= 0x1,	//Remove bonus when dead
-	BONUS_FLAG_REM_ON_DISPELL	= 0x2,	//Removable by Dispell
-	BONUS_FLAG_REM_ON_CLEARANCE	= 0x4,	//Removable by Clearance
-	BONUS_FLAG_REM_ON_LOGOUT	= 0x8,	//Remove bonus when player logged out
-};
-
-///Enum for bonus_script's type
-enum e_bonus_script_types {
-	BONUS_TYPE_BUFF		= 0,
-	BONUS_TYPE_DEBUFF	= 1,
+	BONUS_FLAG_REM_ON_DEAD		= 0x01,	//Remove bonus when dead
+	BONUS_FLAG_REM_ON_DISPELL	= 0x02,	//Removable by Dispell
+	BONUS_FLAG_REM_ON_CLEARANCE	= 0x04,	//Removable by Clearance
+	BONUS_FLAG_REM_ON_LOGOUT	= 0x08,	//Remove bonus when player logged out
+	BONUS_FLAG_REM_BUFF			= 0x10,	//Remove bonus when player logged out
+	BONUS_FLAG_REM_DEBUFF		= 0x20,	//Remove bonus when player logged out
 };
 
 //Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]