*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>
This commit is contained in:
Cydh Ramdh 2013-12-27 18:17:41 +07:00
parent 90ced830a4
commit be05bc399b
15 changed files with 937 additions and 133 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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