diff options
291 files changed, 11038 insertions, 7359 deletions
diff --git a/conf/battle/client.conf b/conf/battle/client.conf index e10f03d82..6ca2f67e0 100644 --- a/conf/battle/client.conf +++ b/conf/battle/client.conf @@ -26,6 +26,8 @@ min_hair_color: 0 max_hair_color: 8 min_cloth_color: 0 max_cloth_color: 4 +min_body_style: 0 +max_body_style: 4 // When set to yes, the damage field in packets sent from woe maps will be set // to -1, making it impossible for GMs, Bots and Hexed clients to know the @@ -75,6 +77,11 @@ wedding_modifydisplay: no // Save Clothes color. (This will degrade performance) (Note 1) save_clothcolor: yes +// Save body styles? (Note 1) +// Note: Don't turn this on unless you know what your doing. +// Sprites are not released officially. +save_body_style: no + // Do not display cloth colors for the wedding costume? // Note: Both save_clothcolor and wedding_modifydisplay have to be enabled // for this option to take effect. Set this to yes if your cloth palettes diff --git a/conf/messages.conf b/conf/messages.conf index d946f2c8b..6e671b83b 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -1035,7 +1035,7 @@ // @changelook 1177: Usage: @changelook {<position>} <view id> -1178: Position: 1:Top 2:Middle 3:Bottom 4:Weapon 5:Shield 6:Shoes 7:Robe +1178: Position: 1:Top 2:Middle 3:Bottom 4:Weapon 5:Shield 6:Shoes 7:Robe 8:Body // @autotrade 1179: Autotrade is not allowed in this map. @@ -1516,8 +1516,9 @@ //src/map/atcommand.c::ACMD(auction) 1484: Auction is disabled +//1485: FREE + //Monster Transformation -1485: Traaaansformation-!! %s form!! 1486: Cannot transform into monster while in disguise. 1487: Character cannot be disguised while in monster form. 1488: Transforming into monster is not allowed in Guild Wars. diff --git a/db/const.txt b/db/const.txt index f02a5479c..361af4972 100644 --- a/db/const.txt +++ b/db/const.txt @@ -633,6 +633,7 @@ LOOK_SHOES 9 LOOK_BODY 10 LOOK_FLOOR 11 LOOK_ROBE 12 +LOOK_BODY2 13 Eff_Stone 0 Eff_Freeze 1 @@ -2568,6 +2569,7 @@ EF_TIME_ACCESSORY 1095 EF_SPRITEMABLE 1096 EF_TUNAPARTY 1097 +FAKE_NPC -1 WARPNPC 45 1_ETC_01 46 1_M_01 47 diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index 399f869eb..e2f82d34a 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -13649,7 +13649,7 @@ item_db: ( Range: 5 Job: 0x000A0808 Loc: 34 - WeaponLv: 4 + WeaponLv: 3 EquipLv: 65 View: 11 Script: <" bonus2 bAddMonsterDropItem,1753,200; "> @@ -30550,7 +30550,8 @@ item_db: ( Weight: 10 Loc: 2 Script: <" - if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { + .@i = getiteminfo(getequipid(EQI_HAND_R),11); + if (.@i == 10 || .@i == 23) { bonus bInt,1; bonus bIgnoreMdefRate,2; } @@ -30718,7 +30719,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,1; "> }, { @@ -30728,7 +30729,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,2; "> }, { @@ -30738,7 +30739,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,3; "> }, { @@ -30748,7 +30749,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,4; "> }, { @@ -30758,7 +30759,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,5; "> }, { @@ -30768,7 +30769,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,6; "> }, { @@ -30778,7 +30779,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,7; "> }, { @@ -30788,7 +30789,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,8; "> }, { @@ -30798,7 +30799,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,9; "> }, { @@ -30808,7 +30809,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,10; "> }, { @@ -30818,7 +30819,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,1; "> }, { @@ -30828,7 +30829,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,2; "> }, { @@ -30838,7 +30839,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,3; "> }, { @@ -30848,7 +30849,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,4; "> }, { @@ -30858,7 +30859,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,5; "> }, { @@ -30868,7 +30869,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,6; "> }, { @@ -30878,7 +30879,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,7; "> }, { @@ -30888,7 +30889,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,8; "> }, { @@ -30898,7 +30899,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,9; "> }, { @@ -30908,7 +30909,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,10; "> }, { @@ -30918,7 +30919,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,1; "> }, { @@ -30928,7 +30929,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,2; "> }, { @@ -30938,7 +30939,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,3; "> }, { @@ -30948,7 +30949,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,4; "> }, { @@ -30958,7 +30959,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,5; "> }, { @@ -30968,7 +30969,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,6; "> }, { @@ -30978,7 +30979,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,7; "> }, { @@ -30988,7 +30989,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,8; "> }, { @@ -30998,7 +30999,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,9; "> }, { @@ -31008,7 +31009,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,10; "> }, { @@ -31018,7 +31019,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,1; "> }, { @@ -31028,7 +31029,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,2; "> }, { @@ -31038,7 +31039,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,3; "> }, { @@ -31048,7 +31049,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,4; "> }, { @@ -31058,7 +31059,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,5; "> }, { @@ -31068,7 +31069,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,6; "> }, { @@ -31078,7 +31079,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,7; "> }, { @@ -31088,7 +31089,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,8; "> }, { @@ -31098,7 +31099,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,9; "> }, { @@ -31108,7 +31109,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,10; "> }, { @@ -31118,7 +31119,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,1; "> }, { @@ -31128,7 +31129,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,2; "> }, { @@ -31138,7 +31139,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,3; "> }, { @@ -31148,7 +31149,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,4; "> }, { @@ -31158,7 +31159,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,5; "> }, { @@ -31168,7 +31169,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,6; "> }, { @@ -31178,7 +31179,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,7; "> }, { @@ -31188,7 +31189,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,8; "> }, { @@ -31198,7 +31199,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,9; "> }, { @@ -31208,7 +31209,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,10; "> }, { @@ -31218,7 +31219,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,1; "> }, { @@ -31228,7 +31229,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,2; "> }, { @@ -31238,7 +31239,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,3; "> }, { @@ -31248,7 +31249,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,4; "> }, { @@ -31258,7 +31259,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,5; "> }, { @@ -31268,7 +31269,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,6; "> }, { @@ -31278,7 +31279,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,7; "> }, { @@ -31288,7 +31289,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,8; "> }, { @@ -31298,7 +31299,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,9; "> }, { @@ -31308,7 +31309,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,10; "> }, { @@ -31318,7 +31319,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bMatkRate,1; "> }, { @@ -31328,7 +31329,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bMatkRate,2; "> }, { @@ -31338,7 +31339,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,6; "> }, { @@ -31348,7 +31349,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,12; "> }, { @@ -31358,7 +31359,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,5; "> }, { @@ -31368,7 +31369,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,7; "> }, { @@ -31378,7 +31379,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus2 bAddRace, RC_All, 2; "> }, { @@ -31388,7 +31389,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus2 bAddRace, RC_All, 3; "> }, { @@ -31398,7 +31399,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4769 @@ -31407,7 +31408,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4770 @@ -31416,7 +31417,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4771 @@ -31425,7 +31426,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4772 @@ -31434,7 +31435,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4773 @@ -31443,7 +31444,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4774 @@ -31452,7 +31453,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4775 @@ -31461,7 +31462,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4776 @@ -31470,7 +31471,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4777 @@ -31479,7 +31480,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4778 @@ -31488,7 +31489,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4779 @@ -31497,7 +31498,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4780 @@ -31506,7 +31507,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4781 @@ -31515,7 +31516,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4782 @@ -31524,7 +31525,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4783 @@ -31533,7 +31534,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4784 @@ -31542,7 +31543,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, { Id: 4785 @@ -31551,7 +31552,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 }, //== More Headgears ======================================== @@ -72471,6 +72472,7 @@ item_db: ( Loc: 32768 EquipLv: 1 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13201 @@ -72498,7 +72500,10 @@ item_db: ( Loc: 32768 EquipLv: 1 View: 3 - Script: <" bonus2 bAddEff,Eff_Bleeding,100; "> + Script: <" + bonus bAtkEle, Ele_Neutral; + bonus2 bAddEff, Eff_Bleeding, 100; + "> }, { Id: 13203 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 82e9a2aba..2ef5dc689 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -39064,7 +39064,8 @@ item_db: ( Weight: 10 Loc: 2 Script: <" - if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { + .@i = getiteminfo(getequipid(EQI_HAND_R),11); + if (.@i == 10 || .@i == 23) { bonus bInt,1; bonus bIgnoreMdefRate,2; } @@ -42351,7 +42352,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,1; "> }, { @@ -42361,7 +42362,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,2; "> }, { @@ -42371,7 +42372,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,3; "> }, { @@ -42381,7 +42382,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,4; "> }, { @@ -42391,7 +42392,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,5; "> }, { @@ -42401,7 +42402,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,6; "> }, { @@ -42411,7 +42412,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,7; "> }, { @@ -42421,7 +42422,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,8; "> }, { @@ -42431,7 +42432,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,9; "> }, { @@ -42441,7 +42442,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,10; "> }, { @@ -42451,7 +42452,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,1; "> }, { @@ -42461,7 +42462,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,2; "> }, { @@ -42471,7 +42472,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,3; "> }, { @@ -42481,7 +42482,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,4; "> }, { @@ -42491,7 +42492,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,5; "> }, { @@ -42501,7 +42502,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,6; "> }, { @@ -42511,7 +42512,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,7; "> }, { @@ -42521,7 +42522,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,8; "> }, { @@ -42531,7 +42532,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,9; "> }, { @@ -42541,7 +42542,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,10; "> }, { @@ -42551,7 +42552,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,1; "> }, { @@ -42561,7 +42562,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,2; "> }, { @@ -42571,7 +42572,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,3; "> }, { @@ -42581,7 +42582,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,4; "> }, { @@ -42591,7 +42592,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,5; "> }, { @@ -42601,7 +42602,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,6; "> }, { @@ -42611,7 +42612,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,7; "> }, { @@ -42621,7 +42622,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,8; "> }, { @@ -42631,7 +42632,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,9; "> }, { @@ -42641,7 +42642,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,10; "> }, { @@ -42651,7 +42652,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,1; "> }, { @@ -42661,7 +42662,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,2; "> }, { @@ -42671,7 +42672,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,3; "> }, { @@ -42681,7 +42682,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,4; "> }, { @@ -42691,7 +42692,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,5; "> }, { @@ -42701,7 +42702,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,6; "> }, { @@ -42711,7 +42712,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,7; "> }, { @@ -42721,7 +42722,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,8; "> }, { @@ -42731,7 +42732,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,9; "> }, { @@ -42741,7 +42742,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,10; "> }, { @@ -42751,7 +42752,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,1; "> }, { @@ -42761,7 +42762,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,2; "> }, { @@ -42771,7 +42772,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,3; "> }, { @@ -42781,7 +42782,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,4; "> }, { @@ -42791,7 +42792,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,5; "> }, { @@ -42801,7 +42802,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,6; "> }, { @@ -42811,7 +42812,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,7; "> }, { @@ -42821,7 +42822,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,8; "> }, { @@ -42831,7 +42832,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,9; "> }, { @@ -42841,7 +42842,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,10; "> }, { @@ -42851,7 +42852,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,1; "> }, { @@ -42861,7 +42862,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,2; "> }, { @@ -42871,7 +42872,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,3; "> }, { @@ -42881,7 +42882,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,4; "> }, { @@ -42891,7 +42892,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,5; "> }, { @@ -42901,7 +42902,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,6; "> }, { @@ -42911,7 +42912,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,7; "> }, { @@ -42921,7 +42922,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,8; "> }, { @@ -42931,7 +42932,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,9; "> }, { @@ -42941,7 +42942,7 @@ item_db: ( Type: 6 Buy: 20 Weight: 10 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,10; "> }, { @@ -42949,7 +42950,7 @@ item_db: ( AegisName: "Matk1" Name: "MATK+1%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatkRate,1; bonus bFixedCastrate,-1; @@ -42960,7 +42961,7 @@ item_db: ( AegisName: "Matk2" Name: "MATK+2%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatkRate,2; bonus bFixedCastrate,-1; @@ -42971,7 +42972,7 @@ item_db: ( AegisName: "Evasion6" Name: "FLEE+6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,6; "> }, { @@ -42979,7 +42980,7 @@ item_db: ( AegisName: "Evasion12" Name: "FLEE+12" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,12; "> }, { @@ -42987,7 +42988,7 @@ item_db: ( AegisName: "Critical5" Name: "CRI+5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,5; "> }, { @@ -42995,7 +42996,7 @@ item_db: ( AegisName: "Critical7" Name: "CRI+7" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,7; "> }, { @@ -43003,7 +43004,7 @@ item_db: ( AegisName: "Atk2" Name: "ATK+2%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAtkRate,2; "> }, { @@ -43011,7 +43012,7 @@ item_db: ( AegisName: "Atk3" Name: "ATK+3%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAtkRate,3; "> }, { @@ -43019,7 +43020,7 @@ item_db: ( AegisName: "Str1_J" Name: "Str1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,1; "> }, { @@ -43027,7 +43028,7 @@ item_db: ( AegisName: "Str2_J" Name: "Str2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,2; "> }, { @@ -43035,7 +43036,7 @@ item_db: ( AegisName: "Str3_J" Name: "Str3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,3; "> }, { @@ -43043,7 +43044,7 @@ item_db: ( AegisName: "Int1_J" Name: "Int1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,1; "> }, { @@ -43051,7 +43052,7 @@ item_db: ( AegisName: "Int2_J" Name: "Int2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,2; "> }, { @@ -43059,7 +43060,7 @@ item_db: ( AegisName: "Int3_J" Name: "Int3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bInt,3; "> }, { @@ -43067,7 +43068,7 @@ item_db: ( AegisName: "Vit1_J" Name: "Vit1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,1; "> }, { @@ -43075,7 +43076,7 @@ item_db: ( AegisName: "Vit2_J" Name: "Vit2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,2; "> }, { @@ -43083,7 +43084,7 @@ item_db: ( AegisName: "Vit3_J" Name: "Vit3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bVit,3; "> }, { @@ -43091,7 +43092,7 @@ item_db: ( AegisName: "Agi1_J" Name: "Agi1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,1; "> }, { @@ -43099,7 +43100,7 @@ item_db: ( AegisName: "Agi2_J" Name: "Agi2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,2; "> }, { @@ -43107,7 +43108,7 @@ item_db: ( AegisName: "Agi3_J" Name: "Agi3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,3; "> }, { @@ -43115,7 +43116,7 @@ item_db: ( AegisName: "Dex1_J" Name: "Dex1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,1; "> }, { @@ -43123,7 +43124,7 @@ item_db: ( AegisName: "Dex2_J" Name: "Dex2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,2; "> }, { @@ -43131,7 +43132,7 @@ item_db: ( AegisName: "Dex3_J" Name: "Dex3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDex,3; "> }, { @@ -43139,7 +43140,7 @@ item_db: ( AegisName: "Luk1_J" Name: "Luk1 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,1; "> }, { @@ -43147,7 +43148,7 @@ item_db: ( AegisName: "Luk2_J" Name: "Luk2 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,2; "> }, { @@ -43155,7 +43156,7 @@ item_db: ( AegisName: "Luk3_J" Name: "Luk3 J" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLuk,3; "> }, { @@ -43163,7 +43164,7 @@ item_db: ( AegisName: "Mdef2" Name: "MDEF+2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMdef,2; "> }, { @@ -43171,7 +43172,7 @@ item_db: ( AegisName: "Mdef4" Name: "MDEF+4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMdef,4; "> }, { @@ -43179,7 +43180,7 @@ item_db: ( AegisName: "Mdef6" Name: "MDEF+6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMdef,6; "> }, { @@ -43187,7 +43188,7 @@ item_db: ( AegisName: "Mdef8" Name: "MDEF+8" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMdef,8; "> }, { @@ -43195,7 +43196,7 @@ item_db: ( AegisName: "Mdef10" Name: "MDEF+10" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMdef,10; "> }, { @@ -43203,7 +43204,7 @@ item_db: ( AegisName: "Def3" Name: "DEF+3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDef,3; "> }, { @@ -43211,7 +43212,7 @@ item_db: ( AegisName: "Def6" Name: "DEF+6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDef,6; "> }, { @@ -43219,7 +43220,7 @@ item_db: ( AegisName: "Def9" Name: "DEF+9" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDef,9; "> }, { @@ -43227,7 +43228,7 @@ item_db: ( AegisName: "Def12" Name: "DEF+12" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bDef,12; "> }, { @@ -43235,7 +43236,7 @@ item_db: ( AegisName: "HP100" Name: "HP+100" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHP,100; "> }, { @@ -43243,7 +43244,7 @@ item_db: ( AegisName: "HP200" Name: "HP+200" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHP,200; "> }, { @@ -43251,7 +43252,7 @@ item_db: ( AegisName: "HP300" Name: "HP+300" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHP,300; "> }, { @@ -43259,7 +43260,7 @@ item_db: ( AegisName: "HP400" Name: "HP+400" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHP,400; "> }, { @@ -43267,7 +43268,7 @@ item_db: ( AegisName: "HP500" Name: "HP+500" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHP,500; "> }, { @@ -43275,7 +43276,7 @@ item_db: ( AegisName: "SP50" Name: "SP+50" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxSP,50; "> }, { @@ -43283,7 +43284,7 @@ item_db: ( AegisName: "SP100" Name: "SP+100" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxSP,100; "> }, { @@ -43291,7 +43292,7 @@ item_db: ( AegisName: "SP150" Name: "SP+150" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxSP,150; "> }, { @@ -43299,7 +43300,7 @@ item_db: ( AegisName: "Highness_Heal_3sec" Name: "Cure1Lv." Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus2 bSkillCooldown,AB_HIGHNESSHEAL,-3000; "> }, { @@ -43307,7 +43308,7 @@ item_db: ( AegisName: "Coluceo_Heal30" Name: "Catholic1Lv." Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus2 bSkillUseSP,AB_CHEAL,30; "> }, { @@ -43315,7 +43316,7 @@ item_db: ( AegisName: "Heal_Amount2" Name: "Archbishop1Lv." Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bHealPower,3; "> }, { @@ -43323,7 +43324,7 @@ item_db: ( AegisName: "Matk3" Name: "MATK+3%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatkRate,3; bonus bFixedCastrate,-1; @@ -43334,7 +43335,7 @@ item_db: ( AegisName: "Atk_Speed1" Name: "Atk Speed1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAspd,1; "> }, { @@ -43342,7 +43343,7 @@ item_db: ( AegisName: "Fighting_Spirit4" Name: "Fighting Spirit4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,15; bonus bHit,5; @@ -43353,7 +43354,7 @@ item_db: ( AegisName: "Fighting_Spirit3" Name: "Fighting Spirit3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,12; bonus bHit,4; @@ -43364,7 +43365,7 @@ item_db: ( AegisName: "Fighting_Spirit2" Name: "Fighting Spirit2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,9; bonus bHit,3; @@ -43375,7 +43376,7 @@ item_db: ( AegisName: "Fighting_Spirit1" Name: "Fighting Spirit1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,6; bonus bHit,2; @@ -43386,7 +43387,7 @@ item_db: ( AegisName: "Spell4" Name: "Spell4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,15; bonus bVariableCastrate,-10; @@ -43397,7 +43398,7 @@ item_db: ( AegisName: "Spell3" Name: "Spell3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,12; bonus bVariableCastrate,-8; @@ -43408,7 +43409,7 @@ item_db: ( AegisName: "Spell2" Name: "Spell2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,9; bonus bVariableCastrate,-6; @@ -43419,7 +43420,7 @@ item_db: ( AegisName: "Spell1" Name: "Spell1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,6; bonus bVariableCastrate,-4; @@ -43430,7 +43431,7 @@ item_db: ( AegisName: "Sharp3" Name: "Sharp3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,12; bonus bHit,4; @@ -43441,7 +43442,7 @@ item_db: ( AegisName: "Sharp2" Name: "Sharp2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,9; bonus bHit,3; @@ -43452,7 +43453,7 @@ item_db: ( AegisName: "Sharp1" Name: "Sharp1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,6; bonus bHit,2; @@ -43463,7 +43464,7 @@ item_db: ( AegisName: "Atk1" Name: "Atk1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAtkRate,1; "> }, { @@ -43471,7 +43472,7 @@ item_db: ( AegisName: "Fighting_Spirit5" Name: "Fighting Spirit5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,18; bonus bHit,5; @@ -43482,7 +43483,7 @@ item_db: ( AegisName: "Fighting_Spirit6" Name: "Fighting Spirit6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,21; bonus bHit,5; @@ -43493,7 +43494,7 @@ item_db: ( AegisName: "Fighting_Spirit7" Name: "Fighting Spirit7" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,24; bonus bHit,5; @@ -43504,7 +43505,7 @@ item_db: ( AegisName: "Fighting_Spirit8" Name: "Fighting Spirit8" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,27; bonus bHit,5; @@ -43515,7 +43516,7 @@ item_db: ( AegisName: "Fighting_Spirit9" Name: "Fighting Spirit9" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,30; bonus bHit,5; @@ -43526,7 +43527,7 @@ item_db: ( AegisName: "Fighting_Spirit10" Name: "Fighting Spirit10" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,50; bonus bHit,15; @@ -43537,7 +43538,7 @@ item_db: ( AegisName: "Spell5" Name: "Spell5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,18; bonus bVariableCastrate,-10; @@ -43548,7 +43549,7 @@ item_db: ( AegisName: "Spell6" Name: "Spell6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,21; bonus bVariableCastrate,-10; @@ -43559,7 +43560,7 @@ item_db: ( AegisName: "Spell7" Name: "Spell7" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,24; bonus bVariableCastrate,-10; @@ -43570,7 +43571,7 @@ item_db: ( AegisName: "Spell8" Name: "Spell8" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,27; bonus bVariableCastrate,-10; @@ -43581,7 +43582,7 @@ item_db: ( AegisName: "Spell9" Name: "Spell9" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,30; bonus bVariableCastrate,-10; @@ -43592,7 +43593,7 @@ item_db: ( AegisName: "Spell10" Name: "Spell10" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMatk,50; bonus bVariableCastrate,-20; @@ -43603,7 +43604,7 @@ item_db: ( AegisName: "Expert_Archer1" Name: "Expert Archer1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,2; "> }, { @@ -43611,7 +43612,7 @@ item_db: ( AegisName: "Expert_Archer2" Name: "Expert Archer2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,4; "> }, { @@ -43619,7 +43620,7 @@ item_db: ( AegisName: "Expert_Archer3" Name: "Expert Archer3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,6; "> }, { @@ -43627,7 +43628,7 @@ item_db: ( AegisName: "Expert_Archer4" Name: "Expert Archer4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,8; "> }, { @@ -43635,7 +43636,7 @@ item_db: ( AegisName: "Expert_Archer5" Name: "Expert Archer5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,10; "> }, { @@ -43643,7 +43644,7 @@ item_db: ( AegisName: "Expert_Archer6" Name: "Expert Archer6" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,12; "> }, { @@ -43651,7 +43652,7 @@ item_db: ( AegisName: "Expert_Archer7" Name: "Expert Archer7" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,14; "> }, { @@ -43659,7 +43660,7 @@ item_db: ( AegisName: "Expert_Archer8" Name: "Expert Archer8" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,16; "> }, { @@ -43667,7 +43668,7 @@ item_db: ( AegisName: "Expert_Archer9" Name: "Expert Archer9" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,18; "> }, { @@ -43675,7 +43676,7 @@ item_db: ( AegisName: "Expert_Archer10" Name: "Expert Archer10" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bLongAtkRate,20; bonus bAspd,1; @@ -43686,7 +43687,7 @@ item_db: ( AegisName: "Atk_Speed2" Name: "Atk Speed2" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAspd,2; "> }, { @@ -43694,7 +43695,7 @@ item_db: ( AegisName: "Sharp4" Name: "Sharp4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,14; bonus bHit,5; @@ -43705,7 +43706,7 @@ item_db: ( AegisName: "Sharp5" Name: "Sharp5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bCritical,15; bonus bHit,6; @@ -43716,14 +43717,14 @@ item_db: ( AegisName: "Sea_Energy" Name: "Strength Of Ocean" Type: 6 - Loc: 16 + Loc: 1023 }, { Id: 4846 AegisName: "2011Valentin_Angel" Name: "Fully Loved Stone" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,10; bonus bMatk,10; @@ -43734,7 +43735,7 @@ item_db: ( AegisName: "2011Valentin_Devil" Name: "Spelled Stone" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bBaseAtk,10; bonus bMatk,10; @@ -43745,7 +43746,7 @@ item_db: ( AegisName: "Immuned1" Name: "Immune Level 1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus2 bSubEle,Ele_Neutral,5; "> }, { @@ -43753,7 +43754,7 @@ item_db: ( AegisName: "Cranial1" Name: "Cranial Level 1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus2 bAddRaceTolerance,RC_DemiPlayer,5; "> }, { @@ -43761,7 +43762,7 @@ item_db: ( AegisName: "Heal_Amount3" Name: "Heal Amount3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bHealPower,6; bonus bUseSPrate,5; @@ -43772,7 +43773,7 @@ item_db: ( AegisName: "Heal_Amount4" Name: "Heal Amount4" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bHealPower,12; bonus bUseSPrate,10; @@ -43783,7 +43784,7 @@ item_db: ( AegisName: "Heal_Amount5" Name: "Heal Amount5" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bHealPower,20; bonus bUseSPrate,15; @@ -43794,16 +43795,16 @@ item_db: ( AegisName: "S_Str" Name: "Special Str" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bStr,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bStr,3; } - if (getrefine() > 8) { + if (getrefine() >= 9) { bonus2 bAddRace, RC_All, 1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43814,16 +43815,16 @@ item_db: ( AegisName: "S_Agi" Name: "Special Agi" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bAgi,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bAgi,3; } - if (getrefine() > 8) { + if (getrefine() >= 9) { bonus2 bAddRace, RC_All, 1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43833,17 +43834,17 @@ item_db: ( Id: 4855 AegisName: "S_Vital" Name: "Special Vit" - Type: 2 - Loc: 16 + Type: 6 + Loc: 1023 Script: <" bonus bVit,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bVit,3; } - if(getrefine()>8) { + if (getrefine() >= 9) { bonus bMaxSPrate,1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43853,17 +43854,17 @@ item_db: ( Id: 4856 AegisName: "S_Int" Name: "Special Int" - Type: 2 - Loc: 16 + Type: 6 + Loc: 1023 Script: <" bonus bInt,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bInt,3; } - if(getrefine()>8) { + if (getrefine() >= 9) { bonus bMatkRate,1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43873,17 +43874,17 @@ item_db: ( Id: 4857 AegisName: "S_Dex" Name: "Special Dex" - Type: 2 - Loc: 16 + Type: 6 + Loc: 1023 Script: <" bonus bDex,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bDex,3; } - if(getrefine()>8) { + if (getrefine() >= 9) { bonus bMatkRate,1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43893,17 +43894,17 @@ item_db: ( Id: 4858 AegisName: "S_Luck" Name: "Special Luk" - Type: 2 - Loc: 16 + Type: 6 + Loc: 1023 Script: <" bonus bLuk,1; - if(getrefine()>7) { + if (getrefine() >= 8) { bonus bLuk,3; } - if(getrefine()>8) { + if (getrefine() >= 9) { bonus bMaxHPrate,1; } - if(getrefine()>11) { + if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; } @@ -43914,7 +43915,7 @@ item_db: ( AegisName: "Evasion1" Name: "Evasion1" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,1; "> }, { @@ -43922,7 +43923,7 @@ item_db: ( AegisName: "Evasion3" Name: "Evasion3" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bFlee,3; "> }, { @@ -43930,7 +43931,7 @@ item_db: ( AegisName: "MHP1" Name: "MHP+1%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHPrate,1; "> }, { @@ -43938,15 +43939,59 @@ item_db: ( AegisName: "MHP2" Name: "MHP+2%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHPrate,2; "> }, { + Id: 4863 + AegisName: "Fatal1" + Name: "Fatal1Lv" + Type: 6 + Loc: 1023 + Script: <" + bonus bCriAtkRate, 4; + bonus bCritical, 1; + "> +}, +{ + Id: 4864 + AegisName: "Fatal2" + Name: "Fatal2Lv" + Type: 6 + Loc: 1023 + Script: <" + bonus bCriAtkRate, 6; + bonus bCritical, 2; + "> +}, +{ + Id: 4865 + AegisName: "Fatal3" + Name: "Fatal3Lv" + Type: 6 + Loc: 1023 + Script: <" + bonus bCriAtkRate, 8; + bonus bCritical, 3; + "> +}, +{ + Id: 4866 + AegisName: "Fatal4" + Name: "Fatal4Lv" + Type: 6 + Loc: 1023 + Script: <" + bonus bCriAtkRate, 10; + bonus bCritical, 4; + "> +}, +{ Id: 4867 AegisName: "MHP3" Name: "MHP+3%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHPrate,3; "> }, { @@ -43954,15 +43999,23 @@ item_db: ( AegisName: "MHP4" Name: "MHP+4%" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxHPrate,4; "> }, { + Id: 4869 + AegisName: "Attack_Delay_1" + Name: "DelayafterAttack1Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bAspdRate, 4; "> +}, +{ Id: 4870 AegisName: "SP25" Name: "SP+25" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxSP,25; "> }, { @@ -43970,9 +44023,1232 @@ item_db: ( AegisName: "SP75" Name: "SP+75" Type: 6 - Loc: 16 + Loc: 1023 Script: <" bonus bMaxSP,75; "> }, +{ + Id: 4872 + AegisName: "Attack_Delay_2" + Name: "DelayafterAttack2Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bAspdRate, 6; "> +}, +{ + Id: 4873 + AegisName: "Attack_Delay_3" + Name: "DelayafterAttack3Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bAspdRate, 8; "> +}, +{ + Id: 4875 + AegisName: "Bear's_Power" + Name: "Strength of Bear" + Type: 6 + Loc: 1023 + Script: <" autobonus2 "{ bonus bStr, 200; bonus2 bHPLossRate, 500, 1000; montransform BIGFOOT, 5000; }", 20, 5000, BF_WEAPON, "{ specialeffect2 EF_POTION_BERSERK; showscript \"?!!!!\"; }"; "> + OnUnequipScript: <" heal 0, -300; "> +}, +{ + Id: 4876 + AegisName: "Runaway_Magic" + Name: "Runaway Magic" + Type: 6 + Loc: 1023 + Script: <" autobonus "{ bonus bInt, 200; bonus2 bSPLossRate, 200, 1000; }", 15, 10000, BF_MAGIC, "{ specialeffect2 EF_POTION_BERSERK; showscript \"YOooooooo!!!!!\"; }"; "> + OnUnequipScript: <" heal 0, -2000; "> +}, +{ + Id: 4877 + AegisName: "Speed_Of_Light" + Name: "Speed Of Light" + Type: 6 + Loc: 1023 + Script: <" autobonus "{ bonus bAspdRate, 100; bonus bFlee2, 100; bonus2 bHPLossRate, 400, 1000; bonus2 bSPLossRate, 40, 1000; }", 10, 5000, BF_WEAPON, "{ specialeffect2 EF_FLASHER; }"; "> + OnUnequipScript: <" heal 0, -300; "> +}, +{ + Id: 4878 + AegisName: "Muscle_Fool" + Name: "Muscle Fool" + Type: 6 + Loc: 1023 + Script: <" autobonus2 "{ bonus bDef, 1000; bonus bMatkRate, -50; bonus bAtkRate, -50; }", 20, 5000, BF_WEAPON, "{ specialeffect2 EF_MAGNUMBREAK; }"; "> + OnUnequipScript: <" heal 0, -300; "> +}, +{ + Id: 4879 + AegisName: "Hawkeye" + Name: "Hawkeye" + Type: 6 + Loc: 1023 + Script: <" autobonus "{ bonus bDex, 200; bonus2 bSPLossRate, 50, 1000; }", 30, 5000, BF_WEAPON, "{ specialeffect2 EF_FLASHER; }"; "> + OnUnequipScript: <" heal 0, -300; "> +}, +{ + Id: 4880 + AegisName: "Lucky_Day" + Name: "Lucky Day" + Type: 6 + Loc: 1023 + Script: <" + autobonus "{ bonus2 bAddMonsterDropItem, Treasure_Box, 10; bonus bLuk, 200; }", 15, 5000, BF_WEAPON | BF_MAGIC, "{ specialeffect2 EF_MVP; }"; + autobonus2 "{ bonus2 bAddMonsterDropItem, Treasure_Box, 1; bonus bLuk, 200; }", 1, 5000, BF_WEAPON | BF_MAGIC, "{ specialeffect2 EF_MVP; }"; + "> + OnUnequipScript: <" heal 0, -300; "> +}, +{ + Id: 4881 + AegisName: "Attack_Delay_4" + Name: "DelayafterAttack4Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bAspdRate, 10; "> +}, +{ + Id: 4882 + AegisName: "ATK_1" + Name: "ATK + 1%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 1; "> +}, +{ + Id: 4883 + AegisName: "MATK_1" + Name: "MATK + 1%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 1; "> +}, +{ + Id: 4884 + AegisName: "HIT_1" + Name: "HIT + 1" + Type: 6 + Loc: 1023 + Script: <" bonus bHit, 1; "> +}, +{ + Id: 4885 + AegisName: "Spell_1" + Name: "Spell 1" + Type: 6 + Loc: 1023 + Script: <" + bonus bMatk, 5; + bonus bVariableCastrate, -3; + "> +}, +{ + Id: 4886 + AegisName: "Spell_2" + Name: "Spell 2" + Type: 6 + Loc: 1023 + Script: <" + bonus bMatk, 10; + bonus bVariableCastrate, -3; + "> +}, +{ + Id: 4887 + AegisName: "Spell_3" + Name: "Spell 3" + Type: 6 + Loc: 1023 + Script: <" + bonus bMatk, 15; + bonus bVariableCastrate, -3; + "> +}, +{ + Id: 4888 + AegisName: "Spell_4" + Name: "Spell 4" + Type: 6 + Loc: 1023 + Script: <" + bonus bMatk, 20; + bonus bVariableCastrate, -3; + "> +}, +{ + Id: 4889 + AegisName: "Spell_5" + Name: "Spell 5" + Type: 6 + Loc: 1023 + Script: <" + bonus bMatk, 30; + bonus bVariableCastrate, -5; + "> +}, +{ + Id: 4890 + AegisName: "MDEF_1" + Name: "MDEF+1" + Type: 6 + Loc: 1023 + Script: <" bonus bMdef, 1; "> +}, +{ + Id: 4891 + AegisName: "MDEF_3" + Name: "MDEF+3" + Type: 6 + Loc: 1023 + Script: <" bonus bMdef, 3; "> +}, +{ + Id: 4892 + AegisName: "MDEF_5" + Name: "MDEF+5" + Type: 6 + Loc: 1023 + Script: <" bonus bMdef, 5; "> +}, +{ + Id: 4893 + AegisName: "DEF_15" + Name: "DEF+15" + Type: 6 + Loc: 1023 + Script: <" bonus bDef, 15; "> +}, +{ + Id: 4894 + AegisName: "ATK_4" + Name: "ATK + 4%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 4; "> +}, +{ + Id: 4895 + AegisName: "ATK_5" + Name: "ATK + 5%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 5; "> +}, +{ + Id: 4896 + AegisName: "MATK_2" + Name: "MATK + 2%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 2; "> +}, +{ + Id: 4897 + AegisName: "MATK_3" + Name: "MATK + 3%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 3; "> +}, +{ + Id: 4898 + AegisName: "MATK_4" + Name: "MATK + 4%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 4; "> +}, +{ + Id: 4899 + AegisName: "MATK_5" + Name: "MATK + 5%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 5; "> +}, +{ + Id: 4900 + AegisName: "MHP_5" + Name: "MHP+5%" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxHPrate, 5; "> +}, +{ + Id: 4902 + AegisName: "DEF_18" + Name: "DEF+18" + Type: 6 + Loc: 1023 + Script: <" bonus bDef, 18; "> +}, +{ + Id: 4903 + AegisName: "DEF_21" + Name: "DEF+21" + Type: 6 + Loc: 1023 + Script: <" bonus bDef, 21; "> +}, +{ + Id: 4904 + AegisName: "ATK_6" + Name: "ATK+6%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 6; "> +}, +{ + Id: 4905 + AegisName: "ATK_7" + Name: "ATK+7%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 7; "> +}, +{ + Id: 4906 + AegisName: "MATK_6" + Name: "MATK+6%" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 6; "> +}, +{ + Id: 4907 + AegisName: "MATK_7" + Name: "MATK+7%" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 7; "> +}, +{ + Id: 4908 + AegisName: "Essence_Of_Evil_Str1" + Name: "Essence Of Evil STR 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bStr, 1; + bonus bBaseAtk, 3; + bonus bInt, -1; + "> +}, +{ + Id: 4909 + AegisName: "Essence_Of_Evil_Str2" + Name: "Essence Of Evil STR 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bStr, 2; + bonus bBaseAtk, 6; + bonus bInt, -2; + "> +}, +{ + Id: 4910 + AegisName: "Essence_Of_Evil_Str3" + Name: "Essence Of Evil STR 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bStr, 4; + bonus bBaseAtk, 12; + bonus bInt, -4; + "> +}, +{ + Id: 4911 + AegisName: "Essence_Of_Evil_Int1" + Name: "Essence Of Evil INT 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bInt, 1; + bonus bMatk, 3; + bonus bStr, -1; + "> +}, +{ + Id: 4912 + AegisName: "Essence_Of_Evil_Int2" + Name: "Essence Of Evil INT 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bInt, 2; + bonus bMatk, 6; + bonus bStr, -2; + "> +}, +{ + Id: 4913 + AegisName: "Essence_Of_Evil_Int3" + Name: "Essence Of Evil INT 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bInt, 4; + bonus bMatk, 12; + bonus bStr, -4; + "> +}, +{ + Id: 4914 + AegisName: "Essence_Of_Evil_Agi1" + Name: "Essence Of Evil AGI 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bAgi, 1; + bonus bFlee, 2; + bonus bVit, -1; + "> +}, +{ + Id: 4915 + AegisName: "Essence_Of_Evil_Agi2" + Name: "Essence Of Evil AGI 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bAgi, 2; + bonus bFlee, 4; + bonus bVit, -2; + "> +}, +{ + Id: 4916 + AegisName: "Essence_Of_Evil_Agi3" + Name: "Essence Of Evil AGI 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bAgi, 4; + bonus bFlee, 8; + bonus bVit, -4; + "> +}, +{ + Id: 4917 + AegisName: "Essence_Of_Evil_Vit1" + Name: "Essence Of Evil VIT 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bVit, 1; + bonus bDef, 3; + bonus bMdef, 2; + bonus bAgi, -1; + "> +}, +{ + Id: 4918 + AegisName: "Essence_Of_Evil_Vit2" + Name: "Essence Of Evil VIT 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bVit, 2; + bonus bDef, 6; + bonus bMdef, 4; + bonus bAgi, -2; + "> +}, +{ + Id: 4919 + AegisName: "Essence_Of_Evil_Vit3" + Name: "Essence Of Evil VIT 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bVit, 4; + bonus bDef, 12; + bonus bMdef, 8; + bonus bAgi, -4; + "> +}, +{ + Id: 4920 + AegisName: "Essence_Of_Evil_Dex1" + Name: "Essence Of Evil DEX 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bDex, 1; + bonus bHit, 2; + bonus bLuk, -1; + "> +}, +{ + Id: 4921 + AegisName: "Essence_Of_Evil_Dex2" + Name: "Essence Of Evil DEX 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bDex, 2; + bonus bHit, 4; + bonus bLuk, -2; + "> +}, +{ + Id: 4922 + AegisName: "Essence_Of_Evil_Dex3" + Name: "Essence Of Evil DEX 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bDex, 4; + bonus bHit, 8; + bonus bLuk, -4; + "> +}, +{ + Id: 4923 + AegisName: "Essence_Of_Evil_Luk1" + Name: "Essence Of Evil LUK 1" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bLuk, 1; + bonus bCritical, 1; + bonus bDex, -1; + "> +}, +{ + Id: 4924 + AegisName: "Essence_Of_Evil_Luk2" + Name: "Essence Of Evil LUK 2" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bLuk, 2; + bonus bCritical, 2; + bonus bDex, -2; + "> +}, +{ + Id: 4925 + AegisName: "Essence_Of_Evil_Luk3" + Name: "Essence Of Evil LUK 3" + Type: 6 + Weight: 10 + Loc: 1023 + Script: <" + bonus bLuk, 4; + bonus bCritical, 4; + bonus bDex, -4; + "> +}, +{ + Id: 4926 + AegisName: "Critical1" + Name: "Critical1Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bCritical, 1; "> +}, +{ + Id: 4927 + AegisName: "HP50" + Name: "HP+50" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxHP, 50; "> +}, +{ + Id: 4928 + AegisName: "SP10" + Name: "SP+10" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxSP, 10; "> +}, +{ + Id: 4929 + AegisName: "MSP_1" + Name: "MSP+1%" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxSPrate, 1; "> +}, +{ + Id: 4930 + AegisName: "Inc_Recovery" + Name: "Increase Recovery" + Type: 6 + Loc: 1023 + Script: <" bonus bHPrecovRate, 2; "> +}, +{ + Id: 4931 + AegisName: "Healing_10" + Name: "Healing 10" + Type: 6 + Loc: 1023 + Script: <" bonus2 bHPRegenRate, 10, 10000; "> +}, +{ + Id: 4932 + AegisName: "SP_Recovery_1" + Name: "SP Recovery 1" + Type: 6 + Loc: 1023 + Script: <" bonus bSPGainValue, 1; "> +}, +{ + Id: 4933 + AegisName: "Neutral1" + Name: "Neutral Properties Lv1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bSubEle, Ele_Neutral, 1; "> +}, +{ + Id: 4934 + AegisName: "Neutral2" + Name: "Neutral Properties Lv2" + Type: 6 + Loc: 1023 + Script: <" bonus2 bSubEle, Ele_Neutral, 2; "> +}, +{ + Id: 4935 + AegisName: "Neutral3" + Name: "Neutral Properties Lv3" + Type: 6 + Loc: 1023 + Script: <" bonus2 bSubEle, Ele_Neutral, 3; "> +}, +{ + Id: 4936 + AegisName: "L_Atk1" + Name: "Large Attack 1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bAddSize, Size_Large, 1; "> +}, +{ + Id: 4937 + AegisName: "M_Atk1" + Name: "Medium Attack 1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bAddSize, Size_Medium, 1; "> +}, +{ + Id: 4938 + AegisName: "S_Atk1" + Name: "Small Attack 1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bAddSize, Size_Small, 1; "> +}, +{ + Id: 4939 + AegisName: "Critical2" + Name: "Critical2Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bCritical, 2; "> +}, +{ + Id: 4940 + AegisName: "Critical3" + Name: "Critical3Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bCritical, 4; "> +}, +{ + Id: 4941 + AegisName: "Critical4" + Name: "Critical4Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bCritical, 6; "> +}, +{ + Id: 4942 + AegisName: "Critical_1" + Name: "Critical Lv1" + Type: 6 + Loc: 1023 + Script: <" bonus bCritical, 3; "> +}, +{ + Id: 4943 + AegisName: "Shedding2" + Name: "Shedding2Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bFlee2, 4; "> +}, +{ + Id: 4944 + AegisName: "Shedding3" + Name: "Shedding3Lv" + Type: 6 + Loc: 1023 + Script: <" bonus bFlee2, 5; "> +}, +{ + Id: 4945 + AegisName: "Saving1" + Name: "Saving Lv1" + Type: 6 + Loc: 1023 + Script: <" bonus bUseSPrate, -2; "> +}, +{ + Id: 4946 + AegisName: "Saving2" + Name: "Saving Lv2" + Type: 6 + Loc: 1023 + Script: <" bonus bUseSPrate, -4; "> +}, +{ + Id: 4947 + AegisName: "Saving3" + Name: "Saving Lv3" + Type: 6 + Loc: 1023 + Script: <" bonus bUseSPrate, -6; "> +}, +{ + Id: 4948 + AegisName: "Delay1" + Name: "Delay After Skill Lv1" + Type: 6 + Loc: 1023 + Script: <" bonus bDelayrate, -2; "> +}, +{ + Id: 4949 + AegisName: "Delay2" + Name: "Delay After Skill Lv2" + Type: 6 + Loc: 1023 + Script: <" bonus bDelayrate, -4; "> +}, +{ + Id: 4950 + AegisName: "Delay3" + Name: "Delay After Skill Lv3" + Type: 6 + Loc: 1023 + Script: <" bonus bDelayrate, -6; "> +}, +{ + Id: 4951 + AegisName: "Darkness_Drop" + Name: "Darkness Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus3 bAddEle, Ele_Dark, 2, BF_WEAPON | BF_MAGIC; + bonus2 bSubEle, Ele_Dark, 1; + "> +}, +{ + Id: 4952 + AegisName: "Fire_Drop" + Name: "Fire Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus3 bAddEle, Ele_Fire, 2, BF_WEAPON | BF_MAGIC; + bonus2 bSubEle, Ele_Fire, 1; + "> +}, +{ + Id: 4953 + AegisName: "Water_Drop" + Name: "Water Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus3 bAddEle, Ele_Water, 2, BF_WEAPON | BF_MAGIC; + bonus2 bSubEle, Ele_Water, 1; + "> +}, +{ + Id: 4954 + AegisName: "Earth_Drop" + Name: "Earth Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus3 bAddEle, Ele_Earth, 2, BF_WEAPON | BF_MAGIC; + bonus2 bSubEle, Ele_Earth, 1; + "> +}, +{ + Id: 4955 + AegisName: "Light_Drop" + Name: "Light Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus3 bAddEle, Ele_Holy, 2, BF_WEAPON | BF_MAGIC; + bonus2 bSubEle, Ele_Holy, 1; + "> +}, +{ + Id: 4956 + AegisName: "Recovery_Drop" + Name: "Recovery Drop" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSkillHeal, AL_HEAL, 2; + bonus2 bSkillHeal, PR_SANCTUARY, 2; + bonus2 bSkillHeal, AM_POTIONPITCHER, 2; + bonus2 bSkillHeal, AB_HIGHNESS_HEAL, 2; + bonus2 bSkillHeal, AB_CHEAL, 2; + bonus2 bSkillHeal2, AL_HEAL, 2; + bonus2 bSkillHeal2, PR_SANCTUARY, 2; + bonus2 bSkillHeal2, AM_POTIONPITCHER, 2; + bonus2 bSkillHeal2, AB_HIGHNESS_HEAL, 2; + bonus2 bSkillHeal2, AB_CHEAL, 2; + bonus bAddItemHealRate, 2; + "> +}, +{ + Id: 4957 + AegisName: "The_Power_Of_Famitsu" + Name: "The Power Of Famitsu" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxHP, 832; "> +}, +{ + Id: 4958 + AegisName: "Double_Pediatric_Palace" + Name: "Double Pediatric Palace" + Type: 6 + Loc: 1023 + Script: <" bonus bDelayrate, -1; "> +}, +{ + Id: 4959 + AegisName: "Sagittarius" + Name: "Sagittarius" + Type: 6 + Loc: 1023 + Script: <" bonus bLongAtkRate, 1; "> +}, +{ + Id: 4960 + AegisName: "Aquarius" + Name: "Aquarius" + Type: 6 + Loc: 1023 + Script: <" bonus bUseSPrate, -2; "> +}, +{ + Id: 4961 + AegisName: "Aries" + Name: "Aries" + Type: 6 + Loc: 1023 + Script: <" bonus bMatk, 10; "> +}, +{ + Id: 4962 + AegisName: "Cancer" + Name: "Cancer" + Type: 6 + Loc: 1023 + Script: <" bonus bBaseAtk, 3; "> +}, +{ + Id: 4963 + AegisName: "Taurus" + Name: "Taurus" + Type: 6 + Loc: 1023 + Script: <" + bonus bBaseAtk, 3; + bonus bHit, 1; + "> +}, +{ + Id: 4964 + AegisName: "Capricorn" + Name: "Capricorn" + Type: 6 + Loc: 1023 + Script: <" bonus bMatkRate, 3; "> +}, +{ + Id: 4965 + AegisName: "Pisces" + Name: "Pisces" + Type: 6 + Loc: 1023 + Script: <" bonus bVariableCastrate, -2; "> +}, +{ + Id: 4966 + AegisName: "Scorpio" + Name: "Scorpio" + Type: 6 + Loc: 1023 +}, +{ + Id: 4967 + AegisName: "Leo" + Name: "Leo" + Type: 6 + Loc: 1023 + Script: <" bonus bAtkRate, 3; "> +}, +{ + Id: 4968 + AegisName: "Virgo" + Name: "Virgo" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSkillHeal, AL_HEAL, 1; + bonus2 bSkillHeal, PR_SANCTUARY, 1; + bonus2 bSkillHeal, AM_POTIONPITCHER, 1; + bonus2 bSkillHeal, AB_HIGHNESS_HEAL, 1; + bonus2 bSkillHeal, AB_CHEAL, 1; + "> +}, +{ + Id: 4969 + AegisName: "Libra" + Name: "Libra" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSkillHeal2, AL_HEAL, 1; + bonus2 bSkillHeal2, PR_SANCTUARY, 1; + bonus2 bSkillHeal2, AM_POTIONPITCHER, 1; + bonus2 bSkillHeal2, AB_HIGHNESS_HEAL, 1; + bonus2 bSkillHeal2, AB_CHEAL, 1; + bonus bAddItemHealRate, 1; + "> +}, +{ + Id: 4970 + AegisName: "Fire_Property_Reactor" + Name: "Fire Property Reactor" + Type: 6 + Loc: 1023 + Script: <" bonus bDefEle, Ele_Fire; "> +}, +{ + Id: 4971 + AegisName: "Water_Property_Reactor" + Name: "Water Property Reactor" + Type: 6 + Loc: 1023 + Script: <" bonus bDefEle, Ele_Water; "> +}, +{ + Id: 4972 + AegisName: "Earth_Property_Reactor" + Name: "Earth Property Reactor" + Type: 6 + Loc: 1023 + Script: <" bonus bDefEle, Ele_Earth; "> +}, +{ + Id: 4973 + AegisName: "Wind_Property_Reactor" + Name: "Wind Property Reactor" + Type: 6 + Loc: 1023 + Script: <" bonus bDefEle, Ele_Wind; "> +}, +{ + Id: 4974 + AegisName: "Fire_Resistance_Reactor" + Name: "Fire Resistance Reactor" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSubEle, Ele_Fire, 25; + bonus2 bSubEle, Ele_Water, -25; + "> +}, +{ + Id: 4975 + AegisName: "Water_Resistance_Reactor" + Name: "Water Resistance Reactor" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSubEle, Ele_Water, 25; + bonus2 bSubEle, Ele_Wind, -25; + "> +}, +{ + Id: 4976 + AegisName: "Earth_Resistance_Reactor" + Name: "Earth Resistance Reactor" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSubEle, Ele_Earth, 25; + bonus2 bSubEle, Ele_Fire, -25; + "> +}, +{ + Id: 4977 + AegisName: "Wind_Resistance_Reactor" + Name: "Wind Resistance Reactor" + Type: 6 + Loc: 1023 + Script: <" + bonus2 bSubEle, Ele_Wind, 25; + bonus2 bSubEle, Ele_Earth, -25; + "> +}, +{ + Id: 4978 + AegisName: "Restoration_Reactor_101" + Name: "Restoration Reactor 101" + Type: 6 + Loc: 1023 + Script: <" bonus2 bHPRegenRate, (getrefine() >= 7) ? 100 : 50, 5000; "> +}, +{ + Id: 4979 + AegisName: "Restoration_Reactor_102" + Name: "Restoration Reactor 102" + Type: 6 + Loc: 1023 + Script: <" bonus2 bSPRegenRate, (getrefine() >= 7) ? 5 : 3, 500; "> +}, +{ + Id: 4980 + AegisName: "Restoration_Reactor_201" + Name: "Restoration Reactor 201" + Type: 6 + Loc: 1023 + Script: <" bonus bHPrecovRate, (getrefine() >= 7) ? 100 : 50; "> +}, +{ + Id: 4981 + AegisName: "Restoration_Reactor_202" + Name: "Restoration Reactor 202" + Type: 6 + Loc: 1023 + Script: <" bonus bSPrecovRate, (getrefine() >= 7) ? 100 : 50; "> +}, +{ + Id: 4982 + AegisName: "Auxiliary_Reactor_STR" + Name: "Auxiliary Reactor STR" + Type: 6 + Loc: 1023 + Script: <" + if (readparam(bStr) >= 10) bonus bBaseAtk, 5; + if (getrefine() >= 7) bonus bBaseAtk, 10; + "> +}, +{ + Id: 4983 + AegisName: "Auxiliary_Reactor_INT" + Name: "Auxiliary Reactor INT" + Type: 6 + Loc: 1023 + Script: <" + if (readparam(bInt) >= 10) bonus bMatk, 5; + if (getrefine() >= 7) bonus bMatk, 10; + "> +}, +{ + Id: 4984 + AegisName: "Auxiliary_Reactor_DEF" + Name: "Auxiliary Reactor DEF" + Type: 6 + Loc: 1023 + Script: <" bonus bDef, 100; "> +}, +{ + Id: 4985 + AegisName: "Auxiliary_Reactor_Perfect" + Name: "Auxiliary Reactor Perfect" + Type: 6 + Loc: 1023 + Script: <" bonus bFlee2, 3; "> +}, +{ + Id: 4986 + AegisName: "Auxiliary_Reactor_Attack" + Name: "Auxiliary Reactor Attack" + Type: 6 + Loc: 1023 + Script: <" bonus bBaseAtk, 20; "> +}, +{ + Id: 4987 + AegisName: "Auxiliary_Reactor_Magic" + Name: "Auxiliary Reactor Magic" + Type: 6 + Loc: 1023 + Script: <" bonus bMatk, 20; "> +}, +{ + Id: 4988 + AegisName: "Auxiliary_Reactor_MaxHP" + Name: "Auxiliary Reactor MaxHP" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxHPrate, 5; "> +}, +{ + Id: 4989 + AegisName: "Auxiliary_Reactor_MaxSP" + Name: "Auxiliary_Reactor_MaxHP" + Type: 6 + Loc: 1023 + Script: <" bonus bMaxSPrate, 3; "> +}, +{ + Id: 4990 + AegisName: "Auxiliary_Reactor_Frozen" + Name: "Auxiliary Reactor Frozen" + Type: 6 + Loc: 1023 + Script: <" bonus2 bResEff, Eff_Freeze, 10000; "> +}, +{ + Id: 4991 + AegisName: "Auxiliary_Reactor_ASPD" + Name: "Auxiliary Reactor ASPD" + Type: 6 + Loc: 1023 + Script: <" bonus bAspd, 1; "> +}, +{ + Id: 4992 + AegisName: "HPAbsorb1" + Name: "HP Absorb 1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bHPDrainRate, 1, 1; "> +}, +{ + Id: 4993 + AegisName: "SPAbsorb1" + Name: "SP Absorb 1" + Type: 6 + Loc: 1023 + Script: <" bonus2 bSPDrainRate, 1, 1; "> +}, +{ + Id: 4994 + AegisName: "Rune_Of_Might1" + Name: "Rune Of Might 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bStr, 5; + if (getrefine() >= 10) bonus bAtkRate, 10; + "> +}, +{ + Id: 4995 + AegisName: "Rune_Of_Might2" + Name: "Rune Of Might 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bStr, 6; + if (getrefine() >= 11) { + bonus bStr, 1; + bonus bAtkRate, 7; + } + "> +}, +{ + Id: 4996 + AegisName: "Rune_Of_Might3" + Name: "Rune Of Might 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bStr, 7; + if (getrefine() >= 12) { + bonus bStr, 1; + bonus bAtkRate, 8; + } + if (getrefine() >= 13) { + bonus bStr, 1; + bonus bAtkRate, 2; + } + "> +}, +{ + Id: 4997 + AegisName: "Rune_Of_Agility1" + Name: "Rune Of Agility 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bAgi, 5; + if (getrefine() >= 10) bonus bFlee2, 5; + "> +}, +{ + Id: 4998 + AegisName: "Rune_Of_Agility2" + Name: "Rune Of Agility 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bAgi, 6; + if (getrefine() >= 11) { + bonus bAgi, 1; + bonus bFlee2, 7; + } + "> +}, +{ + Id: 4999 + AegisName: "Rune_Of_Agility3" + Name: "Rune Of Agility 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bAgi, 7; + if (getrefine() >= 12) { + bonus bAgi, 1; + bonus bFlee2, 5; + } + if (getrefine() >= 13) { + bonus bAgi, 1; + bonus bFlee2, 5; + } + "> +}, //== More Headgears ======================================== { @@ -69267,7 +70543,7 @@ item_db: ( Id: 7524 AegisName: "Shadow_Orb" Name: "Shadow Orb" - Buy: 225 + Buy: 300 Weight: 20 BuyingStore: true }, @@ -75299,6 +76575,8 @@ item_db: ( Weight: 30 Script: <" itemheal rand(45,65), 0; + specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Bloody Murderer Fo-rm!!"; montransform BLOODY_MURDERER, 600000, SC_MTF_MHP, 1000; "> }, @@ -75310,6 +76588,8 @@ item_db: ( Weight: 30 Script: <" itemheal rand(45,65), 0; + specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!!! Bathory Fo-rm!!"; montransform BATHORY, 600000, SC_MTF_MSP, 100; "> }, @@ -75321,6 +76601,8 @@ item_db: ( Weight: 30 Script: <" itemheal rand(45,65),0; + specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Jack Fo-rm!!"; montransform JAKK, 600000, SC_MTF_PUMPKIN, 2000; "> }, @@ -75332,6 +76614,8 @@ item_db: ( Weight: 30 Script: <" itemheal rand(45,65),0; + specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Cube Fo-rm!!"; montransform QUVE, 600000, SC_MTF_HITFLEE, 10, 20; "> }, @@ -77106,7 +78390,7 @@ item_db: ( Buy: 2 Weight: 350 BuyingStore: true - Script: <" getitem 13204,500; "> + Script: <" getitem Lighting_Sphere, 500; "> }, { Id: 12145 @@ -77116,7 +78400,7 @@ item_db: ( Buy: 2 Weight: 350 BuyingStore: true - Script: <" getitem 13206,500; "> + Script: <" getitem Blind_Sphere, 500; "> }, { Id: 12146 @@ -77126,7 +78410,7 @@ item_db: ( Buy: 2 Weight: 350 BuyingStore: true - Script: <" getitem 13205,500; "> + Script: <" getitem Poison_Sphere, 500; "> }, { Id: 12147 @@ -77136,7 +78420,7 @@ item_db: ( Buy: 2 Weight: 350 BuyingStore: true - Script: <" getitem 13207,500; "> + Script: <" getitem Freezing_Sphere, 500; "> }, { Id: 12148 @@ -77146,7 +78430,7 @@ item_db: ( Buy: 2 Weight: 350 BuyingStore: true - Script: <" getitem 13203,500; "> + Script: <" getitem Flare_Sphere, 500; "> }, { Id: 12149 @@ -77156,7 +78440,7 @@ item_db: ( Buy: 2 Weight: 250 BuyingStore: true - Script: <" getitem 13200,500; "> + Script: <" getitem Bullet, 500; "> }, { Id: 12150 @@ -77166,7 +78450,7 @@ item_db: ( Buy: 2 Weight: 250 BuyingStore: true - Script: <" getitem 13202,500; "> + Script: <" getitem Shell_Of_Blood, 500; "> }, { Id: 12151 @@ -77176,7 +78460,7 @@ item_db: ( Buy: 2 Weight: 250 BuyingStore: true - Script: <" getitem 13201,500; "> + Script: <" getitem Silver_Bullet, 500; "> }, { Id: 12152 @@ -83826,6 +85110,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Deviling Fo-rm!!"; montransform DEVIRUCHI, 1200000, SC_MTF_ASPD, 10, 5; "> }, @@ -83847,6 +85132,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Raydric Archer Fo-rm!!"; montransform RAYDRIC_ARCHER, 1200000, SC_MTF_RANGEATK, 25; "> }, @@ -83868,6 +85154,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Mavka Fo-rm!!"; montransform MAVKA, 1200000, SC_MTF_RANGEATK, 25; "> }, @@ -83889,6 +85176,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Marduk Fo-rm!!"; montransform MARDUK, 1200000, SC_MTF_MATK, 25; "> }, @@ -83910,6 +85198,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Banshee Fo-rm!!"; montransform BANSHEE, 1200000, SC_MTF_MATK, 25; "> }, @@ -83931,6 +85220,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Poring Fo-rm!!"; montransform PORING, 1200000, SC_MTF_CRIDAMAGE, 5; "> }, @@ -83952,6 +85242,7 @@ item_db: ( } Script: <" specialeffect2 EF_CLOAKING; + showscript "Trans-Form-!! Golem Fo-rm!!"; montransform GOLEM, 1200000, SC_MTF_MLEATKED, 2; "> }, @@ -91073,7 +92364,7 @@ item_db: ( }, { Id: 13198 - AegisName: "Tempest_" + AegisName: "Tempest" Name: "Tempest" Type: 5 Buy: 2200000 @@ -91093,7 +92384,7 @@ item_db: ( }, { Id: 13199 - AegisName: "Tempest" + AegisName: "Tempest_" Name: "Tempest" Type: 5 Buy: 2200000 @@ -91125,6 +92416,7 @@ item_db: ( Job: 0x01000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13201 @@ -91150,7 +92442,10 @@ item_db: ( Job: 0x01000000 Loc: 32768 View: 3 - Script: <" bonus2 bAddEff,Eff_Bleeding,100; "> + Script: <" + bonus bAtkEle, Ele_Neutral; + bonus2 bAddEff, Eff_Bleeding, 100; + "> }, { Id: 13203 @@ -91256,6 +92551,7 @@ item_db: ( Job: 0x41000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13211 @@ -91268,6 +92564,7 @@ item_db: ( Job: 0x41000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13212 @@ -91280,6 +92577,7 @@ item_db: ( Job: 0x41000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13213 @@ -91292,6 +92590,7 @@ item_db: ( Job: 0x41000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> }, { Id: 13214 @@ -91304,6 +92603,191 @@ item_db: ( Job: 0x41000000 Loc: 32768 View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> +}, +{ + Id: 13215 + AegisName: "Armor_Piercing_Bullet" + Name: "Armor-Piercing Bullet" + Type: 10 + Buy: 15 + Weight: 2 + Atk: 50 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Neutral; "> +}, +{ + Id: 13216 + AegisName: "Blazing_Bullet" + Name: "Blazing Bullet" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 40 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Fire; "> +}, +{ + Id: 13217 + AegisName: "Freezing_Bullet" + Name: "Freezing Bullet" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 40 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Water; "> +}, +{ + Id: 13218 + AegisName: "Lightning_Bullet" + Name: "Lightning Bullet" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 40 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Wind; "> +}, +{ + Id: 13219 + AegisName: "Magic_Stone_Bullet" + Name: "Magic Stone Bullet" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 40 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Earth; "> +}, +{ + Id: 13220 + AegisName: "Purifying_Bullet" + Name: "Purifying Bullet" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 40 + Job: 0x41000000 + Loc: 32768 + EquipLv: 100 + View: 3 + Script: <" bonus bAtkEle, Ele_Holy; "> +}, +{ + Id: 13221 + AegisName: "Silver_Bullet_" + Name: "Silver Bullet" + Type: 10 + Buy: 5 + Weight: 2 + Atk: 15 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" bonus bAtkEle, Ele_Holy; "> +}, +{ + Id: 13222 + AegisName: "Shell_Of_Blood_" + Name: "Bloody Shell" + Type: 10 + Buy: 10 + Weight: 2 + Atk: 30 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" + bonus bAtkEle, Ele_Neutral; + bonus2 bAddEff, Eff_Bleeding, 100; + "> +}, +{ + Id: 13223 + AegisName: "Incendiary_Grenade" + Name: "Incendiary Grenade" + Type: 10 + Buy: 15 + Weight: 5 + Atk: 50 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" bonus bAtkEle, Ele_Fire; "> +}, +{ + Id: 13224 + AegisName: "Lightning_Grenade" + Name: "Lightning Grenade" + Type: 10 + Buy: 15 + Weight: 5 + Atk: 50 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" bonus bAtkEle, Ele_Wind; "> +}, +{ + Id: 13225 + AegisName: "Poison_Grenade" + Name: "Poison Grenade" + Type: 10 + Buy: 15 + Weight: 5 + Atk: 50 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" + bonus bAtkEle, Ele_Poison; + bonus2 bAddEff, Eff_Poison, 500; + "> +}, +{ + Id: 13226 + AegisName: "Flash_Grenade" + Name: "Flash Grenade" + Type: 10 + Buy: 15 + Weight: 5 + Atk: 50 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" + bonus bAtkEle, Ele_Dark; + bonus2 bAddEff, Eff_Blind, 500; + "> +}, +{ + Id: 13227 + AegisName: "Cyro_Grenade" + Name: "Cyro Grenade" + Type: 10 + Buy: 15 + Weight: 5 + Atk: 50 + Job: 0x01000000 + Loc: 32768 + View: 3 + Script: <" bonus bAtkEle, Ele_Water; "> }, //== Shurikens & Kunais ==================================== @@ -113182,6 +114666,56 @@ item_db: ( OnUnequipScript: <" heal -1000,0; "> }, { + Id: 16030 + AegisName: "Pilebunker_S" + Name: "Pile Bunker S" + Type: 4 + Weight: 3000 + Atk: 400 + Range: 1 + Slots: 1 + Job: 0x00000400 + Upper: 56 + Loc: 2 + WeaponLv: 4 + EquipLv: 130 + View: 8 + Script: <" bonus bAspdRate, (getrefine() / 2); "> +}, +{ + Id: 16031 + AegisName: "Pilebunker_P" + Name: "Pile Bunker P" + Type: 4 + Weight: 4000 + Atk: 450 + Range: 1 + Job: 0x00000400 + Upper: 56 + Loc: 2 + WeaponLv: 4 + EquipLv: 130 + View: 8 + Script: <" bonus bBaseAtk, (getrefine() * 5); "> +}, +{ + Id: 16032 + AegisName: "Pilebunker_T" + Name: "Pile Bunker T" + Type: 4 + Weight: 3500 + Atk: 400 + Range: 1 + Slots: 1 + Job: 0x00000400 + Upper: 56 + Loc: 2 + WeaponLv: 4 + EquipLv: 130 + View: 8 + Script: <" bonus bUseSPrate, - getrefine(); "> +}, +{ Id: 16039 AegisName: "Spoon" Name: "Spoon" @@ -133749,6 +135283,123 @@ item_db: ( Script: <" percentheal 5,5; "> }, { + Id: 22737 + AegisName: "Bloody_Cartrige" + Name: "Bloody Bullet Case" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Shell_Of_Blood_, 500; "> +}, +{ + Id: 22738 + AegisName: "Silver_Cartrige" + Name: "Silver Bullet Case" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Silver_Bullet_, 500; "> +}, +{ + Id: 22739 + AegisName: "Lightning_Sphere_Pack" + Name: "Lightning Sphere Pack" + Type: 2 + Buy: 2 + Weight: 350 + Script: <" getitem Lightning_Grenade, 500; "> +}, +{ + Id: 22740 + AegisName: "Blind_Sphere_Pack" + Name: "Blind Sphere Pack" + Type: 2 + Buy: 2 + Weight: 350 + Script: <" getitem Flash_Grenade, 500; "> +}, +{ + Id: 22741 + AegisName: "Poison_Sphere_Pack" + Name: "Poison Sphere Pack" + Type: 2 + Buy: 2 + Weight: 350 + Script: <" getitem Poison_Grenade, 500; "> +}, +{ + Id: 22742 + AegisName: "Freezing_Sphere_Pack" + Name: "Freezing Sphere Pack" + Type: 2 + Buy: 2 + Weight: 350 + Script: <" getitem Cyro_Grenade, 500; "> +}, +{ + Id: 22743 + AegisName: "Flare_Sphere_Pack" + Name: "Flare Sphere Pack" + Type: 2 + Buy: 2 + Weight: 350 + Script: <" getitem Incendiary_Grenade, 500; "> +}, +{ + Id: 22744 + AegisName: "Armor_Piercing_Cartrige" + Name: "Armor-Piercing Cartrige" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Armor_Piercing_Bullet, 500; "> +}, +{ + Id: 22745 + AegisName: "Incandescence_Shot_Cartridge" + Name: "Incandescence Shot Cartridge" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Blazing_Bullet, 500; "> +}, +{ + Id: 22746 + AegisName: "Glaciation_Shot_Cartridge" + Name: "Glaciation Shot Cartridge" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Freezing_Bullet, 500; "> +}, +{ + Id: 22747 + AegisName: "Dengeki_Shot_Cartridge" + Name: "Dengeki Shot Cartridge" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Lightning_Bullet, 500; "> +}, +{ + Id: 22748 + AegisName: "Hearthstone_Shot_Cartridge" + Name: "Hearthstone Shot Cartridge" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Magic_Stone_Bullet, 500; "> +}, +{ + Id: 22749 + AegisName: "Purification_Shot_Cartridge" + Name: "Purification Shot Cartridge" + Type: 2 + Buy: 2 + Weight: 250 + Script: <" getitem Purifying_Bullet, 500; "> +}, +{ Id: 22777 AegisName: "Buff_Gift_Set" Name: "Buff Gift Set" @@ -137502,4 +139153,334 @@ item_db: ( } "> }, + +//== New Enchantment Stones ================================ +{ + Id: 29000 + AegisName: "Rune_Of_Magic1" + Name: "Rune Of Magic Power 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bInt, 5; + if (getrefine() >= 10) bonus bMatkRate, 5; + "> +}, +{ + Id: 29001 + AegisName: "Rune_Of_Magic2" + Name: "Rune Of Magic Power 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bInt, 6; + if (getrefine() >= 11) { + bonus bInt, 1; + bonus bMatkRate, 7; + } + "> +}, +{ + Id: 29002 + AegisName: "Rune_Of_Magic3" + Name: "Rune Of Magic Power 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bInt, 7; + if (getrefine() >= 12) { + bonus bInt, 1; + bonus bMatkRate, 8; + } + if (getrefine() >= 13) { + bonus bInt, 1; + bonus bMatkRate, 2; + } + "> +}, +{ + Id: 29003 + AegisName: "Rune_Of_Dexterity1" + Name: "Rune Of Dexterity 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bDex, 5; + if (getrefine() >= 10) bonus bLongAtkRate, 5; + "> +}, +{ + Id: 29004 + AegisName: "Rune_Of_Dexterity2" + Name: "Rune Of Dexterity 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bDex, 6; + if (getrefine() >= 11) { + bonus bDex, 1; + bonus bLongAtkRate, 7; + } + "> +}, +{ + Id: 29005 + AegisName: "Rune_Of_Dexterity3" + Name: "Rune Of Dexterity 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bDex, 7; + if (getrefine() >= 12) { + bonus bDex, 1; + bonus bLongAtkRate, 8; + } + if (getrefine() >= 13) { + bonus bDex, 1; + bonus bLongAtkRate, 2; + } + "> +}, +{ + Id: 29006 + AegisName: "Rune_Of_Fortune1" + Name: "Rune Of Fortune 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bLuk, 5; + if (getrefine() >= 10) bonus bCritAtkRate, 5; + "> +}, +{ + Id: 29007 + AegisName: "Rune_Of_Fortune2" + Name: "Rune Of Fortune 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bLuk, 6; + if (getrefine() >= 11) { + bonus bLuk, 1; + bonus bCritAtkRate, 7; + } + "> +}, +{ + Id: 29008 + AegisName: "Rune_Of_Fortune3" + Name: "Rune Of Fortune 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bLuk, 7; + if (getrefine() >= 12) { + bonus bLuk, 1; + bonus bCritAtkRate, 8; + } + if (getrefine() >= 13) { + bonus bLuk, 1; + bonus bCritAtkRate, 6; + } + "> +}, +{ + Id: 29009 + AegisName: "Rune_Of_Stamina1" + Name: "Rune Of Stamina 1Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bVit, 5; + if (getrefine() >= 10) bonus bMaxHPrate, 5; + "> +}, +{ + Id: 29010 + AegisName: "Rune_Of_Stamina2" + Name: "Rune Of Stamina 2Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bVit, 6; + if (getrefine() >= 11) { + bonus bVit, 1; + bonus bMaxHPrate, 7; + } + "> +}, +{ + Id: 29011 + AegisName: "Rune_Of_Stamina3" + Name: "Rune Of Stamina 3Lv" + Type: 6 + Loc: 1023 + Script: <" + if (getrefine() >= 7) bonus bVit, 7; + if (getrefine() >= 12) { + bonus bVit, 1; + bonus bMaxHPrate, 8; + } + if (getrefine() >= 13) { + bonus bVit, 1; + bonus bMaxHPrate, 2; + } + "> +}, +{ + Id: 29013 + AegisName: "HPAbsorb3" + Name: "HP Absorb 3" + Type: 6 + Loc: 1023 + Script: <" bonus2 bHPDrainRate, 1, 3; "> +}, +{ + Id: 29014 + AegisName: "STR3_INT3" + Name: "STR+3 INT-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bStr, 3; + bonus bInt, -3; + "> +}, +{ + Id: 29015 + AegisName: "STR3_DEX3" + Name: "STR+3 DEX-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bStr, 3; + bonus bDex, -3; + "> +}, +{ + Id: 29016 + AegisName: "INT3_DEX3" + Name: "INT+3 DEX-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bInt, 3; + bonus bDex, -3; + "> +}, +{ + Id: 29017 + AegisName: "INT3_VIT3" + Name: "INT+3 VIT-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bInt, 3; + bonus bVit, -3; + "> +}, +{ + Id: 29018 + AegisName: "DEX3_VIT3" + Name: "DEX+3 VIT-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bDex, 3; + bonus bVit, -3; + "> +}, +{ + Id: 29019 + AegisName: "DEX3_AGI3" + Name: "DEX+3 AGI-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bDex, 3; + bonus bAgi, -3; + "> +}, +{ + Id: 29020 + AegisName: "VIT3_AGI3" + Name: "VIT+3 AGI-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bVit, 3; + bonus bAgi, -3; + "> +}, +{ + Id: 29021 + AegisName: "VIT3_LUK3" + Name: "VIT+3 LUK-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bVit, 3; + bonus bLuk, -3; + "> +}, +{ + Id: 29022 + AegisName: "AGI3_LUK3" + Name: "AGI+3 LUK-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bAgi, 3; + bonus bLuk, -3; + "> +}, +{ + Id: 29023 + AegisName: "AGI3_STR3" + Name: "AGI+3 STR-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bAgi, 3; + bonus bStr, -3; + "> +}, +{ + Id: 29024 + AegisName: "LUK3_STR3" + Name: "LUK+3 STR-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bLuk, 3; + bonus bStr, -3; + "> +}, +{ + Id: 29025 + AegisName: "LUK3_INT3" + Name: "LUK+3 INT-3" + Type: 6 + Loc: 1023 + Script: <" + bonus bLuk, 3; + bonus bInt, -3; + "> +}, +{ + Id: 29026 + AegisName: "DEF20" + Name: "DEF+20" + Type: 6 + Loc: 1023 + Script: <" bonus bDef, 20; "> +}, +{ + Id: 29027 + AegisName: "EXP2" + Name: "EXP+2%" + Type: 6 + Loc: 1023 + Script: <" bonus2 bExpAddRace, RC_All, 2; "> +}, ) diff --git a/db/re/level_penalty.txt b/db/re/level_penalty.txt index 882aca91b..25005b1bf 100644 --- a/db/re/level_penalty.txt +++ b/db/re/level_penalty.txt @@ -8,49 +8,49 @@ // RACE: // 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect, // 5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon, -// 10=Boss monsters, 11=Normal monsters +// 10=Player, 11=Boss monsters, 12=Normal monsters // // Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled. // EXP modifiers due to level difference -1,11,16,40 -1,11,15,115 -1,11,14,120 -1,11,13,125 -1,11,12,130 -1,11,11,135 -1,11,10,140 -1,11,9,135 -1,11,8,130 -1,11,7,125 -1,11,6,120 -1,11,5,115 -1,11,4,110 -1,11,3,105 -1,11,0,100 -1,11,-1,100 -1,11,-6,95 -1,11,-11,90 -1,11,-16,85 -1,11,-21,60 -1,11,-26,35 -1,11,-31,10 +1,12,16,40 +1,12,15,115 +1,12,14,120 +1,12,13,125 +1,12,12,130 +1,12,11,135 +1,12,10,140 +1,12,9,135 +1,12,8,130 +1,12,7,125 +1,12,6,120 +1,12,5,115 +1,12,4,110 +1,12,3,105 +1,12,0,100 +1,12,-1,100 +1,12,-6,95 +1,12,-11,90 +1,12,-16,85 +1,12,-21,60 +1,12,-26,35 +1,12,-31,10 // Boss Type -1,10,0,100 +1,11,0,100 // Drop rate modifiers due to level difference -2,11,16,50 -2,11,13,60 -2,11,10,70 -2,11,7,80 -2,11,4,90 -2,11,0,100 -2,11,-4,90 -2,11,-7,80 -2,11,-10,70 -2,11,-13,60 -2,11,-16,50 +2,12,16,50 +2,12,13,60 +2,12,10,70 +2,12,7,80 +2,12,4,90 +2,12,0,100 +2,12,-4,90 +2,12,-7,80 +2,12,-10,70 +2,12,-13,60 +2,12,-16,50 // Boss Type -2,10,0,100 +2,11,0,100 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index a521a348a..eed7b8e1d 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -2520,16 +2520,16 @@ 1511,Amon Ra@NPC_BLOODDRAIN,idle,199,1,2000,0,5000,yes,target,always,,,,,,,29, 1511,Amon Ra@NPC_CRITICALWOUND,attack,673,2,500,0,5000,yes,target,always,,,,,,,, 1511,Amon Ra@NPC_DARKBLESSING,attack,203,1,5000,0,2000,no,target,always,,,,,,,, -1511,Amon Ra@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,yes,self,casttargeted,,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,casttargeted,,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,yes,self,longrangeattacked,,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,longrangeattacked,,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,28,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,18,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,21,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,79,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,83,,,,,,9, -1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,89,,,,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,longrangeattacked,0,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,casttargeted,0,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,no,self,longrangeattacked,0,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,no,self,casttargeted,0,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,18,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,89,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,21,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,28,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,79,1474,1477,1438,,,9, +1511,Amon Ra@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,83,1474,1477,1438,,,9, 1511,Amon Ra@WZ_FIREPILLAR,attack,80,10,5000,0,2000,yes,around2,always,,,,,,,, 1511,Amon Ra@WZ_FIREPILLAR,idle,80,10,10000,0,2000,yes,around2,always,,,,,,,, 1511,Amon Ra@WZ_FIREPILLAR,idle,80,10,10000,0,2000,yes,around2,always,,,,,,,, @@ -3020,7 +3020,7 @@ 1646,Lord Knight Seyren@NPC_POWERUP,attack,349,5,2000,0,100000,yes,self,always,,,,,,,, 1646,Lord Knight Seyren@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 1646,Lord Knight Seyren@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -1646,Lord Knight Seyren@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1646,Lord Knight Seyren@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1641,1642,1643,1644,1645,0, 1646,Lord Knight Seyren@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1641,1642,1643,1644,1645,, 1646,Lord Knight Seyren@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1641,1642,1643,1644,1645,, 1646,Lord Knight Seyren@SM_BASH,attack,5,10,1000,0,5000,yes,target,always,,,,,,,, @@ -3053,7 +3053,7 @@ 1647,Assassin Cross Eremes@NPC_INVISIBLE,idle,353,1,2000,0,30000,yes,self,always,,,,,,,, 1647,Assassin Cross Eremes@NPC_POISONATTACK,attack,188,10,1000,0,5000,yes,target,always,,,,,,,, 1647,Assassin Cross Eremes@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -1647,Assassin Cross Eremes@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1647,Assassin Cross Eremes@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1642,1643,1644,1645,0, 1647,Assassin Cross Eremes@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1640,1642,1643,1644,1645,, 1647,Assassin Cross Eremes@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1640,1642,1643,1644,1645,, 1647,Assassin Cross Eremes@TF_POISON,attack,52,10,1000,0,10000,yes,target,always,,,,,,,, @@ -3077,7 +3077,7 @@ 1648,MasterSmith Howard@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 1648,MasterSmith Howard@NPC_SHIELDBRAKE,attack,346,10,1000,0,5000,yes,target,always,,,,,,,19, 1648,MasterSmith Howard@NPC_SPLASHATTACK,attack,174,1,1000,0,0,yes,target,attackpcge,2,,,,,,, -1648,MasterSmith Howard@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1648,MasterSmith Howard@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1641,1643,1644,1645,0, 1648,MasterSmith Howard@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1643,1644,1645,, 1648,MasterSmith Howard@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1643,1644,1645,, 1648,MasterSmith Howard@NPC_WATERATTACK,attack,184,10,1000,0,5000,yes,target,always,,,,,,,, @@ -3111,7 +3111,7 @@ 1649,High Priest Margaretha@NPC_CRITICALSLASH,attack,170,1,1000,0,5000,yes,target,always,,,,,,,, 1649,High Priest Margaretha@NPC_HOLYATTACK,attack,189,10,1000,0,5000,yes,target,always,,,,,,,, 1649,High Priest Margaretha@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -1649,High Priest Margaretha@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1649,High Priest Margaretha@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1641,1642,1644,1645,0, 1649,High Priest Margaretha@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1644,1645,, 1649,High Priest Margaretha@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1644,1645,, 1649,High Priest Margaretha@PR_LEXAETERNA,attack,78,1,1000,0,5000,yes,target,always,,,,,,,29, @@ -3143,7 +3143,7 @@ 1650,Sniper Cecil@NPC_POWERUP,attack,349,5,2000,0,100000,yes,self,always,,,,,,,, 1650,Sniper Cecil@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 1650,Sniper Cecil@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -1650,Sniper Cecil@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1650,Sniper Cecil@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1641,1642,1643,1645,0, 1650,Sniper Cecil@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1643,1645,, 1650,Sniper Cecil@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1643,1645,, 1650,Sniper Cecil@NPC_WINDATTACK,attack,187,10,1000,0,5000,yes,target,always,,,,,,,, @@ -3159,7 +3159,7 @@ 1651,High Wizard Kathryne@NPC_CALLSLAVE,idle,352,1,10000,0,10000,yes,self,always,,,,,,,, 1651,High Wizard Kathryne@NPC_CHANGEHOLY,attack,167,1,10000,500,6000000,no,self,myhpltmaxrate,40,,,,,,9, 1651,High Wizard Kathryne@NPC_CHANGETELEKINESIS,attack,169,1,10000,500,6000000,no,self,myhpltmaxrate,10,,,,,,9, -1651,High Wizard Kathryne@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +1651,High Wizard Kathryne@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1641,1642,1643,1644,0, 1651,High Wizard Kathryne@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1643,1644,, 1651,High Wizard Kathryne@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,1640,1641,1642,1643,1644,, 1651,High Wizard Kathryne@WZ_FIREPILLAR,attack,80,10,2000,200,0,yes,around2,always,,,,,,,, @@ -6029,7 +6029,7 @@ 2111,MasterSmith Howard@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 2111,MasterSmith Howard@NPC_SHIELDBRAKE,attack,346,10,1000,0,5000,yes,target,always,,,,,,,19, 2111,MasterSmith Howard@NPC_SPLASHATTACK,attack,174,1,1000,0,0,yes,target,attackpcge,2,,,,,,, -2111,MasterSmith Howard@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2111,MasterSmith Howard@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1641,1643,1644,1645,, 2111,MasterSmith Howard@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,yes,self,slavele,3,1640,1641,1643,1644,1645,, 2111,MasterSmith Howard@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,yes,self,slavele,3,1640,1641,1643,1644,1645,, 2111,MasterSmith Howard@NPC_WATERATTACK,attack,184,10,1000,0,5000,yes,target,always,,,,,,,, @@ -6051,7 +6051,7 @@ 2112,Lord Knight Seyren@NPC_POWERUP,attack,349,5,2000,0,100000,yes,self,always,,,,,,,, 2112,Lord Knight Seyren@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 2112,Lord Knight Seyren@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2112,Lord Knight Seyren@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2112,Lord Knight Seyren@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1641,1642,1643,1644,1645,, 2112,Lord Knight Seyren@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,yes,self,slavele,3,1641,1642,1643,1644,1645,, 2112,Lord Knight Seyren@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,yes,self,slavele,3,1641,1642,1643,1644,1645,, 2112,Lord Knight Seyren@SM_BASH,attack,5,10,1000,0,5000,yes,target,always,,,,,,,, @@ -6084,7 +6084,7 @@ 2113,Assassin Cross Eremes@NPC_INVISIBLE,idle,353,1,2000,0,30000,yes,self,always,,,,,,,, 2113,Assassin Cross Eremes@NPC_POISONATTACK,attack,188,10,1000,0,5000,yes,target,always,,,,,,,, 2113,Assassin Cross Eremes@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2113,Assassin Cross Eremes@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2113,Assassin Cross Eremes@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,1640,1642,1643,1644,1645,, 2113,Assassin Cross Eremes@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,yes,self,slavele,3,1640,1642,1643,1644,1645,, 2113,Assassin Cross Eremes@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,yes,self,slavele,3,1640,1642,1643,1644,1645,, 2113,Assassin Cross Eremes@TF_POISON,attack,52,10,1000,0,10000,yes,target,always,,,,,,,, @@ -7301,7 +7301,7 @@ 2235,Randel@NPC_POWERUP,attack,349,5,2000,0,100000,yes,self,always,,,,,,,, 2235,Randel@NPC_POWERUP,attack,349,5,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 2235,Randel@NPC_STUNATTACK,attack,179,5,2000,0,5000,yes,target,always,,,,,,,, -2235,Randel@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2235,Randel@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2229,2230,2231,2232,2233,, 2235,Randel@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2229,2230,2231,2232,2233,, 2235,Randel@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2229,2230,2231,2232,2233,, 2235,Randel@PA_PRESSURE,attack,367,5,500,0,5000,no,target,always,,,,,,,, @@ -7328,7 +7328,7 @@ 2236,Flamel@NPC_CRITICALSLASH,attack,170,1,1000,0,5000,yes,target,always,,,,,,,, 2236,Flamel@NPC_FIREATTACK,attack,186,5,1000,0,5000,yes,target,always,,,,,,,, 2236,Flamel@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2236,Flamel@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2236,Flamel@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2230,2231,2232,2233,, 2236,Flamel@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2230,2231,2232,2233,, 2236,Flamel@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2230,2231,2232,2233,, 2237,Celia@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,, @@ -7359,7 +7359,7 @@ 2237,Celia@NPC_CHANGETELEKINESIS,attack,169,1,10000,500,6000000,no,self,myhpltmaxrate,10,,,,,,9, 2237,Celia@NPC_MENTALBREAKER,attack,159,5,2000,0,5000,yes,target,always,,,,,,,7, 2237,Celia@NPC_MENTALBREAKER,chase,159,5,2000,0,5000,yes,target,always,,,,,,,7, -2237,Celia@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2237,Celia@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2229,2231,2232,2233,, 2237,Celia@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2231,2232,2233,, 2237,Celia@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2231,2232,2233,, 2237,Celia@NPC_WIDESOULDRAIN,attack,680,5,1000,500,5000,no,self,always,,,,,,,42, @@ -7398,7 +7398,7 @@ 2238,Chen@NPC_POWERUP,attack,349,1,2000,0,100000,yes,self,always,,,,,,,, 2238,Chen@NPC_POWERUP,attack,349,1,2000,0,25000,yes,self,myhpltmaxrate,30,,,,,,, 2238,Chen@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2238,Chen@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2238,Chen@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2229,2230,2232,2233,, 2238,Chen@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2232,2233,, 2238,Chen@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2232,2233,, 2239,Gertie@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,, @@ -7420,7 +7420,7 @@ 2239,Gertie@NPC_POISONATTACK,attack,188,10,1000,0,5000,yes,target,always,,,,,,,, 2239,Gertie@NPC_SHIELDBRAKE,attack,346,5,500,0,20000,yes,target,myhpltmaxrate,70,,,,,,, 2239,Gertie@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2239,Gertie@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2239,Gertie@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2229,2230,2231,2233,, 2239,Gertie@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2233,, 2239,Gertie@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2233,, 2239,Gertie@NPC_WEAPONBRAKER,attack,343,1,500,0,30000,yes,target,myhpltmaxrate,30,,,,,,, @@ -7445,7 +7445,7 @@ 2240,Alphoccio@NPC_SLOWCAST,attack,672,1,2000,800,30000,no,self,always,,,,,,,36, 2240,Alphoccio@NPC_SLOWCAST,chase,672,1,2000,300,30000,no,self,always,,,,,,,36, 2240,Alphoccio@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2240,Alphoccio@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2240,Alphoccio@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2229,2230,2231,2232,, 2240,Alphoccio@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2232,, 2240,Alphoccio@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2232,, 2240,Alphoccio@NPC_WINDATTACK,attack,187,5,1000,0,5000,yes,target,always,,,,,,,, @@ -7460,7 +7460,7 @@ 2241,Trentini@NPC_SLOWCAST,attack,672,1,2000,800,30000,no,self,always,,,,,,,36, 2241,Trentini@NPC_SLOWCAST,chase,672,1,2000,300,30000,no,self,always,,,,,,,36, 2241,Trentini@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,, -2241,Trentini@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,,,,,,, +2241,Trentini@NPC_SUMMONMONSTER,attack,209,5,10000,700,60000000,yes,self,myhpltmaxrate,30,2228,2229,2230,2231,2232,, 2241,Trentini@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2232,, 2241,Trentini@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,slavele,3,2228,2229,2230,2231,2232,, 2241,Trentini@NPC_UGLYDANCE,attack,2541,5,1000,1000,70000,no,target,always,,,,,,,, @@ -7904,16 +7904,16 @@ 2362,Amon Ra (Nightmare)@NPC_BLOODDRAIN,idle,199,1,2000,0,5000,yes,target,always,,,,,,,29, 2362,Amon Ra (Nightmare)@NPC_CRITICALWOUND,attack,673,2,500,0,5000,yes,target,always,,,,,,,, 2362,Amon Ra (Nightmare)@NPC_DARKBLESSING,attack,203,1,5000,0,2000,no,target,always,,,,,,,, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,yes,self,casttargeted,,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,casttargeted,,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,yes,self,longrangeattacked,,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,longrangeattacked,,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,28,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,18,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,21,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,79,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,83,,,,,,9, -2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,yes,self,skillused,89,,,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,longrangeattacked,0,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,casttargeted,0,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,no,self,longrangeattacked,0,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,attack,209,5,5000,0,10000,no,self,casttargeted,0,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,18,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,89,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,21,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,28,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,79,2359,2357,,,,9, +2362,Amon Ra (Nightmare)@NPC_SUMMONMONSTER,idle,209,5,5000,0,10000,no,self,skillused,83,2359,2357,,,,9, 2362,Amon Ra (Nightmare)@WZ_FIREPILLAR,attack,80,10,5000,0,2000,yes,around2,always,,,,,,,, 2362,Amon Ra (Nightmare)@WZ_FIREPILLAR,idle,80,10,10000,0,2000,yes,around2,always,,,,,,,, 2362,Amon Ra (Nightmare)@WZ_FIREPILLAR,idle,80,10,10000,0,2000,yes,around2,always,,,,,,,, diff --git a/db/re/skill_require_db.txt b/db/re/skill_require_db.txt index 11b345e68..1e7cd23d2 100644 --- a/db/re/skill_require_db.txt +++ b/db/re/skill_require_db.txt @@ -616,7 +616,7 @@ //**** // NC Mechanic 2256,0,0,3:6:9:12:15,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_BOOSTKNUCKLE#Boost Knuckle# -2257,0,0,50,0,0,0,99,0,0,mado,0,1549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_PILEBUNKER#Pile Bunker# +2257,0,0,50,0,0,0,99,0,0,mado,0,1549:16030:16031:16032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_PILEBUNKER#Pile Bunker# 2258,0,0,2:4:6,0,0,0,99,0,0,mado,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_VULCANARM#Vulcan Arm# 2259,0,0,20,0,0,0,99,0,0,mado,0,2139,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_FLAMELAUNCHER#Flame Launcher# 2260,0,0,20,0,0,0,99,0,0,mado,0,6146,1,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_COLDSLOWER#Cold Slower# diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index fc74dcbce..ba9b3841a 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -30,7 +30,7 @@ 21,0x86, , 0, 2,1000,enemy, 0x018 //MG_THUNDERSTORM 25,0x85, , 1, 0, -1,all, 0x2003 //AL_PNEUMA 27,0x81,0x80, 0, 0, -1,all, 0x00E //AL_WARP - 47,0x86, , 0, 2:2:2:2:2:3:3:3:3:3,1000,enemy, 0x080 //AC_SHOWER + 47,0x86, , 0, 1:1:1:1:1:2:2:2:2:2,1000,enemy, 0x080 //AC_SHOWER 70,0x83, , -1, 1,1000,all, 0x018 //PR_SANCTUARY 79,0x84, , -1, 1,3000,enemy, 0x018 //PR_MAGNUS 80,0x87,0x88, 0, 1,2000,enemy, 0x006 //WZ_FIREPILLAR diff --git a/doc/sample/npc_dynamic_shop.txt b/doc/sample/npc_dynamic_shop.txt index 1e4ac77e4..9b1315ba7 100644 --- a/doc/sample/npc_dynamic_shop.txt +++ b/doc/sample/npc_dynamic_shop.txt @@ -9,7 +9,7 @@ //============================================================ // Dummy shop to insert items into: -- shop dyn_shop1 -1,501:50. +- shop dyn_shop1 FAKE_NPC,501:50. prontera,181,200,4 script Dynamic Shop 2_F_MAGICMASTER,{ callshop "dyn_shop1",0; diff --git a/doc/sample/npc_test_duplicate.txt b/doc/sample/npc_test_duplicate.txt index 55d64bc7b..4e07e38c4 100644 --- a/doc/sample/npc_test_duplicate.txt +++ b/doc/sample/npc_test_duplicate.txt @@ -12,7 +12,7 @@ //= 'OnInit' loads the main npc last, for some reason. (check with debugmes) //============================================================ -- script Test Script -1,1,1,{ +- script Test Script FAKE_NPC,1,1,{ mes "Hi."; mes "My coords are "+ .map$ +", "+ .x +"/" +.y ; close; diff --git a/doc/script_commands.txt b/doc/script_commands.txt index c6ee8fc76..cb7ded9df 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -249,7 +249,7 @@ OnTouch events with a 2,2 range and with an 'end' after the header to avoid bugs (for more info on why see npc_click@map/npc.c). It is possible to use a job sprite as well, but you must first define it as a monster sprite in 'mob_avail.txt', a full description on how to do this is not in the scope of this manual. -A '-1' sprite will make the NPC invisible (and unclickable). +A 'FAKE_NPC' sprite will make the NPC invisible (and unclickable). A 'HIDDEN_NPC' sprite will make an NPC which does not have a sprite, but is still clickable, which is useful if you want to make a clickable object of the 3D terrain. @@ -271,7 +271,7 @@ optional parameter. ** Define a 'floating' NPC object. --%TAB%script%TAB%<NPC Name>%TAB%-1,{<code>} +-%TAB%script%TAB%<NPC Name>%TAB%FAKE_NPC,{<code>} This will define an NPC object not triggerable by normal means. This would normally mean it's pointless since it can't do anything, but there are @@ -303,7 +303,7 @@ items here. The layout used to define sale items still count, and ** Define a trader NPC <map name>,<x>,<y>,<facing>%TAB%trader%TAB%<NPC Name>%TAB%<sprite>,{<code>} --%TAB%trader%TAB%<NPC Name>%TAB%-1,{<code>} +-%TAB%trader%TAB%<NPC Name>%TAB%FAKE_NPC,{<code>} All the standards that are valid to script objects are also valid for trader objects (see ** Define an NPC object for more information). @@ -1922,7 +1922,7 @@ Example: dothat; } - - script test -1,{ + - script test FAKE_NPC,{ .@try = is_function("try"); // 1 .@not = is_function("not"); // 0 } @@ -6694,7 +6694,7 @@ and source flags are ignored. *callshop "<name>",<option>; These are a series of commands used to create dynamic shops. -The callshop function calls an invisible shop (view -1) as if the player +The callshop function calls an invisible shop (FAKE_NPC) as if the player clicked on it. For the options on callShop: @@ -7464,7 +7464,7 @@ Usage example: When a user types the command "@test", an angel effect will be shown. -- script atcmd_example -1,{ +- script atcmd_example FAKE_NPC,{ OnInit: bindatcmd "test",strnpcinfo(3)+"::OnAtcommand"; end; @@ -7502,7 +7502,7 @@ Parameter splitting example: The called event label needs to take care of joining arguments together, in case it expects spaces. For example: -- script atcmd_example -1,{ +- script atcmd_example FAKE_NPC,{ OnInit: bindatcmd "test",strnpcinfo(3)+"::OnAtcommand"; end; @@ -7613,7 +7613,7 @@ configuration, it will eventually return to that cycle. Example: -- script DayNight -1,{ +- script DayNight FAKE_NPC,{ OnClock0600: day; end; @@ -7779,6 +7779,19 @@ Example: --------------------------------------- +*swap <variable>,<variable>; + +Swap the value of 2 variables. Both sides must be same integer or string type. + +Example: + .@var1 = 111; + .@var2 = 222; + swap .@var1, .@var2; + mes "var1 = "+ .@var1; // return 222 + mes "var2 = "+ .@var2; // return 111 + +--------------------------------------- + *query_sql("your MySQL query"{, <array variable>{, <array variable>{, ...}}}); *query_logsql("your MySQL query"{, <array variable>{, <array variable>{, ...}}}); diff --git a/doc/whisper_sys.txt b/doc/whisper_sys.txt index 39e2a54f2..ba7165b87 100644 --- a/doc/whisper_sys.txt +++ b/doc/whisper_sys.txt @@ -29,7 +29,7 @@ You whisper an NPC "NPCCommander" in-game with the following instructions: The parameters are passed on to the "OnWhisperGlobal" label of the NPC, and can be processed accordingly: -- script NPCCommander -1,{ +- script NPCCommander FAKE_NPC,{ OnWhisperGlobal: // Inform player "Lordalfa" that he has been reported for killstealing. if (@whispervar0$ == "Report") @@ -39,7 +39,7 @@ OnWhisperGlobal: This could also be used for hidden event triggers: -- script EventManager -1,{ +- script EventManager FAKE_NPC,{ OnWhisperGlobal: if (getgmlevel() < 80) end; if (@whispervar0$ == "pvp") { diff --git a/npc/MOTD.txt b/npc/MOTD.txt index d85c3c9ed..1e5912f4a 100644 --- a/npc/MOTD.txt +++ b/npc/MOTD.txt @@ -28,7 +28,7 @@ //========================================================================= // run when any character logs in, attached to them. -- script HerculesMOTD -1,{ +- script HerculesMOTD FAKE_NPC,{ message strcharinfo(0),"Welcome to Hercules! Enjoy! Please report any bugs you find."; end; } diff --git a/npc/airports/airships.txt b/npc/airports/airships.txt index 1535fef90..89e5cbae6 100644 --- a/npc/airports/airships.txt +++ b/npc/airports/airships.txt @@ -58,7 +58,7 @@ OnTouch: airplane,243,29,0 duplicate(#AirshipWarp-1) #AirshipWarp-2 WARPNPC,1,1 -airplane,1,1,0 script Domestic_Airship -1,{ +airplane,1,1,0 script Domestic_Airship FAKE_NPC,{ end; OnInit: initnpctimer; @@ -693,7 +693,7 @@ OnUnhide: airplane_01,243,29,0 duplicate(#AirshipWarp-3) #AirshipWarp-4 WARPNPC,1,1 -airplane_01,1,1,0 script International_Airship -1,{ +airplane_01,1,1,0 script International_Airship FAKE_NPC,{ end; OnInit: OnEnable: diff --git a/npc/airports/izlude.txt b/npc/airports/izlude.txt index 69abd9cd6..7f794de1f 100644 --- a/npc/airports/izlude.txt +++ b/npc/airports/izlude.txt @@ -31,7 +31,7 @@ //= Official Izlude Airport NPCs //========================================================================= -- script ::Airship_Staff_izlude -1,{ +- script ::Airship_Staff_izlude FAKE_NPC,{ mes "[Airship Staff]"; mes "Welcome! Would you like"; mes "to board the Airship that"; diff --git a/npc/battleground/flavius/flavius01.txt b/npc/battleground/flavius/flavius01.txt index 8b02b0469..44e084284 100644 --- a/npc/battleground/flavius/flavius01.txt +++ b/npc/battleground/flavius/flavius01.txt @@ -390,14 +390,14 @@ OnTouch: end; } -bat_b01,87,76,0 script A_CODE#bat_b01 -1,5,5,{ +bat_b01,87,76,0 script A_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; end; } -bat_b01,312,224,0 script B_CODE#bat_b01 -1,5,5,{ +bat_b01,312,224,0 script B_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; diff --git a/npc/battleground/flavius/flavius02.txt b/npc/battleground/flavius/flavius02.txt index 3d474cff5..f9e8247fe 100644 --- a/npc/battleground/flavius/flavius02.txt +++ b/npc/battleground/flavius/flavius02.txt @@ -390,14 +390,14 @@ OnTouch: end; } -bat_b02,87,76,0 script A_CODE#bat_b02 -1,5,5,{ +bat_b02,87,76,0 script A_CODE#bat_b02 FAKE_NPC,5,5,{ OnTouch: //if (!questprogress(2070)) // setquest 2070; end; } -bat_b02,312,224,0 script B_CODE#bat_b02 -1,5,5,{ +bat_b02,312,224,0 script B_CODE#bat_b02 FAKE_NPC,5,5,{ OnTouch: //if (!questprogress(2070)) // setquest 2070; diff --git a/npc/battleground/kvm/kvm01.txt b/npc/battleground/kvm/kvm01.txt index 08c92d7ba..0e737d0c0 100644 --- a/npc/battleground/kvm/kvm01.txt +++ b/npc/battleground/kvm/kvm01.txt @@ -64,7 +64,7 @@ OnEnterBG: bat_room,169,211,0 warp #kvm802 2,2,bat_room,154,150 //== Starting Line ========================================= -- script KVM01::CellEffect -1,{ +- script KVM01::CellEffect FAKE_NPC,{ end; OnKvM01One: @@ -135,7 +135,7 @@ OnTouch: } //== Battleground Engine =================================== -- script KvM01_BG -1,{ +- script KvM01_BG FAKE_NPC,{ end; OnInit: @@ -348,7 +348,7 @@ OnReset: end; } -- script KvM01_BG_Out -1,{ +- script KvM01_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/battleground/kvm/kvm02.txt b/npc/battleground/kvm/kvm02.txt index ccca49656..02f684a1d 100644 --- a/npc/battleground/kvm/kvm02.txt +++ b/npc/battleground/kvm/kvm02.txt @@ -65,7 +65,7 @@ OnEnterBG: bat_room,197,211,0 warp #kvm602 2,2,bat_room,154,150 //== Starting Line ========================================= -- script KVM02::CellEffect2 -1,{ +- script KVM02::CellEffect2 FAKE_NPC,{ end; OnKvM02One: @@ -136,7 +136,7 @@ OnTouch: } //== Battleground Engine =================================== -- script KvM02_BG -1,{ +- script KvM02_BG FAKE_NPC,{ end; OnInit: @@ -349,7 +349,7 @@ OnReset: end; } -- script KvM02_BG_Out -1,{ +- script KvM02_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/battleground/kvm/kvm03.txt b/npc/battleground/kvm/kvm03.txt index efbfb3984..d99f78a34 100644 --- a/npc/battleground/kvm/kvm03.txt +++ b/npc/battleground/kvm/kvm03.txt @@ -65,7 +65,7 @@ OnEnterBG: bat_room,225,211,0 warp #kvm702 2,2,bat_room,154,150 //== Starting Line ========================================= -- script KVM03::CellEffect3 -1,{ +- script KVM03::CellEffect3 FAKE_NPC,{ end; OnKvM03One: @@ -136,7 +136,7 @@ OnTouch: } //== Battleground Engine =================================== -- script KvM03_BG -1,{ +- script KvM03_BG FAKE_NPC,{ end; OnInit: @@ -349,7 +349,7 @@ OnReset: end; } -- script KvM03_BG_Out -1,{ +- script KvM03_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/battleground/tierra/tierra01.txt b/npc/battleground/tierra/tierra01.txt index 3391fffc0..ec35b5cc4 100644 --- a/npc/battleground/tierra/tierra01.txt +++ b/npc/battleground/tierra/tierra01.txt @@ -86,7 +86,7 @@ OnTimer1000: end; } -bat_a01,352,342,0 script #bat_a01_quest_a -1,5,5,{ +bat_a01,352,342,0 script #bat_a01_quest_a FAKE_NPC,5,5,{ end; OnTouch: @@ -95,7 +95,7 @@ OnTouch: end; } -bat_a01,353,52,0 script #bat_a01_quest_b -1,5,5,{ +bat_a01,353,52,0 script #bat_a01_quest_b FAKE_NPC,5,5,{ end; OnTouch: @@ -519,7 +519,7 @@ OnTimer26500: end; } -bat_a01,51,375,0 script bat_a01_rp1_a_warp -1,10,10,{ +bat_a01,51,375,0 script bat_a01_rp1_a_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a01_rp1_a_warp"; end; @@ -569,7 +569,7 @@ OnTimer26500: end; } -bat_a01,43,17,0 script bat_a01_rp1_b_warp -1,10,10,{ +bat_a01,43,17,0 script bat_a01_rp1_b_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a01_rp1_b_warp"; end; @@ -609,7 +609,7 @@ OnTimer26500: end; } -bat_a01,55,213,0 script bat_a01_rp1_n_warp -1,10,10,{ +bat_a01,55,213,0 script bat_a01_rp1_n_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a01_rp1_n_warp"; end; @@ -620,42 +620,42 @@ OnTouch: end; } -bat_a01,194,267,0 script barri_warp_up#bat_a01_a -1,7,0,{ +bat_a01,194,267,0 script barri_warp_up#bat_a01_a FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id1) warp "bat_a01",194,261; end; } -bat_a01,194,265,0 script barri_warp_down#bat_a01a -1,7,0,{ +bat_a01,194,265,0 script barri_warp_down#bat_a01a FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id1) warp "bat_a01",194,270; end; } -bat_a01,177,130,0 script barri_warp_up#bat_a01_b -1,7,0,{ +bat_a01,177,130,0 script barri_warp_up#bat_a01_b FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id2) warp "bat_a01",178,125; end; } -bat_a01,177,128,0 script barri_warp_down#bat_a01b -1,7,0,{ +bat_a01,177,128,0 script barri_warp_down#bat_a01b FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id2) warp "bat_a01",178,134; end; } -bat_a01,352,342,0 script A_CODE#bat_a01 -1,5,5,{ +bat_a01,352,342,0 script A_CODE#bat_a01 FAKE_NPC,5,5,{ OnTouch: if (questprogress(2069) == 1) setquest 2069; end; } -bat_a01,353,52,0 script B_CODE#bat_a01 -1,5,5,{ +bat_a01,353,52,0 script B_CODE#bat_a01 FAKE_NPC,5,5,{ OnTouch: if (questprogress(2069) == 1) setquest 2069; diff --git a/npc/battleground/tierra/tierra02.txt b/npc/battleground/tierra/tierra02.txt index f84f083d5..ef6b3b3ee 100644 --- a/npc/battleground/tierra/tierra02.txt +++ b/npc/battleground/tierra/tierra02.txt @@ -86,7 +86,7 @@ OnTimer1000: end; } -bat_a02,352,342,0 script #bat_a02_quest_a -1,5,5,{ +bat_a02,352,342,0 script #bat_a02_quest_a FAKE_NPC,5,5,{ end; OnTouch: @@ -95,7 +95,7 @@ OnTouch: end; } -bat_a02,353,52,0 script #bat_a02_quest_b -1,5,5,{ +bat_a02,353,52,0 script #bat_a02_quest_b FAKE_NPC,5,5,{ end; OnTouch: @@ -519,7 +519,7 @@ OnTimer26500: end; } -bat_a02,51,375,0 script bat_a02_rp1_a_warp -1,10,10,{ +bat_a02,51,375,0 script bat_a02_rp1_a_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a02_rp1_a_warp"; end; @@ -569,7 +569,7 @@ OnTimer26500: end; } -bat_a02,43,17,0 script bat_a02_rp1_b_warp -1,10,10,{ +bat_a02,43,17,0 script bat_a02_rp1_b_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a02_rp1_b_warp"; end; @@ -609,7 +609,7 @@ OnTimer26500: end; } -bat_a02,55,213,0 script bat_a02_rp1_n_warp -1,10,10,{ +bat_a02,55,213,0 script bat_a02_rp1_n_warp FAKE_NPC,10,10,{ OnInit: disablenpc "bat_a02_rp1_n_warp"; end; @@ -620,42 +620,42 @@ OnTouch: end; } -bat_a02,194,267,0 script barri_warp_up#bat_a02_a -1,7,0,{ +bat_a02,194,267,0 script barri_warp_up#bat_a02_a FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id1) warp "bat_a02",194,261; end; } -bat_a02,194,265,0 script barri_warp_down#bat_a02a -1,7,0,{ +bat_a02,194,265,0 script barri_warp_down#bat_a02a FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id1) warp "bat_a02",194,270; end; } -bat_a02,177,130,0 script barri_warp_up#bat_a02_b -1,7,0,{ +bat_a02,177,130,0 script barri_warp_up#bat_a02_b FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id2) warp "bat_a02",178,125; end; } -bat_a02,177,128,0 script barri_warp_down#bat_a02b -1,7,0,{ +bat_a02,177,128,0 script barri_warp_down#bat_a02b FAKE_NPC,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id2) warp "bat_a02",178,134; end; } -bat_a02,352,342,0 script A_CODE#bat_a02 -1,5,5,{ +bat_a02,352,342,0 script A_CODE#bat_a02 FAKE_NPC,5,5,{ OnTouch: if (questprogress(2069) == 1) setquest 2069; end; } -bat_a02,353,52,0 script B_CODE#bat_a02 -1,5,5,{ +bat_a02,353,52,0 script B_CODE#bat_a02 FAKE_NPC,5,5,{ OnTouch: if (questprogress(2069) == 1) setquest 2069; diff --git a/npc/cities/amatsu.txt b/npc/cities/amatsu.txt index 4d4ab6803..3939f28f6 100644 --- a/npc/cities/amatsu.txt +++ b/npc/cities/amatsu.txt @@ -47,7 +47,7 @@ //========================================================================= //= Amatsu Transportation ================================== -- script ::Sea_Captain_amatsu -1,{ +- script ::Sea_Captain_amatsu FAKE_NPC,{ mes "[Walter Moers]"; mes "Hey, there."; mes "Have you ever heard that there"; diff --git a/npc/cities/ayothaya.txt b/npc/cities/ayothaya.txt index e5caf8af3..618a71413 100644 --- a/npc/cities/ayothaya.txt +++ b/npc/cities/ayothaya.txt @@ -39,7 +39,7 @@ //========================================================================= //== Ayothaya Transportation =============================== -- script ::Aibakthing_ayothaya -1,{ +- script ::Aibakthing_ayothaya FAKE_NPC,{ mes "[Aibakthing]"; mes "Hoo! Hah! Hoo! Hah!"; mes "Let me take you away to"; diff --git a/npc/cities/gonryun.txt b/npc/cities/gonryun.txt index ddcea9935..81aebace9 100644 --- a/npc/cities/gonryun.txt +++ b/npc/cities/gonryun.txt @@ -40,7 +40,7 @@ //========================================================================= //== Kunlun Transportation ================================= -- script ::Kunlun_Envoy_gonryun -1,{ +- script ::Kunlun_Envoy_gonryun FAKE_NPC,{ mes "[Wa Bai Hu]"; mes "Good day~"; mes "Let me invite you all"; diff --git a/npc/cities/izlude.txt b/npc/cities/izlude.txt index 5db9d0988..777edaec1 100644 --- a/npc/cities/izlude.txt +++ b/npc/cities/izlude.txt @@ -42,7 +42,7 @@ //========================================================================= //== Izlude ================================================ -- script ::Sailor_izlude -1,{ +- script ::Sailor_izlude FAKE_NPC,{ mes "[Sailor]"; mes "Hey everybody!"; mes "Attention, attention!"; @@ -76,7 +76,7 @@ } } -- script ::Bonne_izlude -1,{ +- script ::Bonne_izlude FAKE_NPC,{ mes "[Bonne]"; mes "Greetings!"; mes "Izlude welcomes you."; @@ -100,7 +100,7 @@ close; } -- script ::Charfri_izlude -1,{ +- script ::Charfri_izlude FAKE_NPC,{ mes "[Charfri]"; switch(rand(2)) { case 1: @@ -131,7 +131,7 @@ } } -- script ::Cuskoal_izlude -1,{ +- script ::Cuskoal_izlude FAKE_NPC,{ mes "[Cuskoal]"; switch(rand(2)) { case 1: @@ -155,7 +155,7 @@ } } -- script ::Dega_izlude -1,{ +- script ::Dega_izlude FAKE_NPC,{ mes "[Dega]"; switch(rand(3)) { case 1: @@ -230,7 +230,7 @@ } } -- script ::Kylick_izlude -1,{ +- script ::Kylick_izlude FAKE_NPC,{ if (!RENEWAL && rand(2)) { mes "[Kylick]"; mes "I was thinking, even though the people of Izlude live so close to the ocean..."; @@ -262,7 +262,7 @@ } } -- script ::Red_izlude -1,{ +- script ::Red_izlude FAKE_NPC,{ mes "[Red]"; mes "The only skill that's needed for a Swordman is ^FF2400Bash^000000! Bash, Bash and ONLY ^FF2400Bash^000000! No need to waste time and effort for smaller skills! Everything else is for cowards and wusses!"; next; @@ -332,7 +332,7 @@ close; } -- script ::Cebalis_izlude -1,{ +- script ::Cebalis_izlude FAKE_NPC,{ mes "[Red]"; mes "The only skill that's needed for a Swordman is ^FF2400Bash^000000! Bash, Bash and ONLY ^FF2400Bash^000000! No need to waste time and effort on smaller skills~~ Everything else is for cowards and wusses!"; next; @@ -409,7 +409,7 @@ close; } -- script ::Soldier_izlude -1,{ +- script ::Soldier_izlude FAKE_NPC,{ mes "[Soldier]"; mes "HeHeHeHe..HaHaHaHa "; mes "Huh? Why am I so happy?"; diff --git a/npc/cities/jawaii.txt b/npc/cities/jawaii.txt index 2ac6b57b2..0c29442c6 100644 --- a/npc/cities/jawaii.txt +++ b/npc/cities/jawaii.txt @@ -692,7 +692,7 @@ OnSolo: end; } -jawaii_in,28,96,0 script jaw_em_order#Jawaii -1,3,3,{ +jawaii_in,28,96,0 script jaw_em_order#Jawaii FAKE_NPC,3,3,{ OnTouch: if (getpartnerid()) { donpcevent "Employee#jaw8::OnWelcome"; @@ -1399,7 +1399,7 @@ prt_in,170,14,0 script Customer#Bachewcca 4_M_ORIENT02,{ } //== Izlude ================================================ -- script ::Honeymoon_Helper_Izlude -1,{ +- script ::Honeymoon_Helper_Izlude FAKE_NPC,{ mes "[Helper]"; mes "Newlyweds and"; mes "long time couples..."; diff --git a/npc/cities/lighthalzen.txt b/npc/cities/lighthalzen.txt index e7dfb8351..f1e8996df 100644 --- a/npc/cities/lighthalzen.txt +++ b/npc/cities/lighthalzen.txt @@ -2998,7 +2998,7 @@ lhz_in01,139,48,7 script Leimi#mimir 1_F_MERCHANT_01,{ close; } -lhz_in01,138,47,0 script #mimir_camera -1,2,2,{ +lhz_in01,138,47,0 script #mimir_camera FAKE_NPC,2,2,{ OnTouch: if (BaseJob == Job_Assassin) { if (Sex) { diff --git a/npc/cities/louyang.txt b/npc/cities/louyang.txt index b0138e86f..c73c6c2df 100644 --- a/npc/cities/louyang.txt +++ b/npc/cities/louyang.txt @@ -46,7 +46,7 @@ //========================================================================= //== Louyang Transportation ================================ -- script ::Girl_louyang -1,{ +- script ::Girl_louyang FAKE_NPC,{ mes "[Girl]"; mes "La la la la~"; mes "I feel so good today~"; diff --git a/npc/cities/moscovia.txt b/npc/cities/moscovia.txt index 5531a48da..f8ff35f24 100644 --- a/npc/cities/moscovia.txt +++ b/npc/cities/moscovia.txt @@ -34,7 +34,7 @@ //========================================================================= //== Moscovia Transportation :: mosk_trans ================= -- script ::PR_Officer_moscovia -1,{ +- script ::PR_Officer_moscovia FAKE_NPC,{ mes "[Moscovia P.R. Officer]"; mes "Moscovia! Do you know Moscovia?"; mes "the paradise spreading on the endless seas..."; diff --git a/npc/cities/splendide.txt b/npc/cities/splendide.txt index 5c43f9dc5..cbd45c4c8 100644 --- a/npc/cities/splendide.txt +++ b/npc/cities/splendide.txt @@ -456,7 +456,7 @@ spl_in01,287,306,3 script #spl_prs HIDDEN_NPC,{ } } -spl_in01,265,315,0 script #spl_prs1 -1,5,5,{ +spl_in01,265,315,0 script #spl_prs1 FAKE_NPC,5,5,{ OnTouch: if ((isequipped(2782) == 1) && (ep13_2_rhea == 100)) { mes "[Voice from another side]"; diff --git a/npc/cities/umbala.txt b/npc/cities/umbala.txt index 8f0c39658..26c91b37e 100644 --- a/npc/cities/umbala.txt +++ b/npc/cities/umbala.txt @@ -1017,7 +1017,7 @@ um_in,158,71,3 script Utan villager#um 4_M_UMKID,{ close; } -umbala,140,197,1 script Bungee Jump -1,0,0,{ +umbala,140,197,1 script Bungee Jump FAKE_NPC,0,0,{ OnTouch: switch(rand(1,3)) { case 1: @@ -1037,7 +1037,7 @@ OnTouch: } } -umbala,136,195,0 script #jump -1,1,1,{ +umbala,136,195,0 script #jump FAKE_NPC,1,1,{ OnTouch: warp "umbala",145,166; end; diff --git a/npc/cities/yuno.txt b/npc/cities/yuno.txt index 59486c8c0..ccc8a91ae 100644 --- a/npc/cities/yuno.txt +++ b/npc/cities/yuno.txt @@ -253,7 +253,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ } } -- script ::JunoSoldier1 -1,{ +- script ::JunoSoldier1 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -268,7 +268,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier2 -1,{ +- script ::JunoSoldier2 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -284,7 +284,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier3 -1,{ +- script ::JunoSoldier3 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -296,7 +296,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier4 -1,{ +- script ::JunoSoldier4 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -311,7 +311,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier5 -1,{ +- script ::JunoSoldier5 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -327,7 +327,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier6 -1,{ +- script ::JunoSoldier6 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; @@ -339,7 +339,7 @@ yuno,157,205,4 script Juno Artisan#juno 1_M_JOBGUIDER,{ close; } -- script ::JunoSoldier7 -1,{ +- script ::JunoSoldier7 FAKE_NPC,{ mes "[Juno Soldier]"; mes "Welcome to Juno, the city of noble-mindedness."; next; diff --git a/npc/custom/battleground/bg_common.txt b/npc/custom/battleground/bg_common.txt index 54b13bb28..3ece8d512 100644 --- a/npc/custom/battleground/bg_common.txt +++ b/npc/custom/battleground/bg_common.txt @@ -1157,7 +1157,7 @@ bat_room,161,158,3 duplicate(bat_aid) General Guillaume's Aid::bat_aid4 4_M_KY_H // Exit from Registration // ********************************************************************* -- script warp2bat_room -1,{ +- script warp2bat_room FAKE_NPC,{ end; OnTouch: diff --git a/npc/custom/battleground/bg_flavius_01.txt b/npc/custom/battleground/bg_flavius_01.txt index 30693da21..33c662d93 100644 --- a/npc/custom/battleground/bg_flavius_01.txt +++ b/npc/custom/battleground/bg_flavius_01.txt @@ -28,7 +28,7 @@ OnEnterBG: // Battleground Engine // ********************************************************************* -- script Flavius_BG1 -1,{ +- script Flavius_BG1 FAKE_NPC,{ end; OnInit: diff --git a/npc/custom/battleground/bg_flavius_02.txt b/npc/custom/battleground/bg_flavius_02.txt index c735614c1..eef7cf308 100644 --- a/npc/custom/battleground/bg_flavius_02.txt +++ b/npc/custom/battleground/bg_flavius_02.txt @@ -28,7 +28,7 @@ OnEnterBG: // Battleground Engine // ********************************************************************* -- script Flavius_BG2 -1,{ +- script Flavius_BG2 FAKE_NPC,{ end; OnInit: diff --git a/npc/custom/battleground/bg_kvm01.txt b/npc/custom/battleground/bg_kvm01.txt index be826215e..a4bd65e43 100644 --- a/npc/custom/battleground/bg_kvm01.txt +++ b/npc/custom/battleground/bg_kvm01.txt @@ -49,7 +49,7 @@ bat_c01,145,60,0 duplicate(#bat_c01a) #bat_c01f HIDDEN_NPC // Battleground Engine // ********************************************************************* -- script KvM01_BG -1,{ +- script KvM01_BG FAKE_NPC,{ end; OnInit: @@ -258,7 +258,7 @@ OnReset: end; } -- script KvM01_BG_Out -1,{ +- script KvM01_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/custom/battleground/bg_kvm02.txt b/npc/custom/battleground/bg_kvm02.txt index 91e594a90..833a33747 100644 --- a/npc/custom/battleground/bg_kvm02.txt +++ b/npc/custom/battleground/bg_kvm02.txt @@ -49,7 +49,7 @@ bat_c02,145,60,0 duplicate(#bat_c02a) #bat_c02f HIDDEN_NPC // Battleground Engine // ********************************************************************* -- script KvM02_BG -1,{ +- script KvM02_BG FAKE_NPC,{ end; OnInit: @@ -258,7 +258,7 @@ OnReset: end; } -- script KvM02_BG_Out -1,{ +- script KvM02_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/custom/battleground/bg_kvm03.txt b/npc/custom/battleground/bg_kvm03.txt index 33edb0be7..9ca29deaf 100644 --- a/npc/custom/battleground/bg_kvm03.txt +++ b/npc/custom/battleground/bg_kvm03.txt @@ -49,7 +49,7 @@ bat_c03,145,60,0 duplicate(#bat_c03a) #bat_c03f HIDDEN_NPC // Battleground Engine // ********************************************************************* -- script KvM03_BG -1,{ +- script KvM03_BG FAKE_NPC,{ end; OnInit: @@ -258,7 +258,7 @@ OnReset: end; } -- script KvM03_BG_Out -1,{ +- script KvM03_BG_Out FAKE_NPC,{ end; OnBegin: diff --git a/npc/custom/battleground/bg_tierra_01.txt b/npc/custom/battleground/bg_tierra_01.txt index 797b3a389..05b48c63e 100644 --- a/npc/custom/battleground/bg_tierra_01.txt +++ b/npc/custom/battleground/bg_tierra_01.txt @@ -28,7 +28,7 @@ OnEnterBG: // Battleground Engine // ********************************************************************* -- script Tierra_BG1 -1,{ +- script Tierra_BG1 FAKE_NPC,{ end; OnInit: @@ -262,7 +262,7 @@ bat_a01,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat18 1_FLAG_LION // Barricades // ********************************************************************* -- script Guillaume_TV1B -1,{ +- script Guillaume_TV1B FAKE_NPC,{ end; OnBuild: @@ -288,7 +288,7 @@ OnWall: end; } -- script Croix_TV1B -1,{ +- script Croix_TV1B FAKE_NPC,{ end; OnBuild: diff --git a/npc/custom/battleground/bg_tierra_02.txt b/npc/custom/battleground/bg_tierra_02.txt index f18d60769..b3b6cff21 100644 --- a/npc/custom/battleground/bg_tierra_02.txt +++ b/npc/custom/battleground/bg_tierra_02.txt @@ -28,7 +28,7 @@ OnEnterBG: // Battleground Engine // ********************************************************************* -- script Tierra_BG2 -1,{ +- script Tierra_BG2 FAKE_NPC,{ end; OnInit: @@ -262,7 +262,7 @@ bat_a02,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat31 1_FLAG_LION // Barricades // ********************************************************************* -- script Guillaume_TV2B -1,{ +- script Guillaume_TV2B FAKE_NPC,{ end; OnBuild: @@ -288,7 +288,7 @@ OnWall: end; } -- script Croix_TV2B -1,{ +- script Croix_TV2B FAKE_NPC,{ end; OnBuild: diff --git a/npc/custom/bgqueue/flavius.txt b/npc/custom/bgqueue/flavius.txt index 01a4888df..8fac6a76b 100644 --- a/npc/custom/bgqueue/flavius.txt +++ b/npc/custom/bgqueue/flavius.txt @@ -422,14 +422,14 @@ OnTouch: end; } -bat_b01,87,76,0 script A_CODE#bat_b01 -1,5,5,{ +bat_b01,87,76,0 script A_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; end; } -bat_b01,312,224,0 script B_CODE#bat_b01 -1,5,5,{ +bat_b01,312,224,0 script B_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; diff --git a/npc/custom/etc/airplane.txt b/npc/custom/etc/airplane.txt index 544dbed61..138755f6b 100644 --- a/npc/custom/etc/airplane.txt +++ b/npc/custom/etc/airplane.txt @@ -13,7 +13,7 @@ //= 2.2 Added missing next;'s [Evera] //============================================================ -payon,153,43,5 script itinsetter -1,{ +payon,153,43,5 script itinsetter FAKE_NPC,{ //This is just OnInit stuff to set the hourly intinerary. OnInit: deletearray $locationsname$[0],500; diff --git a/npc/custom/etc/floating_rates.txt b/npc/custom/etc/floating_rates.txt index c207c6275..109a5217c 100644 --- a/npc/custom/etc/floating_rates.txt +++ b/npc/custom/etc/floating_rates.txt @@ -13,7 +13,7 @@ //= You can make incredible scripts with 'setbattleflag'! //============================================================ -- script FloatingRates -1,{ +- script FloatingRates FAKE_NPC,{ OnInit: //add any other HOURS OnHour00: diff --git a/npc/custom/etc/lottery.txt b/npc/custom/etc/lottery.txt index 9d4c4df38..13d60ec2f 100644 --- a/npc/custom/etc/lottery.txt +++ b/npc/custom/etc/lottery.txt @@ -15,7 +15,7 @@ //= 1.2.1a fix due to new script engine //============================================================ -- script lotterygenerator -1,{ +- script lotterygenerator FAKE_NPC,{ OnInit: set $L_TicketPrice,4750; // TICKET COST set $L_Prize_Money,5000000; // JACKPOT AMOUNT diff --git a/npc/custom/etc/marriage.txt b/npc/custom/etc/marriage.txt index ab1b48c30..1d6d21c2a 100644 --- a/npc/custom/etc/marriage.txt +++ b/npc/custom/etc/marriage.txt @@ -13,7 +13,7 @@ //============================================================ // Configuration Variables: -- script marriage_init -1,{ +- script marriage_init FAKE_NPC,{ OnInit: set $@wed_allow, 0; //If 1, allows same sex marriages. set $@wed_veil, 0; //Set to 0 to disable veil check on the bride diff --git a/npc/custom/etc/monster_arena.txt b/npc/custom/etc/monster_arena.txt index 9c00b67a5..3a25679aa 100644 --- a/npc/custom/etc/monster_arena.txt +++ b/npc/custom/etc/monster_arena.txt @@ -557,154 +557,154 @@ L_Heal: // Kill Trigger // // 6/Final. ---Change to Add Monsters--- // -gon_test,56,91,6 script OnPoringKilled -1,{ +gon_test,56,91,6 script OnPoringKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+1; announce "You killed a Poring - Gained 1 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnFaberKilled -1,{ +gon_test,56,91,6 script OnFaberKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+2; announce "You killed a Faber - Gained 2 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnLunaticKilled -1,{ +gon_test,56,91,6 script OnLunaticKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+4; announce "You killed a Lunatic - Gained 4 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnDropsKilled -1,{ +gon_test,56,91,6 script OnDropsKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+4; announce "You killed a Drops - Gained 4 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnPickyKilled -1,{ +gon_test,56,91,6 script OnPickyKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+4; announce "You killed a Picky - Gained 4 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnChonChonKilled -1,{ +gon_test,56,91,6 script OnChonChonKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+8; announce "You killed a ChonChon - Gained 8 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnSPickyKilled -1,{ +gon_test,56,91,6 script OnSPickyKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+8; announce "You killed a Super Picky - Gained 8 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnWillowKilled -1,{ +gon_test,56,91,6 script OnWillowKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+8; announce "You killed a Willow - Gained 8 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnRodaKilled -1,{ +gon_test,56,91,6 script OnRodaKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+16; announce "You killed a Roda Frog - Gained 16 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnCondorKilled -1,{ +gon_test,56,91,6 script OnCondorKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+16; announce "You killed a Condor - Gained 16 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnThiefKilled -1,{ +gon_test,56,91,6 script OnThiefKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+32; announce "You killed a Theif Bug Larva - Gained 32 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnSavageKilled -1,{ +gon_test,56,91,6 script OnSavageKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+64; announce "You killed a Savage Babe - Gained 64 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnFamiliarKilled -1,{ +gon_test,56,91,6 script OnFamiliarKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+128; announce "You killed a Familiar - Gained 128 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnHornetKilled -1,{ +gon_test,56,91,6 script OnHornetKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+128; announce "You killed a Hornet - Gained 128 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnPuppyKilled -1,{ +gon_test,56,91,6 script OnPuppyKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+256; announce "You killed a Desert Wolf Puppy - Gained 256 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnRockerKilled -1,{ +gon_test,56,91,6 script OnRockerKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+256; announce "You killed a Rocker - Gained 256 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnSporeKilled -1,{ +gon_test,56,91,6 script OnSporeKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+256; announce "You killed a Spore - Gained 256 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnSkeletonKilled -1,{ +gon_test,56,91,6 script OnSkeletonKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+512; announce "You killed a Skeleton - Gained 512 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnPlanktonKilled -1,{ +gon_test,56,91,6 script OnPlanktonKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+512; announce "You killed a Plankton - Gained 512 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnAntonioKilled -1,{ +gon_test,56,91,6 script OnAntonioKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+512; announce "You killed an Antonio - Gained 512 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnThiefFemaleKilled -1,{ +gon_test,56,91,6 script OnThiefFemaleKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+512; announce "You killed a Thief Bug Female - Gained 512 exp",19; callfunc "duelkill"; } -gon_test,56,91,6 script OnSpecialKilled -1,{ +gon_test,56,91,6 script OnSpecialKilled FAKE_NPC,{ if (@marena == 0) callfunc "illegalkill"; set #monpoints,#monpoints+512; announce "You killed a Special Monster - Gained 1024 exp",19; diff --git a/npc/custom/etc/quest_warper.txt b/npc/custom/etc/quest_warper.txt index fd6865a54..c00559c8f 100644 --- a/npc/custom/etc/quest_warper.txt +++ b/npc/custom/etc/quest_warper.txt @@ -1608,7 +1608,7 @@ binget: } //============================Warpras============================== -- script Warpra#0 -1,{ callfunc "Q_Warpra",1; } +- script Warpra#0 FAKE_NPC,{ callfunc "Q_Warpra",1; } alb2trea,73,101,4 duplicate(Warpra#0) Warpra#1 4_F_KAFRA5 ama_fild01,178,325,1 duplicate(Warpra#0) Warpra#2 4_F_KAFRA5 gef_fild10,71,339,4 duplicate(Warpra#0) Warpra#3 4_F_KAFRA5 diff --git a/npc/custom/etc/stock_market.txt b/npc/custom/etc/stock_market.txt index 078ce5137..1d480d770 100644 --- a/npc/custom/etc/stock_market.txt +++ b/npc/custom/etc/stock_market.txt @@ -15,7 +15,7 @@ //= so use it on your own risk //============================================================ -- script sharenames -1,{ +- script sharenames FAKE_NPC,{ end; OnInit: // Sets the names of the shares // diff --git a/npc/custom/events/uneasy_cemetery.txt b/npc/custom/events/uneasy_cemetery.txt index b996dc4d7..6b1351eb4 100644 --- a/npc/custom/events/uneasy_cemetery.txt +++ b/npc/custom/events/uneasy_cemetery.txt @@ -17,7 +17,7 @@ //= 1.2a Changed item names to item IDs. [Samuray22] //============================================================ -prontera,3,3,3 script Uneasy_Check -1,{ +prontera,3,3,3 script Uneasy_Check FAKE_NPC,{ end; OnHour00: diff --git a/npc/custom/healer.txt b/npc/custom/healer.txt index 530f5301f..b05a24487 100644 --- a/npc/custom/healer.txt +++ b/npc/custom/healer.txt @@ -12,7 +12,7 @@ //= 1.2 Fix variables and character stuck at healing //============================================================ -- script Healer -1,{ +- script Healer FAKE_NPC,{ .@price = 0; // Zeny required for heal .@Buffs = 0; // Also buff players? (1: yes / 0: no) diff --git a/npc/custom/quests/bandit_beard.txt b/npc/custom/quests/bandit_beard.txt index dc2d837fb..fa02843e3 100644 --- a/npc/custom/quests/bandit_beard.txt +++ b/npc/custom/quests/bandit_beard.txt @@ -207,7 +207,7 @@ M_NO: } //mobsummons ------- -alberta,1,1,1 script BRDQ_MOBS -1,{ +alberta,1,1,1 script BRDQ_MOBS FAKE_NPC,{ OnStart: set $@beardmob,10; set $@beardMobD,0; diff --git a/npc/custom/quests/event_6_new_hats.txt b/npc/custom/quests/event_6_new_hats.txt index b72d895df..d53427f14 100644 --- a/npc/custom/quests/event_6_new_hats.txt +++ b/npc/custom/quests/event_6_new_hats.txt @@ -324,7 +324,7 @@ L3: //these scripts make our brothers to appear and disappear in order -- script EDZac -1,{ +- script EDZac FAKE_NPC,{ OnInit: OnMinute15: disablenpc "Zac"; @@ -335,7 +335,7 @@ OnMinute01: end; } -- script EDJac -1,{ +- script EDJac FAKE_NPC,{ OnInit: OnMinute30: disablenpc "Jac"; @@ -346,7 +346,7 @@ OnMinute16: end; } -- script EDPac -1,{ +- script EDPac FAKE_NPC,{ OnInit: OnMinute45: disablenpc "Pac"; @@ -357,7 +357,7 @@ OnMinute31: end; } -- script EDBlac -1,{ +- script EDBlac FAKE_NPC,{ OnInit: OnMinute00: disablenpc "Blac"; diff --git a/npc/custom/quests/hunting_missions.txt b/npc/custom/quests/hunting_missions.txt index 2b6057a51..372c6bffe 100644 --- a/npc/custom/quests/hunting_missions.txt +++ b/npc/custom/quests/hunting_missions.txt @@ -317,4 +317,4 @@ OnInit: npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1]; end; } -- shop mission_shop -1,512:-1 +- shop mission_shop FAKE_NPC,512:-1 diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt index fb5b7993d..2d1ab33a4 100644 --- a/npc/custom/quests/quest_shop.txt +++ b/npc/custom/quests/quest_shop.txt @@ -26,7 +26,7 @@ prontera,164,203,6 script Quest Shop#1 4_M_MOCASS2,{ callfunc "qshop"; } // Script Core //============================================================ -- script quest_shop -1,{ +- script quest_shop FAKE_NPC,{ function Add; function Chk; function Slot; function A_An; OnInit: freeloop(1); @@ -223,8 +223,8 @@ function script qshop { // Dummy shop data -- copy as needed. //============================================================ -- shop qshop1 -1,909:-1 -- shop qshop2 -1,909:-1 -- shop qshop3 -1,909:-1 -- shop qshop4 -1,909:-1 -- shop qshop5 -1,909:-1 +- shop qshop1 FAKE_NPC,909:-1 +- shop qshop2 FAKE_NPC,909:-1 +- shop qshop3 FAKE_NPC,909:-1 +- shop qshop4 FAKE_NPC,909:-1 +- shop qshop5 FAKE_NPC,909:-1 diff --git a/npc/custom/quests/thq/THQS_TTShop.txt b/npc/custom/quests/thq/THQS_TTShop.txt index c92c375ec..9883950a1 100644 --- a/npc/custom/quests/thq/THQS_TTShop.txt +++ b/npc/custom/quests/thq/THQS_TTShop.txt @@ -19,7 +19,7 @@ prt_in,159,172,0 warp thqwrp 3,3,yuno_in01,123,155 // Main configuration object -- script THQS#Configuration -1,{ +- script THQS#Configuration FAKE_NPC,{ OnInit: // Axes setarray $THQS_menu_weapons_1[0], Sabbath, Slaughter, Tomahawk, Great_Axe, Guillotine; diff --git a/npc/custom/warper.txt b/npc/custom/warper.txt index 0f28ef40b..d240a2730 100644 --- a/npc/custom/warper.txt +++ b/npc/custom/warper.txt @@ -18,7 +18,7 @@ //= 1.4b Added Wolfchev's Laboratory warp. //============================================================ -- script Warper -1,{ +- script Warper FAKE_NPC,{ function Go; function Disp; function Pick; function Restrict; // -------------------------------------------------- diff --git a/npc/custom/woe_controller.txt b/npc/custom/woe_controller.txt index 9e35d1ef7..fee4dfac5 100644 --- a/npc/custom/woe_controller.txt +++ b/npc/custom/woe_controller.txt @@ -30,7 +30,7 @@ OnAgitStart: // Script Core //============================================================ -- script WOE_CONTROL -1,{ +- script WOE_CONTROL FAKE_NPC,{ function Disp_Owner; function Add_Zero; OnInit: diff --git a/npc/dev/ci_test.txt b/npc/dev/ci_test.txt index 92db23acc..c55c87e5b 100644 --- a/npc/dev/ci_test.txt +++ b/npc/dev/ci_test.txt @@ -37,7 +37,7 @@ //= Usage: ./map-server --load-plugin script_mapquit --load-script npc/dev/test.txt --load-script npc/dev/ci_test.txt //========================================================================= -- script HerculesSelfTestCI -1,{ +- script HerculesSelfTestCI FAKE_NPC,{ end; OnInit: diff --git a/npc/dev/test.txt b/npc/dev/test.txt index 0f74067ac..72cf86616 100644 --- a/npc/dev/test.txt +++ b/npc/dev/test.txt @@ -111,7 +111,7 @@ function script F_TestVarOfAnotherNPC { return getvariableofnpc(.x, getarg(0)); } -- script TestVarOfAnotherNPC -1,{ +- script TestVarOfAnotherNPC FAKE_NPC,{ // Used to test getvariableofnpc() end; } @@ -787,7 +787,7 @@ OnSetReference: return getarg(0); } -- script HerculesSelfTest -1,{ +- script HerculesSelfTest FAKE_NPC,{ end; OnInit: diff --git a/npc/events/StPatrick_2008.txt b/npc/events/StPatrick_2008.txt index 9039d0f66..9b4123345 100644 --- a/npc/events/StPatrick_2008.txt +++ b/npc/events/StPatrick_2008.txt @@ -215,7 +215,7 @@ prt_fild05,170,286,4 script Anxious Leprechaun#8pday 4_M_PATRICK,{ } } -mjolnir_01,272,363,4 script Rocks#08StPattysDay -1,1,1,{ +mjolnir_01,272,363,4 script Rocks#08StPattysDay FAKE_NPC,1,1,{ end; OnTouch: diff --git a/npc/events/gdevent_aru.txt b/npc/events/gdevent_aru.txt index b917a414b..be12e50f8 100644 --- a/npc/events/gdevent_aru.txt +++ b/npc/events/gdevent_aru.txt @@ -1326,7 +1326,7 @@ OnBingo: end; } -arug_que01,100,80,0 script removepp_aru_gd -1,5,5,{ +arug_que01,100,80,0 script removepp_aru_gd FAKE_NPC,5,5,{ end; OnInit: diff --git a/npc/events/gdevent_sch.txt b/npc/events/gdevent_sch.txt index 871126098..e1901fe07 100644 --- a/npc/events/gdevent_sch.txt +++ b/npc/events/gdevent_sch.txt @@ -1323,7 +1323,7 @@ OnBingo: end; } -schg_que01,100,80,0 script removepp_sch_gd -1,5,5,{ +schg_que01,100,80,0 script removepp_sch_gd FAKE_NPC,5,5,{ end; OnInit: diff --git a/npc/events/halloween_2006.txt b/npc/events/halloween_2006.txt index 970170f5c..f6ed03906 100644 --- a/npc/events/halloween_2006.txt +++ b/npc/events/halloween_2006.txt @@ -661,7 +661,7 @@ nif_fild01,167,113,3 script Masta's chicken#06_hw01 4_NFCOCK,{ close; } -- script HwChicken::HwChicken -1,{ +- script HwChicken::HwChicken FAKE_NPC,{ if ((halloween == 102) || (halloween == 103)) { mes "Oh, this must be Chicken Masta's chicken."; mes "I should insert the magic word."; @@ -690,7 +690,7 @@ nif_fild01,167,113,3 script Masta's chicken#06_hw01 4_NFCOCK,{ } } -- script HwChicken2::HwChicken2 -1,{ +- script HwChicken2::HwChicken2 FAKE_NPC,{ @egg_temp = rand(1,4); if( @egg_temp == 3) { mes "As soon as you got close to the chicken and touched it, it disappeared completely."; @@ -706,7 +706,7 @@ nif_fild01,167,113,3 script Masta's chicken#06_hw01 4_NFCOCK,{ } } -- script HwChicken3::HwChicken3 -1,{ +- script HwChicken3::HwChicken3 FAKE_NPC,{ @egg_temp = rand(1,4); if( @egg_temp == 3) { mes "As soon as you got close to the chicken and touched it, it disappeared completely."; @@ -739,7 +739,7 @@ nif_fild01,185,325,8 duplicate(HwChicken) Masta's chicken#06_hw07 4_NFCOCK nif_fild01,133,105,1 duplicate(HwChicken) Masta's chicken#06_hw08 4_NFCOCK nif_fild01,331,329,2 duplicate(HwChicken) Masta's chicken#06_hw09 4_NFCOCK -pay_dun03,1,1,0 script #06_hw_timer01 -1,{ +pay_dun03,1,1,0 script #06_hw_timer01 FAKE_NPC,{ OnInit: disablenpc "Chicken#06_hw_p01"; disablenpc "Chicken#06_hw_p02"; @@ -920,7 +920,7 @@ pay_dun03,157,131,3 duplicate(HwChicken2) Chicken#06_hw_p40 4_NFCOCK pay_dun03,158,131,3 duplicate(HwChicken3) Chicken#06_hw_p41 4_NFCOCK //== Payon Field chickens ================================== -pay_fild08,1,1,0 script #06_hw_timer02 -1,{ +pay_fild08,1,1,0 script #06_hw_timer02 FAKE_NPC,{ OnInit: disablenpc "Chicken#06_hw_pf01"; disablenpc "Chicken#06_hw_pf02"; diff --git a/npc/events/nguild/nguild_ev_agit.txt b/npc/events/nguild/nguild_ev_agit.txt index c94fbc7ea..cbf6aec3c 100644 --- a/npc/events/nguild/nguild_ev_agit.txt +++ b/npc/events/nguild/nguild_ev_agit.txt @@ -113,7 +113,7 @@ function script F_AgitEnd { } //== Castle 1 ============================================== -nguild_alde,0,0,0 script Agit_N01 -1,{ +nguild_alde,0,0,0 script Agit_N01 FAKE_NPC,{ OnInterIfInitOnce: donpcevent "::OnRecvCastleN01"; end; @@ -140,7 +140,7 @@ OnAgitEnd: } //== Castle 2 ============================================== -nguild_gef,0,0,0 script Agit_N02 -1,{ +nguild_gef,0,0,0 script Agit_N02 FAKE_NPC,{ OnInterIfInitOnce: donpcevent "::OnRecvCastleN02"; end; @@ -167,7 +167,7 @@ OnAgitEnd: } //== Castle 3 ============================================== -nguild_pay,0,0,0 script Agit_N03 -1,{ +nguild_pay,0,0,0 script Agit_N03 FAKE_NPC,{ OnInterIfInitOnce: donpcevent "::OnRecvCastleN03"; end; @@ -194,7 +194,7 @@ OnAgitEnd: } //== Castle 4 ============================================== -nguild_prt,0,0,0 script Agit_N04 -1,{ +nguild_prt,0,0,0 script Agit_N04 FAKE_NPC,{ OnInterIfInitOnce: donpcevent "::OnRecvCastleN04"; end; @@ -221,7 +221,7 @@ OnAgitEnd: } //== Treasure Spawn Time =================================== -- script TreasSpawn -1,{ +- script TreasSpawn FAKE_NPC,{ end; OnClock0005: diff --git a/npc/events/nguild/nguild_guardians.txt b/npc/events/nguild/nguild_guardians.txt index e5b8bc959..2598776f3 100644 --- a/npc/events/nguild/nguild_guardians.txt +++ b/npc/events/nguild/nguild_guardians.txt @@ -33,7 +33,7 @@ //= 1.0 //========================================================================= -nguild_alde,216,24,0 script Guardian_N01 -1,{ +nguild_alde,216,24,0 script Guardian_N01 FAKE_NPC,{ OnAgitInit: if (getcastledata("nguild_alde",10) == 1) guardian "nguild_alde",18,219,"Soldier Guardian",1287,"Guardian_N01::OnGuardianDied",0; if (getcastledata("nguild_alde",11) == 1) guardian "nguild_alde",117,42,"Soldier Guardian",1287,"Guardian_N01::OnGuardianDied",1; @@ -51,7 +51,7 @@ OnGuardianDied: end; } -nguild_gef,198,182,0 script Guardian_N02 -1,{ +nguild_gef,198,182,0 script Guardian_N02 FAKE_NPC,{ OnAgitInit: if (getcastledata("nguild_gef",10) == 1) guardian "nguild_gef",30,178,"Soldier Guardian",1287,"Guardian_N02::OnGuardianDied",0; if (getcastledata("nguild_gef",11) == 1) guardian "nguild_gef",64,180,"Soldier Guardian",1287,"Guardian_N02::OnGuardianDied",1; @@ -69,7 +69,7 @@ OnGuardianDied: end; } -nguild_pay,139,139,0 script Guardian_N03 -1,{ +nguild_pay,139,139,0 script Guardian_N03 FAKE_NPC,{ OnAgitInit: if (getcastledata("nguild_pay",10) == 1) guardian "nguild_pay",210,120,"Soldier Guardian",1287,"Guardian_N03::OnGuardianDied",0; if (getcastledata("nguild_pay",11) == 1) guardian "nguild_pay",69,26,"Soldier Guardian",1287,"Guardian_N03::OnGuardianDied",1; @@ -87,7 +87,7 @@ OnGuardianDied: end; } -nguild_prt,197,197,0 script Guardian_N04 -1,{ +nguild_prt,197,197,0 script Guardian_N04 FAKE_NPC,{ OnAgitInit: if (getcastledata("nguild_prt",10) == 1) guardian "nguild_prt",196,92,"Soldier Guardian",1287,"Guardian_N04::OnGuardianDied",0; if (getcastledata("nguild_prt",11) == 1) guardian "nguild_prt",113,200,"Soldier Guardian",1287,"Guardian_N04::OnGuardianDied",1; diff --git a/npc/events/nguild/nguild_treas.txt b/npc/events/nguild/nguild_treas.txt index c2ca26451..92cbe585a 100644 --- a/npc/events/nguild/nguild_treas.txt +++ b/npc/events/nguild/nguild_treas.txt @@ -82,7 +82,7 @@ function script F_GldTreasSw { //== Castle 1 ============================================== //- Treasure Spawn - -nguild_alde,1,1,1 script Treasure_N01 -1,{ +nguild_alde,1,1,1 script Treasure_N01 FAKE_NPC,{ OnRecvCastleN01: end; @@ -108,7 +108,7 @@ nguild_alde,123,223,0 script Switch#TresN01 HIDDEN_NPC,{ //== Castle 2 ============================================== //- Treasure Spawn - -nguild_gef,1,1,1 script Treasure_N02 -1,{ +nguild_gef,1,1,1 script Treasure_N02 FAKE_NPC,{ OnRecvCastleN02: end; @@ -134,7 +134,7 @@ nguild_gef,152,117,0 script Switch#TresN02 HIDDEN_NPC,{ //== Castle 3 ============================================== //- Treasure Spawn - -nguild_pay,1,1,0 script Treasure_N03 -1,{ +nguild_pay,1,1,0 script Treasure_N03 FAKE_NPC,{ OnRecvCastleN03: end; OnInit: @@ -159,7 +159,7 @@ nguild_pay,295,8,0 script Switch#TresN03 HIDDEN_NPC,{ //== Castle 4 ============================================== //- Treasure Spawn - -nguild_prt,1,1,0 script Treasure_N04 -1,{ +nguild_prt,1,1,0 script Treasure_N04 FAKE_NPC,{ OnRecvCastleN04: end; OnInit: diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt index a1d9de802..87f9c7bf0 100644 --- a/npc/instances/NydhoggsNest.txt +++ b/npc/instances/NydhoggsNest.txt @@ -1073,7 +1073,7 @@ spl_in01,104,56,3 script Aide Arioss#edq 4_F_FAIRYKID2,3,3,{ } } -spl_in01,110,21,0 script trap#s_edq -1,10,10,{ +spl_in01,110,21,0 script trap#s_edq FAKE_NPC,10,10,{ OnTouch_: if ((isequipped(2782) == 1) && (ins_nyd == 51)) { mes "[Splendide Guard]"; @@ -1515,7 +1515,7 @@ man_in01,291,62,3 script Laphine Prisoner#edq 4_F_FAIRYKID2,3,3,{ } } -man_in01,282,42,0 script trap#edq2 -1,10,10,{ +man_in01,282,42,0 script trap#edq2 FAKE_NPC,10,10,{ OnTouch_: if ((isequipped(2782) == 1) && (ins_nyd == 52)) { mes "[Manuk Field Elite Soldier]"; @@ -1683,7 +1683,7 @@ OnInstanceInit: // Temporary fix for @reloadscript. end; } -1@nyd,1,1,0 script nyd_call_mon_1 -1,{ +1@nyd,1,1,0 script nyd_call_mon_1 FAKE_NPC,{ OnInstanceInit: enablenpc instance_npcname("nyd_call_mon_1"); end; @@ -1722,7 +1722,7 @@ OnMyMobDead: end; } -1@nyd,1,2,0 script ins_nyd_1f_timer -1,{ +1@nyd,1,2,0 script ins_nyd_1f_timer FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("ins_nyd_1f_timer"); end; @@ -1782,7 +1782,7 @@ OnTouch: end; } -1@nyd,1,1,0 script ins_nyd1_spawn_mobs -1,{ +1@nyd,1,1,0 script ins_nyd1_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("1@nyd"); monster .@map$,0,0,"Ancient Tree",2019,40,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyTreeDead"; @@ -1814,14 +1814,14 @@ OnMyPingDead: } //== Second Floor ========================================== -2@nyd,200,14,0 script nyd_2f_enter -1,6,6,{ +2@nyd,200,14,0 script nyd_2f_enter FAKE_NPC,6,6,{ OnTouch_: donpcevent instance_npcname("nyd_2f_enter_broad")+"::OnEnable"; disablenpc instance_npcname("nyd_2f_enter"); end; } -2@nyd,1,1,0 script nyd_2f_enter_broad -1,{ +2@nyd,1,1,0 script nyd_2f_enter_broad FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("nyd_2f_enter_broad"); @@ -1847,7 +1847,7 @@ OnTimer18000: end; } -2@nyd,199,178,0 script nyd_2f_ddr_control -1,6,6,{ +2@nyd,199,178,0 script nyd_2f_ddr_control FAKE_NPC,6,6,{ OnTouch: specialeffect2 EF_HOLYHIT; mes "From below the gorgeous stones, a strange breeze is forming."; @@ -1858,7 +1858,7 @@ OnTouch: end; } -2@nyd,199,268,0 script nyd_2f_boss_enter -1,8,8,{ +2@nyd,199,268,0 script nyd_2f_boss_enter FAKE_NPC,8,8,{ OnTouch_: if (getcharid(0) == getpartyleader(getcharid(1),2)) { donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnEnable"; @@ -1868,7 +1868,7 @@ OnTouch_: end; } -2@nyd,2,2,0 script nyd_2f_boss_enter_call -1,{ +2@nyd,2,2,0 script nyd_2f_boss_enter_call FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("nyd_2f_boss_enter_call"); end; @@ -1944,7 +1944,7 @@ OnMyMobDead: end; } -2@nyd,2,4,0 script nyd_2f_boss_enter_logic -1,{ +2@nyd,2,4,0 script nyd_2f_boss_enter_logic FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("nyd_2f_boss_enter_logic"); end; @@ -2011,7 +2011,7 @@ OnEnable: end; } -2@nyd,115,278,0 script nyd_2f_red -1,5,5,{ +2@nyd,115,278,0 script nyd_2f_red FAKE_NPC,5,5,{ OnInstanceInit: disablenpc instance_npcname(strnpcinfo(0)); end; @@ -2056,7 +2056,7 @@ OnTimer10000: end; } -2@nyd,6,6,0 script nyd_2f_red_c -1,{ +2@nyd,6,6,0 script nyd_2f_red_c FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname(strnpcinfo(0)); end; @@ -2124,7 +2124,7 @@ OnTimer180000: end; } -2@nyd,130,298,0 script nyd_2f_red_warp1 -1,6,6,{ +2@nyd,130,298,0 script nyd_2f_red_warp1 FAKE_NPC,6,6,{ OnInstanceInit: OnDisable: disablenpc instance_npcname(strnpcinfo(0)); @@ -2145,28 +2145,28 @@ OnTouch: warp instance_mapname("2@nyd"),284,374; end; } -2@nyd,142,296,0 duplicate(nyd_2f_red_warp1) nyd_2f_red_warp2 -1,6,6 -2@nyd,145,283,0 duplicate(nyd_2f_red_warp1) nyd_2f_red_warp3 -1,6,6 - -2@nyd,115,373,0 duplicate(nyd_2f_red) nyd_2f_white -1,5,5 -2@nyd,6,7,0 duplicate(nyd_2f_red_c) nyd_2f_white_c -1 -2@nyd,127,354,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp1 -1,6,6, -2@nyd,140,357,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp2 -1,6,6 -2@nyd,145,367,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp3 -1,6,6 - -2@nyd,284,278,0 duplicate(nyd_2f_red) nyd_2f_yellow -1,5,5 -2@nyd,6,8,0 duplicate(nyd_2f_red_c) nyd_2f_yellow_c -1 -2@nyd,255,285,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp1 -1,6,6 -2@nyd,257,296,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp2 -1,6,6 -2@nyd,268,300,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp3 -1,6,6 - -2@nyd,284,374,0 duplicate(nyd_2f_red) nyd_2f_green -1,5,5 -2@nyd,6,9,0 duplicate(nyd_2f_red_c) nyd_2f_green_c -1 -2@nyd,274,356,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp1 -1,6,6 -2@nyd,260,356,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp2 -1,6,6 -2@nyd,258,368,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp3 -1,6,6 - -2@nyd,1,1,0 script ins_nyd2_spawn_mobs -1,{ +2@nyd,142,296,0 duplicate(nyd_2f_red_warp1) nyd_2f_red_warp2 FAKE_NPC,6,6 +2@nyd,145,283,0 duplicate(nyd_2f_red_warp1) nyd_2f_red_warp3 FAKE_NPC,6,6 + +2@nyd,115,373,0 duplicate(nyd_2f_red) nyd_2f_white FAKE_NPC,5,5 +2@nyd,6,7,0 duplicate(nyd_2f_red_c) nyd_2f_white_c FAKE_NPC +2@nyd,127,354,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp1 FAKE_NPC,6,6 +2@nyd,140,357,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp2 FAKE_NPC,6,6 +2@nyd,145,367,0 duplicate(nyd_2f_red_warp1) nyd_2f_white_warp3 FAKE_NPC,6,6 + +2@nyd,284,278,0 duplicate(nyd_2f_red) nyd_2f_yellow FAKE_NPC,5,5 +2@nyd,6,8,0 duplicate(nyd_2f_red_c) nyd_2f_yellow_c FAKE_NPC +2@nyd,255,285,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp1 FAKE_NPC,6,6 +2@nyd,257,296,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp2 FAKE_NPC,6,6 +2@nyd,268,300,0 duplicate(nyd_2f_red_warp1) nyd_2f_yellow_warp3 FAKE_NPC,6,6 + +2@nyd,284,374,0 duplicate(nyd_2f_red) nyd_2f_green FAKE_NPC,5,5 +2@nyd,6,9,0 duplicate(nyd_2f_red_c) nyd_2f_green_c FAKE_NPC +2@nyd,274,356,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp1 FAKE_NPC,6,6 +2@nyd,260,356,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp2 FAKE_NPC,6,6 +2@nyd,258,368,0 duplicate(nyd_2f_red_warp1) nyd_2f_green_warp3 FAKE_NPC,6,6 + +2@nyd,1,1,0 script ins_nyd2_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("2@nyd"); areamonster .@map$,200,92,180,80,"Rhyncho",2020,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead"; diff --git a/npc/instances/OrcsMemory.txt b/npc/instances/OrcsMemory.txt index 41c0d5e5d..cbf7d1a56 100644 --- a/npc/instances/OrcsMemory.txt +++ b/npc/instances/OrcsMemory.txt @@ -499,7 +499,7 @@ OnTouch: end; } -1@orcs,1,1,0 script B1 Area Mobs -1,{ +1@orcs,1,1,0 script B1 Area Mobs FAKE_NPC,{ end; OnMyMobDead: diff --git a/npc/instances/SealedShrine.txt b/npc/instances/SealedShrine.txt index 4750f2105..a6cf12a33 100644 --- a/npc/instances/SealedShrine.txt +++ b/npc/instances/SealedShrine.txt @@ -437,7 +437,7 @@ prt_monk,261,91,3 script Rust Blackhand#edq 4_M_DWARF,{ } //== Sealed Shrine Interior ================================ -1@cata,1,2,0 script ins_baphomet_lotto -1,{ +1@cata,1,2,0 script ins_baphomet_lotto FAKE_NPC,{ OnInstanceInit: // Pick one "true" Gravestone and 12 "false" Gravestones. .@true = rand(1,13); @@ -448,14 +448,14 @@ OnInstanceInit: end; } -1@cata,3,2,0 script ins_baphomet_lotto2 -1,{ +1@cata,3,2,0 script ins_baphomet_lotto2 FAKE_NPC,{ OnEnable: for (.@i = 1; .@i <= 12; ++.@i) enablenpc instance_npcname("Bobbing Torch#"+.@i); end; } -1@cata,4,2,0 script ins_baphomet_lotto3 -1,{ +1@cata,4,2,0 script ins_baphomet_lotto3 FAKE_NPC,{ OnEnable: .@label$ = instance_npcname("ins_baphomet_lotto3")+"::OnMyMobDead"; .@map$ = instance_mapname("1@cata"); @@ -837,7 +837,7 @@ OnInstanceInit: } //== Gravestones =========================================== -- script Gravestone#SS1 -1,{ +- script Gravestone#SS1 FAKE_NPC,{ if ('ins_baphomet == 1) { getitem Soul_Pendant,1; 'ins_baphomet = 2; @@ -866,7 +866,7 @@ OnInstanceInit: 1@cata,127,32,0 duplicate(Gravestone#SS1) Gravestone#1F_12T CLEAR_NPC 1@cata,267,30,0 duplicate(Gravestone#SS1) Gravestone#1F_13T CLEAR_NPC -- script Gravestone#SS2 -1,{ +- script Gravestone#SS2 FAKE_NPC,{ mes "I can only feel gloom from this Gravestone."; close; } @@ -885,7 +885,7 @@ OnInstanceInit: 1@cata,267,30,0 duplicate(Gravestone#SS2) Gravestone#1F_13F CLEAR_NPC //== Bobbing Torches ======================================= -- script Bobbing Torch#SS -1,{ +- script Bobbing Torch#SS FAKE_NPC,{ .@party_id = getcharid(1); if (getpartyleader(.@party_id,2) == getcharid(0)) { if (('ins_baphomet == 3) && (countitem(Essence_Of_Fire) < 11)) { @@ -935,7 +935,7 @@ OnInstanceInit: 1@cata,71,42,0 duplicate(Bobbing Torch#SS) Bobbing Torch#11 CLEAR_NPC 1@cata,155,14,0 duplicate(Bobbing Torch#SS) Bobbing Torch#12 CLEAR_NPC -1@cata,1,1,0 script ins_baphomet_1f_timer -1,{ +1@cata,1,1,0 script ins_baphomet_1f_timer FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("ins_baphomet_1f_timer"); end; @@ -976,14 +976,14 @@ OnTimer3500000: end; } -2@cata,80,144,0 script ins_2f_enter -1,3,3,{ +2@cata,80,144,0 script ins_2f_enter FAKE_NPC,3,3,{ OnTouch: donpcevent instance_npcname("ins_2f_enter_broad")+"::OnEnable"; disablenpc instance_npcname("ins_2f_enter"); end; } -2@cata,1,1,0 script ins_2f_enter_broad -1,{ +2@cata,1,1,0 script ins_2f_enter_broad FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("ins_2f_enter_broad"); @@ -1013,7 +1013,7 @@ OnTimer18000: end; } -2@cata,50,67,0 script slave_left -1,5,5,{ +2@cata,50,67,0 script slave_left FAKE_NPC,5,5,{ OnTouch: .@map$ = instance_mapname("2@cata"); mapannounce .@map$, "Apostle of Baphomet : Kill the humans! Don't let them interrupt the revival of our Master!",bc_map,"0xFFFF00"; @@ -1037,7 +1037,7 @@ OnTouch: end; } -2@cata,109,67,0 script slave_right -1,5,5,{ +2@cata,109,67,0 script slave_right FAKE_NPC,5,5,{ OnTouch: .@map$ = instance_mapname("2@cata"); mapannounce .@map$, "Apostle of Baphomet : Kill the humans! Don't let them interrupt the revival of our Master!",bc_map,"0xFFFF00"; @@ -1061,7 +1061,7 @@ OnTouch: end; } -2@cata,79,39,0 script slave_down -1,5,5,{ +2@cata,79,39,0 script slave_down FAKE_NPC,5,5,{ OnTouch: .@map$ = instance_mapname("2@cata"); mapannounce .@map$, "Apostle of Baphomet : Kill the humans! Don't let them interrupt the revival of our Master!",bc_map,"0xFFFF00"; @@ -1086,7 +1086,7 @@ OnTouch: } //== Magical Seals ========================================= -- script Magical Seal#SS -1,{ +- script Magical Seal#SS FAKE_NPC,{ .@seal_check = questprogress(3041,PLAYTIME); if (.@seal_check == 1) { specialeffect2 EF_SILENCEATTACK; @@ -1186,7 +1186,7 @@ OnInstanceInit: end; } -2@cata,1,2,0 script ins_2f_hero_broad -1,{ +2@cata,1,2,0 script ins_2f_hero_broad FAKE_NPC,{ OnEnable: enablenpc instance_npcname("ins_2f_hero_broad"); initnpctimer; @@ -1225,7 +1225,7 @@ OnTimer17000: end; } -2@cata,3,3,0 script control_baphomet -1,{ +2@cata,3,3,0 script control_baphomet FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("control_baphomet"); @@ -1260,7 +1260,7 @@ OnMyMobDead: end; } -2@cata,2,2,0 script ins_2f_hero_broad2 -1,{ +2@cata,2,2,0 script ins_2f_hero_broad2 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("ins_2f_hero_broad2"); @@ -1308,7 +1308,7 @@ OnTimer26000: end; } -2@cata,4,1,0 script 2f_callmon_pattern_c -1,{ +2@cata,4,1,0 script 2f_callmon_pattern_c FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("2f_callmon_pattern_c"); end; @@ -1333,7 +1333,7 @@ OnTimer3600000: end; } -2@cata,4,2,0 script 2f_callmon_pattern -1,{ +2@cata,4,2,0 script 2f_callmon_pattern FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("2f_callmon_pattern"); end; @@ -1357,7 +1357,7 @@ OnTimer300000: end; } -2@cata,3,1,0 script ins_2f_hero_pattern_c -1,{ +2@cata,3,1,0 script ins_2f_hero_pattern_c FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("ins_2f_hero_pattern_c"); end; @@ -1393,7 +1393,7 @@ OnTimer3605000: end; } -2@cata,3,2,0 script ins_2f_hero_pattern -1,{ +2@cata,3,2,0 script ins_2f_hero_pattern FAKE_NPC,{ OnInstanceInit: disablenpc instance_npcname("ins_2f_hero_pattern"); end; @@ -1455,7 +1455,7 @@ OnTimer70000: end; } -1@cata,1,1,0 script ins_1f_spawn_mobs -1,{ +1@cata,1,1,0 script ins_1f_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("1@cata"); monster .@map$,0,0,"Zombie Master",1298,10; diff --git a/npc/jobs/2-1/assassin.txt b/npc/jobs/2-1/assassin.txt index c994fe5d6..5011c6ea1 100644 --- a/npc/jobs/2-1/assassin.txt +++ b/npc/jobs/2-1/assassin.txt @@ -655,7 +655,7 @@ OnTouch: } } -in_moc_16,19,154,0 script nameless_one -1,8,2,{ +in_moc_16,19,154,0 script nameless_one FAKE_NPC,8,2,{ OnTouch: if (ASSIN_Q2 < 5) { if (ASSIN_Q2 < 3) { @@ -1194,7 +1194,7 @@ OnTouch: } } -in_moc_16,1,1,0 script Beholder#ASNTEST -1,{ +in_moc_16,1,1,0 script Beholder#ASNTEST FAKE_NPC,{ end; OnEnable: @@ -1344,7 +1344,7 @@ OnTimer187000: end; } -in_moc_16,68,158,0 script 01_1::SinTrap -1,0,0,{ +in_moc_16,68,158,0 script 01_1::SinTrap FAKE_NPC,0,0,{ OnTouch: if (getvariableofnpc(.DisableTraps,"Beholder#ASNTEST") < 1) { mapannounce "in_moc_16",strcharinfo(0) + ", you're trapped. You will be sent back.",bc_map; @@ -1356,89 +1356,89 @@ OnTouch: end; } -in_moc_16,69,158,0 duplicate(SinTrap) 01_2 -1,0,0 -in_moc_16,68,159,0 duplicate(SinTrap) 01_3 -1,0,0 -in_moc_16,69,159,0 duplicate(SinTrap) 01_4 -1,0,0 -in_moc_16,64,162,0 duplicate(SinTrap) 02_1 -1,0,0 -in_moc_16,65,162,0 duplicate(SinTrap) 02_2 -1,0,0 -in_moc_16,64,163,0 duplicate(SinTrap) 02_3 -1,0,0 -in_moc_16,65,163,0 duplicate(SinTrap) 02_4 -1,0,0 -in_moc_16,62,168,0 duplicate(SinTrap) 03_1 -1,0,0 -in_moc_16,63,168,0 duplicate(SinTrap) 03_2 -1,0,0 -in_moc_16,62,169,0 duplicate(SinTrap) 03_3 -1,0,0 -in_moc_16,63,169,0 duplicate(SinTrap) 03_4 -1,0,0 -in_moc_16,66,170,0 duplicate(SinTrap) 04_1 -1,0,0 -in_moc_16,67,170,0 duplicate(SinTrap) 04_2 -1,0,0 -in_moc_16,66,171,0 duplicate(SinTrap) 04_3 -1,0,0 -in_moc_16,67,171,0 duplicate(SinTrap) 04_4 -1,0,0 -in_moc_16,64,174,0 duplicate(SinTrap) 05_1 -1,0,0 -in_moc_16,64,175,0 duplicate(SinTrap) 05_2 -1,0,0 -in_moc_16,65,174,0 duplicate(SinTrap) 05_3 -1,0,0 -in_moc_16,65,175,0 duplicate(SinTrap) 05_4 -1,0,0 -in_moc_16,72,174,0 duplicate(SinTrap) 06_1 -1,0,0 -in_moc_16,72,175,0 duplicate(SinTrap) 06_2 -1,0,0 -in_moc_16,73,174,0 duplicate(SinTrap) 06_3 -1,0,0 -in_moc_16,73,175,0 duplicate(SinTrap) 06_4 -1,0,0 -in_moc_16,72,166,0 duplicate(SinTrap) 07_1 -1,0,0 -in_moc_16,72,167,0 duplicate(SinTrap) 07_2 -1,0,0 -in_moc_16,73,166,0 duplicate(SinTrap) 07_3 -1,0,0 -in_moc_16,73,167,0 duplicate(SinTrap) 07_4 -1,0,0 -in_moc_16,72,168,0 duplicate(SinTrap) 08_1 -1,0,0 -in_moc_16,72,169,0 duplicate(SinTrap) 08_2 -1,0,0 -in_moc_16,73,168,0 duplicate(SinTrap) 08_3 -1,0,0 -in_moc_16,73,169,0 duplicate(SinTrap) 08_4 -1,0,0 -in_moc_16,78,168,0 duplicate(SinTrap) 09_1 -1,0,0 -in_moc_16,78,169,0 duplicate(SinTrap) 09_2 -1,0,0 -in_moc_16,79,168,0 duplicate(SinTrap) 09_3 -1,0,0 -in_moc_16,79,169,0 duplicate(SinTrap) 09_4 -1,0,0 -in_moc_16,80,172,0 duplicate(SinTrap) 10_1 -1,0,0 -in_moc_16,81,172,0 duplicate(SinTrap) 10_2 -1,0,0 -in_moc_16,82,172,0 duplicate(SinTrap) 10_3 -1,0,0 -in_moc_16,83,172,0 duplicate(SinTrap) 10_4 -1,0,0 -in_moc_16,80,173,0 duplicate(SinTrap) 10_5 -1,0,0 -in_moc_16,81,173,0 duplicate(SinTrap) 10_6 -1,0,0 -in_moc_16,82,173,0 duplicate(SinTrap) 10_7 -1,0,0 -in_moc_16,83,173,0 duplicate(SinTrap) 10_8 -1,0,0 -in_moc_16,88,174,0 duplicate(SinTrap) 11_1 -1,0,0 -in_moc_16,88,175,0 duplicate(SinTrap) 11_2 -1,0,0 -in_moc_16,89,174,0 duplicate(SinTrap) 11_3 -1,0,0 -in_moc_16,89,175,0 duplicate(SinTrap) 11_4 -1,0,0 -in_moc_16,86,166,0 duplicate(SinTrap) 12_1 -1,0,0 -in_moc_16,86,167,0 duplicate(SinTrap) 12_2 -1,0,0 -in_moc_16,87,166,0 duplicate(SinTrap) 12_3 -1,0,0 -in_moc_16,87,167,0 duplicate(SinTrap) 12_4 -1,0,0 -in_moc_16,90,164,0 duplicate(SinTrap) 13_1 -1,0,0 -in_moc_16,90,165,0 duplicate(SinTrap) 13_2 -1,0,0 -in_moc_16,91,164,0 duplicate(SinTrap) 13_3 -1,0,0 -in_moc_16,91,165,0 duplicate(SinTrap) 13_4 -1,0,0 -in_moc_16,84,160,0 duplicate(SinTrap) 14_1 -1,0,0 -in_moc_16,85,160,0 duplicate(SinTrap) 14_2 -1,0,0 -in_moc_16,86,160,0 duplicate(SinTrap) 14_3 -1,0,0 -in_moc_16,87,160,0 duplicate(SinTrap) 14_4 -1,0,0 -in_moc_16,88,160,0 duplicate(SinTrap) 14_5 -1,0,0 -in_moc_16,89,160,0 duplicate(SinTrap) 14_6 -1,0,0 -in_moc_16,84,161,0 duplicate(SinTrap) 14_7 -1,0,0 -in_moc_16,85,161,0 duplicate(SinTrap) 14_8 -1,0,0 -in_moc_16,86,161,0 duplicate(SinTrap) 14_9 -1,0,0 -in_moc_16,87,161,0 duplicate(SinTrap) 14_10 -1,0,0 -in_moc_16,88,161,0 duplicate(SinTrap) 14_11 -1,0,0 -in_moc_16,89,161,0 duplicate(SinTrap) 14_12 -1,0,0 -in_moc_16,86,154,0 duplicate(SinTrap) 15_1 -1,0,0 -in_moc_16,86,155,0 duplicate(SinTrap) 15_2 -1,0,0 -in_moc_16,87,154,0 duplicate(SinTrap) 15_3 -1,0,0 -in_moc_16,87,155,0 duplicate(SinTrap) 15_4 -1,0,0 -in_moc_16,84,150,0 duplicate(SinTrap) 16_1 -1,0,0 -in_moc_16,84,151,0 duplicate(SinTrap) 16_2 -1,0,0 -in_moc_16,85,150,0 duplicate(SinTrap) 16_3 -1,0,0 -in_moc_16,85,151,0 duplicate(SinTrap) 16_4 -1,0,0 -in_moc_16,90,150,0 duplicate(SinTrap) 17_1 -1,0,0 -in_moc_16,90,151,0 duplicate(SinTrap) 17_2 -1,0,0 -in_moc_16,91,150,0 duplicate(SinTrap) 17_3 -1,0,0 -in_moc_16,91,151,0 duplicate(SinTrap) 17_4 -1,0,0 -in_moc_16,86,146,0 duplicate(SinTrap) 18_1 -1,0,0 -in_moc_16,86,147,0 duplicate(SinTrap) 18_2 -1,0,0 -in_moc_16,87,146,0 duplicate(SinTrap) 18_3 -1,0,0 -in_moc_16,87,147,0 duplicate(SinTrap) 18_4 -1,0,0 +in_moc_16,69,158,0 duplicate(SinTrap) 01_2 FAKE_NPC,0,0 +in_moc_16,68,159,0 duplicate(SinTrap) 01_3 FAKE_NPC,0,0 +in_moc_16,69,159,0 duplicate(SinTrap) 01_4 FAKE_NPC,0,0 +in_moc_16,64,162,0 duplicate(SinTrap) 02_1 FAKE_NPC,0,0 +in_moc_16,65,162,0 duplicate(SinTrap) 02_2 FAKE_NPC,0,0 +in_moc_16,64,163,0 duplicate(SinTrap) 02_3 FAKE_NPC,0,0 +in_moc_16,65,163,0 duplicate(SinTrap) 02_4 FAKE_NPC,0,0 +in_moc_16,62,168,0 duplicate(SinTrap) 03_1 FAKE_NPC,0,0 +in_moc_16,63,168,0 duplicate(SinTrap) 03_2 FAKE_NPC,0,0 +in_moc_16,62,169,0 duplicate(SinTrap) 03_3 FAKE_NPC,0,0 +in_moc_16,63,169,0 duplicate(SinTrap) 03_4 FAKE_NPC,0,0 +in_moc_16,66,170,0 duplicate(SinTrap) 04_1 FAKE_NPC,0,0 +in_moc_16,67,170,0 duplicate(SinTrap) 04_2 FAKE_NPC,0,0 +in_moc_16,66,171,0 duplicate(SinTrap) 04_3 FAKE_NPC,0,0 +in_moc_16,67,171,0 duplicate(SinTrap) 04_4 FAKE_NPC,0,0 +in_moc_16,64,174,0 duplicate(SinTrap) 05_1 FAKE_NPC,0,0 +in_moc_16,64,175,0 duplicate(SinTrap) 05_2 FAKE_NPC,0,0 +in_moc_16,65,174,0 duplicate(SinTrap) 05_3 FAKE_NPC,0,0 +in_moc_16,65,175,0 duplicate(SinTrap) 05_4 FAKE_NPC,0,0 +in_moc_16,72,174,0 duplicate(SinTrap) 06_1 FAKE_NPC,0,0 +in_moc_16,72,175,0 duplicate(SinTrap) 06_2 FAKE_NPC,0,0 +in_moc_16,73,174,0 duplicate(SinTrap) 06_3 FAKE_NPC,0,0 +in_moc_16,73,175,0 duplicate(SinTrap) 06_4 FAKE_NPC,0,0 +in_moc_16,72,166,0 duplicate(SinTrap) 07_1 FAKE_NPC,0,0 +in_moc_16,72,167,0 duplicate(SinTrap) 07_2 FAKE_NPC,0,0 +in_moc_16,73,166,0 duplicate(SinTrap) 07_3 FAKE_NPC,0,0 +in_moc_16,73,167,0 duplicate(SinTrap) 07_4 FAKE_NPC,0,0 +in_moc_16,72,168,0 duplicate(SinTrap) 08_1 FAKE_NPC,0,0 +in_moc_16,72,169,0 duplicate(SinTrap) 08_2 FAKE_NPC,0,0 +in_moc_16,73,168,0 duplicate(SinTrap) 08_3 FAKE_NPC,0,0 +in_moc_16,73,169,0 duplicate(SinTrap) 08_4 FAKE_NPC,0,0 +in_moc_16,78,168,0 duplicate(SinTrap) 09_1 FAKE_NPC,0,0 +in_moc_16,78,169,0 duplicate(SinTrap) 09_2 FAKE_NPC,0,0 +in_moc_16,79,168,0 duplicate(SinTrap) 09_3 FAKE_NPC,0,0 +in_moc_16,79,169,0 duplicate(SinTrap) 09_4 FAKE_NPC,0,0 +in_moc_16,80,172,0 duplicate(SinTrap) 10_1 FAKE_NPC,0,0 +in_moc_16,81,172,0 duplicate(SinTrap) 10_2 FAKE_NPC,0,0 +in_moc_16,82,172,0 duplicate(SinTrap) 10_3 FAKE_NPC,0,0 +in_moc_16,83,172,0 duplicate(SinTrap) 10_4 FAKE_NPC,0,0 +in_moc_16,80,173,0 duplicate(SinTrap) 10_5 FAKE_NPC,0,0 +in_moc_16,81,173,0 duplicate(SinTrap) 10_6 FAKE_NPC,0,0 +in_moc_16,82,173,0 duplicate(SinTrap) 10_7 FAKE_NPC,0,0 +in_moc_16,83,173,0 duplicate(SinTrap) 10_8 FAKE_NPC,0,0 +in_moc_16,88,174,0 duplicate(SinTrap) 11_1 FAKE_NPC,0,0 +in_moc_16,88,175,0 duplicate(SinTrap) 11_2 FAKE_NPC,0,0 +in_moc_16,89,174,0 duplicate(SinTrap) 11_3 FAKE_NPC,0,0 +in_moc_16,89,175,0 duplicate(SinTrap) 11_4 FAKE_NPC,0,0 +in_moc_16,86,166,0 duplicate(SinTrap) 12_1 FAKE_NPC,0,0 +in_moc_16,86,167,0 duplicate(SinTrap) 12_2 FAKE_NPC,0,0 +in_moc_16,87,166,0 duplicate(SinTrap) 12_3 FAKE_NPC,0,0 +in_moc_16,87,167,0 duplicate(SinTrap) 12_4 FAKE_NPC,0,0 +in_moc_16,90,164,0 duplicate(SinTrap) 13_1 FAKE_NPC,0,0 +in_moc_16,90,165,0 duplicate(SinTrap) 13_2 FAKE_NPC,0,0 +in_moc_16,91,164,0 duplicate(SinTrap) 13_3 FAKE_NPC,0,0 +in_moc_16,91,165,0 duplicate(SinTrap) 13_4 FAKE_NPC,0,0 +in_moc_16,84,160,0 duplicate(SinTrap) 14_1 FAKE_NPC,0,0 +in_moc_16,85,160,0 duplicate(SinTrap) 14_2 FAKE_NPC,0,0 +in_moc_16,86,160,0 duplicate(SinTrap) 14_3 FAKE_NPC,0,0 +in_moc_16,87,160,0 duplicate(SinTrap) 14_4 FAKE_NPC,0,0 +in_moc_16,88,160,0 duplicate(SinTrap) 14_5 FAKE_NPC,0,0 +in_moc_16,89,160,0 duplicate(SinTrap) 14_6 FAKE_NPC,0,0 +in_moc_16,84,161,0 duplicate(SinTrap) 14_7 FAKE_NPC,0,0 +in_moc_16,85,161,0 duplicate(SinTrap) 14_8 FAKE_NPC,0,0 +in_moc_16,86,161,0 duplicate(SinTrap) 14_9 FAKE_NPC,0,0 +in_moc_16,87,161,0 duplicate(SinTrap) 14_10 FAKE_NPC,0,0 +in_moc_16,88,161,0 duplicate(SinTrap) 14_11 FAKE_NPC,0,0 +in_moc_16,89,161,0 duplicate(SinTrap) 14_12 FAKE_NPC,0,0 +in_moc_16,86,154,0 duplicate(SinTrap) 15_1 FAKE_NPC,0,0 +in_moc_16,86,155,0 duplicate(SinTrap) 15_2 FAKE_NPC,0,0 +in_moc_16,87,154,0 duplicate(SinTrap) 15_3 FAKE_NPC,0,0 +in_moc_16,87,155,0 duplicate(SinTrap) 15_4 FAKE_NPC,0,0 +in_moc_16,84,150,0 duplicate(SinTrap) 16_1 FAKE_NPC,0,0 +in_moc_16,84,151,0 duplicate(SinTrap) 16_2 FAKE_NPC,0,0 +in_moc_16,85,150,0 duplicate(SinTrap) 16_3 FAKE_NPC,0,0 +in_moc_16,85,151,0 duplicate(SinTrap) 16_4 FAKE_NPC,0,0 +in_moc_16,90,150,0 duplicate(SinTrap) 17_1 FAKE_NPC,0,0 +in_moc_16,90,151,0 duplicate(SinTrap) 17_2 FAKE_NPC,0,0 +in_moc_16,91,150,0 duplicate(SinTrap) 17_3 FAKE_NPC,0,0 +in_moc_16,91,151,0 duplicate(SinTrap) 17_4 FAKE_NPC,0,0 +in_moc_16,86,146,0 duplicate(SinTrap) 18_1 FAKE_NPC,0,0 +in_moc_16,86,147,0 duplicate(SinTrap) 18_2 FAKE_NPC,0,0 +in_moc_16,87,146,0 duplicate(SinTrap) 18_3 FAKE_NPC,0,0 +in_moc_16,87,147,0 duplicate(SinTrap) 18_4 FAKE_NPC,0,0 in_moc_16,87,137,0 script Keeper of the Door#ASN WARPNPC,2,1,{ OnInit: @@ -1465,7 +1465,7 @@ OnDisable: end; } -in_moc_16,3,3,0 script timestopper#1 -1,{ +in_moc_16,3,3,0 script timestopper#1 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1608,7 +1608,7 @@ OnTouch: } } -in_moc_16,167,110,0 script Guildmaster#ASN1 -1,3,1,{ +in_moc_16,167,110,0 script Guildmaster#ASN1 FAKE_NPC,3,1,{ OnTouch: savepoint "in_moc_16",167,110; mes "[Guildmaster]"; @@ -2174,7 +2174,7 @@ in_moc_16,186,81,1 script Master Assist 1_M_JOBTESTER,1,1,{ close; } -in_moc_16,170,90,0 script info 1 -1,{ +in_moc_16,170,90,0 script info 1 FAKE_NPC,{ OnTouch: mes "[Guildmaster]"; mes "Huh."; @@ -2182,14 +2182,14 @@ OnTouch: close; } -in_moc_16,153,85,0 script info 2 -1,1,1,{ +in_moc_16,153,85,0 script info 2 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "You're getting warmer. You're almost there. Just, turn around a little bit."; close; } -in_moc_16,160,85,0 script info 3 -1,1,1,{ +in_moc_16,160,85,0 script info 3 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "Hmm."; @@ -2198,7 +2198,7 @@ OnTouch: close; } -in_moc_16,175,89,0 script info 4 -1,1,1,{ +in_moc_16,175,89,0 script info 4 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "Umm..."; @@ -2206,7 +2206,7 @@ OnTouch: close; } -in_moc_16,164,88,0 script info 5 -1,{ +in_moc_16,164,88,0 script info 5 FAKE_NPC,{ OnTouch: mes "[Guildmaster]"; mes "Well done..."; @@ -2214,28 +2214,28 @@ OnTouch: close; } -in_moc_16,149,95,0 script info 6 -1,1,1,{ +in_moc_16,149,95,0 script info 6 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "Hm? Not bad. You're almost here."; close; } -in_moc_16,180,101,0 script info 7 -1,1,1,{ +in_moc_16,180,101,0 script info 7 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "I don't think you're going the right way."; close; } -in_moc_16,186,107,0 script info 8 -1,1,1,{ +in_moc_16,186,107,0 script info 8 FAKE_NPC,1,1,{ OnTouch: mes "[Guildmaster]"; mes "No sense of direction, eh?"; close; } -- script #moc_assin_dup -1,{ +- script #moc_assin_dup FAKE_NPC,{ end; OnInit: diff --git a/npc/jobs/2-1/hunter.txt b/npc/jobs/2-1/hunter.txt index 53d273deb..23d970dac 100644 --- a/npc/jobs/2-1/hunter.txt +++ b/npc/jobs/2-1/hunter.txt @@ -1250,7 +1250,7 @@ OnTouch: } //== Hunter Job test traps ================================= -job_hunte,52,140,0 script 1-1::HntTrap -1,0,1,{ +job_hunte,52,140,0 script 1-1::HntTrap FAKE_NPC,0,1,{ OnTouch: switch(rand(200)) { default: @@ -1393,233 +1393,233 @@ OnTouch: end; } -job_hunte,53,140,0 duplicate(HntTrap) 1-2 -1,0,1 -job_hunte,54,141,0 duplicate(HntTrap) 1-3 -1,0,0 -job_hunte,55,141,0 duplicate(HntTrap) 1-4 -1,0,0 -job_hunte,55,140,0 duplicate(HntTrap) 1-5 -1,0,0 -job_hunte,54,140,0 duplicate(HntTrap) 1-6 -1,0,0 -job_hunte,52,138,0 duplicate(HntTrap) 1-7 -1,0,0 -job_hunte,53,138,0 duplicate(HntTrap) 1-8 -1,0,0 -job_hunte,62,140,0 duplicate(HntTrap) 2-1 -1,0,1 -job_hunte,63,140,0 duplicate(HntTrap) 2-2 -1,0,1 -job_hunte,64,140,0 duplicate(HntTrap) 2-3 -1,0,0 -job_hunte,64,141,0 duplicate(HntTrap) 2-4 -1,0,0 -job_hunte,65,140,0 duplicate(HntTrap) 2-5 -1,0,0 -job_hunte,65,141,0 duplicate(HntTrap) 2-6 -1,0,0 -job_hunte,62,138,0 duplicate(HntTrap) 2-7 -1,0,0 -job_hunte,63,138,0 duplicate(HntTrap) 2-8 -1,0,0 -job_hunte,72,140,0 duplicate(HntTrap) 3-1 -1,0,1 -job_hunte,73,140,0 duplicate(HntTrap) 3-2 -1,0,1 -job_hunte,72,138,0 duplicate(HntTrap) 3-3 -1,0,0 -job_hunte,72,138,0 duplicate(HntTrap) 3-4 -1,0,0 -job_hunte,78,140,0 duplicate(HntTrap) 4-1 -1,0,0 -job_hunte,78,141,0 duplicate(HntTrap) 4-2 -1,0,0 -job_hunte,79,140,0 duplicate(HntTrap) 4-3 -1,0,0 -job_hunte,79,141,0 duplicate(HntTrap) 4-4 -1,0,0 -job_hunte,82,138,0 duplicate(HntTrap) 5-1 -1,0,0 -job_hunte,82,139,0 duplicate(HntTrap) 5-2 -1,0,0 -job_hunte,83,138,0 duplicate(HntTrap) 5-3 -1,0,0 -job_hunte,83,139,0 duplicate(HntTrap) 5-4 -1,0,0 -job_hunte,99,138,0 duplicate(HntTrap) 6-1 -1,1,0 -job_hunte,99,139,0 duplicate(HntTrap) 6-2 -1,1,0 -job_hunte,101,138,0 duplicate(HntTrap) 6-3 -1,0,0 -job_hunte,101,139,0 duplicate(HntTrap) 6-4 -1,0,0 -job_hunte,106,140,0 duplicate(HntTrap) 7-1 -1,0,1 -job_hunte,107,140,0 duplicate(HntTrap) 7-2 -1,0,1 -job_hunte,106,138,0 duplicate(HntTrap) 7-3 -1,0,0 -job_hunte,107,138,0 duplicate(HntTrap) 7-4 -1,0,0 -job_hunte,112,140,0 duplicate(HntTrap) 8-1 -1,0,0 -job_hunte,112,141,0 duplicate(HntTrap) 8-2 -1,0,0 -job_hunte,113,140,0 duplicate(HntTrap) 8-3 -1,0,0 -job_hunte,113,141,0 duplicate(HntTrap) 8-4 -1,0,0 -job_hunte,116,140,0 duplicate(HntTrap) 9-1 -1,0,0 -job_hunte,116,141,0 duplicate(HntTrap) 9-2 -1,0,0 -job_hunte,117,140,0 duplicate(HntTrap) 9-3 -1,0,0 -job_hunte,117,141,0 duplicate(HntTrap) 9-4 -1,0,0 -job_hunte,120,138,0 duplicate(HntTrap) 10-1 -1,0,0 -job_hunte,120,139,0 duplicate(HntTrap) 10-2 -1,0,0 -job_hunte,121,138,0 duplicate(HntTrap) 10-3 -1,0,0 -job_hunte,121,139,0 duplicate(HntTrap) 10-4 -1,0,0 -job_hunte,126,139,0 duplicate(HntTrap) 11-1 -1,0,2 -job_hunte,127,139,0 duplicate(HntTrap) 11-2 -1,0,2 -job_hunte,126,136,0 duplicate(HntTrap) 11-3 -1,0,0 -job_hunte,127,136,0 duplicate(HntTrap) 11-4 -1,0,0 -job_hunte,52,134,0 duplicate(HntTrap) 12-1 -1,0,1 -job_hunte,53,134,0 duplicate(HntTrap) 12-2 -1,0,1 -job_hunte,52,132,0 duplicate(HntTrap) 12-3 -1,0,0 -job_hunte,53,132,0 duplicate(HntTrap) 12-4 -1,0,0 -job_hunte,124,130,0 duplicate(HntTrap) 13-1 -1,0,0 -job_hunte,124,131,0 duplicate(HntTrap) 13-2 -1,0,0 -job_hunte,125,130,0 duplicate(HntTrap) 13-3 -1,0,0 -job_hunte,125,131,0 duplicate(HntTrap) 13-4 -1,0,0 -job_hunte,64,128,0 duplicate(HntTrap) 14-1 -1,0,0 -job_hunte,64,129,0 duplicate(HntTrap) 14-2 -1,0,0 -job_hunte,65,128,0 duplicate(HntTrap) 14-3 -1,0,0 -job_hunte,65,129,0 duplicate(HntTrap) 14-4 -1,0,0 -job_hunte,68,126,0 duplicate(HntTrap) 15-1 -1,0,0 -job_hunte,68,127,0 duplicate(HntTrap) 15-2 -1,0,0 -job_hunte,69,126,0 duplicate(HntTrap) 15-3 -1,0,0 -job_hunte,69,127,0 duplicate(HntTrap) 15-4 -1,0,0 -job_hunte,75,128,0 duplicate(HntTrap) 16-1 -1,1,0 -job_hunte,75,129,0 duplicate(HntTrap) 16-2 -1,1,0 -job_hunte,77,128,0 duplicate(HntTrap) 16-3 -1,0,0 -job_hunte,77,129,0 duplicate(HntTrap) 16-4 -1,0,0 -job_hunte,82,126,0 duplicate(HntTrap) 17-1 -1,0,0 -job_hunte,82,127,0 duplicate(HntTrap) 17-2 -1,0,0 -job_hunte,83,126,0 duplicate(HntTrap) 17-3 -1,0,0 -job_hunte,83,127,0 duplicate(HntTrap) 17-4 -1,0,0 -job_hunte,96,128,0 duplicate(HntTrap) 18-1 -1,0,0 -job_hunte,96,129,0 duplicate(HntTrap) 18-2 -1,0,0 -job_hunte,97,128,0 duplicate(HntTrap) 18-3 -1,0,0 -job_hunte,97,129,0 duplicate(HntTrap) 18-4 -1,0,0 -job_hunte,100,126,0 duplicate(HntTrap) 19-1 -1,0,0 -job_hunte,100,127,0 duplicate(HntTrap) 19-2 -1,0,0 -job_hunte,101,126,0 duplicate(HntTrap) 19-3 -1,0,0 -job_hunte,101,127,0 duplicate(HntTrap) 19-4 -1,0,0 -job_hunte,106,128,0 duplicate(HntTrap) 20-1 -1,0,0 -job_hunte,106,129,0 duplicate(HntTrap) 20-2 -1,0,0 -job_hunte,107,128,0 duplicate(HntTrap) 20-3 -1,0,0 -job_hunte,107,129,0 duplicate(HntTrap) 20-4 -1,0,0 -job_hunte,112,126,0 duplicate(HntTrap) 21-1 -1,0,0 -job_hunte,112,127,0 duplicate(HntTrap) 21-2 -1,0,0 -job_hunte,113,126,0 duplicate(HntTrap) 21-3 -1,0,0 -job_hunte,113,127,0 duplicate(HntTrap) 21-4 -1,0,0 -job_hunte,126,126,0 duplicate(HntTrap) 22-1 -1,0,0 -job_hunte,126,127,0 duplicate(HntTrap) 22-2 -1,0,0 -job_hunte,127,126,0 duplicate(HntTrap) 22-3 -1,0,0 -job_hunte,127,127,0 duplicate(HntTrap) 22-4 -1,0,0 -job_hunte,52,122,0 duplicate(HntTrap) 23-1 -1,0,1 -job_hunte,52,122,0 duplicate(HntTrap) 23-2 -1,0,1 -job_hunte,53,120,0 duplicate(HntTrap) 23-3 -1,1,0 -job_hunte,54,121,0 duplicate(HntTrap) 23-4 -1,0,0 -job_hunte,55,121,0 duplicate(HntTrap) 23-5 -1,0,0 -job_hunte,55,120,0 duplicate(HntTrap) 23-6 -1,0,0 -job_hunte,66,120,0 duplicate(HntTrap) 24-1 -1,0,0 -job_hunte,66,121,0 duplicate(HntTrap) 24-2 -1,0,0 -job_hunte,67,120,0 duplicate(HntTrap) 24-3 -1,0,0 -job_hunte,67,121,0 duplicate(HntTrap) 24-4 -1,0,0 -job_hunte,114,118,0 duplicate(HntTrap) 25-1 -1,0,0 -job_hunte,114,119,0 duplicate(HntTrap) 25-2 -1,0,0 -job_hunte,115,118,0 duplicate(HntTrap) 25-3 -1,0,0 -job_hunte,115,119,0 duplicate(HntTrap) 25-4 -1,0,0 -job_hunte,124,120,0 duplicate(HntTrap) 26-1 -1,0,1 -job_hunte,125,120,0 duplicate(HntTrap) 26-2 -1,0,1 -job_hunte,124,118,0 duplicate(HntTrap) 26-3 -1,0,0 -job_hunte,125,118,0 duplicate(HntTrap) 26-4 -1,0,0 -job_hunte,66,116,0 duplicate(HntTrap) 27-1 -1,0,0 -job_hunte,66,117,0 duplicate(HntTrap) 27-2 -1,0,0 -job_hunte,67,116,0 duplicate(HntTrap) 27-3 -1,0,0 -job_hunte,67,117,0 duplicate(HntTrap) 27-4 -1,0,0 -job_hunte,76,114,0 duplicate(HntTrap) 28-1 -1,0,0 -job_hunte,76,115,0 duplicate(HntTrap) 28-2 -1,0,0 -job_hunte,77,114,0 duplicate(HntTrap) 28-3 -1,0,0 -job_hunte,77,115,0 duplicate(HntTrap) 28-4 -1,0,0 -job_hunte,82,116,0 duplicate(HntTrap) 29-1 -1,0,0 -job_hunte,82,117,0 duplicate(HntTrap) 29-2 -1,0,0 -job_hunte,83,116,0 duplicate(HntTrap) 29-3 -1,0,0 -job_hunte,83,117,0 duplicate(HntTrap) 29-4 -1,0,0 -job_hunte,86,114,0 duplicate(HntTrap) 30-1 -1,0,0 -job_hunte,86,115,0 duplicate(HntTrap) 30-2 -1,0,0 -job_hunte,87,114,0 duplicate(HntTrap) 30-3 -1,0,0 -job_hunte,87,115,0 duplicate(HntTrap) 30-4 -1,0,0 -job_hunte,92,115,0 duplicate(HntTrap) 31-1 -1,1,0 -job_hunte,92,114,0 duplicate(HntTrap) 31-2 -1,1,0 -job_hunte,90,115,0 duplicate(HntTrap) 31-3 -1,0,0 -job_hunte,102,116,0 duplicate(HntTrap) 32-1 -1,0,0 -job_hunte,102,117,0 duplicate(HntTrap) 32-2 -1,0,0 -job_hunte,103,116,0 duplicate(HntTrap) 32-3 -1,0,0 -job_hunte,103,117,0 duplicate(HntTrap) 32-4 -1,0,0 -job_hunte,114,114,0 duplicate(HntTrap) 33-1 -1,0,0 -job_hunte,114,115,0 duplicate(HntTrap) 33-2 -1,0,0 -job_hunte,115,114,0 duplicate(HntTrap) 33-3 -1,0,0 -job_hunte,115,115,0 duplicate(HntTrap) 33-4 -1,0,0 -job_hunte,54,110,0 duplicate(HntTrap) 34-1 -1,0,1 -job_hunte,55,110,0 duplicate(HntTrap) 34-2 -1,0,1 -job_hunte,54,108,0 duplicate(HntTrap) 34-3 -1,0,0 -job_hunte,55,108,0 duplicate(HntTrap) 34-4 -1,0,0 -job_hunte,64,112,0 duplicate(HntTrap) 35-1 -1,0,0 -job_hunte,64,113,0 duplicate(HntTrap) 35-2 -1,0,0 -job_hunte,65,112,0 duplicate(HntTrap) 35-3 -1,0,0 -job_hunte,65,113,0 duplicate(HntTrap) 35-4 -1,0,0 -job_hunte,80,110,0 duplicate(HntTrap) 36-1 -1,0,0 -job_hunte,80,111,0 duplicate(HntTrap) 36-2 -1,0,0 -job_hunte,81,110,0 duplicate(HntTrap) 36-3 -1,0,0 -job_hunte,81,111,0 duplicate(HntTrap) 36-4 -1,0,0 -job_hunte,90,108,0 duplicate(HntTrap) 37-1 -1,0,6 -job_hunte,91,108,0 duplicate(HntTrap) 37-2 -1,0,5 -job_hunte,91,102,0 duplicate(HntTrap) 37-3 -1,0,0 -job_hunte,98,109,0 duplicate(HntTrap) 38-1 -1,0,2 -job_hunte,99,109,0 duplicate(HntTrap) 38-2 -1,0,2 -job_hunte,103,109,0 duplicate(HntTrap) 38-3 -1,3,0 -job_hunte,103,108,0 duplicate(HntTrap) 38-4 -1,3,0 -job_hunte,97,106,0 duplicate(HntTrap) 39-1 -1,2,0 -job_hunte,96,107,0 duplicate(HntTrap) 39-2 -1,1,0 -job_hunte,94,108,0 duplicate(HntTrap) 39-3 -1,0,1 -job_hunte,95,109,0 duplicate(HntTrap) 39-4 -1,0,0 -job_hunte,95,108,0 duplicate(HntTrap) 40-1 -1,0,0 -job_hunte,94,106,0 duplicate(HntTrap) 40-2 -1,0,0 -job_hunte,96,102,0 duplicate(HntTrap) 40-3 -1,0,3 -job_hunte,97,102,0 duplicate(HntTrap) 40-4 -1,0,3 -job_hunte,95,98,0 duplicate(HntTrap) 41-1 -1,2,0 -job_hunte,94,99,0 duplicate(HntTrap) 42-1 -1,1,0 -job_hunte,92,98,0 duplicate(HntTrap) 43-1 -1,0,0 -job_hunte,112,110,0 duplicate(HntTrap) 44-1 -1,0,0 -job_hunte,112,111,0 duplicate(HntTrap) 44-2 -1,0,0 -job_hunte,113,110,0 duplicate(HntTrap) 44-3 -1,0,0 -job_hunte,113,111,0 duplicate(HntTrap) 44-4 -1,0,0 -job_hunte,126,108,0 duplicate(HntTrap) 45-1 -1,0,1 -job_hunte,127,108,0 duplicate(HntTrap) 45-2 -1,0,1 -job_hunte,126,106,0 duplicate(HntTrap) 45-3 -1,0,0 -job_hunte,126,106,0 duplicate(HntTrap) 45-4 -1,0,0 -job_hunte,53,102,0 duplicate(HntTrap) 46-1 -1,1,1 -job_hunte,55,102,0 duplicate(HntTrap) 46-2 -1,0,1 -job_hunte,53,100,0 duplicate(HntTrap) 46-3 -1,1,0 -job_hunte,55,100,0 duplicate(HntTrap) 46-4 -1,0,0 -job_hunte,64,106,0 duplicate(HntTrap) 47-1 -1,0,0 -job_hunte,64,107,0 duplicate(HntTrap) 47-2 -1,0,0 -job_hunte,65,106,0 duplicate(HntTrap) 47-3 -1,0,0 -job_hunte,65,107,0 duplicate(HntTrap) 47-4 -1,0,0 -job_hunte,66,100,0 duplicate(HntTrap) 48-1 -1,0,0 -job_hunte,66,101,0 duplicate(HntTrap) 48-2 -1,0,0 -job_hunte,67,100,0 duplicate(HntTrap) 48-3 -1,0,0 -job_hunte,67,101,0 duplicate(HntTrap) 48-4 -1,0,0 -job_hunte,86,106,0 duplicate(HntTrap) 49-1 -1,0,1 -job_hunte,87,106,0 duplicate(HntTrap) 49-2 -1,0,1 -job_hunte,82,104,0 duplicate(HntTrap) 49-3 -1,5,0 -job_hunte,81,105,0 duplicate(HntTrap) 49-4 -1,4,0 -job_hunte,76,105,0 duplicate(HntTrap) 50-1 -1,0,0 -job_hunte,76,104,0 duplicate(HntTrap) 50-2 -1,0,0 -job_hunte,78,101,0 duplicate(HntTrap) 50-3 -1,0,2 -job_hunte,79,101,0 duplicate(HntTrap) 50-4 -1,0,2 -job_hunte,76,99,0 duplicate(HntTrap) 51-1 -1,1,0 -job_hunte,77,98,0 duplicate(HntTrap) 51-2 -1,2,0 -job_hunte,74,99,0 duplicate(HntTrap) 51-3 -1,0,0 -job_hunte,74,98,0 duplicate(HntTrap) 51-4 -1,0,0 -job_hunte,82,100,0 duplicate(HntTrap) 53-1 -1,0,0 -job_hunte,82,101,0 duplicate(HntTrap) 53-2 -1,0,0 -job_hunte,83,100,0 duplicate(HntTrap) 53-3 -1,0,0 -job_hunte,83,101,0 duplicate(HntTrap) 53-4 -1,0,0 -job_hunte,106,104,0 duplicate(HntTrap) 54-1 -1,0,0 -job_hunte,106,105,0 duplicate(HntTrap) 54-2 -1,0,0 -job_hunte,107,104,0 duplicate(HntTrap) 54-3 -1,0,0 -job_hunte,107,105,0 duplicate(HntTrap) 54-4 -1,0,0 -job_hunte,112,104,0 duplicate(HntTrap) 55-1 -1,0,1 -job_hunte,113,104,0 duplicate(HntTrap) 55-2 -1,0,1 -job_hunte,112,102,0 duplicate(HntTrap) 55-3 -1,0,0 -job_hunte,113,102,0 duplicate(HntTrap) 55-4 -1,0,0 -job_hunte,54,92,0 duplicate(HntTrap) 56-1 -1,0,0 -job_hunte,54,93,0 duplicate(HntTrap) 56-2 -1,0,0 -job_hunte,55,92,0 duplicate(HntTrap) 56-3 -1,0,0 -job_hunte,55,93,0 duplicate(HntTrap) 56-4 -1,0,0 -job_hunte,52,90,0 duplicate(HntTrap) 56-5 -1,0,0 -job_hunte,52,91,0 duplicate(HntTrap) 56-6 -1,0,0 -job_hunte,53,90,0 duplicate(HntTrap) 56-7 -1,0,0 -job_hunte,53,91,0 duplicate(HntTrap) 56-8 -1,0,0 -job_hunte,64,92,0 duplicate(HntTrap) 57-1 -1,0,0 -job_hunte,64,93,0 duplicate(HntTrap) 57-2 -1,0,0 -job_hunte,65,92,0 duplicate(HntTrap) 57-3 -1,0,0 +job_hunte,53,140,0 duplicate(HntTrap) 1-2 FAKE_NPC,0,1 +job_hunte,54,141,0 duplicate(HntTrap) 1-3 FAKE_NPC,0,0 +job_hunte,55,141,0 duplicate(HntTrap) 1-4 FAKE_NPC,0,0 +job_hunte,55,140,0 duplicate(HntTrap) 1-5 FAKE_NPC,0,0 +job_hunte,54,140,0 duplicate(HntTrap) 1-6 FAKE_NPC,0,0 +job_hunte,52,138,0 duplicate(HntTrap) 1-7 FAKE_NPC,0,0 +job_hunte,53,138,0 duplicate(HntTrap) 1-8 FAKE_NPC,0,0 +job_hunte,62,140,0 duplicate(HntTrap) 2-1 FAKE_NPC,0,1 +job_hunte,63,140,0 duplicate(HntTrap) 2-2 FAKE_NPC,0,1 +job_hunte,64,140,0 duplicate(HntTrap) 2-3 FAKE_NPC,0,0 +job_hunte,64,141,0 duplicate(HntTrap) 2-4 FAKE_NPC,0,0 +job_hunte,65,140,0 duplicate(HntTrap) 2-5 FAKE_NPC,0,0 +job_hunte,65,141,0 duplicate(HntTrap) 2-6 FAKE_NPC,0,0 +job_hunte,62,138,0 duplicate(HntTrap) 2-7 FAKE_NPC,0,0 +job_hunte,63,138,0 duplicate(HntTrap) 2-8 FAKE_NPC,0,0 +job_hunte,72,140,0 duplicate(HntTrap) 3-1 FAKE_NPC,0,1 +job_hunte,73,140,0 duplicate(HntTrap) 3-2 FAKE_NPC,0,1 +job_hunte,72,138,0 duplicate(HntTrap) 3-3 FAKE_NPC,0,0 +job_hunte,72,138,0 duplicate(HntTrap) 3-4 FAKE_NPC,0,0 +job_hunte,78,140,0 duplicate(HntTrap) 4-1 FAKE_NPC,0,0 +job_hunte,78,141,0 duplicate(HntTrap) 4-2 FAKE_NPC,0,0 +job_hunte,79,140,0 duplicate(HntTrap) 4-3 FAKE_NPC,0,0 +job_hunte,79,141,0 duplicate(HntTrap) 4-4 FAKE_NPC,0,0 +job_hunte,82,138,0 duplicate(HntTrap) 5-1 FAKE_NPC,0,0 +job_hunte,82,139,0 duplicate(HntTrap) 5-2 FAKE_NPC,0,0 +job_hunte,83,138,0 duplicate(HntTrap) 5-3 FAKE_NPC,0,0 +job_hunte,83,139,0 duplicate(HntTrap) 5-4 FAKE_NPC,0,0 +job_hunte,99,138,0 duplicate(HntTrap) 6-1 FAKE_NPC,1,0 +job_hunte,99,139,0 duplicate(HntTrap) 6-2 FAKE_NPC,1,0 +job_hunte,101,138,0 duplicate(HntTrap) 6-3 FAKE_NPC,0,0 +job_hunte,101,139,0 duplicate(HntTrap) 6-4 FAKE_NPC,0,0 +job_hunte,106,140,0 duplicate(HntTrap) 7-1 FAKE_NPC,0,1 +job_hunte,107,140,0 duplicate(HntTrap) 7-2 FAKE_NPC,0,1 +job_hunte,106,138,0 duplicate(HntTrap) 7-3 FAKE_NPC,0,0 +job_hunte,107,138,0 duplicate(HntTrap) 7-4 FAKE_NPC,0,0 +job_hunte,112,140,0 duplicate(HntTrap) 8-1 FAKE_NPC,0,0 +job_hunte,112,141,0 duplicate(HntTrap) 8-2 FAKE_NPC,0,0 +job_hunte,113,140,0 duplicate(HntTrap) 8-3 FAKE_NPC,0,0 +job_hunte,113,141,0 duplicate(HntTrap) 8-4 FAKE_NPC,0,0 +job_hunte,116,140,0 duplicate(HntTrap) 9-1 FAKE_NPC,0,0 +job_hunte,116,141,0 duplicate(HntTrap) 9-2 FAKE_NPC,0,0 +job_hunte,117,140,0 duplicate(HntTrap) 9-3 FAKE_NPC,0,0 +job_hunte,117,141,0 duplicate(HntTrap) 9-4 FAKE_NPC,0,0 +job_hunte,120,138,0 duplicate(HntTrap) 10-1 FAKE_NPC,0,0 +job_hunte,120,139,0 duplicate(HntTrap) 10-2 FAKE_NPC,0,0 +job_hunte,121,138,0 duplicate(HntTrap) 10-3 FAKE_NPC,0,0 +job_hunte,121,139,0 duplicate(HntTrap) 10-4 FAKE_NPC,0,0 +job_hunte,126,139,0 duplicate(HntTrap) 11-1 FAKE_NPC,0,2 +job_hunte,127,139,0 duplicate(HntTrap) 11-2 FAKE_NPC,0,2 +job_hunte,126,136,0 duplicate(HntTrap) 11-3 FAKE_NPC,0,0 +job_hunte,127,136,0 duplicate(HntTrap) 11-4 FAKE_NPC,0,0 +job_hunte,52,134,0 duplicate(HntTrap) 12-1 FAKE_NPC,0,1 +job_hunte,53,134,0 duplicate(HntTrap) 12-2 FAKE_NPC,0,1 +job_hunte,52,132,0 duplicate(HntTrap) 12-3 FAKE_NPC,0,0 +job_hunte,53,132,0 duplicate(HntTrap) 12-4 FAKE_NPC,0,0 +job_hunte,124,130,0 duplicate(HntTrap) 13-1 FAKE_NPC,0,0 +job_hunte,124,131,0 duplicate(HntTrap) 13-2 FAKE_NPC,0,0 +job_hunte,125,130,0 duplicate(HntTrap) 13-3 FAKE_NPC,0,0 +job_hunte,125,131,0 duplicate(HntTrap) 13-4 FAKE_NPC,0,0 +job_hunte,64,128,0 duplicate(HntTrap) 14-1 FAKE_NPC,0,0 +job_hunte,64,129,0 duplicate(HntTrap) 14-2 FAKE_NPC,0,0 +job_hunte,65,128,0 duplicate(HntTrap) 14-3 FAKE_NPC,0,0 +job_hunte,65,129,0 duplicate(HntTrap) 14-4 FAKE_NPC,0,0 +job_hunte,68,126,0 duplicate(HntTrap) 15-1 FAKE_NPC,0,0 +job_hunte,68,127,0 duplicate(HntTrap) 15-2 FAKE_NPC,0,0 +job_hunte,69,126,0 duplicate(HntTrap) 15-3 FAKE_NPC,0,0 +job_hunte,69,127,0 duplicate(HntTrap) 15-4 FAKE_NPC,0,0 +job_hunte,75,128,0 duplicate(HntTrap) 16-1 FAKE_NPC,1,0 +job_hunte,75,129,0 duplicate(HntTrap) 16-2 FAKE_NPC,1,0 +job_hunte,77,128,0 duplicate(HntTrap) 16-3 FAKE_NPC,0,0 +job_hunte,77,129,0 duplicate(HntTrap) 16-4 FAKE_NPC,0,0 +job_hunte,82,126,0 duplicate(HntTrap) 17-1 FAKE_NPC,0,0 +job_hunte,82,127,0 duplicate(HntTrap) 17-2 FAKE_NPC,0,0 +job_hunte,83,126,0 duplicate(HntTrap) 17-3 FAKE_NPC,0,0 +job_hunte,83,127,0 duplicate(HntTrap) 17-4 FAKE_NPC,0,0 +job_hunte,96,128,0 duplicate(HntTrap) 18-1 FAKE_NPC,0,0 +job_hunte,96,129,0 duplicate(HntTrap) 18-2 FAKE_NPC,0,0 +job_hunte,97,128,0 duplicate(HntTrap) 18-3 FAKE_NPC,0,0 +job_hunte,97,129,0 duplicate(HntTrap) 18-4 FAKE_NPC,0,0 +job_hunte,100,126,0 duplicate(HntTrap) 19-1 FAKE_NPC,0,0 +job_hunte,100,127,0 duplicate(HntTrap) 19-2 FAKE_NPC,0,0 +job_hunte,101,126,0 duplicate(HntTrap) 19-3 FAKE_NPC,0,0 +job_hunte,101,127,0 duplicate(HntTrap) 19-4 FAKE_NPC,0,0 +job_hunte,106,128,0 duplicate(HntTrap) 20-1 FAKE_NPC,0,0 +job_hunte,106,129,0 duplicate(HntTrap) 20-2 FAKE_NPC,0,0 +job_hunte,107,128,0 duplicate(HntTrap) 20-3 FAKE_NPC,0,0 +job_hunte,107,129,0 duplicate(HntTrap) 20-4 FAKE_NPC,0,0 +job_hunte,112,126,0 duplicate(HntTrap) 21-1 FAKE_NPC,0,0 +job_hunte,112,127,0 duplicate(HntTrap) 21-2 FAKE_NPC,0,0 +job_hunte,113,126,0 duplicate(HntTrap) 21-3 FAKE_NPC,0,0 +job_hunte,113,127,0 duplicate(HntTrap) 21-4 FAKE_NPC,0,0 +job_hunte,126,126,0 duplicate(HntTrap) 22-1 FAKE_NPC,0,0 +job_hunte,126,127,0 duplicate(HntTrap) 22-2 FAKE_NPC,0,0 +job_hunte,127,126,0 duplicate(HntTrap) 22-3 FAKE_NPC,0,0 +job_hunte,127,127,0 duplicate(HntTrap) 22-4 FAKE_NPC,0,0 +job_hunte,52,122,0 duplicate(HntTrap) 23-1 FAKE_NPC,0,1 +job_hunte,52,122,0 duplicate(HntTrap) 23-2 FAKE_NPC,0,1 +job_hunte,53,120,0 duplicate(HntTrap) 23-3 FAKE_NPC,1,0 +job_hunte,54,121,0 duplicate(HntTrap) 23-4 FAKE_NPC,0,0 +job_hunte,55,121,0 duplicate(HntTrap) 23-5 FAKE_NPC,0,0 +job_hunte,55,120,0 duplicate(HntTrap) 23-6 FAKE_NPC,0,0 +job_hunte,66,120,0 duplicate(HntTrap) 24-1 FAKE_NPC,0,0 +job_hunte,66,121,0 duplicate(HntTrap) 24-2 FAKE_NPC,0,0 +job_hunte,67,120,0 duplicate(HntTrap) 24-3 FAKE_NPC,0,0 +job_hunte,67,121,0 duplicate(HntTrap) 24-4 FAKE_NPC,0,0 +job_hunte,114,118,0 duplicate(HntTrap) 25-1 FAKE_NPC,0,0 +job_hunte,114,119,0 duplicate(HntTrap) 25-2 FAKE_NPC,0,0 +job_hunte,115,118,0 duplicate(HntTrap) 25-3 FAKE_NPC,0,0 +job_hunte,115,119,0 duplicate(HntTrap) 25-4 FAKE_NPC,0,0 +job_hunte,124,120,0 duplicate(HntTrap) 26-1 FAKE_NPC,0,1 +job_hunte,125,120,0 duplicate(HntTrap) 26-2 FAKE_NPC,0,1 +job_hunte,124,118,0 duplicate(HntTrap) 26-3 FAKE_NPC,0,0 +job_hunte,125,118,0 duplicate(HntTrap) 26-4 FAKE_NPC,0,0 +job_hunte,66,116,0 duplicate(HntTrap) 27-1 FAKE_NPC,0,0 +job_hunte,66,117,0 duplicate(HntTrap) 27-2 FAKE_NPC,0,0 +job_hunte,67,116,0 duplicate(HntTrap) 27-3 FAKE_NPC,0,0 +job_hunte,67,117,0 duplicate(HntTrap) 27-4 FAKE_NPC,0,0 +job_hunte,76,114,0 duplicate(HntTrap) 28-1 FAKE_NPC,0,0 +job_hunte,76,115,0 duplicate(HntTrap) 28-2 FAKE_NPC,0,0 +job_hunte,77,114,0 duplicate(HntTrap) 28-3 FAKE_NPC,0,0 +job_hunte,77,115,0 duplicate(HntTrap) 28-4 FAKE_NPC,0,0 +job_hunte,82,116,0 duplicate(HntTrap) 29-1 FAKE_NPC,0,0 +job_hunte,82,117,0 duplicate(HntTrap) 29-2 FAKE_NPC,0,0 +job_hunte,83,116,0 duplicate(HntTrap) 29-3 FAKE_NPC,0,0 +job_hunte,83,117,0 duplicate(HntTrap) 29-4 FAKE_NPC,0,0 +job_hunte,86,114,0 duplicate(HntTrap) 30-1 FAKE_NPC,0,0 +job_hunte,86,115,0 duplicate(HntTrap) 30-2 FAKE_NPC,0,0 +job_hunte,87,114,0 duplicate(HntTrap) 30-3 FAKE_NPC,0,0 +job_hunte,87,115,0 duplicate(HntTrap) 30-4 FAKE_NPC,0,0 +job_hunte,92,115,0 duplicate(HntTrap) 31-1 FAKE_NPC,1,0 +job_hunte,92,114,0 duplicate(HntTrap) 31-2 FAKE_NPC,1,0 +job_hunte,90,115,0 duplicate(HntTrap) 31-3 FAKE_NPC,0,0 +job_hunte,102,116,0 duplicate(HntTrap) 32-1 FAKE_NPC,0,0 +job_hunte,102,117,0 duplicate(HntTrap) 32-2 FAKE_NPC,0,0 +job_hunte,103,116,0 duplicate(HntTrap) 32-3 FAKE_NPC,0,0 +job_hunte,103,117,0 duplicate(HntTrap) 32-4 FAKE_NPC,0,0 +job_hunte,114,114,0 duplicate(HntTrap) 33-1 FAKE_NPC,0,0 +job_hunte,114,115,0 duplicate(HntTrap) 33-2 FAKE_NPC,0,0 +job_hunte,115,114,0 duplicate(HntTrap) 33-3 FAKE_NPC,0,0 +job_hunte,115,115,0 duplicate(HntTrap) 33-4 FAKE_NPC,0,0 +job_hunte,54,110,0 duplicate(HntTrap) 34-1 FAKE_NPC,0,1 +job_hunte,55,110,0 duplicate(HntTrap) 34-2 FAKE_NPC,0,1 +job_hunte,54,108,0 duplicate(HntTrap) 34-3 FAKE_NPC,0,0 +job_hunte,55,108,0 duplicate(HntTrap) 34-4 FAKE_NPC,0,0 +job_hunte,64,112,0 duplicate(HntTrap) 35-1 FAKE_NPC,0,0 +job_hunte,64,113,0 duplicate(HntTrap) 35-2 FAKE_NPC,0,0 +job_hunte,65,112,0 duplicate(HntTrap) 35-3 FAKE_NPC,0,0 +job_hunte,65,113,0 duplicate(HntTrap) 35-4 FAKE_NPC,0,0 +job_hunte,80,110,0 duplicate(HntTrap) 36-1 FAKE_NPC,0,0 +job_hunte,80,111,0 duplicate(HntTrap) 36-2 FAKE_NPC,0,0 +job_hunte,81,110,0 duplicate(HntTrap) 36-3 FAKE_NPC,0,0 +job_hunte,81,111,0 duplicate(HntTrap) 36-4 FAKE_NPC,0,0 +job_hunte,90,108,0 duplicate(HntTrap) 37-1 FAKE_NPC,0,6 +job_hunte,91,108,0 duplicate(HntTrap) 37-2 FAKE_NPC,0,5 +job_hunte,91,102,0 duplicate(HntTrap) 37-3 FAKE_NPC,0,0 +job_hunte,98,109,0 duplicate(HntTrap) 38-1 FAKE_NPC,0,2 +job_hunte,99,109,0 duplicate(HntTrap) 38-2 FAKE_NPC,0,2 +job_hunte,103,109,0 duplicate(HntTrap) 38-3 FAKE_NPC,3,0 +job_hunte,103,108,0 duplicate(HntTrap) 38-4 FAKE_NPC,3,0 +job_hunte,97,106,0 duplicate(HntTrap) 39-1 FAKE_NPC,2,0 +job_hunte,96,107,0 duplicate(HntTrap) 39-2 FAKE_NPC,1,0 +job_hunte,94,108,0 duplicate(HntTrap) 39-3 FAKE_NPC,0,1 +job_hunte,95,109,0 duplicate(HntTrap) 39-4 FAKE_NPC,0,0 +job_hunte,95,108,0 duplicate(HntTrap) 40-1 FAKE_NPC,0,0 +job_hunte,94,106,0 duplicate(HntTrap) 40-2 FAKE_NPC,0,0 +job_hunte,96,102,0 duplicate(HntTrap) 40-3 FAKE_NPC,0,3 +job_hunte,97,102,0 duplicate(HntTrap) 40-4 FAKE_NPC,0,3 +job_hunte,95,98,0 duplicate(HntTrap) 41-1 FAKE_NPC,2,0 +job_hunte,94,99,0 duplicate(HntTrap) 42-1 FAKE_NPC,1,0 +job_hunte,92,98,0 duplicate(HntTrap) 43-1 FAKE_NPC,0,0 +job_hunte,112,110,0 duplicate(HntTrap) 44-1 FAKE_NPC,0,0 +job_hunte,112,111,0 duplicate(HntTrap) 44-2 FAKE_NPC,0,0 +job_hunte,113,110,0 duplicate(HntTrap) 44-3 FAKE_NPC,0,0 +job_hunte,113,111,0 duplicate(HntTrap) 44-4 FAKE_NPC,0,0 +job_hunte,126,108,0 duplicate(HntTrap) 45-1 FAKE_NPC,0,1 +job_hunte,127,108,0 duplicate(HntTrap) 45-2 FAKE_NPC,0,1 +job_hunte,126,106,0 duplicate(HntTrap) 45-3 FAKE_NPC,0,0 +job_hunte,126,106,0 duplicate(HntTrap) 45-4 FAKE_NPC,0,0 +job_hunte,53,102,0 duplicate(HntTrap) 46-1 FAKE_NPC,1,1 +job_hunte,55,102,0 duplicate(HntTrap) 46-2 FAKE_NPC,0,1 +job_hunte,53,100,0 duplicate(HntTrap) 46-3 FAKE_NPC,1,0 +job_hunte,55,100,0 duplicate(HntTrap) 46-4 FAKE_NPC,0,0 +job_hunte,64,106,0 duplicate(HntTrap) 47-1 FAKE_NPC,0,0 +job_hunte,64,107,0 duplicate(HntTrap) 47-2 FAKE_NPC,0,0 +job_hunte,65,106,0 duplicate(HntTrap) 47-3 FAKE_NPC,0,0 +job_hunte,65,107,0 duplicate(HntTrap) 47-4 FAKE_NPC,0,0 +job_hunte,66,100,0 duplicate(HntTrap) 48-1 FAKE_NPC,0,0 +job_hunte,66,101,0 duplicate(HntTrap) 48-2 FAKE_NPC,0,0 +job_hunte,67,100,0 duplicate(HntTrap) 48-3 FAKE_NPC,0,0 +job_hunte,67,101,0 duplicate(HntTrap) 48-4 FAKE_NPC,0,0 +job_hunte,86,106,0 duplicate(HntTrap) 49-1 FAKE_NPC,0,1 +job_hunte,87,106,0 duplicate(HntTrap) 49-2 FAKE_NPC,0,1 +job_hunte,82,104,0 duplicate(HntTrap) 49-3 FAKE_NPC,5,0 +job_hunte,81,105,0 duplicate(HntTrap) 49-4 FAKE_NPC,4,0 +job_hunte,76,105,0 duplicate(HntTrap) 50-1 FAKE_NPC,0,0 +job_hunte,76,104,0 duplicate(HntTrap) 50-2 FAKE_NPC,0,0 +job_hunte,78,101,0 duplicate(HntTrap) 50-3 FAKE_NPC,0,2 +job_hunte,79,101,0 duplicate(HntTrap) 50-4 FAKE_NPC,0,2 +job_hunte,76,99,0 duplicate(HntTrap) 51-1 FAKE_NPC,1,0 +job_hunte,77,98,0 duplicate(HntTrap) 51-2 FAKE_NPC,2,0 +job_hunte,74,99,0 duplicate(HntTrap) 51-3 FAKE_NPC,0,0 +job_hunte,74,98,0 duplicate(HntTrap) 51-4 FAKE_NPC,0,0 +job_hunte,82,100,0 duplicate(HntTrap) 53-1 FAKE_NPC,0,0 +job_hunte,82,101,0 duplicate(HntTrap) 53-2 FAKE_NPC,0,0 +job_hunte,83,100,0 duplicate(HntTrap) 53-3 FAKE_NPC,0,0 +job_hunte,83,101,0 duplicate(HntTrap) 53-4 FAKE_NPC,0,0 +job_hunte,106,104,0 duplicate(HntTrap) 54-1 FAKE_NPC,0,0 +job_hunte,106,105,0 duplicate(HntTrap) 54-2 FAKE_NPC,0,0 +job_hunte,107,104,0 duplicate(HntTrap) 54-3 FAKE_NPC,0,0 +job_hunte,107,105,0 duplicate(HntTrap) 54-4 FAKE_NPC,0,0 +job_hunte,112,104,0 duplicate(HntTrap) 55-1 FAKE_NPC,0,1 +job_hunte,113,104,0 duplicate(HntTrap) 55-2 FAKE_NPC,0,1 +job_hunte,112,102,0 duplicate(HntTrap) 55-3 FAKE_NPC,0,0 +job_hunte,113,102,0 duplicate(HntTrap) 55-4 FAKE_NPC,0,0 +job_hunte,54,92,0 duplicate(HntTrap) 56-1 FAKE_NPC,0,0 +job_hunte,54,93,0 duplicate(HntTrap) 56-2 FAKE_NPC,0,0 +job_hunte,55,92,0 duplicate(HntTrap) 56-3 FAKE_NPC,0,0 +job_hunte,55,93,0 duplicate(HntTrap) 56-4 FAKE_NPC,0,0 +job_hunte,52,90,0 duplicate(HntTrap) 56-5 FAKE_NPC,0,0 +job_hunte,52,91,0 duplicate(HntTrap) 56-6 FAKE_NPC,0,0 +job_hunte,53,90,0 duplicate(HntTrap) 56-7 FAKE_NPC,0,0 +job_hunte,53,91,0 duplicate(HntTrap) 56-8 FAKE_NPC,0,0 +job_hunte,64,92,0 duplicate(HntTrap) 57-1 FAKE_NPC,0,0 +job_hunte,64,93,0 duplicate(HntTrap) 57-2 FAKE_NPC,0,0 +job_hunte,65,92,0 duplicate(HntTrap) 57-3 FAKE_NPC,0,0 -job_hunte,65,93,0 script 57-4::HntTrap2 -1,{ +job_hunte,65,93,0 script 57-4::HntTrap2 FAKE_NPC,{ OnTouch: mapannounce "job_hunte",strcharinfo(0) + ", has failed me! Go back to where you started!",bc_map; HNTR_Q = 13; @@ -1629,161 +1629,161 @@ OnTouch: end; } -job_hunte,76,94,0 duplicate(HntTrap2) 58-1 -1,0,0 -job_hunte,76,95,0 duplicate(HntTrap2) 58-2 -1,0,0 -job_hunte,77,94,0 duplicate(HntTrap2) 58-3 -1,0,0 -job_hunte,77,95,0 duplicate(HntTrap2) 58-4 -1,0,0 -job_hunte,78,92,0 duplicate(HntTrap2) 59-1 -1,0,0 -job_hunte,78,93,0 duplicate(HntTrap2) 59-2 -1,0,0 -job_hunte,79,92,0 duplicate(HntTrap2) 59-3 -1,0,0 -job_hunte,79,93,0 duplicate(HntTrap2) 59-4 -1,0,0 -job_hunte,86,92,0 duplicate(HntTrap2) 60-1 -1,0,0 -job_hunte,86,93,0 duplicate(HntTrap2) 60-2 -1,0,0 -job_hunte,87,92,0 duplicate(HntTrap2) 60-3 -1,0,0 -job_hunte,87,93,0 duplicate(HntTrap2) 60-4 -1,0,0 -job_hunte,90,96,0 duplicate(HntTrap2) 61-1 -1,0,0 -job_hunte,90,97,0 duplicate(HntTrap2) 61-2 -1,0,0 -job_hunte,91,96,0 duplicate(HntTrap2) 61-3 -1,0,0 -job_hunte,91,97,0 duplicate(HntTrap2) 61-4 -1,0,0 -job_hunte,99,95,0 duplicate(HntTrap2) 62-1 -1,1,0 -job_hunte,99,94,0 duplicate(HntTrap2) 62-2 -1,1,0 -job_hunte,101,94,0 duplicate(HntTrap2) 62-3 -1,0,1 -job_hunte,100,93,0 duplicate(HntTrap2) 62-4 -1,0,0 -job_hunte,100,92,0 duplicate(HntTrap2) 63-1 -1,0,0 -job_hunte,101,92,0 duplicate(HntTrap2) 63-2 -1,0,0 -job_hunte,102,98,0 duplicate(HntTrap2) 64-1 -1,0,0 -job_hunte,102,99,0 duplicate(HntTrap2) 64-2 -1,0,0 -job_hunte,103,98,0 duplicate(HntTrap2) 64-3 -1,0,0 -job_hunte,103,99,0 duplicate(HntTrap2) 64-4 -1,0,0 -job_hunte,102,90,0 duplicate(HntTrap2) 65-1 -1,0,0 -job_hunte,102,91,0 duplicate(HntTrap2) 65-2 -1,0,0 -job_hunte,103,90,0 duplicate(HntTrap2) 65-3 -1,0,0 -job_hunte,103,91,0 duplicate(HntTrap2) 65-4 -1,0,0 -job_hunte,114,96,0 duplicate(HntTrap2) 66-1 -1,0,0 -job_hunte,114,97,0 duplicate(HntTrap2) 66-2 -1,0,0 -job_hunte,115,96,0 duplicate(HntTrap2) 66-3 -1,0,0 -job_hunte,115,97,0 duplicate(HntTrap2) 66-4 -1,0,0 -job_hunte,112,90,0 duplicate(HntTrap2) 67-1 -1,0,0 -job_hunte,112,91,0 duplicate(HntTrap2) 67-2 -1,0,0 -job_hunte,113,90,0 duplicate(HntTrap2) 67-3 -1,0,0 -job_hunte,113,91,0 duplicate(HntTrap2) 67-4 -1,0,0 -job_hunte,125,97,0 duplicate(HntTrap2) 68-1 -1,1,0 -job_hunte,125,96,0 duplicate(HntTrap2) 68-2 -1,1,0 -job_hunte,127,96,0 duplicate(HntTrap2) 68-3 -1,0,0 -job_hunte,127,97,0 duplicate(HntTrap2) 68-4 -1,0,0 -job_hunte,52,86,0 duplicate(HntTrap2) 69-1 -1,0,0 -job_hunte,52,87,0 duplicate(HntTrap2) 69-2 -1,0,0 -job_hunte,53,86,0 duplicate(HntTrap2) 69-3 -1,0,0 -job_hunte,53,87,0 duplicate(HntTrap2) 69-4 -1,0,0 -job_hunte,66,88,0 duplicate(HntTrap2) 70-1 -1,0,0 -job_hunte,66,89,0 duplicate(HntTrap2) 70-2 -1,0,0 -job_hunte,67,88,0 duplicate(HntTrap2) 70-3 -1,0,0 -job_hunte,67,89,0 duplicate(HntTrap2) 70-4 -1,0,0 -job_hunte,114,84,0 duplicate(HntTrap2) 71-1 -1,0,0 -job_hunte,114,85,0 duplicate(HntTrap2) 71-2 -1,0,0 -job_hunte,115,84,0 duplicate(HntTrap2) 71-3 -1,0,0 -job_hunte,115,85,0 duplicate(HntTrap2) 71-4 -1,0,0 -job_hunte,126,86,0 duplicate(HntTrap2) 72-1 -1,0,0 -job_hunte,126,87,0 duplicate(HntTrap2) 72-2 -1,0,0 -job_hunte,127,86,0 duplicate(HntTrap2) 72-3 -1,0,0 -job_hunte,127,87,0 duplicate(HntTrap2) 72-4 -1,0,0 -job_hunte,54,80,0 duplicate(HntTrap2) 73-1 -1,0,1 -job_hunte,55,80,0 duplicate(HntTrap2) 73-2 -1,0,1 -job_hunte,55,80,0 duplicate(HntTrap2) 73-3 -1,0,0 -job_hunte,55,78,0 duplicate(HntTrap2) 73-4 -1,0,0 -job_hunte,64,82,0 duplicate(HntTrap2) 74-1 -1,0,1 -job_hunte,65,82,0 duplicate(HntTrap2) 74-2 -1,0,1 -job_hunte,64,80,0 duplicate(HntTrap2) 74-3 -1,0,0 -job_hunte,65,80,0 duplicate(HntTrap2) 74-4 -1,0,0 -job_hunte,66,78,0 duplicate(HntTrap2) 75-1 -1,0,0 -job_hunte,66,79,0 duplicate(HntTrap2) 75-2 -1,0,0 -job_hunte,67,78,0 duplicate(HntTrap2) 75-3 -1,0,0 -job_hunte,67,79,0 duplicate(HntTrap2) 75-4 -1,0,0 -job_hunte,74,78,0 duplicate(HntTrap2) 76-1 -1,0,0 -job_hunte,74,79,0 duplicate(HntTrap2) 76-2 -1,0,0 -job_hunte,75,78,0 duplicate(HntTrap2) 76-3 -1,0,0 -job_hunte,75,79,0 duplicate(HntTrap2) 76-4 -1,0,0 -job_hunte,78,80,0 duplicate(HntTrap2) 77-1 -1,0,0 -job_hunte,78,81,0 duplicate(HntTrap2) 77-2 -1,0,0 -job_hunte,79,80,0 duplicate(HntTrap2) 77-3 -1,0,0 -job_hunte,79,81,0 duplicate(HntTrap2) 77-4 -1,0,0 -job_hunte,82,78,0 duplicate(HntTrap2) 78-1 -1,0,0 -job_hunte,82,79,0 duplicate(HntTrap2) 78-2 -1,0,0 -job_hunte,83,78,0 duplicate(HntTrap2) 78-3 -1,0,0 -job_hunte,83,79,0 duplicate(HntTrap2) 78-4 -1,0,0 -job_hunte,94,78,0 duplicate(HntTrap2) 79-1 -1,0,0 -job_hunte,94,79,0 duplicate(HntTrap2) 79-2 -1,0,0 -job_hunte,95,78,0 duplicate(HntTrap2) 79-3 -1,0,0 -job_hunte,95,79,0 duplicate(HntTrap2) 79-4 -1,0,0 -job_hunte,101,80,0 duplicate(HntTrap2) 80-1 -1,1,0 -job_hunte,101,81,0 duplicate(HntTrap2) 80-2 -1,1,0 -job_hunte,103,81,0 duplicate(HntTrap2) 80-3 -1,0,0 -job_hunte,103,80,0 duplicate(HntTrap2) 80-4 -1,0,0 -job_hunte,104,78,0 duplicate(HntTrap2) 81-1 -1,0,0 -job_hunte,104,79,0 duplicate(HntTrap2) 81-2 -1,0,0 -job_hunte,105,78,0 duplicate(HntTrap2) 81-3 -1,0,0 -job_hunte,105,79,0 duplicate(HntTrap2) 81-4 -1,0,0 -job_hunte,110,78,0 duplicate(HntTrap2) 82-1 -1,0,0 -job_hunte,110,79,0 duplicate(HntTrap2) 82-2 -1,0,0 -job_hunte,111,78,0 duplicate(HntTrap2) 82-3 -1,0,0 -job_hunte,111,79,0 duplicate(HntTrap2) 82-4 -1,0,0 -job_hunte,114,80,0 duplicate(HntTrap2) 83-1 -1,0,0 -job_hunte,114,81,0 duplicate(HntTrap2) 83-2 -1,0,0 -job_hunte,115,80,0 duplicate(HntTrap2) 83-3 -1,0,0 -job_hunte,115,81,0 duplicate(HntTrap2) 83-4 -1,0,0 -job_hunte,124,78,0 duplicate(HntTrap2) 84-1 -1,0,0 -job_hunte,124,79,0 duplicate(HntTrap2) 84-2 -1,0,0 -job_hunte,125,78,0 duplicate(HntTrap2) 84-3 -1,0,0 -job_hunte,125,79,0 duplicate(HntTrap2) 84-4 -1,0,0 -job_hunte,126,82,0 duplicate(HntTrap2) 85-1 -1,0,0 -job_hunte,126,83,0 duplicate(HntTrap2) 85-2 -1,0,0 -job_hunte,127,82,0 duplicate(HntTrap2) 85-3 -1,0,0 -job_hunte,127,83,0 duplicate(HntTrap2) 85-4 -1,0,0 -job_hunte,52,68,0 duplicate(HntTrap2) 86-1 -1,0,1 -job_hunte,53,68,0 duplicate(HntTrap2) 86-2 -1,0,1 -job_hunte,52,66,0 duplicate(HntTrap2) 86-3 -1,0,0 -job_hunte,53,66,0 duplicate(HntTrap2) 86-4 -1,0,0 -job_hunte,54,70,0 duplicate(HntTrap2) 87-1 -1,0,1 -job_hunte,55,70,0 duplicate(HntTrap2) 87-2 -1,0,1 -job_hunte,54,68,0 duplicate(HntTrap2) 87-3 -1,0,0 -job_hunte,55,68,0 duplicate(HntTrap2) 87-4 -1,0,0 -job_hunte,59,66,0 duplicate(HntTrap2) 88-1 -1,1,0 -job_hunte,59,67,0 duplicate(HntTrap2) 88-2 -1,1,0 -job_hunte,61,67,0 duplicate(HntTrap2) 88-3 -1,0,0 -job_hunte,61,66,0 duplicate(HntTrap2) 88-4 -1,0,0 -job_hunte,68,68,0 duplicate(HntTrap2) 89-1 -1,0,1 -job_hunte,69,68,0 duplicate(HntTrap2) 89-2 -1,0,1 -job_hunte,68,66,0 duplicate(HntTrap2) 89-3 -1,0,0 -job_hunte,69,66,0 duplicate(HntTrap2) 89-4 -1,0,0 -job_hunte,76,66,0 duplicate(HntTrap2) 90-1 -1,0,0 -job_hunte,76,67,0 duplicate(HntTrap2) 90-2 -1,0,0 -job_hunte,77,66,0 duplicate(HntTrap2) 90-3 -1,0,0 -job_hunte,77,67,0 duplicate(HntTrap2) 90-4 -1,0,0 -job_hunte,82,68,0 duplicate(HntTrap2) 91-1 -1,0,0 -job_hunte,82,69,0 duplicate(HntTrap2) 91-2 -1,0,0 -job_hunte,83,68,0 duplicate(HntTrap2) 91-3 -1,0,0 -job_hunte,83,69,0 duplicate(HntTrap2) 91-4 -1,0,0 -job_hunte,96,66,0 duplicate(HntTrap2) 92-1 -1,0,0 -job_hunte,96,67,0 duplicate(HntTrap2) 92-2 -1,0,0 -job_hunte,97,66,0 duplicate(HntTrap2) 92-3 -1,0,0 -job_hunte,97,67,0 duplicate(HntTrap2) 92-4 -1,0,0 -job_hunte,100,68,0 duplicate(HntTrap2) 93-1 -1,0,0 -job_hunte,100,69,0 duplicate(HntTrap2) 93-2 -1,0,0 -job_hunte,101,68,0 duplicate(HntTrap2) 93-3 -1,0,0 -job_hunte,101,69,0 duplicate(HntTrap2) 93-4 -1,0,0 -job_hunte,107,66,0 duplicate(HntTrap2) 94-1 -1,1,0 -job_hunte,107,67,0 duplicate(HntTrap2) 94-2 -1,1,0 -job_hunte,109,67,0 duplicate(HntTrap2) 94-3 -1,0,0 -job_hunte,109,66,0 duplicate(HntTrap2) 94-4 -1,0,0 -job_hunte,117,69,0 duplicate(HntTrap2) 95-1 -1,1,0 -job_hunte,117,68,0 duplicate(HntTrap2) 95-2 -1,1,0 -job_hunte,119,69,0 duplicate(HntTrap2) 95-3 -1,0,0 -job_hunte,119,68,0 duplicate(HntTrap2) 95-4 -1,0,0 -job_hunte,124,66,0 duplicate(HntTrap2) 96-1 -1,0,0 -job_hunte,124,67,0 duplicate(HntTrap2) 96-2 -1,0,0 -job_hunte,125,66,0 duplicate(HntTrap2) 96-3 -1,0,0 -job_hunte,125,67,0 duplicate(HntTrap2) 96-4 -1,0,0 -job_hunte,126,70,0 duplicate(HntTrap2) 97-1 -1,0,0 -job_hunte,126,71,0 duplicate(HntTrap2) 97-2 -1,0,0 -job_hunte,127,70,0 duplicate(HntTrap2) 97-3 -1,0,0 -job_hunte,127,71,0 duplicate(HntTrap2) 97-4 -1,0,0 +job_hunte,76,94,0 duplicate(HntTrap2) 58-1 FAKE_NPC,0,0 +job_hunte,76,95,0 duplicate(HntTrap2) 58-2 FAKE_NPC,0,0 +job_hunte,77,94,0 duplicate(HntTrap2) 58-3 FAKE_NPC,0,0 +job_hunte,77,95,0 duplicate(HntTrap2) 58-4 FAKE_NPC,0,0 +job_hunte,78,92,0 duplicate(HntTrap2) 59-1 FAKE_NPC,0,0 +job_hunte,78,93,0 duplicate(HntTrap2) 59-2 FAKE_NPC,0,0 +job_hunte,79,92,0 duplicate(HntTrap2) 59-3 FAKE_NPC,0,0 +job_hunte,79,93,0 duplicate(HntTrap2) 59-4 FAKE_NPC,0,0 +job_hunte,86,92,0 duplicate(HntTrap2) 60-1 FAKE_NPC,0,0 +job_hunte,86,93,0 duplicate(HntTrap2) 60-2 FAKE_NPC,0,0 +job_hunte,87,92,0 duplicate(HntTrap2) 60-3 FAKE_NPC,0,0 +job_hunte,87,93,0 duplicate(HntTrap2) 60-4 FAKE_NPC,0,0 +job_hunte,90,96,0 duplicate(HntTrap2) 61-1 FAKE_NPC,0,0 +job_hunte,90,97,0 duplicate(HntTrap2) 61-2 FAKE_NPC,0,0 +job_hunte,91,96,0 duplicate(HntTrap2) 61-3 FAKE_NPC,0,0 +job_hunte,91,97,0 duplicate(HntTrap2) 61-4 FAKE_NPC,0,0 +job_hunte,99,95,0 duplicate(HntTrap2) 62-1 FAKE_NPC,1,0 +job_hunte,99,94,0 duplicate(HntTrap2) 62-2 FAKE_NPC,1,0 +job_hunte,101,94,0 duplicate(HntTrap2) 62-3 FAKE_NPC,0,1 +job_hunte,100,93,0 duplicate(HntTrap2) 62-4 FAKE_NPC,0,0 +job_hunte,100,92,0 duplicate(HntTrap2) 63-1 FAKE_NPC,0,0 +job_hunte,101,92,0 duplicate(HntTrap2) 63-2 FAKE_NPC,0,0 +job_hunte,102,98,0 duplicate(HntTrap2) 64-1 FAKE_NPC,0,0 +job_hunte,102,99,0 duplicate(HntTrap2) 64-2 FAKE_NPC,0,0 +job_hunte,103,98,0 duplicate(HntTrap2) 64-3 FAKE_NPC,0,0 +job_hunte,103,99,0 duplicate(HntTrap2) 64-4 FAKE_NPC,0,0 +job_hunte,102,90,0 duplicate(HntTrap2) 65-1 FAKE_NPC,0,0 +job_hunte,102,91,0 duplicate(HntTrap2) 65-2 FAKE_NPC,0,0 +job_hunte,103,90,0 duplicate(HntTrap2) 65-3 FAKE_NPC,0,0 +job_hunte,103,91,0 duplicate(HntTrap2) 65-4 FAKE_NPC,0,0 +job_hunte,114,96,0 duplicate(HntTrap2) 66-1 FAKE_NPC,0,0 +job_hunte,114,97,0 duplicate(HntTrap2) 66-2 FAKE_NPC,0,0 +job_hunte,115,96,0 duplicate(HntTrap2) 66-3 FAKE_NPC,0,0 +job_hunte,115,97,0 duplicate(HntTrap2) 66-4 FAKE_NPC,0,0 +job_hunte,112,90,0 duplicate(HntTrap2) 67-1 FAKE_NPC,0,0 +job_hunte,112,91,0 duplicate(HntTrap2) 67-2 FAKE_NPC,0,0 +job_hunte,113,90,0 duplicate(HntTrap2) 67-3 FAKE_NPC,0,0 +job_hunte,113,91,0 duplicate(HntTrap2) 67-4 FAKE_NPC,0,0 +job_hunte,125,97,0 duplicate(HntTrap2) 68-1 FAKE_NPC,1,0 +job_hunte,125,96,0 duplicate(HntTrap2) 68-2 FAKE_NPC,1,0 +job_hunte,127,96,0 duplicate(HntTrap2) 68-3 FAKE_NPC,0,0 +job_hunte,127,97,0 duplicate(HntTrap2) 68-4 FAKE_NPC,0,0 +job_hunte,52,86,0 duplicate(HntTrap2) 69-1 FAKE_NPC,0,0 +job_hunte,52,87,0 duplicate(HntTrap2) 69-2 FAKE_NPC,0,0 +job_hunte,53,86,0 duplicate(HntTrap2) 69-3 FAKE_NPC,0,0 +job_hunte,53,87,0 duplicate(HntTrap2) 69-4 FAKE_NPC,0,0 +job_hunte,66,88,0 duplicate(HntTrap2) 70-1 FAKE_NPC,0,0 +job_hunte,66,89,0 duplicate(HntTrap2) 70-2 FAKE_NPC,0,0 +job_hunte,67,88,0 duplicate(HntTrap2) 70-3 FAKE_NPC,0,0 +job_hunte,67,89,0 duplicate(HntTrap2) 70-4 FAKE_NPC,0,0 +job_hunte,114,84,0 duplicate(HntTrap2) 71-1 FAKE_NPC,0,0 +job_hunte,114,85,0 duplicate(HntTrap2) 71-2 FAKE_NPC,0,0 +job_hunte,115,84,0 duplicate(HntTrap2) 71-3 FAKE_NPC,0,0 +job_hunte,115,85,0 duplicate(HntTrap2) 71-4 FAKE_NPC,0,0 +job_hunte,126,86,0 duplicate(HntTrap2) 72-1 FAKE_NPC,0,0 +job_hunte,126,87,0 duplicate(HntTrap2) 72-2 FAKE_NPC,0,0 +job_hunte,127,86,0 duplicate(HntTrap2) 72-3 FAKE_NPC,0,0 +job_hunte,127,87,0 duplicate(HntTrap2) 72-4 FAKE_NPC,0,0 +job_hunte,54,80,0 duplicate(HntTrap2) 73-1 FAKE_NPC,0,1 +job_hunte,55,80,0 duplicate(HntTrap2) 73-2 FAKE_NPC,0,1 +job_hunte,55,80,0 duplicate(HntTrap2) 73-3 FAKE_NPC,0,0 +job_hunte,55,78,0 duplicate(HntTrap2) 73-4 FAKE_NPC,0,0 +job_hunte,64,82,0 duplicate(HntTrap2) 74-1 FAKE_NPC,0,1 +job_hunte,65,82,0 duplicate(HntTrap2) 74-2 FAKE_NPC,0,1 +job_hunte,64,80,0 duplicate(HntTrap2) 74-3 FAKE_NPC,0,0 +job_hunte,65,80,0 duplicate(HntTrap2) 74-4 FAKE_NPC,0,0 +job_hunte,66,78,0 duplicate(HntTrap2) 75-1 FAKE_NPC,0,0 +job_hunte,66,79,0 duplicate(HntTrap2) 75-2 FAKE_NPC,0,0 +job_hunte,67,78,0 duplicate(HntTrap2) 75-3 FAKE_NPC,0,0 +job_hunte,67,79,0 duplicate(HntTrap2) 75-4 FAKE_NPC,0,0 +job_hunte,74,78,0 duplicate(HntTrap2) 76-1 FAKE_NPC,0,0 +job_hunte,74,79,0 duplicate(HntTrap2) 76-2 FAKE_NPC,0,0 +job_hunte,75,78,0 duplicate(HntTrap2) 76-3 FAKE_NPC,0,0 +job_hunte,75,79,0 duplicate(HntTrap2) 76-4 FAKE_NPC,0,0 +job_hunte,78,80,0 duplicate(HntTrap2) 77-1 FAKE_NPC,0,0 +job_hunte,78,81,0 duplicate(HntTrap2) 77-2 FAKE_NPC,0,0 +job_hunte,79,80,0 duplicate(HntTrap2) 77-3 FAKE_NPC,0,0 +job_hunte,79,81,0 duplicate(HntTrap2) 77-4 FAKE_NPC,0,0 +job_hunte,82,78,0 duplicate(HntTrap2) 78-1 FAKE_NPC,0,0 +job_hunte,82,79,0 duplicate(HntTrap2) 78-2 FAKE_NPC,0,0 +job_hunte,83,78,0 duplicate(HntTrap2) 78-3 FAKE_NPC,0,0 +job_hunte,83,79,0 duplicate(HntTrap2) 78-4 FAKE_NPC,0,0 +job_hunte,94,78,0 duplicate(HntTrap2) 79-1 FAKE_NPC,0,0 +job_hunte,94,79,0 duplicate(HntTrap2) 79-2 FAKE_NPC,0,0 +job_hunte,95,78,0 duplicate(HntTrap2) 79-3 FAKE_NPC,0,0 +job_hunte,95,79,0 duplicate(HntTrap2) 79-4 FAKE_NPC,0,0 +job_hunte,101,80,0 duplicate(HntTrap2) 80-1 FAKE_NPC,1,0 +job_hunte,101,81,0 duplicate(HntTrap2) 80-2 FAKE_NPC,1,0 +job_hunte,103,81,0 duplicate(HntTrap2) 80-3 FAKE_NPC,0,0 +job_hunte,103,80,0 duplicate(HntTrap2) 80-4 FAKE_NPC,0,0 +job_hunte,104,78,0 duplicate(HntTrap2) 81-1 FAKE_NPC,0,0 +job_hunte,104,79,0 duplicate(HntTrap2) 81-2 FAKE_NPC,0,0 +job_hunte,105,78,0 duplicate(HntTrap2) 81-3 FAKE_NPC,0,0 +job_hunte,105,79,0 duplicate(HntTrap2) 81-4 FAKE_NPC,0,0 +job_hunte,110,78,0 duplicate(HntTrap2) 82-1 FAKE_NPC,0,0 +job_hunte,110,79,0 duplicate(HntTrap2) 82-2 FAKE_NPC,0,0 +job_hunte,111,78,0 duplicate(HntTrap2) 82-3 FAKE_NPC,0,0 +job_hunte,111,79,0 duplicate(HntTrap2) 82-4 FAKE_NPC,0,0 +job_hunte,114,80,0 duplicate(HntTrap2) 83-1 FAKE_NPC,0,0 +job_hunte,114,81,0 duplicate(HntTrap2) 83-2 FAKE_NPC,0,0 +job_hunte,115,80,0 duplicate(HntTrap2) 83-3 FAKE_NPC,0,0 +job_hunte,115,81,0 duplicate(HntTrap2) 83-4 FAKE_NPC,0,0 +job_hunte,124,78,0 duplicate(HntTrap2) 84-1 FAKE_NPC,0,0 +job_hunte,124,79,0 duplicate(HntTrap2) 84-2 FAKE_NPC,0,0 +job_hunte,125,78,0 duplicate(HntTrap2) 84-3 FAKE_NPC,0,0 +job_hunte,125,79,0 duplicate(HntTrap2) 84-4 FAKE_NPC,0,0 +job_hunte,126,82,0 duplicate(HntTrap2) 85-1 FAKE_NPC,0,0 +job_hunte,126,83,0 duplicate(HntTrap2) 85-2 FAKE_NPC,0,0 +job_hunte,127,82,0 duplicate(HntTrap2) 85-3 FAKE_NPC,0,0 +job_hunte,127,83,0 duplicate(HntTrap2) 85-4 FAKE_NPC,0,0 +job_hunte,52,68,0 duplicate(HntTrap2) 86-1 FAKE_NPC,0,1 +job_hunte,53,68,0 duplicate(HntTrap2) 86-2 FAKE_NPC,0,1 +job_hunte,52,66,0 duplicate(HntTrap2) 86-3 FAKE_NPC,0,0 +job_hunte,53,66,0 duplicate(HntTrap2) 86-4 FAKE_NPC,0,0 +job_hunte,54,70,0 duplicate(HntTrap2) 87-1 FAKE_NPC,0,1 +job_hunte,55,70,0 duplicate(HntTrap2) 87-2 FAKE_NPC,0,1 +job_hunte,54,68,0 duplicate(HntTrap2) 87-3 FAKE_NPC,0,0 +job_hunte,55,68,0 duplicate(HntTrap2) 87-4 FAKE_NPC,0,0 +job_hunte,59,66,0 duplicate(HntTrap2) 88-1 FAKE_NPC,1,0 +job_hunte,59,67,0 duplicate(HntTrap2) 88-2 FAKE_NPC,1,0 +job_hunte,61,67,0 duplicate(HntTrap2) 88-3 FAKE_NPC,0,0 +job_hunte,61,66,0 duplicate(HntTrap2) 88-4 FAKE_NPC,0,0 +job_hunte,68,68,0 duplicate(HntTrap2) 89-1 FAKE_NPC,0,1 +job_hunte,69,68,0 duplicate(HntTrap2) 89-2 FAKE_NPC,0,1 +job_hunte,68,66,0 duplicate(HntTrap2) 89-3 FAKE_NPC,0,0 +job_hunte,69,66,0 duplicate(HntTrap2) 89-4 FAKE_NPC,0,0 +job_hunte,76,66,0 duplicate(HntTrap2) 90-1 FAKE_NPC,0,0 +job_hunte,76,67,0 duplicate(HntTrap2) 90-2 FAKE_NPC,0,0 +job_hunte,77,66,0 duplicate(HntTrap2) 90-3 FAKE_NPC,0,0 +job_hunte,77,67,0 duplicate(HntTrap2) 90-4 FAKE_NPC,0,0 +job_hunte,82,68,0 duplicate(HntTrap2) 91-1 FAKE_NPC,0,0 +job_hunte,82,69,0 duplicate(HntTrap2) 91-2 FAKE_NPC,0,0 +job_hunte,83,68,0 duplicate(HntTrap2) 91-3 FAKE_NPC,0,0 +job_hunte,83,69,0 duplicate(HntTrap2) 91-4 FAKE_NPC,0,0 +job_hunte,96,66,0 duplicate(HntTrap2) 92-1 FAKE_NPC,0,0 +job_hunte,96,67,0 duplicate(HntTrap2) 92-2 FAKE_NPC,0,0 +job_hunte,97,66,0 duplicate(HntTrap2) 92-3 FAKE_NPC,0,0 +job_hunte,97,67,0 duplicate(HntTrap2) 92-4 FAKE_NPC,0,0 +job_hunte,100,68,0 duplicate(HntTrap2) 93-1 FAKE_NPC,0,0 +job_hunte,100,69,0 duplicate(HntTrap2) 93-2 FAKE_NPC,0,0 +job_hunte,101,68,0 duplicate(HntTrap2) 93-3 FAKE_NPC,0,0 +job_hunte,101,69,0 duplicate(HntTrap2) 93-4 FAKE_NPC,0,0 +job_hunte,107,66,0 duplicate(HntTrap2) 94-1 FAKE_NPC,1,0 +job_hunte,107,67,0 duplicate(HntTrap2) 94-2 FAKE_NPC,1,0 +job_hunte,109,67,0 duplicate(HntTrap2) 94-3 FAKE_NPC,0,0 +job_hunte,109,66,0 duplicate(HntTrap2) 94-4 FAKE_NPC,0,0 +job_hunte,117,69,0 duplicate(HntTrap2) 95-1 FAKE_NPC,1,0 +job_hunte,117,68,0 duplicate(HntTrap2) 95-2 FAKE_NPC,1,0 +job_hunte,119,69,0 duplicate(HntTrap2) 95-3 FAKE_NPC,0,0 +job_hunte,119,68,0 duplicate(HntTrap2) 95-4 FAKE_NPC,0,0 +job_hunte,124,66,0 duplicate(HntTrap2) 96-1 FAKE_NPC,0,0 +job_hunte,124,67,0 duplicate(HntTrap2) 96-2 FAKE_NPC,0,0 +job_hunte,125,66,0 duplicate(HntTrap2) 96-3 FAKE_NPC,0,0 +job_hunte,125,67,0 duplicate(HntTrap2) 96-4 FAKE_NPC,0,0 +job_hunte,126,70,0 duplicate(HntTrap2) 97-1 FAKE_NPC,0,0 +job_hunte,126,71,0 duplicate(HntTrap2) 97-2 FAKE_NPC,0,0 +job_hunte,127,70,0 duplicate(HntTrap2) 97-3 FAKE_NPC,0,0 +job_hunte,127,71,0 duplicate(HntTrap2) 97-4 FAKE_NPC,0,0 diff --git a/npc/jobs/2-1/knight.txt b/npc/jobs/2-1/knight.txt index d0308d771..462e45fc0 100644 --- a/npc/jobs/2-1/knight.txt +++ b/npc/jobs/2-1/knight.txt @@ -1245,7 +1245,7 @@ OnStart: end; } -- script Knight1 -1,{ +- script Knight1 FAKE_NPC,{ OnInit: disablenpc "Knight1"; end; @@ -1309,7 +1309,7 @@ OnTimer182000: } //== Test 2 part 2 ========================================= -- script Knight2 -1,{ +- script Knight2 FAKE_NPC,{ OnInit: disablenpc "Knight2"; end; @@ -1372,7 +1372,7 @@ OnTimer182000: } //== Test 2 part 3 ========================================= -- script Knight3 -1,{ +- script Knight3 FAKE_NPC,{ OnInit: disablenpc "Knight3"; end; diff --git a/npc/jobs/2-1/priest.txt b/npc/jobs/2-1/priest.txt index cb5cf7fe1..de36e2791 100644 --- a/npc/jobs/2-1/priest.txt +++ b/npc/jobs/2-1/priest.txt @@ -1166,7 +1166,7 @@ OnTimer302000: end; } -- script Z_C#prst -1,{ +- script Z_C#prst FAKE_NPC,{ end; OnMyMobDead: @@ -1174,7 +1174,7 @@ OnMyMobDead: end; } -job_prist,24,44,0 script Zombie Info -1,1,1,{ +job_prist,24,44,0 script Zombie Info FAKE_NPC,1,1,{ OnTouch: if (BaseJob == Job_Priest) { mes "[Father Peter]"; @@ -1201,7 +1201,7 @@ OnTouch: end; } -job_prist,24,52,0 script Zombie1_1 -1,14,1,{ +job_prist,24,52,0 script Zombie1_1 FAKE_NPC,14,1,{ OnInit: disablenpc "Zombie1_1"; end; @@ -1222,7 +1222,7 @@ OnDisable: end; } -job_prist,21,62,0 script Zombie2_1 -1,17,1,{ +job_prist,21,62,0 script Zombie2_1 FAKE_NPC,17,1,{ OnInit: disablenpc "Zombie2_1"; end; @@ -1243,7 +1243,7 @@ OnDisable: end; } -job_prist,24,72,0 script Zombie3_1 -1,14,1,{ +job_prist,24,72,0 script Zombie3_1 FAKE_NPC,14,1,{ OnInit: disablenpc "Zombie3_1"; end; @@ -1264,7 +1264,7 @@ OnDisable: end; } -job_prist,21,82,0 script Zombie4_1 -1,17,1,{ +job_prist,21,82,0 script Zombie4_1 FAKE_NPC,17,1,{ OnInit: disablenpc "Zombie4_1"; end; @@ -1284,7 +1284,7 @@ OnDisable: disablenpc "Zombie4_1"; } -job_prist,24,92,0 script Zombie5_1 -1,14,1,{ +job_prist,24,92,0 script Zombie5_1 FAKE_NPC,14,1,{ OnInit: disablenpc "Zombie5_1"; end; @@ -1651,7 +1651,7 @@ OnDisable: end; } -job_prist,90,55,0 script Mummy1_1 -1,15,1,{ +job_prist,90,55,0 script Mummy1_1 FAKE_NPC,15,1,{ OnInit: disablenpc "Mummy1_1"; end; @@ -1672,7 +1672,7 @@ OnDisable: end; } -job_prist,90,70,0 script Mummy2_1 -1,15,1,{ +job_prist,90,70,0 script Mummy2_1 FAKE_NPC,15,1,{ OnInit: disablenpc "Mummy2_1"; end; @@ -1693,7 +1693,7 @@ OnDisable: end; } -job_prist,90,85,0 script Mummy3_1 -1,15,1,{ +job_prist,90,85,0 script Mummy3_1 FAKE_NPC,15,1,{ OnInit: disablenpc "Mummy3_1"; end; diff --git a/npc/jobs/2-1/wizard.txt b/npc/jobs/2-1/wizard.txt index 59b268ec4..86f87249c 100644 --- a/npc/jobs/2-1/wizard.txt +++ b/npc/jobs/2-1/wizard.txt @@ -1260,7 +1260,7 @@ OnTimer63000: end; } -job_wiz,114,169,0 script Room of Water#Failed -1,16,16,{ +job_wiz,114,169,0 script Room of Water#Failed FAKE_NPC,16,16,{ OnInit: disablenpc "Room of Water#Failed"; end; @@ -1437,7 +1437,7 @@ OnTimer63000: end; } -job_wiz,116,97,0 script Room of Earth#Failed -1,16,16,{ +job_wiz,116,97,0 script Room of Earth#Failed FAKE_NPC,16,16,{ OnInit: disablenpc "Room of Earth#Failed"; end; @@ -1617,7 +1617,7 @@ OnTimer123000: donpcevent "Arena Assistant::OnStart"; } -job_wiz,46,99,0 script Room of Fire#Failed -1,16,16,{ +job_wiz,46,99,0 script Room of Fire#Failed FAKE_NPC,16,16,{ OnInit: disablenpc "Room of Fire#Failed"; end; diff --git a/npc/jobs/2-2/crusader.txt b/npc/jobs/2-2/crusader.txt index fc97351d5..6097e65cd 100644 --- a/npc/jobs/2-2/crusader.txt +++ b/npc/jobs/2-2/crusader.txt @@ -978,7 +978,7 @@ prt_castle,35,151,5 script Patron Knight 4_M_CRU,{ //== Actual tests ========================================== //- Endurance Test - -job_cru,1,1,1 script Summoner#cr1 -1,{ +job_cru,1,1,1 script Summoner#cr1 FAKE_NPC,{ OnTimer300000: donpcevent "Summoner#cr1::OnReset"; end; @@ -1039,7 +1039,7 @@ OnDead: end; } -job_cru,1,2,1 script Summoner#cr2 -1,{ +job_cru,1,2,1 script Summoner#cr2 FAKE_NPC,{ OnTimer345000: donpcevent "Summoner#cr2::OnReset"; end; @@ -1090,7 +1090,7 @@ OnDead: end; } -job_cru,1,3,1 script Summoner#cr3 -1,{ +job_cru,1,3,1 script Summoner#cr3 FAKE_NPC,{ OnTimer345000: donpcevent "Summoner#cr3::OnReset"; end; @@ -1143,7 +1143,7 @@ OnDead: end; } -job_cru,1,4,1 script Summoner#cr4 -1,{ +job_cru,1,4,1 script Summoner#cr4 FAKE_NPC,{ OnTimer345000: donpcevent "Summoner#cr4::OnReset"; end; @@ -1248,7 +1248,7 @@ OnStart: end; } -job_cru,168,17,0 script Zombie Guide -1,2,2,{ +job_cru,168,17,0 script Zombie Guide FAKE_NPC,2,2,{ OnTouch: mes "[Bliant Piyord]"; mes "Go forth and defeat all"; @@ -1263,7 +1263,7 @@ OnTouch: close; } -job_cru,2,1,1 script Monster Summon#cr0 -1,{ +job_cru,2,1,1 script Monster Summon#cr0 FAKE_NPC,{ OnInit: disablenpc "Monster Summon#cr0"; end; @@ -1315,7 +1315,7 @@ OnReset: end; } -job_cru,168,45,0 script Monster Summon#cr1 -1,15,1,{ +job_cru,168,45,0 script Monster Summon#cr1 FAKE_NPC,15,1,{ OnInit: disablenpc "Monster Summon#cr1"; end; @@ -1334,7 +1334,7 @@ OnEnd: end; } -job_cru,168,80,0 script Monster Summon#cr2 -1,15,1,{ +job_cru,168,80,0 script Monster Summon#cr2 FAKE_NPC,15,1,{ OnInit: disablenpc "Monster Summon#cr2"; end; @@ -1353,7 +1353,7 @@ OnEnd: end; } -job_cru,165,115,0 script Monster Summon#cr3 -1,15,1,{ +job_cru,165,115,0 script Monster Summon#cr3 FAKE_NPC,15,1,{ OnInit: disablenpc "Monster Summon#cr3"; end; @@ -1372,7 +1372,7 @@ OnEnd: end; } -job_cru,168,150,0 script Monster Summon#cr4 -1,15,1,{ +job_cru,168,150,0 script Monster Summon#cr4 FAKE_NPC,15,1,{ OnInit: disablenpc "Monster Summon#cr4"; end; @@ -1400,7 +1400,7 @@ OnEnd: } -job_cru,168,150,0 script Monster Summon#cr4-a -1,{ +job_cru,168,150,0 script Monster Summon#cr4-a FAKE_NPC,{ OnDead: donpcevent "Monster Summon#cr5::OnStart"; end; @@ -1432,7 +1432,7 @@ OnEnd: end; } -job_cru,2,2,1 script Monster Summon#cr6 -1,{ +job_cru,2,2,1 script Monster Summon#cr6 FAKE_NPC,{ OnTimer241000: areawarp "job_cru",160,14,175,178,"job_cru",24,169; donpcevent "Monster Summon#cr0::OnReset"; diff --git a/npc/jobs/2-2/dancer.txt b/npc/jobs/2-2/dancer.txt index 4ceb4ca99..2957071bd 100644 --- a/npc/jobs/2-2/dancer.txt +++ b/npc/jobs/2-2/dancer.txt @@ -955,7 +955,7 @@ job_duncer,32,154,1 script Waiting Room#click 1_F_01,{ } //== Dance Timer =========================================== -job_duncer,69,105,0 script Bijou#dance_timer -1,{ +job_duncer,69,105,0 script Bijou#dance_timer FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1253,7 +1253,7 @@ OnTimer89000: end; } -job_duncer,69,110,0 script dance#return -1,1,4,{ +job_duncer,69,110,0 script dance#return FAKE_NPC,1,4,{ OnTouch: mapannounce "job_duncer","Good! Well done! Go back to Bijou!",bc_map; DANC_Q = 9; @@ -1273,7 +1273,7 @@ OnEnable: end; } -job_duncer,66,110,0 script dance#return#2 -1,1,1,{ +job_duncer,66,110,0 script dance#return#2 FAKE_NPC,1,1,{ OnTouch: DANC_Q = 9; warp "comodo",188,162; @@ -1289,7 +1289,7 @@ OnEnable: end; } -job_duncer,72,110,0 script dance#return#3 -1,1,1,{ +job_duncer,72,110,0 script dance#return#3 FAKE_NPC,1,1,{ OnTouch: DANC_Q = 9; warp "comodo",188,162; @@ -1307,7 +1307,7 @@ OnEnable: } //== Dance Move Triggers =================================== -- script dancestep::StepTrigger -1,1,1,{ +- script dancestep::StepTrigger FAKE_NPC,1,1,{ OnTouch: donpcevent "Backdancer#1::OnOmg"; mapannounce "job_duncer"," " + strcharinfo(0) + ", you lack rhythm... Your timing was too late!",bc_map; @@ -1318,13 +1318,13 @@ OnTouch: end; } -job_duncer,69,113,0 duplicate(StepTrigger) dance#up -1,1,1 -job_duncer,69,107,0 duplicate(StepTrigger) dance#down -1,1,1 -job_duncer,66,110,0 duplicate(StepTrigger) dance#left -1,1,1 -job_duncer,72,110,0 duplicate(StepTrigger) dance#right -1,1,1 -job_duncer,69,110,0 duplicate(StepTrigger) dance#cen -1,1,1 +job_duncer,69,113,0 duplicate(StepTrigger) dance#up FAKE_NPC,1,1 +job_duncer,69,107,0 duplicate(StepTrigger) dance#down FAKE_NPC,1,1 +job_duncer,66,110,0 duplicate(StepTrigger) dance#left FAKE_NPC,1,1 +job_duncer,72,110,0 duplicate(StepTrigger) dance#right FAKE_NPC,1,1 +job_duncer,69,110,0 duplicate(StepTrigger) dance#cen FAKE_NPC,1,1 -job_duncer,10,10,0 script dance#poring -1,{ +job_duncer,10,10,0 script dance#poring FAKE_NPC,{ OnEnable: monster "job_duncer",69,106,"Poring",1002,1,"dance#poring::OnMyMobDead"; end; diff --git a/npc/jobs/2-2/monk.txt b/npc/jobs/2-2/monk.txt index b7ec9ffaa..02bc712e9 100644 --- a/npc/jobs/2-2/monk.txt +++ b/npc/jobs/2-2/monk.txt @@ -2015,38 +2015,38 @@ OnTouch: } } -monk_test,82,384,0 script Trap#t_monk1_1::MonkTrap -1,{ +monk_test,82,384,0 script Trap#t_monk1_1::MonkTrap FAKE_NPC,{ OnTouch: mapannounce "monk_test",""+ strcharinfo(0) + ", you're trapped. You will be returned.",bc_map; warp "monk_test",387,387; end; } -monk_test,83,384,0 duplicate(MonkTrap) Trap#t_monk1_2 -1 -monk_test,82,385,0 duplicate(MonkTrap) Trap#t_monk1_3 -1 -monk_test,83,385,0 duplicate(MonkTrap) Trap#t_monk1_4 -1 -monk_test,38,388,0 duplicate(MonkTrap) Trap#t_monk2_1 -1,0,1 -monk_test,39,388,0 duplicate(MonkTrap) Trap#t_monk2_2 -1,0,1 -monk_test,38,386,0 duplicate(MonkTrap) Trap#t_monk2_3 -1 -monk_test,39,386,0 duplicate(MonkTrap) Trap#t_monk2_4 -1 -monk_test,11,158,0 duplicate(MonkTrap) Trap#t_monk3_1 -1,1,0 -monk_test,11,159,0 duplicate(MonkTrap) Trap#t_monk3_2 -1,1,0 -monk_test,13,159,0 duplicate(MonkTrap) Trap#t_monk3_3 -1 -monk_test,13,158,0 duplicate(MonkTrap) Trap#t_monk3_4 -1 -monk_test,11,30,0 duplicate(MonkTrap) Trap#t_monk4_1 -1,3,0 -monk_test,11,31,0 duplicate(MonkTrap) Trap#t_monk4_2 -1,3,0 -monk_test,15,30,0 duplicate(MonkTrap) Trap#t_monk4_3 -1 -monk_test,15,31,0 duplicate(MonkTrap) Trap#t_monk4_4 -1 -monk_test,70,12,0 duplicate(MonkTrap) Trap#t_monk5_1 -1,0,1 -monk_test,71,12,0 duplicate(MonkTrap) Trap#t_monk5_2 -1,0,1 -monk_test,70,10,0 duplicate(MonkTrap) Trap#t_monk5_3 -1 -monk_test,71,10,0 duplicate(MonkTrap) Trap#t_monk5_4 -1 -monk_test,186,11,0 duplicate(MonkTrap) Trap#t_monk6_1 -1,2,3 -monk_test,189,11,0 duplicate(MonkTrap) Trap#t_monk6_2 -1,0,3 -monk_test,387,43,0 duplicate(MonkTrap) Trap#t_monk7_1 -1,1,0 -monk_test,387,42,0 duplicate(MonkTrap) Trap#t_monk7_2 -1,1,0 -monk_test,389,43,0 duplicate(MonkTrap) Trap#t_monk7_3 -1 -monk_test,389,42,0 duplicate(MonkTrap) Trap#t_monk7_4 -1 +monk_test,83,384,0 duplicate(MonkTrap) Trap#t_monk1_2 FAKE_NPC +monk_test,82,385,0 duplicate(MonkTrap) Trap#t_monk1_3 FAKE_NPC +monk_test,83,385,0 duplicate(MonkTrap) Trap#t_monk1_4 FAKE_NPC +monk_test,38,388,0 duplicate(MonkTrap) Trap#t_monk2_1 FAKE_NPC,0,1 +monk_test,39,388,0 duplicate(MonkTrap) Trap#t_monk2_2 FAKE_NPC,0,1 +monk_test,38,386,0 duplicate(MonkTrap) Trap#t_monk2_3 FAKE_NPC +monk_test,39,386,0 duplicate(MonkTrap) Trap#t_monk2_4 FAKE_NPC +monk_test,11,158,0 duplicate(MonkTrap) Trap#t_monk3_1 FAKE_NPC,1,0 +monk_test,11,159,0 duplicate(MonkTrap) Trap#t_monk3_2 FAKE_NPC,1,0 +monk_test,13,159,0 duplicate(MonkTrap) Trap#t_monk3_3 FAKE_NPC +monk_test,13,158,0 duplicate(MonkTrap) Trap#t_monk3_4 FAKE_NPC +monk_test,11,30,0 duplicate(MonkTrap) Trap#t_monk4_1 FAKE_NPC,3,0 +monk_test,11,31,0 duplicate(MonkTrap) Trap#t_monk4_2 FAKE_NPC,3,0 +monk_test,15,30,0 duplicate(MonkTrap) Trap#t_monk4_3 FAKE_NPC +monk_test,15,31,0 duplicate(MonkTrap) Trap#t_monk4_4 FAKE_NPC +monk_test,70,12,0 duplicate(MonkTrap) Trap#t_monk5_1 FAKE_NPC,0,1 +monk_test,71,12,0 duplicate(MonkTrap) Trap#t_monk5_2 FAKE_NPC,0,1 +monk_test,70,10,0 duplicate(MonkTrap) Trap#t_monk5_3 FAKE_NPC +monk_test,71,10,0 duplicate(MonkTrap) Trap#t_monk5_4 FAKE_NPC +monk_test,186,11,0 duplicate(MonkTrap) Trap#t_monk6_1 FAKE_NPC,2,3 +monk_test,189,11,0 duplicate(MonkTrap) Trap#t_monk6_2 FAKE_NPC,0,3 +monk_test,387,43,0 duplicate(MonkTrap) Trap#t_monk7_1 FAKE_NPC,1,0 +monk_test,387,42,0 duplicate(MonkTrap) Trap#t_monk7_2 FAKE_NPC,1,0 +monk_test,389,43,0 duplicate(MonkTrap) Trap#t_monk7_3 FAKE_NPC +monk_test,389,42,0 duplicate(MonkTrap) Trap#t_monk7_4 FAKE_NPC job_monk,225,180,1 script Hyunmoo#mk 4_M_ORIENT02,{ if ((countitem(Mushroom_Of_Thief_1) > 0 || countitem(Mushroom_Of_Thief_2) > 0) && (countitem(Mushroom_Of_Thief_1) < 30 || countitem(Mushroom_Of_Thief_2) < 30)) { @@ -2284,7 +2284,7 @@ monk_test,82,85,1 script Proctor#mk 4_F_SISTER,{ } } -monk_test,144,277,0 script mob_monk#1_1 -1,1,1,{ +monk_test,144,277,0 script mob_monk#1_1 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",144,277,"Zombie",1015,1; monster "monk_test",144,277,"Zombie",1015,1; @@ -2297,7 +2297,7 @@ OnDisable: end; } -monk_test,134,291,0 script mob_monk#1_2 -1,1,1,{ +monk_test,134,291,0 script mob_monk#1_2 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",134,291,"Zombie",1015,1; monster "monk_test",134,291,"Zombie",1015,1; @@ -2310,7 +2310,7 @@ OnDisable: end; } -monk_test,157,284,0 script mob_monk#1_3 -1,1,1,{ +monk_test,157,284,0 script mob_monk#1_3 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",157,284,"Mummy",1041,1; end; @@ -2320,7 +2320,7 @@ OnDisable: end; } -monk_test,156,261,0 script mob_monk#1_4 -1,1,1,{ +monk_test,156,261,0 script mob_monk#1_4 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",156,261,"Mummy",1041,1; end; @@ -2330,7 +2330,7 @@ OnDisable: end; } -monk_test,149,268,0 script mob_monk#1_5 -1,1,1,{ +monk_test,149,268,0 script mob_monk#1_5 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",149,268,"Zombie",1015,1; monster "monk_test",149,268,"Zombie",1015,1; @@ -2391,7 +2391,7 @@ monk_test,88,91,1 script Proctor#mk2 1_M_HOF,{ } } -monk_test,140,181,0 script mob_monk#2_1 -1,1,1,{ +monk_test,140,181,0 script mob_monk#2_1 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",140,181,"Zombie",1015,1; monster "monk_test",140,181,"Zombie",1015,1; @@ -2404,7 +2404,7 @@ OnDisable: end; } -monk_test,150,164,0 script mob_monk#2_2 -1,1,1,{ +monk_test,150,164,0 script mob_monk#2_2 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",150,164,"Zombie",1015,1; monster "monk_test",150,164,"Zombie",1015,1; @@ -2417,7 +2417,7 @@ OnDisable: end; } -monk_test,158,192,0 script mob_monk#2_3 -1,1,1,{ +monk_test,158,192,0 script mob_monk#2_3 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",158,192,"Mummy",1041,1; end; @@ -2427,7 +2427,7 @@ OnDisable: end; } -monk_test,165,186,0 script mob_monk#2_4 -1,1,1,{ +monk_test,165,186,0 script mob_monk#2_4 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",165,186,"Mummy",1041,1; end; @@ -2437,7 +2437,7 @@ OnDisable: end; } -monk_test,162,182,0 script mob_monk#2_5 -1,1,1,{ +monk_test,162,182,0 script mob_monk#2_5 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",162,182,"Zombie",1015,1; monster "monk_test",162,182,"Zombie",1015,1; @@ -2498,7 +2498,7 @@ monk_test,95,85,1 script Proctor#btl#3 1_F_PRIEST,{ } } -monk_test,249,277,0 script mob_monk#3_1 -1,1,1,{ +monk_test,249,277,0 script mob_monk#3_1 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",249,277,"Zombie",1015,1; monster "monk_test",249,277,"Zombie",1015,1; @@ -2510,7 +2510,7 @@ OnDisable: killmonsterall "monk_test"; } -monk_test,231,296,0 script mob_monk#3_2 -1,1,1,{ +monk_test,231,296,0 script mob_monk#3_2 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",231,296,"Zombie",1015,1; monster "monk_test",231,296,"Zombie",1015,1; @@ -2523,7 +2523,7 @@ OnDisable: end; } -monk_test,264,292,0 script mob_monk#3_3 -1,1,1,{ +monk_test,264,292,0 script mob_monk#3_3 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",264,292,"Mummy",1041,1; end; @@ -2533,7 +2533,7 @@ OnDisable: end; } -monk_test,252,284,0 script mob_monk#3_4 -1,1,1,{ +monk_test,252,284,0 script mob_monk#3_4 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",252,284,"Mummy",1041,1; end; @@ -2543,7 +2543,7 @@ OnDisable: end; } -monk_test,257,285,0 script mob_monk#3_5 -1,1,1,{ +monk_test,257,285,0 script mob_monk#3_5 FAKE_NPC,1,1,{ OnTouch: monster "monk_test",257,285,"Zombie",1015,1; monster "monk_test",257,285,"Zombie",1015,1; @@ -2573,7 +2573,7 @@ OnTouch: end; } -monk_test,3,3,0 script resetter#monk -1,{ +monk_test,3,3,0 script resetter#monk FAKE_NPC,{ OnTimer500000: donpcevent "mob_monk#1_1::OnDisable"; donpcevent "mob_monk#1_2::OnDisable"; diff --git a/npc/jobs/2-2/rogue.txt b/npc/jobs/2-2/rogue.txt index 9181492cc..deee51ab5 100644 --- a/npc/jobs/2-2/rogue.txt +++ b/npc/jobs/2-2/rogue.txt @@ -1325,7 +1325,7 @@ OnTouch: } } -in_rogue,200,389,0 script gen_ro#1 -1,3,3,{ +in_rogue,200,389,0 script gen_ro#1 FAKE_NPC,3,3,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",200,389,"Zombie",1015,1,"gen_ro#1::OnMyMobDead"; @@ -1346,7 +1346,7 @@ OnMyMobDead: end; } -in_rogue,100,389,0 script gen_ro#2 -1,3,3,{ +in_rogue,100,389,0 script gen_ro#2 FAKE_NPC,3,3,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",100,389,"Mummy",1041,1,"gen_ro#2::OnMyMobDead"; @@ -1364,7 +1364,7 @@ OnMyMobDead: end; } -in_rogue,150,389,0 script gen_ro#3 -1,3,3,{ +in_rogue,150,389,0 script gen_ro#3 FAKE_NPC,3,3,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",145,389,"Zombie",1015,1,"gen_ro#3::OnMyMobDead"; @@ -1383,7 +1383,7 @@ OnMyMobDead: end; } -in_rogue,250,389,0 script gen_ro#4 -1,3,3,{ +in_rogue,250,389,0 script gen_ro#4 FAKE_NPC,3,3,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",200,389,"Abysmal Knight",1219,1,"gen_ro#4::OnMyMobDead"; @@ -1673,7 +1673,7 @@ OnTouch: end; } -in_rogue,15,184,0 script mob_rogue#1 -1,8,1,{ +in_rogue,15,184,0 script mob_rogue#1 FAKE_NPC,8,1,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",14,187,"Zombie",1015,1,"mob_rogue#1::OnMyMobDead"; @@ -1695,7 +1695,7 @@ OnMyMobDead: end; } -in_rogue,15,273,0 script mob_rogue#2 -1,8,1,{ +in_rogue,15,273,0 script mob_rogue#2 FAKE_NPC,8,1,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",15,276,"Mummy",1041,1,"mob_rogue#2::OnMyMobDead"; @@ -1714,7 +1714,7 @@ OnMyMobDead: end; } -in_rogue,15,333,0 script mob_rogue#3 -1,8,1,{ +in_rogue,15,333,0 script mob_rogue#3 FAKE_NPC,8,1,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",15,336,"Zombie",1015,1,"mob_rogue#3::OnMyMobDead"; @@ -1737,7 +1737,7 @@ OnMyMobDead: end; } -in_rogue,39,341,0 script mob_rogue#4 -1,1,8,{ +in_rogue,39,341,0 script mob_rogue#4 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",39,341,"Mummy",1041,1,"mob_rogue#4::OnMyMobDead"; @@ -1757,7 +1757,7 @@ OnMyMobDead: end; } -in_rogue,102,334,0 script mob_rogue#5 -1,1,4,{ +in_rogue,102,334,0 script mob_rogue#5 FAKE_NPC,1,4,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",92,334,"Khalitzburg",1132,1,"mob_rogue#5::OnMyMobDead"; @@ -1777,7 +1777,7 @@ OnMyMobDead: end; } -in_rogue,58,309,0 script mob_rogue#6 -1,4,1,{ +in_rogue,58,309,0 script mob_rogue#6 FAKE_NPC,4,1,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",57,301,"Khalitzburg",1132,1,"mob_rogue#6::OnMyMobDead"; @@ -1797,7 +1797,7 @@ OnMyMobDead: end; } -in_rogue,101,264,0 script mob_rogue#7 -1,5,5,{ +in_rogue,101,264,0 script mob_rogue#7 FAKE_NPC,5,5,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",101,264,"Abysmal Knight",1219,1,"mob_rogue#7::OnMyMobDead"; @@ -1815,7 +1815,7 @@ OnMyMobDead: end; } -in_rogue,140,312,0 script mob_rogue#8 -1,5,5,{ +in_rogue,140,312,0 script mob_rogue#8 FAKE_NPC,5,5,{ OnTouch: if (BaseJob == Job_Thief) monster "in_rogue",140,312,"Abysmal Knight",1219,1,"mob_rogue#8::OnMyMobDead"; @@ -1831,7 +1831,7 @@ OnMyMobDead: end; } -in_rogue,139,246,0 script mob_rogue#9 -1,4,4,{ +in_rogue,139,246,0 script mob_rogue#9 FAKE_NPC,4,4,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",139,246,"Zombie",1015,1,"mob_rogue#9::OnMyMobDead"; @@ -1853,7 +1853,7 @@ OnMyMobDead: end; } -in_rogue,197,249,0 script mob_rogue#10 -1,1,8,{ +in_rogue,197,249,0 script mob_rogue#10 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",176,211,"Ghoul",1036,1,"mob_rogue#10::OnMyMobDead"; @@ -1888,7 +1888,7 @@ OnMyMobDead: end; } -in_rogue,96,205,0 script mob_rogue#11 -1,1,8,{ +in_rogue,96,205,0 script mob_rogue#11 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { donpcevent "mob_rogue#7::OnDisable"; @@ -1901,7 +1901,7 @@ OnTouch: end; } -in_rogue,86,187,0 script mob_rogue#12 -1,1,8,{ +in_rogue,86,187,0 script mob_rogue#12 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",90,187,"Mummy",1041,1,"mob_rogue#12::OnMyMobDead"; @@ -1920,7 +1920,7 @@ OnMyMobDead: end; } -in_rogue,223,187,0 script mob_rogue#13 -1,1,8,{ +in_rogue,223,187,0 script mob_rogue#13 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",236,186,"Abysmal Knight",1219,1,"mob_rogue#13::OnMyMobDead"; @@ -1940,7 +1940,7 @@ OnMyMobDead: end; } -in_rogue,233,207,0 script mob_rogue#14 -1,8,3,{ +in_rogue,233,207,0 script mob_rogue#14 FAKE_NPC,8,3,{ OnTouch: if (BaseJob == Job_Thief) donpcevent "mob_rogue#13::OnDisable"; @@ -1949,7 +1949,7 @@ OnTouch: end; } -in_rogue,244,319,0 script mob_rogue#15 -1,1,8,{ +in_rogue,244,319,0 script mob_rogue#15 FAKE_NPC,1,8,{ OnTouch: if (BaseJob == Job_Thief) { monster "in_rogue",240,319,"Mummy",1041,1,"mob_rogue#15::OnMyMobDead"; @@ -1971,7 +1971,7 @@ OnMyMobDead: end; } -in_rogue,334,319,0 script mob_rogue#16 -1,8,8,{ +in_rogue,334,319,0 script mob_rogue#16 FAKE_NPC,8,8,{ OnTouch: if (BaseJob == Job_Thief) donpcevent "mob_rogue#15::OnDisable"; @@ -1980,7 +1980,7 @@ OnTouch: end; } -in_rogue,3,3,0 script resetter#rogue -1,{ +in_rogue,3,3,0 script resetter#rogue FAKE_NPC,{ OnTimer500000: donpcevent "mob_rogue#1::OnDisable"; donpcevent "mob_rogue#2::OnDisable"; diff --git a/npc/jobs/2-2/sage.txt b/npc/jobs/2-2/sage.txt index b3a7ac4b7..32c4d172e 100644 --- a/npc/jobs/2-2/sage.txt +++ b/npc/jobs/2-2/sage.txt @@ -2686,7 +2686,7 @@ OnTimer186000: end; } -- script Arena#2 -1,{ +- script Arena#2 FAKE_NPC,{ OnInit: disablenpc "Arena#2"; end; @@ -2789,7 +2789,7 @@ OnTimer186000: end; } -- script Arena#Doorkeeper -1,{ +- script Arena#Doorkeeper FAKE_NPC,{ OnInit: disablenpc "Arena#Doorkeeper"; end; @@ -2855,7 +2855,7 @@ OnTimer63000: end; } -- script Arena#3 -1,{ +- script Arena#3 FAKE_NPC,{ OnInit: disablenpc "Arena#3"; end; @@ -2872,7 +2872,7 @@ OnDisable: end; } -- script Test Helper#sg -1,{ +- script Test Helper#sg FAKE_NPC,{ OnInit: disablenpc "Test Helper#sg"; end; diff --git a/npc/jobs/2-2e/SoulLinker.txt b/npc/jobs/2-2e/SoulLinker.txt index 65febe33e..bc5c3c96c 100644 --- a/npc/jobs/2-2e/SoulLinker.txt +++ b/npc/jobs/2-2e/SoulLinker.txt @@ -349,7 +349,7 @@ OnInit: end; } -job_soul,30,31,0 script Maia#link2::SLTester -1,3,3,{ +job_soul,30,31,0 script Maia#link2::SLTester FAKE_NPC,3,3,{ OnTouch: if (Class == Job_Taekwon) { if (JobLevel < 40) { diff --git a/npc/kafras/dts_warper.txt b/npc/kafras/dts_warper.txt index 69ac93228..74c2c910c 100644 --- a/npc/kafras/dts_warper.txt +++ b/npc/kafras/dts_warper.txt @@ -53,7 +53,7 @@ //= "Vote Globalvar Girl#yuno" NPC at the end of the file. //========================================================================= -einbroch,246,70,0 script Vote Timer#ein -1,{ +einbroch,246,70,0 script Vote Timer#ein FAKE_NPC,{ OnInit: if ($dts) { $dts = 0; @@ -225,7 +225,7 @@ OnTimer60000: end; } -einbroch,245,71,0 script Vote Timer2#ein -1,{ +einbroch,245,71,0 script Vote Timer2#ein FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -246,7 +246,7 @@ OnTimer60000: end; } -einbroch,246,71,0 script Vote Timer3#ein -1,{ +einbroch,246,71,0 script Vote Timer3#ein FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -268,7 +268,7 @@ OnTimer60000: end; } -einbroch,247,71,0 script Vote Timer4#ein -1,{ +einbroch,247,71,0 script Vote Timer4#ein FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1104,7 +1104,7 @@ alberta,114,70,6 duplicate(VotingStaffCCE) Cool Event Staff#alb 4_M_ZONDAMAN aldebaran,138,102,6 duplicate(VotingStaffCCE) Cool Event Staff#alde 4_M_ZONDAMAN lighthalzen,154,60,6 duplicate(VotingStaffCCE) Cool Event Staff#lhz 4_M_ZONDAMAN -yuno,103,225,0 script Scrutiny Association#5 -1,{ +yuno,103,225,0 script Scrutiny Association#5 FAKE_NPC,{ OnInit: initnpctimer; end; @@ -1122,7 +1122,7 @@ OnTimer7200000: end; } -einbroch,248,71,0 script Scrutiny Association#6 -1,{ +einbroch,248,71,0 script Scrutiny Association#6 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1145,7 +1145,7 @@ OnTimer15000: end; } -einbroch,249,71,0 script Scrutiny Association#7 -1,{ +einbroch,249,71,0 script Scrutiny Association#7 FAKE_NPC,{ OnEnable: initnpctimer; end; diff --git a/npc/kafras/kafras.txt b/npc/kafras/kafras.txt index 8774f8245..adffbfb8e 100644 --- a/npc/kafras/kafras.txt +++ b/npc/kafras/kafras.txt @@ -410,7 +410,7 @@ cmd_fild07,136,134,4 script Kafra Employee::kaf_cmd_fild07 4_F_KAFRA7,{ } //== Izlude ================================================ -- script ::kaf_izlude -1,{ +- script ::kaf_izlude FAKE_NPC,{ cutin "kafra_01",2; callfunc "F_KafSet"; mes "[Kafra Employee]"; diff --git a/npc/merchants/coin_exchange.txt b/npc/merchants/coin_exchange.txt index 57b0c4afb..392a18c0b 100644 --- a/npc/merchants/coin_exchange.txt +++ b/npc/merchants/coin_exchange.txt @@ -36,7 +36,7 @@ //========================================================================= //== Manuk & Splendide ===================================== -- script ::merchant_13_2 -1,{ +- script ::merchant_13_2 FAKE_NPC,{ .@n$ = "["+strnpcinfo(1)+"]"; mes .@n$; if (isequipped(2782) && ep13_2_rhea == 100) { diff --git a/npc/merchants/hd_refine.txt b/npc/merchants/hd_refine.txt index 2200f85be..e1a9bae7e 100644 --- a/npc/merchants/hd_refine.txt +++ b/npc/merchants/hd_refine.txt @@ -38,7 +38,7 @@ //========================================================================= //== Blacksmith Mighty Hammer (+7~9) ======================= -- script ::MightyHammer -1,{ +- script ::MightyHammer FAKE_NPC,{ disable_items; mes "[Blacksmith Mighty Hammer]"; mes "Unlike others, I am a blacksmith who refines a very limited number of items."; @@ -178,7 +178,7 @@ lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 4_M_DWARF //payon,174,133,4 duplicate(MightyHammer) Mighty Hammer#im 4_M_DWARF //== Basta (+10 and up) ==================================== -- script ::Basta -1,{ +- script ::Basta FAKE_NPC,{ disable_items; mes "[Basta]"; mes "I'm the best Blacksmith in the whole world, Basta."; diff --git a/npc/merchants/icecream.txt b/npc/merchants/icecream.txt index ba05d4f94..f1ad519d9 100644 --- a/npc/merchants/icecream.txt +++ b/npc/merchants/icecream.txt @@ -35,7 +35,7 @@ //= 1.5 //========================================================================= -- script Ice Cream Maker::IceCreamer -1,{ +- script Ice Cream Maker::IceCreamer FAKE_NPC,{ mes "[Ice Cream Maker]"; mes "Fresh Ice Cream made with snow from Lutie!"; mes "Enjoy it now, it won't be on sale for long!"; diff --git a/npc/merchants/shops.txt b/npc/merchants/shops.txt index d93baa57c..d2745217d 100644 --- a/npc/merchants/shops.txt +++ b/npc/merchants/shops.txt @@ -46,7 +46,7 @@ //================= Description =========================================== //= Town shop NPCs. //================= Current Version ======================================= -//= 3.5.1 +//= 3.6 //========================================================================= //== Alberta =============================================== @@ -1292,39 +1292,6 @@ OnInit: sellitem Venom_Knife; } -moc_ruins,91,128,4 trader Tool Dealer#moc1 4_F_04,{ -OnInit: - sellitem Arrow; - sellitem Spectacles; - sellitem Red_Potion; - sellitem Orange_Potion; - sellitem Yellow_Potion; - sellitem White_Potion; - sellitem Green_Potion; - sellitem Center_Potion; - sellitem Awakening_Potion; - sellitem Wing_Of_Fly; - sellitem Wing_Of_Butterfly; - sellitem Booby_Trap; -} - -moc_ruins,114,63,6 trader Tool Dealer#moc2 4W_M_03,{ -OnInit: - sellitem Arrow; - sellitem Spectacles; - sellitem Red_Potion; - sellitem Orange_Potion; - sellitem Yellow_Potion; - sellitem White_Potion; - sellitem Green_Potion; - sellitem Center_Potion; - sellitem Awakening_Potion; - sellitem Wing_Of_Fly; - sellitem Wing_Of_Butterfly; - sellitem Booby_Trap; - sellitem Luxury_Sunglasses; -} - moc_ruins,93,53,2 trader Item Collector#moc1 4_M_03,{ OnInit: sellitem Scell; @@ -1386,23 +1353,6 @@ OnInit: moc_ruins,90,149,6 trader Trader#moc5 4W_M_03,{ OnInit: sellitem Banana; - sellitem Banana; - sellitem Banana; - sellitem Banana; - sellitem Banana; - sellitem Banana; -} - -moc_ruins,118,170,4 trader Pet Groomer#moc 4_M_TELEPORTER,{ -OnInit: - sellitem Pet_Food; - sellitem Pet_Incubator; - sellitem Backpack; - sellitem Rocker_Glasses; - sellitem Mojji; - sellitem Vital_Flower_; - sellitem Flame_Gemstone; - sellitem Bun_; } morocc_in,141,67,0 trader Weapon Dealer#moc1 1_M_MERCHANT,{ @@ -1699,30 +1649,6 @@ OnInit: sellitem Glass_Bead; } -prontera,218,211,4 trader Pet Groomer#prt 4_M_TELEPORTER,{ -OnInit: - sellitem Pet_Food; - sellitem Pet_Incubator; - sellitem Backpack; - sellitem Rocker_Glasses; - sellitem Mojji; - sellitem Flame_Gemstone; - sellitem Vital_Flower_; - sellitem Vital_Flower; - sellitem Bun_; - sellitem Damp_Darkness; - sellitem Small_Snow_Flower; - sellitem Fresh_Plant; - sellitem Big_Cell; - sellitem Apple_Pudding; - sellitem Mystic_Stone; - sellitem Flavored_Alcohol; - sellitem Grilled_Rice_Cake; - sellitem Fish_With_Blue_Back; - sellitem Pumpkin_Pie_; - sellitem Traditional_Cookie; -} - prontera,248,153,0 trader Doll Supplier#prt 4_M_03,{ OnInit: sellitem Stuffed_Doll; @@ -1752,18 +1678,6 @@ OnInit: sellitem Chain; } -prt_fild05,290,221,2 trader Tool Dealer#prt 4_M_01,{ -OnInit: - sellitem Arrow; - sellitem Spectacles; - sellitem Red_Potion; - sellitem Orange_Potion; - sellitem Green_Potion; - sellitem Center_Potion; - sellitem Wing_Of_Fly; - sellitem Wing_Of_Butterfly; -} - prt_in,211,169,0 trader Wedding Shop Dealer#prt 1_F_LIBRARYGIRL,{ OnInit: sellitem Bunch_Of_Flowers; @@ -1773,23 +1687,6 @@ OnInit: sellitem Tuxedo; } -prt_in,126,76,0 trader Tool Dealer#prt1 1_M_INNKEEPER,{ -OnInit: - sellitem Spectacles; - sellitem Arrow; - sellitem Red_Potion; - sellitem Orange_Potion; - sellitem Yellow_Potion; - sellitem White_Potion; - sellitem Green_Potion; - sellitem Center_Potion; - sellitem Awakening_Potion; - sellitem Wing_Of_Fly; - sellitem Wing_Of_Butterfly; - sellitem Booby_Trap; - sellitem One_Eyed_Glass; -} - prt_in,172,130,0 trader Weapon Dealer#prt 1_M_JOBGUIDER,{ OnInit: sellitem Arrow; @@ -2041,28 +1938,11 @@ OnInit: } //== Cooking Addition ====================================== -prontera,156,212,1 trader Chef Assistant#prt 8_F_GIRL,{ -OnInit: - sellitem Plain_Sauce; - sellitem Red_Spice; - sellitem Pot; - sellitem Bread; -} - payon,206,119,5 trader Chef Assistant#pay 4_M_ORIENT02,{ OnInit: sellitem Hot_Sauce; } -moc_ruins,115,123,5 trader Chef Assistant#moc 4_M_04,{ -OnInit: - sellitem Hot_Sauce; - sellitem Sweet_Sauce; - sellitem Plain_Sauce; - sellitem Red_Spice; - sellitem Yellow_Spice; -} - geffen,196,111,3 trader Chef Assistant#gef 4_M_03,{ OnInit: sellitem Pot; diff --git a/npc/merchants/socket_enchant.txt b/npc/merchants/socket_enchant.txt index aa43e2a9b..8b2a3275b 100644 --- a/npc/merchants/socket_enchant.txt +++ b/npc/merchants/socket_enchant.txt @@ -43,7 +43,7 @@ //= 2.0a //========================================================================= -- script Seiyablem#dummy::SocketEnchant -1,{ +- script Seiyablem#dummy::SocketEnchant FAKE_NPC,{ if (checkweight(Knife,1) == 0) { mes "- Wait a minute !! -"; @@ -354,7 +354,7 @@ lhz_in02,281,35,5 duplicate(SocketEnchant) Seiyablem#lhz 4_M_02 prt_in,33,70,5 duplicate(SocketEnchant) Seiyablem#prt 4_M_02 morocc,51,41,4 duplicate(SocketEnchant) Seiyablem#moc 4_M_02 -- script Young Man#dummy::SocketMan -1,{ +- script Young Man#dummy::SocketMan FAKE_NPC,{ mes "[Young Man]"; mes "I'm considering becoming a Slotting Engineer."; mes "It's a new field where you can add Slots to equipment, and it'd be cool if I can work in such a lucrative career."; diff --git a/npc/merchants/socket_enchant2.txt b/npc/merchants/socket_enchant2.txt index 42f910477..fc2c2d636 100644 --- a/npc/merchants/socket_enchant2.txt +++ b/npc/merchants/socket_enchant2.txt @@ -34,7 +34,7 @@ //= 1.1a //========================================================================= -- script Leablem#dummy::SocketEnchant2 -1,{ +- script Leablem#dummy::SocketEnchant2 FAKE_NPC,{ if (checkweight(Knife,1) == 0) { mes "- Wait a minute !! -"; diff --git a/npc/other/arena/arena_aco.txt b/npc/other/arena/arena_aco.txt index f9ed8c714..ebbfb975e 100644 --- a/npc/other/arena/arena_aco.txt +++ b/npc/other/arena/arena_aco.txt @@ -65,7 +65,7 @@ OnStart: end; } -force_5-1,100,12,0 script arena#aco -1,5,5,{ +force_5-1,100,12,0 script arena#aco FAKE_NPC,5,5,{ OnTouch: donpcevent "allkill#aco::OnEnable"; if (BaseJob == Job_Acolyte) { @@ -78,7 +78,7 @@ OnTouch: end; } -- script arena_aco1 -1,{ +- script arena_aco1 FAKE_NPC,{ OnStart: donpcevent "Trocco#aco1::OnEnable"; end; @@ -129,7 +129,7 @@ OnReset_09: end; } -- script Trocco#aco1 -1,{ +- script Trocco#aco1 FAKE_NPC,{ OnEnable: initnpctimer; $@arn_1 = gettimetick(2); @@ -290,14 +290,14 @@ On09_End: end; } -force_5-1,40,26,0 script force_01start#aco -1,1,1,{ +force_5-1,40,26,0 script force_01start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "force_01mob#aco::OnEnable"; disablenpc "force_01start#aco"; end; } -- script force_01mob#aco -1,{ +- script force_01mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On01_Start"; monster "force_5-1",22,29,"Red Plant",1078,1,"force_01mob#aco::OnMyMobDead"; @@ -319,7 +319,7 @@ OnMyMobDead: end; } -force_5-1,25,69,0 script force_02start#aco -1,1,1,{ +force_5-1,25,69,0 script force_02start#aco FAKE_NPC,1,1,{ OnTouch: $@drop_gate = 0; donpcevent "force_02mob#aco::OnEnable"; @@ -327,7 +327,7 @@ OnTouch: end; } -- script force_02mob#aco -1,{ +- script force_02mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On02_Start"; areamonster "force_5-1",22,69,29,130,"Drops",1572,20,"force_02mob#aco::OnMyMobDead"; @@ -346,13 +346,13 @@ OnMyMobDead: end; } -force_5-1,25,159,0 script force_03start#aco -1,1,1,{ +force_5-1,25,159,0 script force_03start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "force_03mob#aco::OnEnable"; disablenpc "force_03start#aco"; } -- script force_03mob#aco -1,{ +- script force_03mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On03_Start"; areamonster "force_5-1",9,157,41,190,"Zombie",1394,10,"force_03mob#aco::OnMyMobDead"; @@ -370,7 +370,7 @@ OnMyMobDead: end; } -force_5-1,69,174,0 script force_04start#aco -1,1,1,{ +force_5-1,69,174,0 script force_04start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "Trocco#aco1::On04_Start"; donpcevent "arena_aco1::OnReset_04"; @@ -379,14 +379,14 @@ OnTouch: end; } -force_5-1,159,174,0 script force_05start#aco -1,1,1,{ +force_5-1,159,174,0 script force_05start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "force_05mob#aco::OnEnable"; disablenpc "force_05start#aco"; end; } -- script force_05mob#aco -1,{ +- script force_05mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On05_Start"; areamonster "force_5-1",159,157,187,190,"Orc Zombie",1463,8,"force_05mob#aco::OnMyMobDead"; @@ -404,7 +404,7 @@ OnMyMobDead: end; } -force_5-1,174,130,0 script force_06start#aco -1,1,1,{ +force_5-1,174,130,0 script force_06start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "force_06mob#aco::OnEnable"; donpcevent "arena_aco1::OnReset_06"; @@ -412,7 +412,7 @@ OnTouch: end; } -- script force_06mob#aco -1,{ +- script force_06mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On06_Start"; monster "force_5-1",170,124,"Hydra",1579,1,"force_06mob#aco::OnMyMobDead"; @@ -442,13 +442,13 @@ OnMyMobDead: end; } -force_5-1,174,40,0 script force_07start#aco -1,1,1,{ +force_5-1,174,40,0 script force_07start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "force_07mob#aco::OnEnable"; disablenpc "force_07start#aco"; } -- script force_07mob#aco -1,{ +- script force_07mob#aco FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco1::On07_Start"; monster "force_5-1",170,32,"Archer Skeleton",1420,1,"force_07mob#aco::OnMyMobDead"; @@ -470,7 +470,7 @@ OnMyMobDead: end; } -force_5-1,132,26,0 script force_08start#aco -1,1,1,{ +force_5-1,132,26,0 script force_08start#aco FAKE_NPC,1,1,{ OnTouch: percentheal 50,50; donpcevent "Trocco#aco1::On08_Start"; @@ -479,7 +479,7 @@ OnTouch: end; } -force_5-1,99,82,0 script force_09start#aco -1,1,1,{ +force_5-1,99,82,0 script force_09start#aco FAKE_NPC,1,1,{ OnTouch: donpcevent "Trocco#aco1::On09_Start"; donpcevent "force_09mob#aco::OnEnable"; @@ -487,7 +487,7 @@ OnTouch: end; } -- script force_09mob#aco -1,{ +- script force_09mob#aco FAKE_NPC,{ OnEnable: monster "force_5-1",rand(88,111),rand(89,110),"Zombie Prisoner",1480,1,"force_09mob#aco::OnMyMobDead"; monster "force_5-1",rand(88,111),rand(89,110),"Skel Prisoner",1479,1,"force_09mob#aco::OnMyMobDead"; @@ -507,7 +507,7 @@ OnMyMobDead: end; } -- script arena_aco2 -1,{ +- script arena_aco2 FAKE_NPC,{ OnStart: donpcevent "Trocco#aco2::OnEnable"; end; @@ -557,7 +557,7 @@ OnReset_09: enablenpc "force_exit#aco"; } -- script Trocco#aco2 -1,{ +- script Trocco#aco2 FAKE_NPC,{ OnEnable: initnpctimer; $@arn_1 = gettimetick(2); @@ -726,14 +726,14 @@ On09_End: end; } -force_5-1,40,26,0 script force_01start#pri -1,1,1,{ +force_5-1,40,26,0 script force_01start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "force_01mob#pri::OnEnable"; disablenpc "force_01start#pri"; end; } -- script force_01mob#pri -1,{ +- script force_01mob#pri FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco2::On01_Start"; areamonster "force_5-1",13,9,38,41,"Zombie",1394,10,"force_01mob#pri::OnMyMobDead"; @@ -751,7 +751,7 @@ OnMyMobDead: end; } -force_5-1,25,69,0 script force_02start#pri -1,1,1,{ +force_5-1,25,69,0 script force_02start#pri FAKE_NPC,1,1,{ OnTouch: if (BaseLevel < 70) { donpcevent "force_02mob#pri::OnOn1"; @@ -763,7 +763,7 @@ OnTouch: end; } -- script force_02mob#pri -1,{ +- script force_02mob#pri FAKE_NPC,{ OnOn1: donpcevent "Trocco#aco2::On02_Start"; areamonster "force_5-1",22,69,29,130,"Orc Skeleton",1462,5,"force_02mob#pri::OnMyMobDead"; @@ -786,14 +786,14 @@ OnMyMobDead: end; } -force_5-1,25,159,0 script force_03start#pri -1,1,1,{ +force_5-1,25,159,0 script force_03start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "force_03mob#pri::OnEnable"; disablenpc "force_03start#pri"; end; } -- script force_03mob#pri -1,{ +- script force_03mob#pri FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco2::On03_Start"; areamonster "force_5-1",14,163,37,185,"Red Plant",1078,5,"force_03mob#pri::OnMyMobDead"; @@ -811,7 +811,7 @@ OnMyMobDead: end; } -force_5-1,69,174,0 script force_04start#pri -1,1,1,{ +force_5-1,69,174,0 script force_04start#pri FAKE_NPC,1,1,{ OnTouch: if (BaseLevel < 90) { donpcevent "force_04mob#pri::OnOn1"; @@ -823,7 +823,7 @@ OnTouch: end; } -- script force_04mob#pri -1,{ +- script force_04mob#pri FAKE_NPC,{ OnOn1: donpcevent "Trocco#aco2::On04_Start"; monster "force_5-1",rand(71,130),rand(170,178),"Evil Druid",1435,1,"force_04mob#pri::OnMyMobDead"; @@ -852,7 +852,7 @@ OnMyMobDead: end; } -force_5-1,159,174,0 script force_05start#pri -1,1,1,{ +force_5-1,159,174,0 script force_05start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "force_05mob#pri::OnEnable"; if (BaseLevel < 70) { @@ -865,7 +865,7 @@ OnTouch: end; } -- script force_05ex#pri -1,{ +- script force_05ex#pri FAKE_NPC,{ OnOn1: areamonster "force_5-1",161,159,187,190,"Hydra",1579,10,"force_05ex#pri::OnMyMobDead"; end; @@ -882,7 +882,7 @@ OnMyMobDead: end; } -- script force_05mob#pri -1,{ +- script force_05mob#pri FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco2::On05_Start"; areamonster "force_5-1",161,159,187,190,"Gargoyle",1597,4,"force_05mob#pri::OnMyMobDead"; @@ -901,7 +901,7 @@ OnMyMobDead: end; } -force_5-1,174,130,0 script force_06start#pri -1,1,1,{ +force_5-1,174,130,0 script force_06start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "force_06ex#pri::OnEnable"; if (BaseLevel < 70) { @@ -917,7 +917,7 @@ OnTouch: end; } -- script force_06ex#pri -1,{ +- script force_06ex#pri FAKE_NPC,{ OnEnable: areamonster "force_5-1",170,67,178,131,"Permeter",1314,5,"force_06ex#pri::OnMyMobDead"; end; @@ -930,7 +930,7 @@ OnMyMobDead: end; } -- script force_06mob#pri -1,{ +- script force_06mob#pri FAKE_NPC,{ OnOn1: donpcevent "Trocco#aco2::On06_Start"; monster "force_5-1",rand(170,178),rand(67,131),"Khalitzburg",1438,1,"force_06mob#pri::OnMyMobDead"; @@ -959,14 +959,14 @@ OnMyMobDead: end; } -force_5-1,174,40,0 script force_07start#pri -1,1,1,{ +force_5-1,174,40,0 script force_07start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "force_07mob#pri::OnEnable"; disablenpc "force_07start#pri"; end; } -- script force_07mob#pri -1,{ +- script force_07mob#pri FAKE_NPC,{ OnEnable: donpcevent "Trocco#aco2::On07_Start"; monster "force_5-1",rand(160,188),rand(9,42),"Ancient Mummy",1522,1,"force_07mob#pri::OnMyMobDead"; @@ -984,7 +984,7 @@ OnMyMobDead: end; } -force_5-1,132,26,0 script force_08start#pri -1,1,1,{ +force_5-1,132,26,0 script force_08start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "Trocco#aco2::On08_Start"; donpcevent "arena_aco2::OnReset_08"; @@ -992,7 +992,7 @@ OnTouch: end; } -force_5-1,99,82,0 script force_09start#pri -1,1,1,{ +force_5-1,99,82,0 script force_09start#pri FAKE_NPC,1,1,{ OnTouch: donpcevent "Trocco#aco2::On09_Start"; if (BaseLevel < 70) { @@ -1011,7 +1011,7 @@ OnTouch: end; } -- script force_09mob#pri -1,{ +- script force_09mob#pri FAKE_NPC,{ OnOn1: monster "force_5-1",rand(88,111),rand(89,110),"Mimic",1474,1,"force_09mob#pri::OnMyMobDead"; end; @@ -1461,7 +1461,7 @@ prt_are_in,25,31,3 script Staff#aco-2 1_F_02,{ } } -- script #arn_timer_aco -1,{ +- script #arn_timer_aco FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1490,7 +1490,7 @@ OnStop: end; } -prt_are_in,22,29,0 script arn_warp_aco -1,20,20,{ +prt_are_in,22,29,0 script arn_warp_aco FAKE_NPC,20,20,{ OnInit: disablenpc "arn_warp_aco"; end; @@ -1509,7 +1509,7 @@ OnTouch: end; } -- script timer_aco2 -1,{ +- script timer_aco2 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1519,7 +1519,7 @@ OnStop: end; } -- script allkill#aco -1,{ +- script allkill#aco FAKE_NPC,{ OnEnable: donpcevent "force_01mob#aco::OnReset"; donpcevent "force_02mob#aco::OnReset"; @@ -1645,7 +1645,7 @@ OnInit: end; } -- script #Vendigos -1,{ +- script #Vendigos FAKE_NPC,{ OnLineRec_aco: mapannounce "arena_room","Vendigos: "+$arn_acotopn$+" has made a new record in the Arena Time Force Battle - Acolyte Mode. Congratulations!",bc_map,"0xFFFF00"; end; diff --git a/npc/other/arena/arena_lvl50.txt b/npc/other/arena/arena_lvl50.txt index d3dc54287..482e3fd58 100644 --- a/npc/other/arena/arena_lvl50.txt +++ b/npc/other/arena/arena_lvl50.txt @@ -206,7 +206,7 @@ On09_End: end; } -- script arena#50 -1,{ +- script arena#50 FAKE_NPC,{ OnReset_01: donpcevent "force_01ex#50::OnReset"; donpcevent "force_02start#50::OnEnable"; @@ -383,13 +383,13 @@ OnTouch: end; } -- script force_01start#50 -1,{ +- script force_01start#50 FAKE_NPC,{ OnEnable: donpcevent "force_01mob#50::OnEnable"; end; } -- script force_01ex#50 -1,{ +- script force_01ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_01ex#50::OnMyMobDead"; end; @@ -425,7 +425,7 @@ OnMyMobDead: end; } -- script force_01mob#50 -1,{ +- script force_01mob#50 FAKE_NPC,{ OnEnable: donpcevent "force_01ex#50::OnSummonMob1"; monster "force_1-1",25,25,"Smokie",1561,1,"force_01mob#50::OnMyMobDead"; @@ -447,13 +447,13 @@ OnMyMobDead: end; } -- script force_02start#50 -1,{ +- script force_02start#50 FAKE_NPC,{ OnEnable: donpcevent "force_02mob#50::OnSummonMob2"; end; } -- script force_02mob#50 -1,{ +- script force_02mob#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_02mob#50::OnMyMobDead"; end; @@ -476,13 +476,13 @@ OnMyMobDead: end; } -- script force_03start#50 -1,{ +- script force_03start#50 FAKE_NPC,{ OnEnable: donpcevent "force_03mob#50::OnEnable"; end; } -- script force_03ex#50 -1,{ +- script force_03ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_03ex#50::OnMyMobDead"; end; @@ -502,7 +502,7 @@ OnMyMobDead: end; } -- script force_03mob#50 -1,{ +- script force_03mob#50 FAKE_NPC,{ OnEnable: donpcevent "force_03ex#50::OnSummonMob_03"; monster "force_1-1",23,174,"Karakasa",1544,1,"force_03mob#50::OnMyMobDead"; @@ -525,13 +525,13 @@ OnMyMobDead: end; } -- script force_04start#50 -1,{ +- script force_04start#50 FAKE_NPC,{ OnEnable: donpcevent "force_04mob#50::OnEnable"; end; } -- script force_04ex#50 -1,{ +- script force_04ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_04ex#50::OnMyMobDead"; end; @@ -557,7 +557,7 @@ OnMyMobDead: end; } -- script force_04mob#50 -1,{ +- script force_04mob#50 FAKE_NPC,{ OnEnable: donpcevent "force_04ex#50::OnSummonMob_04"; monster "force_1-1",85,172,"Kobold",1547,1,"force_04mob#50::OnMyMobDead"; @@ -576,13 +576,13 @@ OnMyMobDead: end; } -- script force_05start#50 -1,{ +- script force_05start#50 FAKE_NPC,{ OnEnable: donpcevent "force_05mob#50::OnEnable"; end; } -- script force_05ex#50 -1,{ +- script force_05ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_05ex#50::OnMyMobDead"; end; @@ -602,7 +602,7 @@ OnMyMobDead: end; } -- script force_05mob#50 -1,{ +- script force_05mob#50 FAKE_NPC,{ OnEnable: monster "force_1-1",173,166,"Hydra",1579,1,"force_05mob#50::OnMyMobDead"; monster "force_1-1",171,170,"Hydra",1579,1,"force_05mob#50::OnMyMobDead"; @@ -626,13 +626,13 @@ OnMyMobDead: end; } -- script force_06start#50 -1,{ +- script force_06start#50 FAKE_NPC,{ OnEnable: donpcevent "force_06mob#50::OnEnable"; end; } -- script force_06ex#50 -1,{ +- script force_06ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_06ex#50::OnMyMobDead"; end; @@ -655,7 +655,7 @@ OnMyMobDead: end; } -- script force_06mob#50 -1,{ +- script force_06mob#50 FAKE_NPC,{ OnEnable: donpcevent "force_06ex#50::OnSummonMob_06"; monster "force_1-1",173,90,"Drops",1572,1,"force_06mob#50::OnMyMobDead"; @@ -677,13 +677,13 @@ OnMyMobDead: end; } -- script force_07start#50 -1,{ +- script force_07start#50 FAKE_NPC,{ OnEnable: donpcevent "force_07mob#50::OnEnable"; end; } -- script force_07ex#50 -1,{ +- script force_07ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_07ex#50::OnMyMobDead"; end; @@ -717,7 +717,7 @@ OnMyMobDead: end; } -- script force_07mob#50 -1,{ +- script force_07mob#50 FAKE_NPC,{ OnEnable: donpcevent "force_07ex#50::OnSummonMob_07"; monster "force_1-1",174,25,"Red Plant",1078,1,"force_07mob#50::OnMyMobDead"; @@ -735,25 +735,25 @@ OnMyMobDead: end; } -- script force_08start#50 -1,{ +- script force_08start#50 FAKE_NPC,{ OnEnable: donpcevent "force_08ex#50::OnEnable"; end; } -- script force_08ex#50 -1,{ +- script force_08ex#50 FAKE_NPC,{ OnEnable: donpcevent "arena#50::OnReset_08"; end; } -- script force_09start#50 -1,{ +- script force_09start#50 FAKE_NPC,{ OnEnable: donpcevent "force_09mob#50::OnEnable"; end; } -- script force_09ex#50 -1,{ +- script force_09ex#50 FAKE_NPC,{ OnReset: killmonster "force_1-1","force_09ex#50::OnMyMobDead"; end; @@ -780,7 +780,7 @@ OnMyMobDead: end; } -- script force_09mob#50 -1,{ +- script force_09mob#50 FAKE_NPC,{ OnEnable: monster "force_1-1",99,99,"Vocal",1581,1,"force_09mob#50::OnMyMobDead"; donpcevent "force_09ex#50::OnSummonMob_09"; @@ -941,7 +941,7 @@ prt_are_in,25,188,3 script Staff#50-2 1_F_02,{ } } -- script #arn_timer_50 -1,{ +- script #arn_timer_50 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -971,13 +971,13 @@ OnStop: end; } -- script arn_warp_50 -1,{ +- script arn_warp_50 FAKE_NPC,{ OnOut: areawarp "prt_are_in",14,195,29,178,"arena_room",100,75; end; } -- script cast#50 -1,{ +- script cast#50 FAKE_NPC,{ OnTimeOver1: mapannounce "force_1-1","Arena will be reactivated due to an error occurred during battle.",0,0xFFCE00; end; @@ -992,7 +992,7 @@ OnNomal2: end; } -- script alloff#50 -1,{ +- script alloff#50 FAKE_NPC,{ OnEnable: mapwarp "force_1-1","prt_are_in",126,190,0,0; donpcevent "force_01mob#50::OnReset"; diff --git a/npc/other/arena/arena_lvl60.txt b/npc/other/arena/arena_lvl60.txt index 167f42289..41c444388 100644 --- a/npc/other/arena/arena_lvl60.txt +++ b/npc/other/arena/arena_lvl60.txt @@ -214,7 +214,7 @@ On09_End: end; } -- script arena#60 -1,{ +- script arena#60 FAKE_NPC,{ OnReset_01: donpcevent "force_01ex#60::OnReset"; donpcevent "force_01mob#60::OnReset"; @@ -393,13 +393,13 @@ OnTouch: end; } -- script force_01start#60 -1,{ +- script force_01start#60 FAKE_NPC,{ OnEnable: donpcevent "force_01mob#60::OnEnable"; end; } -- script force_01ex#60 -1,{ +- script force_01ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_01ex#60::OnMyMobDead"; end; @@ -412,7 +412,7 @@ OnMyMobDead: end; } -- script force_01mob#60 -1,{ +- script force_01mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_01mob#60::OnMyMobDead"; end; @@ -439,13 +439,13 @@ OnMyMobDead: end; } -- script force_02start#60 -1,{ +- script force_02start#60 FAKE_NPC,{ OnEnable: donpcevent "force_02mob#60::OnEnable"; end; } -- script force_02mob#60 -1,{ +- script force_02mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_02mob#60::OnMyMobDead"; end; @@ -486,13 +486,13 @@ OnMyMobDead: end; } -- script force_03start#60 -1,{ +- script force_03start#60 FAKE_NPC,{ OnEnable: donpcevent "force_03mob#60::OnEnable"; end; } -- script force_03ex#60 -1,{ +- script force_03ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_03ex#60::OnMyMobDead"; end; @@ -514,7 +514,7 @@ OnMyMobDead: end; } -- script force_03mob#60 -1,{ +- script force_03mob#60 FAKE_NPC,{ OnEnable: donpcevent "force_03ex#60::OnEnable"; monster "force_2-1",23,174,"Mantis",1457,1,"force_03mob#60::OnMyMobDead"; @@ -535,13 +535,13 @@ OnMyMobDead: end; } -- script force_04start#60 -1,{ +- script force_04start#60 FAKE_NPC,{ OnEnable: donpcevent "force_04mob#60::OnEnable"; end; } -- script force_04ex#60 -1,{ +- script force_04ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_04ex#60::OnMyMobDead"; end; @@ -560,7 +560,7 @@ OnMyMobDead: end; } -- script force_04mob#60 -1,{ +- script force_04mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_04mob#60::OnMyMobDead"; end; @@ -580,13 +580,13 @@ OnMyMobDead: end; } -- script force_05start#60 -1,{ +- script force_05start#60 FAKE_NPC,{ OnEnable: donpcevent "force_05mob#60::OnEnable"; end; } -- script force_05ex#60 -1,{ +- script force_05ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_05ex#60::OnMyMobDead"; end; @@ -610,7 +610,7 @@ OnMyMobDead: end; } -- script force_05mob#60 -1,{ +- script force_05mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_05mob#60::OnMyMobDead"; end; @@ -632,13 +632,13 @@ OnMyMobDead: end; } -- script force_06start#60 -1,{ +- script force_06start#60 FAKE_NPC,{ OnEnable: donpcevent "force_06mob#60::OnEnable"; end; } -- script force_06ex#60 -1,{ +- script force_06ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_06ex#60::OnMyMobDead"; end; @@ -688,7 +688,7 @@ OnMyMobDead: end; } -- script force_06mob#60 -1,{ +- script force_06mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_06mob#60::OnMyMobDead"; end; @@ -708,13 +708,13 @@ OnMyMobDead: end; } -- script force_07start#60 -1,{ +- script force_07start#60 FAKE_NPC,{ OnEnable: donpcevent "force_07mob#60::OnEnable"; end; } -- script force_07mob#60 -1,{ +- script force_07mob#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_07mob#60::OnMyMobDead"; end; @@ -734,25 +734,25 @@ OnMyMobDead: end; } -- script force_08start#60 -1,{ +- script force_08start#60 FAKE_NPC,{ OnEnable: donpcevent "force_08ex#60::OnEnable"; end; } -- script force_08ex#60 -1,{ +- script force_08ex#60 FAKE_NPC,{ OnEnable: donpcevent "arena#60::OnReset_08"; end; } -- script force_09start#60 -1,{ +- script force_09start#60 FAKE_NPC,{ OnEnable: donpcevent "force_09mob#60::OnEnable"; end; } -- script force_09ex#60 -1,{ +- script force_09ex#60 FAKE_NPC,{ OnReset: killmonster "force_2-1","force_09ex#60::OnMyMobDead"; end; @@ -790,7 +790,7 @@ OnMyMobDead: end; } -- script force_09mob#60 -1,{ +- script force_09mob#60 FAKE_NPC,{ OnEnable: donpcevent "force_09ex#60::OnSummonMob_09"; monster "force_2-1",99,99,"Goblin Leader",1539,1,"force_09mob#60::OnMyMobDead"; @@ -951,7 +951,7 @@ prt_are_in,25,135,3 script Staff#60-2 1_F_02,{ } } -- script #arn_timer_60 -1,{ +- script #arn_timer_60 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -981,13 +981,13 @@ OnStop: end; } -- script arn_warp_60 -1,{ +- script arn_warp_60 FAKE_NPC,{ OnOut: areawarp "prt_are_in",14,143,29,126,"arena_room",100,75; end; } -- script cast#60 -1,{ +- script cast#60 FAKE_NPC,{ OnTimeOver1: mapannounce "force_2-1","Arena will be reactivated due to an error occurred during battle.",0,0xFFCE00; end; @@ -1005,7 +1005,7 @@ OnTimeOver2: end; } -- script alloff#60 -1,{ +- script alloff#60 FAKE_NPC,{ OnEnable: mapwarp "force_2-1","prt_are_in",126,139,0,0; donpcevent "force_01mob#60::OnReset"; diff --git a/npc/other/arena/arena_lvl70.txt b/npc/other/arena/arena_lvl70.txt index bf2ac5f92..90bc1aa69 100644 --- a/npc/other/arena/arena_lvl70.txt +++ b/npc/other/arena/arena_lvl70.txt @@ -220,7 +220,7 @@ On09_End: end; } -- script arena#70 -1,{ +- script arena#70 FAKE_NPC,{ OnReset_01: //donpcevent "force_01ex#70::OnReset"; donpcevent "force_02start#70::OnEnable"; @@ -400,13 +400,13 @@ OnTouch: end; } -- script force_01start#70 -1,{ +- script force_01start#70 FAKE_NPC,{ OnEnable: donpcevent "force_01mob#70::OnEnable"; end; } -- script force_01mob#70 -1,{ +- script force_01mob#70 FAKE_NPC,{ OnEnable: monster "force_3-1",25,36,"Kobold",1545,1,"force_01mob#70::OnMyMobDead"; monster "force_3-1",20,36,"Kobold",1545,1,"force_01mob#70::OnMyMobDead"; @@ -427,13 +427,13 @@ OnMyMobDead: end; } -- script force_02start#70 -1,{ +- script force_02start#70 FAKE_NPC,{ OnEnable: donpcevent "force_02mob#70::OnEnable"; end; } -- script force_02ex#70 -1,{ +- script force_02ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_02ex#70::OnMyMobDead"; end; @@ -457,7 +457,7 @@ OnMyMobDead: end; } -- script force_02mob#70 -1,{ +- script force_02mob#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_02mob#70::OnMyMobDead"; end; @@ -476,13 +476,13 @@ OnMyMobDead: end; } -- script force_03start#70 -1,{ +- script force_03start#70 FAKE_NPC,{ OnEnable: donpcevent "force_03mob#70::OnEnable"; end; } -- script force_03ex#70 -1,{ +- script force_03ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_03ex#70::OnMyMobDead"; end; @@ -496,7 +496,7 @@ OnMyMobDead: end; } -- script force_03mob#70 -1,{ +- script force_03mob#70 FAKE_NPC,{ OnEnable: donpcevent "force_03ex#70::OnSummonMob_03"; monster "force_3-1",23,174,"Parasite",1555,1,"force_03mob#70::OnMyMobDead"; @@ -517,13 +517,13 @@ OnMyMobDead: end; } -- script force_04start#70 -1,{ +- script force_04start#70 FAKE_NPC,{ OnEnable: donpcevent "force_04mob#70::OnEnable"; end; } -- script force_04ex#70 -1,{ +- script force_04ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_04ex#70::OnMyMobDead"; end; @@ -541,7 +541,7 @@ OnMyMobDead: end; } -- script force_04mob#70 -1,{ +- script force_04mob#70 FAKE_NPC,{ OnEnable: donpcevent "force_04ex#70::OnSummonMob_04"; monster "force_3-1",87,174,"Stem Worm",1440,1,"force_04mob#70::OnMyMobDead"; @@ -560,13 +560,13 @@ OnMyMobDead: end; } -- script force_05start#70 -1,{ +- script force_05start#70 FAKE_NPC,{ OnEnable: donpcevent "force_05mob#70::OnEnable"; end; } -- script force_05ex#70 -1,{ +- script force_05ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_05ex#70::OnMyMobDead"; end; @@ -586,7 +586,7 @@ OnMyMobDead: end; } -- script force_05mob#70 -1,{ +- script force_05mob#70 FAKE_NPC,{ OnEnable: monster "force_3-1",164,183,"Argiope",1429,1,"force_05mob#70::OnMyMobDead"; monster "force_3-1",168,158,"Argiope",1429,1,"force_05mob#70::OnMyMobDead"; @@ -608,13 +608,13 @@ OnMyMobDead: end; } -- script force_06start#70 -1,{ +- script force_06start#70 FAKE_NPC,{ OnEnable: donpcevent "force_06mob#70::OnEnable"; end; } -- script force_06ex#70 -1,{ +- script force_06ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_06ex#70::OnMyMobDead"; end; @@ -636,7 +636,7 @@ OnMyMobDead: end; } -- script force_06mob#70 -1,{ +- script force_06mob#70 FAKE_NPC,{ OnEnable: donpcevent "force_06ex#70::OnSummonMob_06"; monster "force_3-1",173,90,"Goblin",1537,1,"force_06mob#70::OnMyMobDead"; @@ -658,13 +658,13 @@ OnMyMobDead: end; } -- script force_07start#70 -1,{ +- script force_07start#70 FAKE_NPC,{ OnEnable: donpcevent "force_07mob#70::OnEnable"; end; } -- script force_07ex#70 -1,{ +- script force_07ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_07ex#70::OnMyMobDead"; end; @@ -690,7 +690,7 @@ OnMyMobDead: end; } -- script force_07mob#70 -1,{ +- script force_07mob#70 FAKE_NPC,{ OnEnable: donpcevent "force_07ex#70::OnSummonMob_07"; monster "force_3-1",174,25,"Alice",1521,1,"force_07mob#70::OnMyMobDead"; @@ -708,25 +708,25 @@ OnMyMobDead: end; } -- script force_08start#70 -1,{ +- script force_08start#70 FAKE_NPC,{ OnEnable: donpcevent "force_08ex#70::OnEnable"; end; } -- script force_08ex#70 -1,{ +- script force_08ex#70 FAKE_NPC,{ OnEnable: donpcevent "arena#70::OnReset_08"; end; } -- script force_09start#70 -1,{ +- script force_09start#70 FAKE_NPC,{ OnEnable: donpcevent "force_09mob#70::OnEnable"; end; } -- script force_09ex#70 -1,{ +- script force_09ex#70 FAKE_NPC,{ OnReset: killmonster "force_3-1","force_09ex#70::OnMyMobDead"; end; @@ -752,7 +752,7 @@ OnMyMobDead: end; } -- script force_09mob#70 -1,{ +- script force_09mob#70 FAKE_NPC,{ OnEnable: monster "force_3-1",99,99,"Kobold Leader",1548,1,"force_09mob#70::OnMyMobDead"; monster "force_3-1",98,99,"Kobold",1545,1,"force_09mob#70::OnMyMobDead"; @@ -916,7 +916,7 @@ prt_are_in,25,84,3 script Staff#70-2 1_F_02,{ } } -- script #arn_timer_70 -1,{ +- script #arn_timer_70 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -946,13 +946,13 @@ OnStop: end; } -- script arn_warp_70 -1,{ +- script arn_warp_70 FAKE_NPC,{ OnOut: areawarp "prt_are_in",14,91,29,74,"arena_room",100,75; end; } -- script cast#70 -1,{ +- script cast#70 FAKE_NPC,{ OnTimeOver1: mapannounce "force_3-1","Arena will be reactivated due to an error occurred during battle.",0,0xFFCE00; end; @@ -967,7 +967,7 @@ OnNomal2: end; } -- script alloff#70 -1,{ +- script alloff#70 FAKE_NPC,{ OnEnable: mapwarp "force_3-1","prt_are_in",126,190,0,0; donpcevent "force_01mob#70::OnReset"; diff --git a/npc/other/arena/arena_lvl80.txt b/npc/other/arena/arena_lvl80.txt index 184d2d61d..7bab16f4a 100644 --- a/npc/other/arena/arena_lvl80.txt +++ b/npc/other/arena/arena_lvl80.txt @@ -227,7 +227,7 @@ On09_End: end; } -- script arena#80 -1,{ +- script arena#80 FAKE_NPC,{ OnReset_01: donpcevent "force_01ex#80::OnReset"; donpcevent "force_02start#80::OnEnable"; @@ -404,13 +404,13 @@ OnTouch: end; } -- script force_01start#80 -1,{ +- script force_01start#80 FAKE_NPC,{ OnEnable: donpcevent "force_01mob#80::OnEnable"; end; } -- script force_01ex#80 -1,{ +- script force_01ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_01ex#80::OnMyMobDead"; end; @@ -427,7 +427,7 @@ OnMyMobDead: end; } -- script force_01mob#80 -1,{ +- script force_01mob#80 FAKE_NPC,{ OnEnable: monster "force_4-1",35,13,"Nightmare",1427,1,"force_01mob#80::OnMyMobDead"; monster "force_4-1",25,36,"Nightmare",1427,1,"force_01mob#80::OnMyMobDead"; @@ -449,13 +449,13 @@ OnMyMobDead: end; } -- script force_02start#80 -1,{ +- script force_02start#80 FAKE_NPC,{ OnEnable: donpcevent "force_02mob#80::OnEnable"; end; } -- script force_02mob#80 -1,{ +- script force_02mob#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_02mob#80::OnMyMobDead"; end; @@ -486,13 +486,13 @@ OnMyMobDead: end; } -- script force_03start#80 -1,{ +- script force_03start#80 FAKE_NPC,{ OnEnable: donpcevent "force_03mob#80::OnEnable"; end; } -- script force_03ex#80 -1,{ +- script force_03ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_03ex#80::OnMyMobDead"; end; @@ -512,7 +512,7 @@ OnMyMobDead: end; } -- script force_03mob#80 -1,{ +- script force_03mob#80 FAKE_NPC,{ OnEnable: donpcevent "force_03ex#80::OnSummonMob_03"; monster "force_4-1",23,174,"Assaulter",1364,1,"force_03mob#80::OnMyMobDead"; @@ -532,13 +532,13 @@ OnMyMobDead: end; } -- script force_04start#80 -1,{ +- script force_04start#80 FAKE_NPC,{ OnEnable: donpcevent "force_04mob#80::OnEnable"; end; } -- script force_04ex#80 -1,{ +- script force_04ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_04ex#80::OnMyMobDead"; end; @@ -560,7 +560,7 @@ OnMyMobDead: } -- script force_04mob#80 -1,{ +- script force_04mob#80 FAKE_NPC,{ OnEnable: donpcevent "force_04ex#80::OnSummonMob_04"; monster "force_4-1",80,172,"Nine Tails",1471,1,"force_04mob#80::OnMyMobDead"; @@ -580,13 +580,13 @@ OnMyMobDead: end; } -- script force_05start#80 -1,{ +- script force_05start#80 FAKE_NPC,{ OnEnable: donpcevent "force_05mob#80::OnEnable"; end; } -- script force_05ex#80 -1,{ +- script force_05ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_05ex#80::OnMyMobDead"; end; @@ -602,7 +602,7 @@ OnMyMobDead: end; } -- script force_05mob#80 -1,{ +- script force_05mob#80 FAKE_NPC,{ OnEnable: monster "force_4-1",164,174,"Petite",1465,1,"force_05mob#80::OnMyMobDead"; monster "force_4-1",169,159,"Petite",1465,1,"force_05mob#80::OnMyMobDead"; @@ -624,19 +624,19 @@ OnMyMobDead: } -- script force_06start#80 -1,{ +- script force_06start#80 FAKE_NPC,{ OnEnable: donpcevent "force_06mob#80::OnEnable"; end; } -- script force_06ex#80 -1,{ +- script force_06ex#80 FAKE_NPC,{ OnEnable: donpcevent "Octus#arena::On06_start"; end; } -- script force_06mob#80 -1,{ +- script force_06mob#80 FAKE_NPC,{ OnEnable: monster "force_4-1",173,118,"Baphomet Jr.",1431,1,"force_06mob#80::OnMyMobDead"; monster "force_4-1",173,90,"Baphomet Jr.",1431,1,"force_06mob#80::OnMyMobDead"; @@ -660,13 +660,13 @@ OnMyMobDead: end; } -- script force_07start#80 -1,{ +- script force_07start#80 FAKE_NPC,{ OnEnable: donpcevent "force_07mob#80::OnEnable"; end; } -- script force_07ex#80 -1,{ +- script force_07ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_07ex#80::OnMyMobDead"; end; @@ -681,7 +681,7 @@ OnMyMobDead: end; } -- script force_07mob#80 -1,{ +- script force_07mob#80 FAKE_NPC,{ OnEnable: donpcevent "force_07ex#80::OnSummonMob_07"; monster "force_4-1",165,27,"Fur-Seal",1533,1,"force_07mob#80::OnMyMobDead"; @@ -701,25 +701,25 @@ OnMyMobDead: end; } -- script force_08start#80 -1,{ +- script force_08start#80 FAKE_NPC,{ OnEnable: donpcevent "force_08ex#80::OnEnable"; end; } -- script force_08ex#80 -1,{ +- script force_08ex#80 FAKE_NPC,{ OnEnable: donpcevent "arena#80::OnReset_08"; end; } -- script force_09start#80 -1,{ +- script force_09start#80 FAKE_NPC,{ OnEnable: donpcevent "force_09mob#80::OnEnable"; end; } -- script force_09ex#80 -1,{ +- script force_09ex#80 FAKE_NPC,{ OnReset: killmonster "force_4-1","force_09ex#80::OnMyMobDead"; end; @@ -736,7 +736,7 @@ OnMyMobDead: end; } -- script force_09mob#80 -1,{ +- script force_09mob#80 FAKE_NPC,{ OnEnable: monster "force_4-1",99,99,"Ancient Mummy",1522,1,"force_09mob#80::OnMyMobDead"; donpcevent "force_09ex#80::OnSummonMob_09"; @@ -897,7 +897,7 @@ prt_are_in,77,187,3 script Staff#80-2 1_F_02,{ } } -- script #arn_timer_80 -1,{ +- script #arn_timer_80 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -927,13 +927,13 @@ OnStop: end; } -- script arn_warp_80 -1,{ +- script arn_warp_80 FAKE_NPC,{ OnOut: areawarp "prt_are_in",66,195,81,178,"arena_room",100,75; end; } -- script cast#80 -1,{ +- script cast#80 FAKE_NPC,{ OnTimeOver1: mapannounce "force_4-1","Arena will be reactivated due to an error occurred during battle.",0,0xFFCE00; end; @@ -948,7 +948,7 @@ OnNomal2: end; } -- script alloff#80 -1,{ +- script alloff#80 FAKE_NPC,{ OnEnable: mapwarp "force_4-1","prt_are_in",126,190,0,0; donpcevent "force_01mob#80::OnReset"; diff --git a/npc/other/arena/arena_party.txt b/npc/other/arena/arena_party.txt index 378e6de5b..b3fb751e6 100644 --- a/npc/other/arena/arena_party.txt +++ b/npc/other/arena/arena_party.txt @@ -104,7 +104,7 @@ OnInit: end; } -prt_are_in,73,78,0 script toarena#party -1,20,20,{ +prt_are_in,73,78,0 script toarena#party FAKE_NPC,20,20,{ OnInit: disablenpc "toarena#party"; end; @@ -124,7 +124,7 @@ OnEnter: end; } -prt_are_in,73,79,0 script toout#party -1,20,20,{ +prt_are_in,73,79,0 script toout#party FAKE_NPC,20,20,{ OnInit: disablenpc "toout#party"; end; @@ -157,7 +157,7 @@ OnStop: end; } -prt_are_in,73,74,0 script arena_out -1,1,1,{ +prt_are_in,73,74,0 script arena_out FAKE_NPC,1,1,{ OnTouch: $arn_partywait = 0; warp "arena_room",100,75; @@ -333,7 +333,7 @@ On10_End: end; } -- script arena_p -1,{ +- script arena_p FAKE_NPC,{ OnStart: mapwarp "force_1-2","prt_are_in",177,138; disablenpc "force_01_00"; @@ -441,14 +441,14 @@ OnTouch: end; } -force_1-2,36,26,0 script force_01start#party -1,1,1,{ +force_1-2,36,26,0 script force_01start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_01mob#party::OnEnable"; disablenpc "force_01start#party"; end; } -- script force_01mob#party -1,{ +- script force_01mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",15,35,"Penomena",1441,1,"force_01mob#party::OnMyMobDead"; monster "force_1-2",35,35,"Penomena",1441,1,"force_01mob#party::OnMyMobDead"; @@ -496,14 +496,14 @@ OnMyMobDead: end; } -force_1-2,162,26,0 script force_02start#party -1,1,1,{ +force_1-2,162,26,0 script force_02start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_02mob#party::OnEnable"; disablenpc "force_02start#party"; end; } -- script force_02mob#party -1,{ +- script force_02mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",163,36,"Penomena",1441,1,"force_02mob#party::OnMyMobDead"; monster "force_1-2",184,36,"Penomena",1441,1,"force_02mob#party::OnMyMobDead"; @@ -555,14 +555,14 @@ OnMyMobDead: end; } -force_1-2,99,66,0 script force_03start#party -1,1,1,{ +force_1-2,99,66,0 script force_03start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_03mob#party::OnEnable"; disablenpc "force_03start#party"; end; } -- script force_03mob#party -1,{ +- script force_03mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",89,81,"Merman",1451,1,"force_03mob#party::OnMyMobDead"; monster "force_1-2",90,81,"Merman",1451,1,"force_03mob#party::OnMyMobDead"; @@ -610,14 +610,14 @@ OnMyMobDead: end; } -force_1-2,162,78,0 script force_04start#party -1,3,3,{ +force_1-2,162,78,0 script force_04start#party FAKE_NPC,3,3,{ OnTouch: donpcevent "force_04mob#party::OnEnable"; disablenpc "force_04start#party"; end; } -- script force_04mob#party -1,{ +- script force_04mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",174,78,"Penomena",1441,1,"force_04mob#party::OnMyMobDead"; monster "force_1-2",184,78,"Penomena",1441,1,"force_04mob#party::OnMyMobDead"; @@ -657,14 +657,14 @@ OnMyMobDead: end; } -force_1-2,36,77,0 script force_05start#party -1,1,1,{ +force_1-2,36,77,0 script force_05start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_05mob#party::OnEnable"; disablenpc "force_05start#party"; end; } -- script force_05mob#party -1,{ +- script force_05mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",25,68,"Penomena",1441,1,"force_05mob#party::OnMyMobDead"; monster "force_1-2",36,68,"Penomena",1441,1,"force_05mob#party::OnMyMobDead"; @@ -704,14 +704,14 @@ OnMyMobDead: end; } -force_1-2,26,118,0 script force_06start#party -1,1,1,{ +force_1-2,26,118,0 script force_06start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_06mob#party::OnEnable"; disablenpc "force_06start#party"; end; } -- script force_06mob#party -1,{ +- script force_06mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",19,135,"Cloud Hermit",1531,1,"force_06mob#party::OnMyMobDead"; monster "force_1-2",24,135,"Cloud Hermit",1531,1,"force_06mob#party::OnMyMobDead"; @@ -750,14 +750,14 @@ OnMyMobDead: end; } -force_1-2,92,124,0 script force_07start#party -1,1,1,{ +force_1-2,92,124,0 script force_07start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_07mob#party::OnEnable"; disablenpc "force_07start#party"; end; } -- script force_07mob#party -1,{ +- script force_07mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",104,134,"Greatest General",1541,1,"force_07mob#party::OnMyMobDead"; monster "force_1-2",104,136,"Greatest General",1541,1,"force_07mob#party::OnMyMobDead"; @@ -786,14 +786,14 @@ OnMyMobDead: end; } -force_1-2,173,118,0 script force_08start#party -1,1,1,{ +force_1-2,173,118,0 script force_08start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_08mob#party::OnEnable"; disablenpc "force_08start#party"; end; } -- script force_08mob#party -1,{ +- script force_08mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",172,154,"Khalitzburg",1438,1,"force_08mob#party::OnMyMobDead"; monster "force_1-2",174,145,"Ghostring",1576,1,"force_08mob#party::OnMyMobDead"; @@ -829,14 +829,14 @@ OnMyMobDead: end; } -force_1-2,133,178,0 script force_09start#party -1,1,1,{ +force_1-2,133,178,0 script force_09start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_09mob#party::OnEnable"; disablenpc "force_09start#party"; end; } -- script force_09mob#party -1,{ +- script force_09mob#party FAKE_NPC,{ OnEnable: monster "force_1-2",86,180,"Elder",1573,1,"force_09mob#party::OnMyMobDead"; monster "force_1-2",86,176,"Elder",1573,1,"force_09mob#party::OnMyMobDead"; @@ -869,14 +869,14 @@ OnMyMobDead: end; } -force_1-2,29,178,0 script force_10start#party -1,1,1,{ +force_1-2,29,178,0 script force_10start#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_10mob-1#party::OnEnable"; disablenpc "force_10start#party"; end; } -- script force_10mob-1#party -1,{ +- script force_10mob-1#party FAKE_NPC,{ OnEnable: switch(rand(1,2)) { case 1: @@ -898,7 +898,7 @@ OnMyMobDead: end; } -- script force_10mob-2#party -1,{ +- script force_10mob-2#party FAKE_NPC,{ OnEnable: monster "force_1-2",16,179,"Samurai Spector",1542,1,"force_10mob-2#party::OnMyMobDead"; monster "force_1-2",16,179,"Shinobi",1560,1,"force_10mob-2#party::OnMyMobDead"; @@ -921,14 +921,14 @@ OnMyMobDead: end; } -force_1-2,59,178,0 script force_exit#party -1,1,1,{ +force_1-2,59,178,0 script force_exit#party FAKE_NPC,1,1,{ OnTouch: donpcevent "force_exitmob#party::OnEnable"; disablenpc "force_exit#party"; end; } -- script force_exitmob#party -1,{ +- script force_exitmob#party FAKE_NPC,{ OnEnable: monster "force_1-2",95,177,"Farewell",1393,1,"force_exitmob#party::OnMyMobDead"; monster "force_1-2",95,177,"I hate you",1543,1,"force_exitmob#party::OnMyMobDead"; @@ -1142,7 +1142,7 @@ prt_are_in,77,135,3 script Staff#party-2 1_F_02,{ } } -- script #arn_timer_pt -1,{ +- script #arn_timer_pt FAKE_NPC,{ OnEnter: initnpctimer; end; @@ -1172,13 +1172,13 @@ OnStop: end; } -- script arn_warp_pt -1,{ +- script arn_warp_pt FAKE_NPC,{ OnOut: areawarp "prt_are_in",66,143,81,126,"arena_room",100,75; end; } -- script cast#pt -1,{ +- script cast#pt FAKE_NPC,{ OnTimeOver1: mapannounce "force_2-1","Arena will be reactivated due to an error occurred during battle.",0,0xFFCE00; end; @@ -1196,7 +1196,7 @@ OnTimeOver2: end; } -- script alloff#pt -1,{ +- script alloff#pt FAKE_NPC,{ OnEnable: mapwarp "force_1-2","prt_are_in",126,139,0,0; donpcevent "force_01mob#party::OnReset"; diff --git a/npc/other/arena/arena_room.txt b/npc/other/arena/arena_room.txt index 2508a1aa9..4857b5ec5 100644 --- a/npc/other/arena/arena_room.txt +++ b/npc/other/arena/arena_room.txt @@ -787,7 +787,7 @@ prt_are_in,1,1,5 duplicate(#arena_1039) #arena_1251 KNIGHT_OF_WINDSTORM prt_are_in,1,1,5 duplicate(#arena_1039) #arena_1159 PHREEONI prt_are_in,1,1,5 duplicate(#arena_1039) #arena_7777 4_F_VALKYRIE -- script npctime#arena -1,{ +- script npctime#arena FAKE_NPC,{ OnStop: stopnpctimer; end; diff --git a/npc/other/auction.txt b/npc/other/auction.txt index 42df057f6..f4b9c41e1 100644 --- a/npc/other/auction.txt +++ b/npc/other/auction.txt @@ -88,7 +88,7 @@ function script F_AuctionWarper { } //== Sign posts ============================================ -- script Information Post#dum::AuctionSign -1,{ +- script Information Post#dum::AuctionSign FAKE_NPC,{ mes "[Information]"; mes "Auction Warp Guide"; close; @@ -106,7 +106,7 @@ auction_02,151,17,0 warp auction_enterance_juno 1,1,yuno,132,119 auction_02,43,17,0 warp auction_enterance_lhz 1,1,lighthalzen,209,169 //== Auction House NPCs ==================================== -- script Auction Broker#dum::AuctionBroker -1,{ +- script Auction Broker#dum::AuctionBroker FAKE_NPC,{ mes "[Auction Broker]"; mes "Welcome to the Auction Hall."; mes "Would you like to view the goods?"; diff --git a/npc/other/mail.txt b/npc/other/mail.txt index 0276fc536..54067319e 100644 --- a/npc/other/mail.txt +++ b/npc/other/mail.txt @@ -37,7 +37,7 @@ //========================================================================= //== Floating mailbox npc that all NPCs duplicate from ===== -- script Mailbox#dummy::MailBox -1,{ +- script Mailbox#dummy::MailBox FAKE_NPC,{ mes "[Mailbox]"; mes "To use the mailbox service,"; mes "you are required to pay 130 zeny."; diff --git a/npc/other/mercenary_rent.txt b/npc/other/mercenary_rent.txt index 47f38560a..fe982564d 100644 --- a/npc/other/mercenary_rent.txt +++ b/npc/other/mercenary_rent.txt @@ -35,7 +35,7 @@ //= 1.4 //========================================================================= -- script Mercenary Manager#main -1,{ +- script Mercenary Manager#main FAKE_NPC,{ setarray .@name$, "Spear", "Sword", "Bow"; setarray .@faith$, "SPEAR_MERC_GUILD", "SWORD_MERC_GUILD", "ARCH_MERC_GUILD"; setarray .@item, 12182, 12172, 12162; @@ -230,7 +230,7 @@ prontera,41,337,5 duplicate(Mercenary Manager#main) Mercenary Manager#Spear 8W_S pay_arche,99,167,4 duplicate(Mercenary Manager#main) Mercenary Manager#Bow 4_M_JOB_HUNTER //== Mercenary Merchant NPCs =============================== -- script Mercenary Merchant#dummy::MercMerchant -1,{ +- script Mercenary Merchant#dummy::MercMerchant FAKE_NPC,{ mes "[Mercenary Goods Merchant]"; mes "Hello, I sell goods"; mes "that Mercenaries can"; diff --git a/npc/other/monster_race.txt b/npc/other/monster_race.txt index eec6593e5..e5827c5a1 100644 --- a/npc/other/monster_race.txt +++ b/npc/other/monster_race.txt @@ -38,7 +38,7 @@ //========================================================================= //== Monster Race - Single Monster Race ==================== -hugel,51,61,0 script #race_timer1-1 -1,{ +hugel,51,61,0 script #race_timer1-1 FAKE_NPC,{ OnEnable: enablenpc "#race_timer1-1"; OnInit: @@ -80,7 +80,7 @@ OnTimer330000: end; } -p_track01,58,0,0 script Race Progress Timer -1,{ +p_track01,58,0,0 script Race Progress Timer FAKE_NPC,{ OnEnable: initnpctimer; enablenpc "Race Progress Timer"; @@ -233,7 +233,7 @@ OnInit: end; } -- script Runner_main -1,{ +- script Runner_main FAKE_NPC,{ function F_Num; function F_Ord; end; @@ -292,12 +292,12 @@ OnInit: disablenpc strnpcinfo(0); end; } -p_track01,30,38,0 duplicate(Runner_main) Runner No. 1#1 -1,1,0 -p_track01,30,36,0 duplicate(Runner_main) Runner No. 2#2 -1,1,0 -p_track01,30,34,0 duplicate(Runner_main) Runner No. 3#3 -1,1,0 -p_track01,30,32,0 duplicate(Runner_main) Runner No. 4#4 -1,1,0 -p_track01,30,30,0 duplicate(Runner_main) Runner No. 5#5 -1,1,0 -p_track01,30,28,0 duplicate(Runner_main) Runner No. 6#6 -1,1,0 +p_track01,30,38,0 duplicate(Runner_main) Runner No. 1#1 FAKE_NPC,1,0 +p_track01,30,36,0 duplicate(Runner_main) Runner No. 2#2 FAKE_NPC,1,0 +p_track01,30,34,0 duplicate(Runner_main) Runner No. 3#3 FAKE_NPC,1,0 +p_track01,30,32,0 duplicate(Runner_main) Runner No. 4#4 FAKE_NPC,1,0 +p_track01,30,30,0 duplicate(Runner_main) Runner No. 5#5 FAKE_NPC,1,0 +p_track01,30,28,0 duplicate(Runner_main) Runner No. 6#6 FAKE_NPC,1,0 p_track01,67,45,5 script Medal Distributor#single 4_F_RACING,{ if (!checkweight(Spawn,200)) { @@ -828,7 +828,7 @@ p_track01,39,49,3 script Game Guide#single 4_F_RACING,{ close; } -- script starting_1 -1,{ +- script starting_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 11) .@speed = 60; @@ -849,7 +849,7 @@ OnInit: end; } -- script Luk_1 -1,{ +- script Luk_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@speed = 110; @@ -865,7 +865,7 @@ OnInit: end; } -- script Luk_2 -1,{ +- script Luk_2 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@time = 1000; @@ -880,7 +880,7 @@ OnInit: end; } -- script Tire_1 -1,{ +- script Tire_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@time = 1000; @@ -895,90 +895,90 @@ OnInit: end; } -p_track01,56,38,0 duplicate(starting_1) starting#1 -1,0,0 -p_track01,56,36,0 duplicate(starting_1) starting#2 -1,0,0 -p_track01,56,34,0 duplicate(starting_1) starting#3 -1,0,0 -p_track01,56,32,0 duplicate(starting_1) starting#4 -1,0,0 -p_track01,56,30,0 duplicate(starting_1) starting#5 -1,0,0 -p_track01,56,28,0 duplicate(starting_1) starting#6 -1,0,0 - -p_track01,33,38,0 duplicate(Luk_1) Luk1#1 -1,0,0 -p_track01,37,38,0 duplicate(Luk_1) Luk1#2 -1,0,0 -p_track01,53,38,0 duplicate(Luk_1) Luk1#3 -1,0,0 -p_track01,45,38,0 duplicate(Luk_1) Luk1#4 -1,0,0 -p_track01,33,36,0 duplicate(Luk_1) Luk2#1 -1,0,0 -p_track01,37,36,0 duplicate(Luk_1) Luk2#2 -1,0,0 -p_track01,53,36,0 duplicate(Luk_1) Luk2#3 -1,0,0 -p_track01,45,36,0 duplicate(Luk_1) Luk2#4 -1,0,0 -p_track01,33,34,0 duplicate(Luk_1) Luk3#1 -1,0,0 -p_track01,37,34,0 duplicate(Luk_1) Luk3#2 -1,0,0 -p_track01,53,34,0 duplicate(Luk_1) Luk3#3 -1,0,0 -p_track01,45,34,0 duplicate(Luk_1) Luk3#4 -1,0,0 -p_track01,33,32,0 duplicate(Luk_1) Luk4#1 -1,0,0 -p_track01,37,32,0 duplicate(Luk_1) Luk4#2 -1,0,0 -p_track01,53,32,0 duplicate(Luk_1) Luk4#3 -1,0,0 -p_track01,45,32,0 duplicate(Luk_1) Luk4#4 -1,0,0 -p_track01,33,30,0 duplicate(Luk_1) Luk5#1 -1,0,0 -p_track01,37,30,0 duplicate(Luk_1) Luk5#2 -1,0,0 -p_track01,53,30,0 duplicate(Luk_1) Luk5#3 -1,0,0 -p_track01,45,30,0 duplicate(Luk_1) Luk5#4 -1,0,0 -p_track01,33,28,0 duplicate(Luk_1) Luk6#1 -1,0,0 -p_track01,37,28,0 duplicate(Luk_1) Luk6#2 -1,0,0 -p_track01,53,28,0 duplicate(Luk_1) Luk6#3 -1,0,0 -p_track01,45,28,0 duplicate(Luk_1) Luk6#4 -1,0,0 - -p_track01,49,38,0 duplicate(Luk_2) Luk1#5 -1,0,0 -p_track01,41,38,0 duplicate(Luk_2) Luk1#6 -1,0,0 -p_track01,49,36,0 duplicate(Luk_2) Luk2#5 -1,0,0 -p_track01,41,36,0 duplicate(Luk_2) Luk2#6 -1,0,0 -p_track01,49,34,0 duplicate(Luk_2) Luk3#5 -1,0,0 -p_track01,41,34,0 duplicate(Luk_2) Luk3#6 -1,0,0 -p_track01,49,32,0 duplicate(Luk_2) Luk4#5 -1,0,0 -p_track01,41,32,0 duplicate(Luk_2) Luk4#6 -1,0,0 -p_track01,49,30,0 duplicate(Luk_2) Luk5#5 -1,0,0 -p_track01,41,30,0 duplicate(Luk_2) Luk5#6 -1,0,0 -p_track01,49,28,0 duplicate(Luk_2) Luk6#5 -1,0,0 -p_track01,41,28,0 duplicate(Luk_2) Luk6#6 -1,0,0 - -p_track01,43,38,0 duplicate(Tire_1) Tire1#1 -1,0,0 -p_track01,39,38,0 duplicate(Tire_1) Tire1#2 -1,0,0 -p_track01,35,38,0 duplicate(Tire_1) Tire1#3 -1,0,0 -p_track01,55,38,0 duplicate(Tire_1) Tire1#4 -1,0,0 -p_track01,51,38,0 duplicate(Tire_1) Tire1#5 -1,0,0 -p_track01,47,38,0 duplicate(Tire_1) Tire1#6 -1,0,0 -p_track01,43,36,0 duplicate(Tire_1) Tire2#1 -1,0,0 -p_track01,39,36,0 duplicate(Tire_1) Tire2#2 -1,0,0 -p_track01,35,36,0 duplicate(Tire_1) Tire2#3 -1,0,0 -p_track01,55,36,0 duplicate(Tire_1) Tire2#4 -1,0,0 -p_track01,51,36,0 duplicate(Tire_1) Tire2#5 -1,0,0 -p_track01,47,36,0 duplicate(Tire_1) Tire2#6 -1,0,0 -p_track01,43,34,0 duplicate(Tire_1) Tire3#1 -1,0,0 -p_track01,39,34,0 duplicate(Tire_1) Tire3#2 -1,0,0 -p_track01,35,34,0 duplicate(Tire_1) Tire3#3 -1,0,0 -p_track01,55,34,0 duplicate(Tire_1) Tire3#4 -1,0,0 -p_track01,51,34,0 duplicate(Tire_1) Tire3#5 -1,0,0 -p_track01,47,34,0 duplicate(Tire_1) Tire3#6 -1,0,0 -p_track01,43,32,0 duplicate(Tire_1) Tire4#1 -1,0,0 -p_track01,39,32,0 duplicate(Tire_1) Tire4#2 -1,0,0 -p_track01,35,32,0 duplicate(Tire_1) Tire4#3 -1,0,0 -p_track01,55,32,0 duplicate(Tire_1) Tire4#4 -1,0,0 -p_track01,51,32,0 duplicate(Tire_1) Tire4#5 -1,0,0 -p_track01,47,32,0 duplicate(Tire_1) Tire4#6 -1,0,0 -p_track01,43,30,0 duplicate(Tire_1) Tire5#1 -1,0,0 -p_track01,39,30,0 duplicate(Tire_1) Tire5#2 -1,0,0 -p_track01,35,30,0 duplicate(Tire_1) Tire5#3 -1,0,0 -p_track01,55,30,0 duplicate(Tire_1) Tire5#4 -1,0,0 -p_track01,51,30,0 duplicate(Tire_1) Tire5#5 -1,0,0 -p_track01,47,30,0 duplicate(Tire_1) Tire5#6 -1,0,0 -p_track01,43,28,0 duplicate(Tire_1) Tire6#1 -1,0,0 -p_track01,39,28,0 duplicate(Tire_1) Tire6#2 -1,0,0 -p_track01,35,28,0 duplicate(Tire_1) Tire6#3 -1,0,0 -p_track01,55,28,0 duplicate(Tire_1) Tire6#4 -1,0,0 -p_track01,51,28,0 duplicate(Tire_1) Tire6#5 -1,0,0 -p_track01,47,28,0 duplicate(Tire_1) Tire6#6 -1,0,0 +p_track01,56,38,0 duplicate(starting_1) starting#1 FAKE_NPC,0,0 +p_track01,56,36,0 duplicate(starting_1) starting#2 FAKE_NPC,0,0 +p_track01,56,34,0 duplicate(starting_1) starting#3 FAKE_NPC,0,0 +p_track01,56,32,0 duplicate(starting_1) starting#4 FAKE_NPC,0,0 +p_track01,56,30,0 duplicate(starting_1) starting#5 FAKE_NPC,0,0 +p_track01,56,28,0 duplicate(starting_1) starting#6 FAKE_NPC,0,0 + +p_track01,33,38,0 duplicate(Luk_1) Luk1#1 FAKE_NPC,0,0 +p_track01,37,38,0 duplicate(Luk_1) Luk1#2 FAKE_NPC,0,0 +p_track01,53,38,0 duplicate(Luk_1) Luk1#3 FAKE_NPC,0,0 +p_track01,45,38,0 duplicate(Luk_1) Luk1#4 FAKE_NPC,0,0 +p_track01,33,36,0 duplicate(Luk_1) Luk2#1 FAKE_NPC,0,0 +p_track01,37,36,0 duplicate(Luk_1) Luk2#2 FAKE_NPC,0,0 +p_track01,53,36,0 duplicate(Luk_1) Luk2#3 FAKE_NPC,0,0 +p_track01,45,36,0 duplicate(Luk_1) Luk2#4 FAKE_NPC,0,0 +p_track01,33,34,0 duplicate(Luk_1) Luk3#1 FAKE_NPC,0,0 +p_track01,37,34,0 duplicate(Luk_1) Luk3#2 FAKE_NPC,0,0 +p_track01,53,34,0 duplicate(Luk_1) Luk3#3 FAKE_NPC,0,0 +p_track01,45,34,0 duplicate(Luk_1) Luk3#4 FAKE_NPC,0,0 +p_track01,33,32,0 duplicate(Luk_1) Luk4#1 FAKE_NPC,0,0 +p_track01,37,32,0 duplicate(Luk_1) Luk4#2 FAKE_NPC,0,0 +p_track01,53,32,0 duplicate(Luk_1) Luk4#3 FAKE_NPC,0,0 +p_track01,45,32,0 duplicate(Luk_1) Luk4#4 FAKE_NPC,0,0 +p_track01,33,30,0 duplicate(Luk_1) Luk5#1 FAKE_NPC,0,0 +p_track01,37,30,0 duplicate(Luk_1) Luk5#2 FAKE_NPC,0,0 +p_track01,53,30,0 duplicate(Luk_1) Luk5#3 FAKE_NPC,0,0 +p_track01,45,30,0 duplicate(Luk_1) Luk5#4 FAKE_NPC,0,0 +p_track01,33,28,0 duplicate(Luk_1) Luk6#1 FAKE_NPC,0,0 +p_track01,37,28,0 duplicate(Luk_1) Luk6#2 FAKE_NPC,0,0 +p_track01,53,28,0 duplicate(Luk_1) Luk6#3 FAKE_NPC,0,0 +p_track01,45,28,0 duplicate(Luk_1) Luk6#4 FAKE_NPC,0,0 + +p_track01,49,38,0 duplicate(Luk_2) Luk1#5 FAKE_NPC,0,0 +p_track01,41,38,0 duplicate(Luk_2) Luk1#6 FAKE_NPC,0,0 +p_track01,49,36,0 duplicate(Luk_2) Luk2#5 FAKE_NPC,0,0 +p_track01,41,36,0 duplicate(Luk_2) Luk2#6 FAKE_NPC,0,0 +p_track01,49,34,0 duplicate(Luk_2) Luk3#5 FAKE_NPC,0,0 +p_track01,41,34,0 duplicate(Luk_2) Luk3#6 FAKE_NPC,0,0 +p_track01,49,32,0 duplicate(Luk_2) Luk4#5 FAKE_NPC,0,0 +p_track01,41,32,0 duplicate(Luk_2) Luk4#6 FAKE_NPC,0,0 +p_track01,49,30,0 duplicate(Luk_2) Luk5#5 FAKE_NPC,0,0 +p_track01,41,30,0 duplicate(Luk_2) Luk5#6 FAKE_NPC,0,0 +p_track01,49,28,0 duplicate(Luk_2) Luk6#5 FAKE_NPC,0,0 +p_track01,41,28,0 duplicate(Luk_2) Luk6#6 FAKE_NPC,0,0 + +p_track01,43,38,0 duplicate(Tire_1) Tire1#1 FAKE_NPC,0,0 +p_track01,39,38,0 duplicate(Tire_1) Tire1#2 FAKE_NPC,0,0 +p_track01,35,38,0 duplicate(Tire_1) Tire1#3 FAKE_NPC,0,0 +p_track01,55,38,0 duplicate(Tire_1) Tire1#4 FAKE_NPC,0,0 +p_track01,51,38,0 duplicate(Tire_1) Tire1#5 FAKE_NPC,0,0 +p_track01,47,38,0 duplicate(Tire_1) Tire1#6 FAKE_NPC,0,0 +p_track01,43,36,0 duplicate(Tire_1) Tire2#1 FAKE_NPC,0,0 +p_track01,39,36,0 duplicate(Tire_1) Tire2#2 FAKE_NPC,0,0 +p_track01,35,36,0 duplicate(Tire_1) Tire2#3 FAKE_NPC,0,0 +p_track01,55,36,0 duplicate(Tire_1) Tire2#4 FAKE_NPC,0,0 +p_track01,51,36,0 duplicate(Tire_1) Tire2#5 FAKE_NPC,0,0 +p_track01,47,36,0 duplicate(Tire_1) Tire2#6 FAKE_NPC,0,0 +p_track01,43,34,0 duplicate(Tire_1) Tire3#1 FAKE_NPC,0,0 +p_track01,39,34,0 duplicate(Tire_1) Tire3#2 FAKE_NPC,0,0 +p_track01,35,34,0 duplicate(Tire_1) Tire3#3 FAKE_NPC,0,0 +p_track01,55,34,0 duplicate(Tire_1) Tire3#4 FAKE_NPC,0,0 +p_track01,51,34,0 duplicate(Tire_1) Tire3#5 FAKE_NPC,0,0 +p_track01,47,34,0 duplicate(Tire_1) Tire3#6 FAKE_NPC,0,0 +p_track01,43,32,0 duplicate(Tire_1) Tire4#1 FAKE_NPC,0,0 +p_track01,39,32,0 duplicate(Tire_1) Tire4#2 FAKE_NPC,0,0 +p_track01,35,32,0 duplicate(Tire_1) Tire4#3 FAKE_NPC,0,0 +p_track01,55,32,0 duplicate(Tire_1) Tire4#4 FAKE_NPC,0,0 +p_track01,51,32,0 duplicate(Tire_1) Tire4#5 FAKE_NPC,0,0 +p_track01,47,32,0 duplicate(Tire_1) Tire4#6 FAKE_NPC,0,0 +p_track01,43,30,0 duplicate(Tire_1) Tire5#1 FAKE_NPC,0,0 +p_track01,39,30,0 duplicate(Tire_1) Tire5#2 FAKE_NPC,0,0 +p_track01,35,30,0 duplicate(Tire_1) Tire5#3 FAKE_NPC,0,0 +p_track01,55,30,0 duplicate(Tire_1) Tire5#4 FAKE_NPC,0,0 +p_track01,51,30,0 duplicate(Tire_1) Tire5#5 FAKE_NPC,0,0 +p_track01,47,30,0 duplicate(Tire_1) Tire5#6 FAKE_NPC,0,0 +p_track01,43,28,0 duplicate(Tire_1) Tire6#1 FAKE_NPC,0,0 +p_track01,39,28,0 duplicate(Tire_1) Tire6#2 FAKE_NPC,0,0 +p_track01,35,28,0 duplicate(Tire_1) Tire6#3 FAKE_NPC,0,0 +p_track01,55,28,0 duplicate(Tire_1) Tire6#4 FAKE_NPC,0,0 +p_track01,51,28,0 duplicate(Tire_1) Tire6#5 FAKE_NPC,0,0 +p_track01,47,28,0 duplicate(Tire_1) Tire6#6 FAKE_NPC,0,0 //== Monster Race - Dual Monster Race ====================== -hugel,47,56,0 script #race_timer2-1 -1,{ +hugel,47,56,0 script #race_timer2-1 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-1"; OnInit: @@ -1022,7 +1022,7 @@ OnTimer330000: end; } -p_track02,42,23,0 script #race_timer2-2 -1,{ +p_track02,42,23,0 script #race_timer2-2 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-2"; $@mon_time_2_2 = 0; @@ -1073,7 +1073,7 @@ OnInit: end; } -p_track02,80,43,0 script #race_timer2-3 -1,{ +p_track02,80,43,0 script #race_timer2-3 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-3"; initnpctimer; @@ -1745,7 +1745,7 @@ p_track02,76,38,1 script Exit Guide#double 4_M_NFMAN,{ end; } -- script mob1#main -1,{ +- script mob1#main FAKE_NPC,{ function MN; OnEnable: enablenpc strnpcinfo(0); @@ -1810,7 +1810,7 @@ p_track02,30,32,0 duplicate(mob1#main) #desertwolf1 HIDDEN_WARP_NPC,0,0 p_track02,30,30,0 duplicate(mob1#main) #deviruchi1 HIDDEN_WARP_NPC,0,0 p_track02,30,28,0 duplicate(mob1#main) #baphomet1 HIDDEN_WARP_NPC,0,0 -p_track02,19,48,0 script TrapGlobal#race02 -1,{ +p_track02,19,48,0 script TrapGlobal#race02 FAKE_NPC,{ OnEnable: enablenpc "TrapGlobal#race02"; for (.@c = 1; .@c <= 6; ++.@c) { @@ -1876,7 +1876,7 @@ OnInit: end; } -- script starting_2 -1,{ +- script starting_2 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 11) .@speed = 60; @@ -1905,87 +1905,87 @@ OnInit: end; } -p_track02,56,38,0 duplicate(starting_2) starting#race02_1 -1,0,0 -p_track02,56,36,0 duplicate(starting_2) starting#race02_2 -1,0,0 -p_track02,56,34,0 duplicate(starting_2) starting#race02_3 -1,0,0 -p_track02,56,32,0 duplicate(starting_2) starting#race02_4 -1,0,0 -p_track02,56,30,0 duplicate(starting_2) starting#race02_5 -1,0,0 -p_track02,56,28,0 duplicate(starting_2) starting#race02_6 -1,0,0 - -p_track02,33,38,0 duplicate(Luk_1) Luk#race02_1_1 -1,0,0 -p_track02,37,38,0 duplicate(Luk_1) Luk#race02_1_2 -1,0,0 -p_track02,53,38,0 duplicate(Luk_1) Luk#race02_1_3 -1,0,0 -p_track02,45,38,0 duplicate(Luk_1) Luk#race02_1_4 -1,0,0 -p_track02,33,36,0 duplicate(Luk_1) Luk#race02_2_1 -1,0,0 -p_track02,37,36,0 duplicate(Luk_1) Luk#race02_2_2 -1,0,0 -p_track02,53,36,0 duplicate(Luk_1) Luk#race02_2_3 -1,0,0 -p_track02,45,36,0 duplicate(Luk_1) Luk#race02_2_4 -1,0,0 -p_track02,33,34,0 duplicate(Luk_1) Luk#race02_3_1 -1,0,0 -p_track02,37,34,0 duplicate(Luk_1) Luk#race02_3_2 -1,0,0 -p_track02,53,34,0 duplicate(Luk_1) Luk#race02_3_3 -1,0,0 -p_track02,45,34,0 duplicate(Luk_1) Luk#race02_3_4 -1,0,0 -p_track02,33,32,0 duplicate(Luk_1) Luk#race02_4_1 -1,0,0 -p_track02,37,32,0 duplicate(Luk_1) Luk#race02_4_2 -1,0,0 -p_track02,53,32,0 duplicate(Luk_1) Luk#race02_4_3 -1,0,0 -p_track02,45,32,0 duplicate(Luk_1) Luk#race02_4_4 -1,0,0 -p_track02,33,30,0 duplicate(Luk_1) Luk#race02_5_1 -1,0,0 -p_track02,37,30,0 duplicate(Luk_1) Luk#race02_5_2 -1,0,0 -p_track02,53,30,0 duplicate(Luk_1) Luk#race02_5_3 -1,0,0 -p_track02,45,30,0 duplicate(Luk_1) Luk#race02_5_4 -1,0,0 -p_track02,33,28,0 duplicate(Luk_1) Luk#race02_6_1 -1,0,0 -p_track02,37,28,0 duplicate(Luk_1) Luk#race02_6_2 -1,0,0 -p_track02,53,28,0 duplicate(Luk_1) Luk#race02_6_3 -1,0,0 -p_track02,45,28,0 duplicate(Luk_1) Luk#race02_6_4 -1,0,0 - -p_track02,49,38,0 duplicate(Luk_2) Luk#race02_1_5 -1,0,0 -p_track02,41,38,0 duplicate(Luk_2) Luk#race02_1_6 -1,0,0 -p_track02,49,36,0 duplicate(Luk_2) Luk#race02_2_5 -1,0,0 -p_track02,41,36,0 duplicate(Luk_2) Luk#race02_2_6 -1,0,0 -p_track02,49,34,0 duplicate(Luk_2) Luk#race02_3_5 -1,0,0 -p_track02,41,34,0 duplicate(Luk_2) Luk#race02_3_6 -1,0,0 -p_track02,49,32,0 duplicate(Luk_2) Luk#race02_4_5 -1,0,0 -p_track02,41,32,0 duplicate(Luk_2) Luk#race02_4_6 -1,0,0 -p_track02,49,30,0 duplicate(Luk_2) Luk#race02_5_5 -1,0,0 -p_track02,41,30,0 duplicate(Luk_2) Luk#race02_5_6 -1,0,0 -p_track02,49,28,0 duplicate(Luk_2) Luk#race02_6_5 -1,0,0 -p_track02,41,28,0 duplicate(Luk_2) Luk#race02_6_6 -1,0,0 - -p_track02,43,38,0 duplicate(Tire_1) Tire#race02_1_1 -1,0,0 -p_track02,39,38,0 duplicate(Tire_1) Tire#race02_1_2 -1,0,0 -p_track02,35,38,0 duplicate(Tire_1) Tire#race02_1_3 -1,0,0 -p_track02,55,38,0 duplicate(Tire_1) Tire#race02_1_4 -1,0,0 -p_track02,51,38,0 duplicate(Tire_1) Tire#race02_1_5 -1,0,0 -p_track02,47,38,0 duplicate(Tire_1) Tire#race02_1_6 -1,0,0 -p_track02,43,36,0 duplicate(Tire_1) Tire#race02_2_1 -1,0,0 -p_track02,39,36,0 duplicate(Tire_1) Tire#race02_2_2 -1,0,0 -p_track02,35,36,0 duplicate(Tire_1) Tire#race02_2_3 -1,0,0 -p_track02,55,36,0 duplicate(Tire_1) Tire#race02_2_4 -1,0,0 -p_track02,51,36,0 duplicate(Tire_1) Tire#race02_2_5 -1,0,0 -p_track02,47,36,0 duplicate(Tire_1) Tire#race02_2_6 -1,0,0 -p_track02,43,34,0 duplicate(Tire_1) Tire#race02_3_1 -1,0,0 -p_track02,39,34,0 duplicate(Tire_1) Tire#race02_3_2 -1,0,0 -p_track02,35,34,0 duplicate(Tire_1) Tire#race02_3_3 -1,0,0 -p_track02,55,34,0 duplicate(Tire_1) Tire#race02_3_4 -1,0,0 -p_track02,51,34,0 duplicate(Tire_1) Tire#race02_3_5 -1,0,0 -p_track02,47,34,0 duplicate(Tire_1) Tire#race02_3_6 -1,0,0 -p_track02,43,32,0 duplicate(Tire_1) Tire#race02_4_1 -1,0,0 -p_track02,39,32,0 duplicate(Tire_1) Tire#race02_4_2 -1,0,0 -p_track02,35,32,0 duplicate(Tire_1) Tire#race02_4_3 -1,0,0 -p_track02,55,32,0 duplicate(Tire_1) Tire#race02_4_4 -1,0,0 -p_track02,51,32,0 duplicate(Tire_1) Tire#race02_4_5 -1,0,0 -p_track02,47,32,0 duplicate(Tire_1) Tire#race02_4_6 -1,0,0 -p_track02,43,30,0 duplicate(Tire_1) Tire#race02_5_1 -1,0,0 -p_track02,39,30,0 duplicate(Tire_1) Tire#race02_5_2 -1,0,0 -p_track02,35,30,0 duplicate(Tire_1) Tire#race02_5_3 -1,0,0 -p_track02,55,30,0 duplicate(Tire_1) Tire#race02_5_4 -1,0,0 -p_track02,51,30,0 duplicate(Tire_1) Tire#race02_5_5 -1,0,0 -p_track02,47,30,0 duplicate(Tire_1) Tire#race02_5_6 -1,0,0 -p_track02,43,28,0 duplicate(Tire_1) Tire#race02_6_1 -1,0,0 -p_track02,39,28,0 duplicate(Tire_1) Tire#race02_6_2 -1,0,0 -p_track02,35,28,0 duplicate(Tire_1) Tire#race02_6_3 -1,0,0 -p_track02,55,28,0 duplicate(Tire_1) Tire#race02_6_4 -1,0,0 -p_track02,51,28,0 duplicate(Tire_1) Tire#race02_6_5 -1,0,0 -p_track02,47,28,0 duplicate(Tire_1) Tire#race02_6_6 -1,0,0 +p_track02,56,38,0 duplicate(starting_2) starting#race02_1 FAKE_NPC,0,0 +p_track02,56,36,0 duplicate(starting_2) starting#race02_2 FAKE_NPC,0,0 +p_track02,56,34,0 duplicate(starting_2) starting#race02_3 FAKE_NPC,0,0 +p_track02,56,32,0 duplicate(starting_2) starting#race02_4 FAKE_NPC,0,0 +p_track02,56,30,0 duplicate(starting_2) starting#race02_5 FAKE_NPC,0,0 +p_track02,56,28,0 duplicate(starting_2) starting#race02_6 FAKE_NPC,0,0 + +p_track02,33,38,0 duplicate(Luk_1) Luk#race02_1_1 FAKE_NPC,0,0 +p_track02,37,38,0 duplicate(Luk_1) Luk#race02_1_2 FAKE_NPC,0,0 +p_track02,53,38,0 duplicate(Luk_1) Luk#race02_1_3 FAKE_NPC,0,0 +p_track02,45,38,0 duplicate(Luk_1) Luk#race02_1_4 FAKE_NPC,0,0 +p_track02,33,36,0 duplicate(Luk_1) Luk#race02_2_1 FAKE_NPC,0,0 +p_track02,37,36,0 duplicate(Luk_1) Luk#race02_2_2 FAKE_NPC,0,0 +p_track02,53,36,0 duplicate(Luk_1) Luk#race02_2_3 FAKE_NPC,0,0 +p_track02,45,36,0 duplicate(Luk_1) Luk#race02_2_4 FAKE_NPC,0,0 +p_track02,33,34,0 duplicate(Luk_1) Luk#race02_3_1 FAKE_NPC,0,0 +p_track02,37,34,0 duplicate(Luk_1) Luk#race02_3_2 FAKE_NPC,0,0 +p_track02,53,34,0 duplicate(Luk_1) Luk#race02_3_3 FAKE_NPC,0,0 +p_track02,45,34,0 duplicate(Luk_1) Luk#race02_3_4 FAKE_NPC,0,0 +p_track02,33,32,0 duplicate(Luk_1) Luk#race02_4_1 FAKE_NPC,0,0 +p_track02,37,32,0 duplicate(Luk_1) Luk#race02_4_2 FAKE_NPC,0,0 +p_track02,53,32,0 duplicate(Luk_1) Luk#race02_4_3 FAKE_NPC,0,0 +p_track02,45,32,0 duplicate(Luk_1) Luk#race02_4_4 FAKE_NPC,0,0 +p_track02,33,30,0 duplicate(Luk_1) Luk#race02_5_1 FAKE_NPC,0,0 +p_track02,37,30,0 duplicate(Luk_1) Luk#race02_5_2 FAKE_NPC,0,0 +p_track02,53,30,0 duplicate(Luk_1) Luk#race02_5_3 FAKE_NPC,0,0 +p_track02,45,30,0 duplicate(Luk_1) Luk#race02_5_4 FAKE_NPC,0,0 +p_track02,33,28,0 duplicate(Luk_1) Luk#race02_6_1 FAKE_NPC,0,0 +p_track02,37,28,0 duplicate(Luk_1) Luk#race02_6_2 FAKE_NPC,0,0 +p_track02,53,28,0 duplicate(Luk_1) Luk#race02_6_3 FAKE_NPC,0,0 +p_track02,45,28,0 duplicate(Luk_1) Luk#race02_6_4 FAKE_NPC,0,0 + +p_track02,49,38,0 duplicate(Luk_2) Luk#race02_1_5 FAKE_NPC,0,0 +p_track02,41,38,0 duplicate(Luk_2) Luk#race02_1_6 FAKE_NPC,0,0 +p_track02,49,36,0 duplicate(Luk_2) Luk#race02_2_5 FAKE_NPC,0,0 +p_track02,41,36,0 duplicate(Luk_2) Luk#race02_2_6 FAKE_NPC,0,0 +p_track02,49,34,0 duplicate(Luk_2) Luk#race02_3_5 FAKE_NPC,0,0 +p_track02,41,34,0 duplicate(Luk_2) Luk#race02_3_6 FAKE_NPC,0,0 +p_track02,49,32,0 duplicate(Luk_2) Luk#race02_4_5 FAKE_NPC,0,0 +p_track02,41,32,0 duplicate(Luk_2) Luk#race02_4_6 FAKE_NPC,0,0 +p_track02,49,30,0 duplicate(Luk_2) Luk#race02_5_5 FAKE_NPC,0,0 +p_track02,41,30,0 duplicate(Luk_2) Luk#race02_5_6 FAKE_NPC,0,0 +p_track02,49,28,0 duplicate(Luk_2) Luk#race02_6_5 FAKE_NPC,0,0 +p_track02,41,28,0 duplicate(Luk_2) Luk#race02_6_6 FAKE_NPC,0,0 + +p_track02,43,38,0 duplicate(Tire_1) Tire#race02_1_1 FAKE_NPC,0,0 +p_track02,39,38,0 duplicate(Tire_1) Tire#race02_1_2 FAKE_NPC,0,0 +p_track02,35,38,0 duplicate(Tire_1) Tire#race02_1_3 FAKE_NPC,0,0 +p_track02,55,38,0 duplicate(Tire_1) Tire#race02_1_4 FAKE_NPC,0,0 +p_track02,51,38,0 duplicate(Tire_1) Tire#race02_1_5 FAKE_NPC,0,0 +p_track02,47,38,0 duplicate(Tire_1) Tire#race02_1_6 FAKE_NPC,0,0 +p_track02,43,36,0 duplicate(Tire_1) Tire#race02_2_1 FAKE_NPC,0,0 +p_track02,39,36,0 duplicate(Tire_1) Tire#race02_2_2 FAKE_NPC,0,0 +p_track02,35,36,0 duplicate(Tire_1) Tire#race02_2_3 FAKE_NPC,0,0 +p_track02,55,36,0 duplicate(Tire_1) Tire#race02_2_4 FAKE_NPC,0,0 +p_track02,51,36,0 duplicate(Tire_1) Tire#race02_2_5 FAKE_NPC,0,0 +p_track02,47,36,0 duplicate(Tire_1) Tire#race02_2_6 FAKE_NPC,0,0 +p_track02,43,34,0 duplicate(Tire_1) Tire#race02_3_1 FAKE_NPC,0,0 +p_track02,39,34,0 duplicate(Tire_1) Tire#race02_3_2 FAKE_NPC,0,0 +p_track02,35,34,0 duplicate(Tire_1) Tire#race02_3_3 FAKE_NPC,0,0 +p_track02,55,34,0 duplicate(Tire_1) Tire#race02_3_4 FAKE_NPC,0,0 +p_track02,51,34,0 duplicate(Tire_1) Tire#race02_3_5 FAKE_NPC,0,0 +p_track02,47,34,0 duplicate(Tire_1) Tire#race02_3_6 FAKE_NPC,0,0 +p_track02,43,32,0 duplicate(Tire_1) Tire#race02_4_1 FAKE_NPC,0,0 +p_track02,39,32,0 duplicate(Tire_1) Tire#race02_4_2 FAKE_NPC,0,0 +p_track02,35,32,0 duplicate(Tire_1) Tire#race02_4_3 FAKE_NPC,0,0 +p_track02,55,32,0 duplicate(Tire_1) Tire#race02_4_4 FAKE_NPC,0,0 +p_track02,51,32,0 duplicate(Tire_1) Tire#race02_4_5 FAKE_NPC,0,0 +p_track02,47,32,0 duplicate(Tire_1) Tire#race02_4_6 FAKE_NPC,0,0 +p_track02,43,30,0 duplicate(Tire_1) Tire#race02_5_1 FAKE_NPC,0,0 +p_track02,39,30,0 duplicate(Tire_1) Tire#race02_5_2 FAKE_NPC,0,0 +p_track02,35,30,0 duplicate(Tire_1) Tire#race02_5_3 FAKE_NPC,0,0 +p_track02,55,30,0 duplicate(Tire_1) Tire#race02_5_4 FAKE_NPC,0,0 +p_track02,51,30,0 duplicate(Tire_1) Tire#race02_5_5 FAKE_NPC,0,0 +p_track02,47,30,0 duplicate(Tire_1) Tire#race02_5_6 FAKE_NPC,0,0 +p_track02,43,28,0 duplicate(Tire_1) Tire#race02_6_1 FAKE_NPC,0,0 +p_track02,39,28,0 duplicate(Tire_1) Tire#race02_6_2 FAKE_NPC,0,0 +p_track02,35,28,0 duplicate(Tire_1) Tire#race02_6_3 FAKE_NPC,0,0 +p_track02,55,28,0 duplicate(Tire_1) Tire#race02_6_4 FAKE_NPC,0,0 +p_track02,51,28,0 duplicate(Tire_1) Tire#race02_6_5 FAKE_NPC,0,0 +p_track02,47,28,0 duplicate(Tire_1) Tire#race02_6_6 FAKE_NPC,0,0 //== NPCs for Redeeming Prize Medals (Einbroch and Hugel) == ein_in01,85,208,5 script Ei'felle#repay01 4_M_EINMAN2,{ diff --git a/npc/other/msg_boards.txt b/npc/other/msg_boards.txt index db94e96e7..7daad4cba 100644 --- a/npc/other/msg_boards.txt +++ b/npc/other/msg_boards.txt @@ -237,7 +237,7 @@ aldebaran,54,223,1 script Billboard#Alde3 HIDDEN_NPC,{ close; } -aldebaran,197,228,1 script #Alde4 -1,1,1,{ +aldebaran,197,228,1 script #Alde4 FAKE_NPC,1,1,{ OnTouch: mes "[Home Owner]"; mes "Get off my roof you no good leecher!"; diff --git a/npc/other/poring_war.txt b/npc/other/poring_war.txt index b3b6466ad..571be1955 100644 --- a/npc/other/poring_war.txt +++ b/npc/other/poring_war.txt @@ -892,7 +892,7 @@ OnDisable: end; } -poring_w02,1,1,0 script #wop_master -1,{ +poring_w02,1,1,0 script #wop_master FAKE_NPC,{ end; OnReset: @@ -1088,7 +1088,7 @@ OnTouch: } //== Poring Spawn ========================================== -poring_w02,80,82,0 script #wop_angellium1 -1,{ +poring_w02,80,82,0 script #wop_angellium1 FAKE_NPC,{ end; OnReset: @@ -1122,7 +1122,7 @@ OnTimer120000: stopnpctimer; } -poring_w02,98,41,0 script #wop_angellium2 -1,{ +poring_w02,98,41,0 script #wop_angellium2 FAKE_NPC,{ end; OnReset: @@ -1157,7 +1157,7 @@ OnTimer120000: end; } -poring_w02,116,82,0 script #wop_devillium1 -1,{ +poring_w02,116,82,0 script #wop_devillium1 FAKE_NPC,{ end; OnReset: @@ -1192,7 +1192,7 @@ OnTimer120000: end; } -poring_w02,98,124,0 script #wop_devillium2 -1,{ +poring_w02,98,124,0 script #wop_devillium2 FAKE_NPC,{ end; OnReset: @@ -1656,11 +1656,11 @@ OnTouch: } //== Other NPCs ============================================ -- script Angeling Side Poring#wpa -1,{ +- script Angeling Side Poring#wpa FAKE_NPC,{ end; } -- script Deviling Side Marin#wpd -1,{ +- script Deviling Side Marin#wpd FAKE_NPC,{ end; } diff --git a/npc/other/pvp.txt b/npc/other/pvp.txt index 4632a0c4b..1820bfc5c 100644 --- a/npc/other/pvp.txt +++ b/npc/other/pvp.txt @@ -38,7 +38,7 @@ //========================================================================= //== Information =========================================== -- script PVP Narrator::pvpe -1,{ +- script PVP Narrator::pvpe FAKE_NPC,{ mes "[PVP Narrator]"; mes "Hello and welcome!"; mes "I am in charge of"; @@ -192,7 +192,7 @@ payon_in01,142,50,4 duplicate(pvpe) PVP Narrator#pe5 4_M_02 geffen_in,67,63,4 duplicate(pvpe) PVP Narrator#pe6 4_M_02 //== Mode Select =========================================== -- script Gate Keeper::gkut -1,{ +- script Gate Keeper::gkut FAKE_NPC,{ mes "[Gate Keeper]"; mes "Glad to be of service."; mes "I will open the PVP fight"; @@ -374,7 +374,7 @@ OnInit: } //== Spectator Entrance ==================================== -- script Spectator's Entrance#dum::PVPSpectator -1,{ +- script Spectator's Entrance#dum::PVPSpectator FAKE_NPC,{ if (countitem(Admission_For_Duel) == 0) { mes "[PVP Compete Square Register Staff]"; mes "This is the entrance for viewers."; @@ -405,7 +405,7 @@ pvp_room,78,85,4 duplicate(PVPSpectator) Spectator's Entrance#3 8W_SOLDIER pvp_room,86,85,4 duplicate(PVPSpectator) Spectator's Entrance#4 8W_SOLDIER //== Spectator Warps ======================================= -- script Combat Square Staff#dum::PVPSpecWarp -1,{ +- script Combat Square Staff#dum::PVPSpecWarp FAKE_NPC,{ OnTouch: mes "[Combat Square Staff]"; mes "May I help you?"; diff --git a/npc/other/turbo_track.txt b/npc/other/turbo_track.txt index e7b55b34e..a6c2727fa 100644 --- a/npc/other/turbo_track.txt +++ b/npc/other/turbo_track.txt @@ -45,7 +45,7 @@ function script F_tt { return .@w$; } -- script entrance#tt_main -1,{ +- script entrance#tt_main FAKE_NPC,{ end; OnEnable: @@ -107,7 +107,7 @@ turbo_n_8,298,167,3 duplicate(Helper#tt_main) Helper#n8_F 4_F_TELEPORTER turbo_n_16,298,167,3 duplicate(Helper#tt_main) Helper#n16_F 4_F_TELEPORTER turbo_n_1,298,167,3 duplicate(Helper#tt_main) Helper#n1_F 4_F_TELEPORTER -turbo_e_4,298,167,0 script Point#tt_main -1,15,15,{ +turbo_e_4,298,167,0 script Point#tt_main FAKE_NPC,15,15,{ end; OnTouch: @@ -124,15 +124,15 @@ OnInit: disablenpc "Point Give-Away Guy#"+.@w$; end; } -turbo_e_4,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e4 -1,15,15 -turbo_e_8,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e8 -1,15,15 -turbo_e_16,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e16 -1,15,15 -turbo_n_4,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n4 -1,15,15 -turbo_n_8,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n8 -1,15,15 -turbo_n_16,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n16 -1,15,15 -turbo_n_1,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n1 -1,15,15 - -- script Broadcast#tt_main -1,{ +turbo_e_4,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e4 FAKE_NPC,15,15 +turbo_e_8,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e8 FAKE_NPC,15,15 +turbo_e_16,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#e16 FAKE_NPC,15,15 +turbo_n_4,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n4 FAKE_NPC,15,15 +turbo_n_8,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n8 FAKE_NPC,15,15 +turbo_n_16,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n16 FAKE_NPC,15,15 +turbo_n_1,298,167,0 duplicate(Point#tt_main) Point Give-Away Guy#n1 FAKE_NPC,15,15 + +- script Broadcast#tt_main FAKE_NPC,{ OnEnable: .@w$ = callfunc("F_tt"); enablenpc "Broadcast#"+.@w$; @@ -214,15 +214,15 @@ OnInit: disablenpc "Broadcast#"+.@w$; end; } -turbo_e_4,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e4 -1 -turbo_e_8,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e8 -1 -turbo_e_16,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e16 -1 -turbo_n_4,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n4 -1 -turbo_n_8,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n8 -1 -turbo_n_16,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n16 -1 -turbo_n_1,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n1 -1 - -- script Master#tt_main -1,{ +turbo_e_4,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e4 FAKE_NPC +turbo_e_8,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e8 FAKE_NPC +turbo_e_16,167,3,0 duplicate(Broadcast#tt_main) Broadcast#e16 FAKE_NPC +turbo_n_4,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n4 FAKE_NPC +turbo_n_8,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n8 FAKE_NPC +turbo_n_16,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n16 FAKE_NPC +turbo_n_1,167,3,0 duplicate(Broadcast#tt_main) Broadcast#n1 FAKE_NPC + +- script Master#tt_main FAKE_NPC,{ function RName; OnEnable: .@w$ = callfunc("F_tt"); @@ -425,35 +425,35 @@ OnInit: return .@rn$; } } -turbo_e_4,167,3,0 duplicate(Master#tt_main) Master#e4 -1 -turbo_e_8,167,3,0 duplicate(Master#tt_main) Master#e8 -1 -turbo_e_16,167,3,0 duplicate(Master#tt_main) Master#e16 -1 -turbo_n_4,167,3,0 duplicate(Master#tt_main) Master#n4 -1 -turbo_n_8,167,3,0 duplicate(Master#tt_main) Master#n8 -1 -turbo_n_8,167,3,0 duplicate(Master#tt_main) Master#n16 -1 -turbo_n_1,167,3,0 duplicate(Master#tt_main) Master#n1 -1 - -- script NoUnfair#tt_main -1,{ +turbo_e_4,167,3,0 duplicate(Master#tt_main) Master#e4 FAKE_NPC +turbo_e_8,167,3,0 duplicate(Master#tt_main) Master#e8 FAKE_NPC +turbo_e_16,167,3,0 duplicate(Master#tt_main) Master#e16 FAKE_NPC +turbo_n_4,167,3,0 duplicate(Master#tt_main) Master#n4 FAKE_NPC +turbo_n_8,167,3,0 duplicate(Master#tt_main) Master#n8 FAKE_NPC +turbo_n_8,167,3,0 duplicate(Master#tt_main) Master#n16 FAKE_NPC +turbo_n_1,167,3,0 duplicate(Master#tt_main) Master#n1 FAKE_NPC + +- script NoUnfair#tt_main FAKE_NPC,{ OnTouch: warp strnpcinfo(4),59,364; end; } -turbo_e_4,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e4-1 -1,0,31 -turbo_e_4,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#e4-2 -1,5,31 -turbo_e_8,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e8-1 -1,0,31 -turbo_e_8,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#e8-2 -1,5,31 -turbo_e_16,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e16-1 -1,0,31 -turbo_e_16,68,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e16-2 -1,5,31 -turbo_n_4,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n4-1 -1,0,31 -turbo_n_4,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n4-2 -1,5,31 -turbo_n_8,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n8-1 -1,0,31 -turbo_n_8,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n8-2 -1,5,31 -turbo_n_16,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n16-1 -1,0,31 -turbo_n_16,68,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n16-2 -1,5,31 -turbo_n_1,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n1-1 -1,0,31 -turbo_n_1,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n1-2 -1,5,31 - -- script LogTrap#tt_main -1,{ +turbo_e_4,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e4-1 FAKE_NPC,0,31 +turbo_e_4,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#e4-2 FAKE_NPC,5,31 +turbo_e_8,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e8-1 FAKE_NPC,0,31 +turbo_e_8,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#e8-2 FAKE_NPC,5,31 +turbo_e_16,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e16-1 FAKE_NPC,0,31 +turbo_e_16,68,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#e16-2 FAKE_NPC,5,31 +turbo_n_4,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n4-1 FAKE_NPC,0,31 +turbo_n_4,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n4-2 FAKE_NPC,5,31 +turbo_n_8,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n8-1 FAKE_NPC,0,31 +turbo_n_8,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n8-2 FAKE_NPC,5,31 +turbo_n_16,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n16-1 FAKE_NPC,0,31 +turbo_n_16,68,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n16-2 FAKE_NPC,5,31 +turbo_n_1,62,379,0 duplicate(NoUnfair#tt_main) No_Unfair_Start#n1-1 FAKE_NPC,0,31 +turbo_n_1,68,379,5 duplicate(NoUnfair#tt_main) No_Unfair_Start#n1-2 FAKE_NPC,5,31 + +- script LogTrap#tt_main FAKE_NPC,{ OnTouch: switch (rand(1,3)) { case 1: warp strnpcinfo(4),72,372; end; @@ -461,554 +461,554 @@ OnTouch: case 3: warp strnpcinfo(4),72,357; end; } } -turbo_e_4,118,377,0 duplicate(LogTrap#tt_main) trap_a#e4-1 -1,44,1 -turbo_e_4,77,375,0 duplicate(LogTrap#tt_main) trap_a#e4-2 -1,3,1 -turbo_e_4,82,375,0 duplicate(LogTrap#tt_main) trap_a#e4-3 -1,1,1 -turbo_e_4,82,372,0 duplicate(LogTrap#tt_main) trap_a#e4-4 -1,0,2 -turbo_e_4,83,372,0 duplicate(LogTrap#tt_main) trap_a#e4-5 -1,0,2 -turbo_e_4,97,374,0 duplicate(LogTrap#tt_main) trap_a#e4-6 -1,1,2 -turbo_e_4,98,374,0 duplicate(LogTrap#tt_main) trap_a#e4-7 -1,1,2 -turbo_e_4,122,372,0 duplicate(LogTrap#tt_main) trap_a#e4-8 -1,2,4 -turbo_e_4,125,374,0 duplicate(LogTrap#tt_main) trap_a#e4-9 -1,0,4 -turbo_e_4,132,374,0 duplicate(LogTrap#tt_main) trap_a#e4-10 -1,7,2 -turbo_e_4,156,374,0 duplicate(LogTrap#tt_main) trap_a#e4-11 -1,6,2 -turbo_e_4,163,375,0 duplicate(LogTrap#tt_main) trap_a#e4-12 -1,0,3 -turbo_e_4,164,377,0 duplicate(LogTrap#tt_main) trap_a#e4-13 -1,1,1 -turbo_e_4,76,369,0 duplicate(LogTrap#tt_main) trap_b#e4-1 -1,2,2 -turbo_e_4,79,369,0 duplicate(LogTrap#tt_main) trap_b#e4-2 -1,0,2 -turbo_e_4,77,366,0 duplicate(LogTrap#tt_main) trap_b#e4-3 -1,3,0 -turbo_e_4,85,366,0 duplicate(LogTrap#tt_main) trap_b#e4-4 -1,5,1 -turbo_e_4,87,363,0 duplicate(LogTrap#tt_main) trap_b#e4-5 -1,2,1 -turbo_e_4,88,368,0 duplicate(LogTrap#tt_main) trap_b#e4-6 -1,2,5 -turbo_e_4,92,370,0 duplicate(LogTrap#tt_main) trap_b#e4-7 -1,1,3 -turbo_e_4,98,368,0 duplicate(LogTrap#tt_main) trap_b#e4-8 -1,4,1 -turbo_e_4,109,371,0 duplicate(LogTrap#tt_main) trap_b#e4-9 -1,7,2 -turbo_e_4,110,368,0 duplicate(LogTrap#tt_main) trap_b#e4-10 -1,7,0 -turbo_e_4,113,366,0 duplicate(LogTrap#tt_main) trap_b#e4-11 -1,3,2 -turbo_e_4,117,368,0 duplicate(LogTrap#tt_main) trap_b#e4-12 -1,0,5 -turbo_e_4,123,364,0 duplicate(LogTrap#tt_main) trap_b#e4-13 -1,6,1 -turbo_e_4,136,368,0 duplicate(LogTrap#tt_main) trap_b#e4-14 -1,8,1 -turbo_e_4,136,366,0 duplicate(LogTrap#tt_main) trap_b#e4-15 -1,8,0 -turbo_e_4,144,370,0 duplicate(LogTrap#tt_main) trap_b#e4-16 -1,2,3 -turbo_e_4,147,370,0 duplicate(LogTrap#tt_main) trap_b#e4-17 -1,0,3 -turbo_e_4,155,369,0 duplicate(LogTrap#tt_main) trap_b#e4-18 -1,7,0 -turbo_e_4,155,368,0 duplicate(LogTrap#tt_main) trap_b#e4-19 -1,7,0 -turbo_e_4,151,367,0 duplicate(LogTrap#tt_main) trap_b#e4-20 -1,3,0 -turbo_e_4,153,366,0 duplicate(LogTrap#tt_main) trap_b#e4-21 -1,1,0 -turbo_e_4,155,367,0 duplicate(LogTrap#tt_main) trap_b#e4-22 -1,0,1 -turbo_e_4,78,362,0 duplicate(LogTrap#tt_main) trap_c#e4-1 -1,4,1 -turbo_e_4,78,359,0 duplicate(LogTrap#tt_main) trap_c#e4-2 -1,4,1 -turbo_e_4,83,362,0 duplicate(LogTrap#tt_main) trap_c#e4-3 -1,0,1 -turbo_e_4,88,359,0 duplicate(LogTrap#tt_main) trap_c#e4-4 -1,5,1 -turbo_e_4,89,357,0 duplicate(LogTrap#tt_main) trap_c#e4-5 -1,1,1 -turbo_e_4,92,390,0 duplicate(LogTrap#tt_main) trap_c#e4-6 -1,1,1 -turbo_e_4,92,357,0 duplicate(LogTrap#tt_main) trap_c#e4-7 -1,1,1 -turbo_e_4,98,364,0 duplicate(LogTrap#tt_main) trap_c#e4-8 -1,6,1 -turbo_e_4,98,362,0 duplicate(LogTrap#tt_main) trap_c#e4-9 -1,6,0 -turbo_e_4,106,364,0 duplicate(LogTrap#tt_main) trap_c#e4-10 -1,2,2 -turbo_e_4,107,360,0 duplicate(LogTrap#tt_main) trap_c#e4-11 -1,1,2 -turbo_e_4,109,360,0 duplicate(LogTrap#tt_main) trap_c#e4-12 -1,0,2 -turbo_e_4,112,361,0 duplicate(LogTrap#tt_main) trap_c#e4-13 -1,3,1 -turbo_e_4,116,359,0 duplicate(LogTrap#tt_main) trap_c#e4-14 -1,0,2 -turbo_e_4,117,359,0 duplicate(LogTrap#tt_main) trap_c#e4-15 -1,0,2 -turbo_e_4,116,356,0 duplicate(LogTrap#tt_main) trap_c#e4-16 -1,0,2 -turbo_e_4,117,356,0 duplicate(LogTrap#tt_main) trap_c#e4-17 -1,0,2 -turbo_e_4,129,360,0 duplicate(LogTrap#tt_main) trap_c#e4-18 -1,12,1 -turbo_e_4,129,358,0 duplicate(LogTrap#tt_main) trap_c#e4-19 -1,12,0 -turbo_e_4,132,357,0 duplicate(LogTrap#tt_main) trap_c#e4-20 -1,2,1 -turbo_e_4,137,357,0 duplicate(LogTrap#tt_main) trap_c#e4-21 -1,2,1 -turbo_e_4,147,363,0 duplicate(LogTrap#tt_main) trap_c#e4-22 -1,16,1 -turbo_e_4,149,365,0 duplicate(LogTrap#tt_main) trap_c#e4-23 -1,1,0 -turbo_e_4,158,362,0 duplicate(LogTrap#tt_main) trap_c#e4-24 -1,1,4 -turbo_e_4,154,360,0 duplicate(LogTrap#tt_main) trap_c#e4-25 -1,2,2 -turbo_e_4,161,360,0 duplicate(LogTrap#tt_main) trap_c#e4-26 -1,1,2 -turbo_e_4,161,365,0 duplicate(LogTrap#tt_main) trap_c#e4-27 -1,1,0 -turbo_e_4,160,366,0 duplicate(LogTrap#tt_main) trap_c#e4-28 -1 -turbo_e_4,79,353,0 duplicate(LogTrap#tt_main) trap_d#e4-1 -1,5,2 -turbo_e_4,85,354,0 duplicate(LogTrap#tt_main) trap_d#e4-2 -1,0,1 -turbo_e_4,99,353,0 duplicate(LogTrap#tt_main) trap_d#e4-3 -1,14,0 -turbo_e_4,99,352,0 duplicate(LogTrap#tt_main) trap_d#e4-4 -1,14,0 -turbo_e_4,99,356,0 duplicate(LogTrap#tt_main) trap_d#e4-5 -1,3,3 -turbo_e_4,103,356,0 duplicate(LogTrap#tt_main) trap_d#e4-6 -1,0,3 -turbo_e_4,108,354,0 duplicate(LogTrap#tt_main) trap_d#e4-7 -1,5,1 -turbo_e_4,112,356,0 duplicate(LogTrap#tt_main) trap_d#e4-8 -1,0,1 -turbo_e_4,113,356,0 duplicate(LogTrap#tt_main) trap_d#e4-9 -1,0,1 -turbo_e_4,123,353,0 duplicate(LogTrap#tt_main) trap_d#e4-10 -1,3,2 -turbo_e_4,127,353,0 duplicate(LogTrap#tt_main) trap_d#e4-11 -1,0,2 -turbo_e_4,145,352,0 duplicate(LogTrap#tt_main) trap_d#e4-12 -1,17,1 -turbo_e_4,152,354,0 duplicate(LogTrap#tt_main) trap_d#e4-13 -1,10,1 -turbo_e_4,145,357,0 duplicate(LogTrap#tt_main) trap_d#e4-14 -1,1,2 -turbo_e_4,148,357,0 duplicate(LogTrap#tt_main) trap_d#e4-15 -1,1,2 -turbo_e_8,118,377,0 duplicate(LogTrap#tt_main) trap_a#e8-1 -1,44,1 -turbo_e_8,77,375,0 duplicate(LogTrap#tt_main) trap_a#e8-2 -1,3,1 -turbo_e_8,82,375,0 duplicate(LogTrap#tt_main) trap_a#e8-3 -1,1,1 -turbo_e_8,82,372,0 duplicate(LogTrap#tt_main) trap_a#e8-4 -1,0,2 -turbo_e_8,83,372,0 duplicate(LogTrap#tt_main) trap_a#e8-5 -1,0,2 -turbo_e_8,97,374,0 duplicate(LogTrap#tt_main) trap_a#e8-6 -1,1,2 -turbo_e_8,98,374,0 duplicate(LogTrap#tt_main) trap_a#e8-7 -1,1,2 -turbo_e_8,122,372,0 duplicate(LogTrap#tt_main) trap_a#e8-8 -1,2,4 -turbo_e_8,125,374,0 duplicate(LogTrap#tt_main) trap_a#e8-9 -1,0,4 -turbo_e_8,132,374,0 duplicate(LogTrap#tt_main) trap_a#e8-10 -1,7,2 -turbo_e_8,156,374,0 duplicate(LogTrap#tt_main) trap_a#e8-11 -1,6,2 -turbo_e_8,163,375,0 duplicate(LogTrap#tt_main) trap_a#e8-12 -1,0,3 -turbo_e_8,164,377,0 duplicate(LogTrap#tt_main) trap_a#e8-13 -1,1,1 -turbo_e_8,76,369,0 duplicate(LogTrap#tt_main) trap_b#e8-1 -1,2,2 -turbo_e_8,79,369,0 duplicate(LogTrap#tt_main) trap_b#e8-2 -1,0,2 -turbo_e_8,77,366,0 duplicate(LogTrap#tt_main) trap_b#e8-3 -1,3,0 -turbo_e_8,85,366,0 duplicate(LogTrap#tt_main) trap_b#e8-4 -1,5,1 -turbo_e_8,87,363,0 duplicate(LogTrap#tt_main) trap_b#e8-5 -1,2,1 -turbo_e_8,88,368,0 duplicate(LogTrap#tt_main) trap_b#e8-6 -1,2,5 -turbo_e_8,92,370,0 duplicate(LogTrap#tt_main) trap_b#e8-7 -1,1,3 -turbo_e_8,98,368,0 duplicate(LogTrap#tt_main) trap_b#e8-8 -1,4,1 -turbo_e_8,109,371,0 duplicate(LogTrap#tt_main) trap_b#e8-9 -1,7,2 -turbo_e_8,110,368,0 duplicate(LogTrap#tt_main) trap_b#e8-10 -1,7,0 -turbo_e_8,113,366,0 duplicate(LogTrap#tt_main) trap_b#e8-11 -1,3,2 -turbo_e_8,117,368,0 duplicate(LogTrap#tt_main) trap_b#e8-12 -1,0,5 -turbo_e_8,123,364,0 duplicate(LogTrap#tt_main) trap_b#e8-13 -1,6,1 -turbo_e_8,136,368,0 duplicate(LogTrap#tt_main) trap_b#e8-14 -1,8,1 -turbo_e_8,136,366,0 duplicate(LogTrap#tt_main) trap_b#e8-15 -1,8,0 -turbo_e_8,144,370,0 duplicate(LogTrap#tt_main) trap_b#e8-16 -1,2,3 -turbo_e_8,147,370,0 duplicate(LogTrap#tt_main) trap_b#e8-17 -1,0,3 -turbo_e_8,155,369,0 duplicate(LogTrap#tt_main) trap_b#e8-18 -1,7,0 -turbo_e_8,155,368,0 duplicate(LogTrap#tt_main) trap_b#e8-19 -1,7,0 -turbo_e_8,151,367,0 duplicate(LogTrap#tt_main) trap_b#e8-20 -1,3,0 -turbo_e_8,153,366,0 duplicate(LogTrap#tt_main) trap_b#e8-21 -1,1,0 -turbo_e_8,155,367,0 duplicate(LogTrap#tt_main) trap_b#e8-22 -1,0,1 -turbo_e_8,78,362,0 duplicate(LogTrap#tt_main) trap_c#e8-1 -1,4,1 -turbo_e_8,78,359,0 duplicate(LogTrap#tt_main) trap_c#e8-2 -1,4,1 -turbo_e_8,83,362,0 duplicate(LogTrap#tt_main) trap_c#e8-3 -1,0,1 -turbo_e_8,88,359,0 duplicate(LogTrap#tt_main) trap_c#e8-4 -1,5,1 -turbo_e_8,89,357,0 duplicate(LogTrap#tt_main) trap_c#e8-5 -1,1,1 -turbo_e_8,92,390,0 duplicate(LogTrap#tt_main) trap_c#e8-6 -1,1,1 -turbo_e_8,92,357,0 duplicate(LogTrap#tt_main) trap_c#e8-7 -1,1,1 -turbo_e_8,98,364,0 duplicate(LogTrap#tt_main) trap_c#e8-8 -1,6,1 -turbo_e_8,98,362,0 duplicate(LogTrap#tt_main) trap_c#e8-9 -1,6,0 -turbo_e_8,106,364,0 duplicate(LogTrap#tt_main) trap_c#e8-10 -1,2,2 -turbo_e_8,107,360,0 duplicate(LogTrap#tt_main) trap_c#e8-11 -1,1,2 -turbo_e_8,109,360,0 duplicate(LogTrap#tt_main) trap_c#e8-12 -1,0,2 -turbo_e_8,112,361,0 duplicate(LogTrap#tt_main) trap_c#e8-13 -1,3,1 -turbo_e_8,116,359,0 duplicate(LogTrap#tt_main) trap_c#e8-14 -1,0,2 -turbo_e_8,117,359,0 duplicate(LogTrap#tt_main) trap_c#e8-15 -1,0,2 -turbo_e_8,116,356,0 duplicate(LogTrap#tt_main) trap_c#e8-16 -1,0,2 -turbo_e_8,117,356,0 duplicate(LogTrap#tt_main) trap_c#e8-17 -1,0,2 -turbo_e_8,129,360,0 duplicate(LogTrap#tt_main) trap_c#e8-18 -1,12,1 -turbo_e_8,129,358,0 duplicate(LogTrap#tt_main) trap_c#e8-19 -1,12,0 -turbo_e_8,132,357,0 duplicate(LogTrap#tt_main) trap_c#e8-20 -1,2,1 -turbo_e_8,137,357,0 duplicate(LogTrap#tt_main) trap_c#e8-21 -1,2,1 -turbo_e_8,147,363,0 duplicate(LogTrap#tt_main) trap_c#e8-22 -1,16,1 -turbo_e_8,149,365,0 duplicate(LogTrap#tt_main) trap_c#e8-23 -1,1,0 -turbo_e_8,158,362,0 duplicate(LogTrap#tt_main) trap_c#e8-24 -1,1,4 -turbo_e_8,154,360,0 duplicate(LogTrap#tt_main) trap_c#e8-25 -1,2,2 -turbo_e_8,161,360,0 duplicate(LogTrap#tt_main) trap_c#e8-26 -1,1,2 -turbo_e_8,161,365,0 duplicate(LogTrap#tt_main) trap_c#e8-27 -1,1,0 -turbo_e_8,160,366,0 duplicate(LogTrap#tt_main) trap_c#e8-28 -1 -turbo_e_8,79,353,0 duplicate(LogTrap#tt_main) trap_d#e8-1 -1,5,2 -turbo_e_8,85,354,0 duplicate(LogTrap#tt_main) trap_d#e8-2 -1,0,1 -turbo_e_8,99,353,0 duplicate(LogTrap#tt_main) trap_d#e8-3 -1,14,0 -turbo_e_8,99,352,0 duplicate(LogTrap#tt_main) trap_d#e8-4 -1,14,0 -turbo_e_8,99,356,0 duplicate(LogTrap#tt_main) trap_d#e8-5 -1,3,3 -turbo_e_8,103,356,0 duplicate(LogTrap#tt_main) trap_d#e8-6 -1,0,3 -turbo_e_8,108,354,0 duplicate(LogTrap#tt_main) trap_d#e8-7 -1,5,1 -turbo_e_8,112,356,0 duplicate(LogTrap#tt_main) trap_d#e8-8 -1,0,1 -turbo_e_8,113,356,0 duplicate(LogTrap#tt_main) trap_d#e8-9 -1,0,1 -turbo_e_8,123,353,0 duplicate(LogTrap#tt_main) trap_d#e8-10 -1,3,2 -turbo_e_8,127,353,0 duplicate(LogTrap#tt_main) trap_d#e8-11 -1,0,2 -turbo_e_8,145,352,0 duplicate(LogTrap#tt_main) trap_d#e8-12 -1,17,1 -turbo_e_8,152,354,0 duplicate(LogTrap#tt_main) trap_d#e8-13 -1,10,1 -turbo_e_8,145,357,0 duplicate(LogTrap#tt_main) trap_d#e8-14 -1,1,2 -turbo_e_8,148,357,0 duplicate(LogTrap#tt_main) trap_d#e8-15 -1,1,2 -turbo_e_16,118,377,0 duplicate(LogTrap#tt_main) trap_a#e16-1 -1,44,1 -turbo_e_16,77,375,0 duplicate(LogTrap#tt_main) trap_a#e16-2 -1,3,1 -turbo_e_16,82,375,0 duplicate(LogTrap#tt_main) trap_a#e16-3 -1,1,1 -turbo_e_16,82,372,0 duplicate(LogTrap#tt_main) trap_a#e16-4 -1,0,2 -turbo_e_16,83,372,0 duplicate(LogTrap#tt_main) trap_a#e16-5 -1,0,2 -turbo_e_16,97,374,0 duplicate(LogTrap#tt_main) trap_a#e16-6 -1,1,2 -turbo_e_16,98,374,0 duplicate(LogTrap#tt_main) trap_a#e16-7 -1,1,2 -turbo_e_16,122,372,0 duplicate(LogTrap#tt_main) trap_a#e16-8 -1,2,4 -turbo_e_16,125,374,0 duplicate(LogTrap#tt_main) trap_a#e16-9 -1,0,4 -turbo_e_16,132,374,0 duplicate(LogTrap#tt_main) trap_a#e16-10 -1,7,2 -turbo_e_16,156,374,0 duplicate(LogTrap#tt_main) trap_a#e16-11 -1,6,2 -turbo_e_16,163,375,0 duplicate(LogTrap#tt_main) trap_a#e16-12 -1,0,3 -turbo_e_16,164,377,0 duplicate(LogTrap#tt_main) trap_a#e16-13 -1,1,1 -turbo_e_16,76,369,0 duplicate(LogTrap#tt_main) trap_b#e16-1 -1,2,2 -turbo_e_16,79,369,0 duplicate(LogTrap#tt_main) trap_b#e16-2 -1,0,2 -turbo_e_16,77,366,0 duplicate(LogTrap#tt_main) trap_b#e16-3 -1,3,0 -turbo_e_16,85,366,0 duplicate(LogTrap#tt_main) trap_b#e16-4 -1,5,1 -turbo_e_16,87,363,0 duplicate(LogTrap#tt_main) trap_b#e16-5 -1,2,1 -turbo_e_16,88,368,0 duplicate(LogTrap#tt_main) trap_b#e16-6 -1,2,5 -turbo_e_16,92,370,0 duplicate(LogTrap#tt_main) trap_b#e16-7 -1,1,3 -turbo_e_16,98,368,0 duplicate(LogTrap#tt_main) trap_b#e16-8 -1,4,1 -turbo_e_16,109,371,0 duplicate(LogTrap#tt_main) trap_b#e16-9 -1,7,2 -turbo_e_16,110,368,0 duplicate(LogTrap#tt_main) trap_b#e16-10 -1,7,0 -turbo_e_16,113,366,0 duplicate(LogTrap#tt_main) trap_b#e16-11 -1,3,2 -turbo_e_16,117,368,0 duplicate(LogTrap#tt_main) trap_b#e16-12 -1,0,5 -turbo_e_16,123,364,0 duplicate(LogTrap#tt_main) trap_b#e16-13 -1,6,1 -turbo_e_16,136,368,0 duplicate(LogTrap#tt_main) trap_b#e16-14 -1,8,1 -turbo_e_16,136,366,0 duplicate(LogTrap#tt_main) trap_b#e16-15 -1,8,0 -turbo_e_16,144,370,0 duplicate(LogTrap#tt_main) trap_b#e16-16 -1,2,3 -turbo_e_16,147,370,0 duplicate(LogTrap#tt_main) trap_b#e16-17 -1,0,3 -turbo_e_16,155,369,0 duplicate(LogTrap#tt_main) trap_b#e16-18 -1,7,0 -turbo_e_16,155,368,0 duplicate(LogTrap#tt_main) trap_b#e16-19 -1,7,0 -turbo_e_16,151,367,0 duplicate(LogTrap#tt_main) trap_b#e16-20 -1,3,0 -turbo_e_16,153,366,0 duplicate(LogTrap#tt_main) trap_b#e16-21 -1,1,0 -turbo_e_16,155,367,0 duplicate(LogTrap#tt_main) trap_b#e16-22 -1,0,1 -turbo_e_16,78,362,0 duplicate(LogTrap#tt_main) trap_c#e16-1 -1,4,1 -turbo_e_16,78,359,0 duplicate(LogTrap#tt_main) trap_c#e16-2 -1,4,1 -turbo_e_16,83,362,0 duplicate(LogTrap#tt_main) trap_c#e16-3 -1,0,1 -turbo_e_16,88,359,0 duplicate(LogTrap#tt_main) trap_c#e16-4 -1,5,1 -turbo_e_16,89,357,0 duplicate(LogTrap#tt_main) trap_c#e16-5 -1,1,1 -turbo_e_16,92,390,0 duplicate(LogTrap#tt_main) trap_c#e16-6 -1,1,1 -turbo_e_16,92,357,0 duplicate(LogTrap#tt_main) trap_c#e16-7 -1,1,1 -turbo_e_16,98,364,0 duplicate(LogTrap#tt_main) trap_c#e16-8 -1,6,1 -turbo_e_16,98,362,0 duplicate(LogTrap#tt_main) trap_c#e16-9 -1,6,0 -turbo_e_16,106,364,0 duplicate(LogTrap#tt_main) trap_c#e16-10 -1,2,2 -turbo_e_16,107,360,0 duplicate(LogTrap#tt_main) trap_c#e16-11 -1,1,2 -turbo_e_16,109,360,0 duplicate(LogTrap#tt_main) trap_c#e16-12 -1,0,2 -turbo_e_16,112,361,0 duplicate(LogTrap#tt_main) trap_c#e16-13 -1,3,1 -turbo_e_16,116,359,0 duplicate(LogTrap#tt_main) trap_c#e16-14 -1,0,2 -turbo_e_16,117,359,0 duplicate(LogTrap#tt_main) trap_c#e16-15 -1,0,2 -turbo_e_16,116,356,0 duplicate(LogTrap#tt_main) trap_c#e16-16 -1,0,2 -turbo_e_16,117,356,0 duplicate(LogTrap#tt_main) trap_c#e16-17 -1,0,2 -turbo_e_16,129,360,0 duplicate(LogTrap#tt_main) trap_c#e16-18 -1,12,1 -turbo_e_16,129,358,0 duplicate(LogTrap#tt_main) trap_c#e16-19 -1,12,0 -turbo_e_16,132,357,0 duplicate(LogTrap#tt_main) trap_c#e16-20 -1,2,1 -turbo_e_16,137,357,0 duplicate(LogTrap#tt_main) trap_c#e16-21 -1,2,1 -turbo_e_16,147,363,0 duplicate(LogTrap#tt_main) trap_c#e16-22 -1,16,1 -turbo_e_16,149,365,0 duplicate(LogTrap#tt_main) trap_c#e16-23 -1,1,0 -turbo_e_16,158,362,0 duplicate(LogTrap#tt_main) trap_c#e16-24 -1,1,4 -turbo_e_16,154,360,0 duplicate(LogTrap#tt_main) trap_c#e16-25 -1,2,2 -turbo_e_16,161,360,0 duplicate(LogTrap#tt_main) trap_c#e16-26 -1,1,2 -turbo_e_16,161,365,0 duplicate(LogTrap#tt_main) trap_c#e16-27 -1,1,0 -turbo_e_16,160,366,0 duplicate(LogTrap#tt_main) trap_c#e16-28 -1 -turbo_e_16,79,353,0 duplicate(LogTrap#tt_main) trap_d#e16-1 -1,5,2 -turbo_e_16,85,354,0 duplicate(LogTrap#tt_main) trap_d#e16-2 -1,0,1 -turbo_e_16,99,353,0 duplicate(LogTrap#tt_main) trap_d#e16-3 -1,14,0 -turbo_e_16,99,352,0 duplicate(LogTrap#tt_main) trap_d#e16-4 -1,14,0 -turbo_e_16,99,356,0 duplicate(LogTrap#tt_main) trap_d#e16-5 -1,3,3 -turbo_e_16,103,356,0 duplicate(LogTrap#tt_main) trap_d#e16-6 -1,0,3 -turbo_e_16,108,354,0 duplicate(LogTrap#tt_main) trap_d#e16-7 -1,5,1 -turbo_e_16,112,356,0 duplicate(LogTrap#tt_main) trap_d#e16-8 -1,0,1 -turbo_e_16,113,356,0 duplicate(LogTrap#tt_main) trap_d#e16-9 -1,0,1 -turbo_e_16,123,353,0 duplicate(LogTrap#tt_main) trap_d#e16-10 -1,3,2 -turbo_e_16,127,353,0 duplicate(LogTrap#tt_main) trap_d#e16-11 -1,0,2 -turbo_e_16,145,352,0 duplicate(LogTrap#tt_main) trap_d#e16-12 -1,17,1 -turbo_e_16,152,354,0 duplicate(LogTrap#tt_main) trap_d#e16-13 -1,10,1 -turbo_e_16,145,357,0 duplicate(LogTrap#tt_main) trap_d#e16-14 -1,1,2 -turbo_e_16,148,357,0 duplicate(LogTrap#tt_main) trap_d#e16-15 -1,1,2 -turbo_n_4,118,377,0 duplicate(LogTrap#tt_main) trap_a#n4-1 -1,44,1 -turbo_n_4,77,375,0 duplicate(LogTrap#tt_main) trap_a#n4-2 -1,3,1 -turbo_n_4,82,375,0 duplicate(LogTrap#tt_main) trap_a#n4-3 -1,1,1 -turbo_n_4,82,372,0 duplicate(LogTrap#tt_main) trap_a#n4-4 -1,0,2 -turbo_n_4,83,372,0 duplicate(LogTrap#tt_main) trap_a#n4-5 -1,0,2 -turbo_n_4,97,374,0 duplicate(LogTrap#tt_main) trap_a#n4-6 -1,1,2 -turbo_n_4,98,374,0 duplicate(LogTrap#tt_main) trap_a#n4-7 -1,1,2 -turbo_n_4,122,372,0 duplicate(LogTrap#tt_main) trap_a#n4-8 -1,2,4 -turbo_n_4,125,374,0 duplicate(LogTrap#tt_main) trap_a#n4-9 -1,0,4 -turbo_n_4,132,374,0 duplicate(LogTrap#tt_main) trap_a#n4-10 -1,7,2 -turbo_n_4,156,374,0 duplicate(LogTrap#tt_main) trap_a#n4-11 -1,6,2 -turbo_n_4,163,375,0 duplicate(LogTrap#tt_main) trap_a#n4-12 -1,0,3 -turbo_n_4,164,377,0 duplicate(LogTrap#tt_main) trap_a#n4-13 -1,1,1 -turbo_n_4,76,369,0 duplicate(LogTrap#tt_main) trap_b#n4-1 -1,2,2 -turbo_n_4,79,369,0 duplicate(LogTrap#tt_main) trap_b#n4-2 -1,0,2 -turbo_n_4,77,366,0 duplicate(LogTrap#tt_main) trap_b#n4-3 -1,3,0 -turbo_n_4,85,366,0 duplicate(LogTrap#tt_main) trap_b#n4-4 -1,5,1 -turbo_n_4,87,363,0 duplicate(LogTrap#tt_main) trap_b#n4-5 -1,2,1 -turbo_n_4,88,368,0 duplicate(LogTrap#tt_main) trap_b#n4-6 -1,2,5 -turbo_n_4,92,370,0 duplicate(LogTrap#tt_main) trap_b#n4-7 -1,1,3 -turbo_n_4,98,368,0 duplicate(LogTrap#tt_main) trap_b#n4-8 -1,4,1 -turbo_n_4,109,371,0 duplicate(LogTrap#tt_main) trap_b#n4-9 -1,7,2 -turbo_n_4,110,368,0 duplicate(LogTrap#tt_main) trap_b#n4-10 -1,7,0 -turbo_n_4,113,366,0 duplicate(LogTrap#tt_main) trap_b#n4-11 -1,3,2 -turbo_n_4,117,368,0 duplicate(LogTrap#tt_main) trap_b#n4-12 -1,0,5 -turbo_n_4,123,364,0 duplicate(LogTrap#tt_main) trap_b#n4-13 -1,6,1 -turbo_n_4,136,368,0 duplicate(LogTrap#tt_main) trap_b#n4-14 -1,8,1 -turbo_n_4,136,366,0 duplicate(LogTrap#tt_main) trap_b#n4-15 -1,8,0 -turbo_n_4,144,370,0 duplicate(LogTrap#tt_main) trap_b#n4-16 -1,2,3 -turbo_n_4,147,370,0 duplicate(LogTrap#tt_main) trap_b#n4-17 -1,0,3 -turbo_n_4,155,369,0 duplicate(LogTrap#tt_main) trap_b#n4-18 -1,7,0 -turbo_n_4,155,368,0 duplicate(LogTrap#tt_main) trap_b#n4-19 -1,7,0 -turbo_n_4,151,367,0 duplicate(LogTrap#tt_main) trap_b#n4-20 -1,3,0 -turbo_n_4,153,366,0 duplicate(LogTrap#tt_main) trap_b#n4-21 -1,1,0 -turbo_n_4,155,367,0 duplicate(LogTrap#tt_main) trap_b#n4-22 -1,0,1 -turbo_n_4,78,362,0 duplicate(LogTrap#tt_main) trap_c#n4-1 -1,4,1 -turbo_n_4,78,359,0 duplicate(LogTrap#tt_main) trap_c#n4-2 -1,4,1 -turbo_n_4,83,362,0 duplicate(LogTrap#tt_main) trap_c#n4-3 -1,0,1 -turbo_n_4,88,359,0 duplicate(LogTrap#tt_main) trap_c#n4-4 -1,5,1 -turbo_n_4,89,357,0 duplicate(LogTrap#tt_main) trap_c#n4-5 -1,1,1 -turbo_n_4,92,390,0 duplicate(LogTrap#tt_main) trap_c#n4-6 -1,1,1 -turbo_n_4,92,357,0 duplicate(LogTrap#tt_main) trap_c#n4-7 -1,1,1 -turbo_n_4,98,364,0 duplicate(LogTrap#tt_main) trap_c#n4-8 -1,6,1 -turbo_n_4,98,362,0 duplicate(LogTrap#tt_main) trap_c#n4-9 -1,6,0 -turbo_n_4,106,364,0 duplicate(LogTrap#tt_main) trap_c#n4-10 -1,2,2 -turbo_n_4,107,360,0 duplicate(LogTrap#tt_main) trap_c#n4-11 -1,1,2 -turbo_n_4,109,360,0 duplicate(LogTrap#tt_main) trap_c#n4-12 -1,0,2 -turbo_n_4,112,361,0 duplicate(LogTrap#tt_main) trap_c#n4-13 -1,3,1 -turbo_n_4,116,359,0 duplicate(LogTrap#tt_main) trap_c#n4-14 -1,0,2 -turbo_n_4,117,359,0 duplicate(LogTrap#tt_main) trap_c#n4-15 -1,0,2 -turbo_n_4,116,356,0 duplicate(LogTrap#tt_main) trap_c#n4-16 -1,0,2 -turbo_n_4,117,356,0 duplicate(LogTrap#tt_main) trap_c#n4-17 -1,0,2 -turbo_n_4,129,360,0 duplicate(LogTrap#tt_main) trap_c#n4-18 -1,12,1 -turbo_n_4,129,358,0 duplicate(LogTrap#tt_main) trap_c#n4-19 -1,12,0 -turbo_n_4,132,357,0 duplicate(LogTrap#tt_main) trap_c#n4-20 -1,2,1 -turbo_n_4,137,357,0 duplicate(LogTrap#tt_main) trap_c#n4-21 -1,2,1 -turbo_n_4,147,363,0 duplicate(LogTrap#tt_main) trap_c#n4-22 -1,16,1 -turbo_n_4,149,365,0 duplicate(LogTrap#tt_main) trap_c#n4-23 -1,1,0 -turbo_n_4,158,362,0 duplicate(LogTrap#tt_main) trap_c#n4-24 -1,1,4 -turbo_n_4,154,360,0 duplicate(LogTrap#tt_main) trap_c#n4-25 -1,2,2 -turbo_n_4,161,360,0 duplicate(LogTrap#tt_main) trap_c#n4-26 -1,1,2 -turbo_n_4,161,365,0 duplicate(LogTrap#tt_main) trap_c#n4-27 -1,1,0 -turbo_n_4,160,366,0 duplicate(LogTrap#tt_main) trap_c#n4-28 -1 -turbo_n_4,79,353,0 duplicate(LogTrap#tt_main) trap_d#n4-1 -1,5,2 -turbo_n_4,85,354,0 duplicate(LogTrap#tt_main) trap_d#n4-2 -1,0,1 -turbo_n_4,99,353,0 duplicate(LogTrap#tt_main) trap_d#n4-3 -1,14,0 -turbo_n_4,99,352,0 duplicate(LogTrap#tt_main) trap_d#n4-4 -1,14,0 -turbo_n_4,99,356,0 duplicate(LogTrap#tt_main) trap_d#n4-5 -1,3,3 -turbo_n_4,103,356,0 duplicate(LogTrap#tt_main) trap_d#n4-6 -1,0,3 -turbo_n_4,108,354,0 duplicate(LogTrap#tt_main) trap_d#n4-7 -1,5,1 -turbo_n_4,112,356,0 duplicate(LogTrap#tt_main) trap_d#n4-8 -1,0,1 -turbo_n_4,113,356,0 duplicate(LogTrap#tt_main) trap_d#n4-9 -1,0,1 -turbo_n_4,123,353,0 duplicate(LogTrap#tt_main) trap_d#n4-10 -1,3,2 -turbo_n_4,127,353,0 duplicate(LogTrap#tt_main) trap_d#n4-11 -1,0,2 -turbo_n_4,145,352,0 duplicate(LogTrap#tt_main) trap_d#n4-12 -1,17,1 -turbo_n_4,152,354,0 duplicate(LogTrap#tt_main) trap_d#n4-13 -1,10,1 -turbo_n_4,145,357,0 duplicate(LogTrap#tt_main) trap_d#n4-14 -1,1,2 -turbo_n_4,148,357,0 duplicate(LogTrap#tt_main) trap_d#n4-15 -1,1,2 -turbo_n_8,118,377,0 duplicate(LogTrap#tt_main) trap_a#n8-1 -1,44,1, -turbo_n_8,77,375,0 duplicate(LogTrap#tt_main) trap_a#n8-2 -1,3,1 -turbo_n_8,82,375,0 duplicate(LogTrap#tt_main) trap_a#n8-3 -1,1,1 -turbo_n_8,82,372,0 duplicate(LogTrap#tt_main) trap_a#n8-4 -1,0,2 -turbo_n_8,83,372,0 duplicate(LogTrap#tt_main) trap_a#n8-5 -1,0,2 -turbo_n_8,97,374,0 duplicate(LogTrap#tt_main) trap_a#n8-6 -1,1,2 -turbo_n_8,98,374,0 duplicate(LogTrap#tt_main) trap_a#n8-7 -1,1,2 -turbo_n_8,122,372,0 duplicate(LogTrap#tt_main) trap_a#n8-8 -1,2,4 -turbo_n_8,125,374,0 duplicate(LogTrap#tt_main) trap_a#n8-9 -1,0,4 -turbo_n_8,132,374,0 duplicate(LogTrap#tt_main) trap_a#n8-10 -1,7,2 -turbo_n_8,156,374,0 duplicate(LogTrap#tt_main) trap_a#n8-11 -1,6,2 -turbo_n_8,163,375,0 duplicate(LogTrap#tt_main) trap_a#n8-12 -1,0,3 -turbo_n_8,164,377,0 duplicate(LogTrap#tt_main) trap_a#n8-13 -1,1,1 -turbo_n_8,76,369,0 duplicate(LogTrap#tt_main) trap_b#n8-1 -1,2,2 -turbo_n_8,79,369,0 duplicate(LogTrap#tt_main) trap_b#n8-2 -1,0,2 -turbo_n_8,77,366,0 duplicate(LogTrap#tt_main) trap_b#n8-3 -1,3,0 -turbo_n_8,85,366,0 duplicate(LogTrap#tt_main) trap_b#n8-4 -1,5,1 -turbo_n_8,87,363,0 duplicate(LogTrap#tt_main) trap_b#n8-5 -1,2,1 -turbo_n_8,88,368,0 duplicate(LogTrap#tt_main) trap_b#n8-6 -1,2,5 -turbo_n_8,92,370,0 duplicate(LogTrap#tt_main) trap_b#n8-7 -1,1,3 -turbo_n_8,98,368,0 duplicate(LogTrap#tt_main) trap_b#n8-8 -1,4,1 -turbo_n_8,109,371,0 duplicate(LogTrap#tt_main) trap_b#n8-9 -1,7,2 -turbo_n_8,110,368,0 duplicate(LogTrap#tt_main) trap_b#n8-10 -1,7,0 -turbo_n_8,113,366,0 duplicate(LogTrap#tt_main) trap_b#n8-11 -1,3,2 -turbo_n_8,117,368,0 duplicate(LogTrap#tt_main) trap_b#n8-12 -1,0,5 -turbo_n_8,123,364,0 duplicate(LogTrap#tt_main) trap_b#n8-13 -1,6,1 -turbo_n_8,136,368,0 duplicate(LogTrap#tt_main) trap_b#n8-14 -1,8,1 -turbo_n_8,136,366,0 duplicate(LogTrap#tt_main) trap_b#n8-15 -1,8,0 -turbo_n_8,144,370,0 duplicate(LogTrap#tt_main) trap_b#n8-16 -1,2,3 -turbo_n_8,147,370,0 duplicate(LogTrap#tt_main) trap_b#n8-17 -1,0,3 -turbo_n_8,155,369,0 duplicate(LogTrap#tt_main) trap_b#n8-18 -1,7,0 -turbo_n_8,155,368,0 duplicate(LogTrap#tt_main) trap_b#n8-19 -1,7,0 -turbo_n_8,151,367,0 duplicate(LogTrap#tt_main) trap_b#n8-20 -1,3,0 -turbo_n_8,153,366,0 duplicate(LogTrap#tt_main) trap_b#n8-21 -1,1,0 -turbo_n_8,155,367,0 duplicate(LogTrap#tt_main) trap_b#n8-22 -1,0,1 -turbo_n_8,78,362,0 duplicate(LogTrap#tt_main) trap_c#n8-1 -1,4,1 -turbo_n_8,78,359,0 duplicate(LogTrap#tt_main) trap_c#n8-2 -1,4,1 -turbo_n_8,83,362,0 duplicate(LogTrap#tt_main) trap_c#n8-3 -1,0,1 -turbo_n_8,88,359,0 duplicate(LogTrap#tt_main) trap_c#n8-4 -1,5,1 -turbo_n_8,89,357,0 duplicate(LogTrap#tt_main) trap_c#n8-5 -1,1,1 -turbo_n_8,92,390,0 duplicate(LogTrap#tt_main) trap_c#n8-6 -1,1,1 -turbo_n_8,92,357,0 duplicate(LogTrap#tt_main) trap_c#n8-7 -1,1,1 -turbo_n_8,98,364,0 duplicate(LogTrap#tt_main) trap_c#n8-8 -1,6,1 -turbo_n_8,98,362,0 duplicate(LogTrap#tt_main) trap_c#n8-9 -1,6,0 -turbo_n_8,106,364,0 duplicate(LogTrap#tt_main) trap_c#n8-10 -1,2,2 -turbo_n_8,107,360,0 duplicate(LogTrap#tt_main) trap_c#n8-11 -1,1,2 -turbo_n_8,109,360,0 duplicate(LogTrap#tt_main) trap_c#n8-12 -1,0,2 -turbo_n_8,112,361,0 duplicate(LogTrap#tt_main) trap_c#n8-13 -1,3,1 -turbo_n_8,116,359,0 duplicate(LogTrap#tt_main) trap_c#n8-14 -1,0,2 -turbo_n_8,117,359,0 duplicate(LogTrap#tt_main) trap_c#n8-15 -1,0,2 -turbo_n_8,116,356,0 duplicate(LogTrap#tt_main) trap_c#n8-16 -1,0,2 -turbo_n_8,117,356,0 duplicate(LogTrap#tt_main) trap_c#n8-17 -1,0,2 -turbo_n_8,129,360,0 duplicate(LogTrap#tt_main) trap_c#n8-18 -1,12,1 -turbo_n_8,129,358,0 duplicate(LogTrap#tt_main) trap_c#n8-19 -1,12,0 -turbo_n_8,132,357,0 duplicate(LogTrap#tt_main) trap_c#n8-20 -1,2,1 -turbo_n_8,137,357,0 duplicate(LogTrap#tt_main) trap_c#n8-21 -1,2,1 -turbo_n_8,147,363,0 duplicate(LogTrap#tt_main) trap_c#n8-22 -1,16,1 -turbo_n_8,149,365,0 duplicate(LogTrap#tt_main) trap_c#n8-23 -1,1,0 -turbo_n_8,158,362,0 duplicate(LogTrap#tt_main) trap_c#n8-24 -1,1,4 -turbo_n_8,154,360,0 duplicate(LogTrap#tt_main) trap_c#n8-25 -1,2,2 -turbo_n_8,161,360,0 duplicate(LogTrap#tt_main) trap_c#n8-26 -1,1,2 -turbo_n_8,161,365,0 duplicate(LogTrap#tt_main) trap_c#n8-27 -1,1,0 -turbo_n_8,160,366,0 duplicate(LogTrap#tt_main) trap_c#n8-28 -1 -turbo_n_8,79,353,0 duplicate(LogTrap#tt_main) trap_d#n8-1 -1,5,2 -turbo_n_8,85,354,0 duplicate(LogTrap#tt_main) trap_d#n8-2 -1,0,1 -turbo_n_8,99,353,0 duplicate(LogTrap#tt_main) trap_d#n8-3 -1,14,0 -turbo_n_8,99,352,0 duplicate(LogTrap#tt_main) trap_d#n8-4 -1,14,0 -turbo_n_8,99,356,0 duplicate(LogTrap#tt_main) trap_d#n8-5 -1,3,3 -turbo_n_8,103,356,0 duplicate(LogTrap#tt_main) trap_d#n8-6 -1,0,3 -turbo_n_8,108,354,0 duplicate(LogTrap#tt_main) trap_d#n8-7 -1,5,1 -turbo_n_8,112,356,0 duplicate(LogTrap#tt_main) trap_d#n8-8 -1,0,1 -turbo_n_8,113,356,0 duplicate(LogTrap#tt_main) trap_d#n8-9 -1,0,1 -turbo_n_8,123,353,0 duplicate(LogTrap#tt_main) trap_d#n8-10 -1,3,2 -turbo_n_8,127,353,0 duplicate(LogTrap#tt_main) trap_d#n8-11 -1,0,2 -turbo_n_8,145,352,0 duplicate(LogTrap#tt_main) trap_d#n8-12 -1,17,1 -turbo_n_8,152,354,0 duplicate(LogTrap#tt_main) trap_d#n8-13 -1,10,1 -turbo_n_8,145,357,0 duplicate(LogTrap#tt_main) trap_d#n8-14 -1,1,2 -turbo_n_8,148,357,0 duplicate(LogTrap#tt_main) trap_d#n8-15 -1,1,2 -turbo_n_16,118,377,0 duplicate(LogTrap#tt_main) trap_a#n16-1 -1,44,1 -turbo_n_16,77,375,0 duplicate(LogTrap#tt_main) trap_a#n16-2 -1,3,1 -turbo_n_16,82,375,0 duplicate(LogTrap#tt_main) trap_a#n16-3 -1,1,1 -turbo_n_16,82,372,0 duplicate(LogTrap#tt_main) trap_a#n16-4 -1,0,2 -turbo_n_16,83,372,0 duplicate(LogTrap#tt_main) trap_a#n16-5 -1,0,2 -turbo_n_16,97,374,0 duplicate(LogTrap#tt_main) trap_a#n16-6 -1,1,2 -turbo_n_16,98,374,0 duplicate(LogTrap#tt_main) trap_a#n16-7 -1,1,2 -turbo_n_16,122,372,0 duplicate(LogTrap#tt_main) trap_a#n16-8 -1,2,4 -turbo_n_16,125,374,0 duplicate(LogTrap#tt_main) trap_a#n16-9 -1,0,4 -turbo_n_16,132,374,0 duplicate(LogTrap#tt_main) trap_a#n16-10 -1,7,2 -turbo_n_16,156,374,0 duplicate(LogTrap#tt_main) trap_a#n16-11 -1,6,2 -turbo_n_16,163,375,0 duplicate(LogTrap#tt_main) trap_a#n16-12 -1,0,3 -turbo_n_16,164,377,0 duplicate(LogTrap#tt_main) trap_a#n16-13 -1,1,1 -turbo_n_16,76,369,0 duplicate(LogTrap#tt_main) trap_b#n16-1 -1,2,2 -turbo_n_16,79,369,0 duplicate(LogTrap#tt_main) trap_b#n16-2 -1,0,2 -turbo_n_16,77,366,0 duplicate(LogTrap#tt_main) trap_b#n16-3 -1,3,0 -turbo_n_16,85,366,0 duplicate(LogTrap#tt_main) trap_b#n16-4 -1,5,1 -turbo_n_16,87,363,0 duplicate(LogTrap#tt_main) trap_b#n16-5 -1,2,1 -turbo_n_16,88,368,0 duplicate(LogTrap#tt_main) trap_b#n16-6 -1,2,5 -turbo_n_16,92,370,0 duplicate(LogTrap#tt_main) trap_b#n16-7 -1,1,3 -turbo_n_16,98,368,0 duplicate(LogTrap#tt_main) trap_b#n16-8 -1,4,1 -turbo_n_16,109,371,0 duplicate(LogTrap#tt_main) trap_b#n16-9 -1,7,2 -turbo_n_16,110,368,0 duplicate(LogTrap#tt_main) trap_b#n16-10 -1,7,0 -turbo_n_16,113,366,0 duplicate(LogTrap#tt_main) trap_b#n16-11 -1,3,2 -turbo_n_16,117,368,0 duplicate(LogTrap#tt_main) trap_b#n16-12 -1,0,5 -turbo_n_16,123,364,0 duplicate(LogTrap#tt_main) trap_b#n16-13 -1,6,1 -turbo_n_16,136,368,0 duplicate(LogTrap#tt_main) trap_b#n16-14 -1,8,1 -turbo_n_16,136,366,0 duplicate(LogTrap#tt_main) trap_b#n16-15 -1,8,0 -turbo_n_16,144,370,0 duplicate(LogTrap#tt_main) trap_b#n16-16 -1,2,3 -turbo_n_16,147,370,0 duplicate(LogTrap#tt_main) trap_b#n16-17 -1,0,3 -turbo_n_16,155,369,0 duplicate(LogTrap#tt_main) trap_b#n16-18 -1,7,0 -turbo_n_16,155,368,0 duplicate(LogTrap#tt_main) trap_b#n16-19 -1,7,0 -turbo_n_16,151,367,0 duplicate(LogTrap#tt_main) trap_b#n16-20 -1,3,0 -turbo_n_16,153,366,0 duplicate(LogTrap#tt_main) trap_b#n16-21 -1,1,0 -turbo_n_16,155,367,0 duplicate(LogTrap#tt_main) trap_b#n16-22 -1,0,1 -turbo_n_16,78,362,0 duplicate(LogTrap#tt_main) trap_c#n16-1 -1,4,1 -turbo_n_16,78,359,0 duplicate(LogTrap#tt_main) trap_c#n16-2 -1,4,1 -turbo_n_16,83,362,0 duplicate(LogTrap#tt_main) trap_c#n16-3 -1,0,1 -turbo_n_16,88,359,0 duplicate(LogTrap#tt_main) trap_c#n16-4 -1,5,1 -turbo_n_16,89,357,0 duplicate(LogTrap#tt_main) trap_c#n16-5 -1,1,1 -turbo_n_16,92,390,0 duplicate(LogTrap#tt_main) trap_c#n16-6 -1,1,1 -turbo_n_16,92,357,0 duplicate(LogTrap#tt_main) trap_c#n16-7 -1,1,1 -turbo_n_16,98,364,0 duplicate(LogTrap#tt_main) trap_c#n16-8 -1,6,1 -turbo_n_16,98,362,0 duplicate(LogTrap#tt_main) trap_c#n16-9 -1,6,0 -turbo_n_16,106,364,0 duplicate(LogTrap#tt_main) trap_c#n16-10 -1,2,2 -turbo_n_16,107,360,0 duplicate(LogTrap#tt_main) trap_c#n16-11 -1,1,2 -turbo_n_16,109,360,0 duplicate(LogTrap#tt_main) trap_c#n16-12 -1,0,2 -turbo_n_16,112,361,0 duplicate(LogTrap#tt_main) trap_c#n16-13 -1,3,1 -turbo_n_16,116,359,0 duplicate(LogTrap#tt_main) trap_c#n16-14 -1,0,2 -turbo_n_16,117,359,0 duplicate(LogTrap#tt_main) trap_c#n16-15 -1,0,2 -turbo_n_16,116,356,0 duplicate(LogTrap#tt_main) trap_c#n16-16 -1,0,2 -turbo_n_16,117,356,0 duplicate(LogTrap#tt_main) trap_c#n16-17 -1,0,2 -turbo_n_16,129,360,0 duplicate(LogTrap#tt_main) trap_c#n16-18 -1,12,1 -turbo_n_16,129,358,0 duplicate(LogTrap#tt_main) trap_c#n16-19 -1,12,0 -turbo_n_16,132,357,0 duplicate(LogTrap#tt_main) trap_c#n16-20 -1,2,1 -turbo_n_16,137,357,0 duplicate(LogTrap#tt_main) trap_c#n16-21 -1,2,1 -turbo_n_16,147,363,0 duplicate(LogTrap#tt_main) trap_c#n16-22 -1,16,1 -turbo_n_16,149,365,0 duplicate(LogTrap#tt_main) trap_c#n16-23 -1,1,0 -turbo_n_16,158,362,0 duplicate(LogTrap#tt_main) trap_c#n16-24 -1,1,4 -turbo_n_16,154,360,0 duplicate(LogTrap#tt_main) trap_c#n16-25 -1,2,2 -turbo_n_16,161,360,0 duplicate(LogTrap#tt_main) trap_c#n16-26 -1,1,2 -turbo_n_16,161,365,0 duplicate(LogTrap#tt_main) trap_c#n16-27 -1,1,0 -turbo_n_16,160,366,0 duplicate(LogTrap#tt_main) trap_c#n16-28 -1 -turbo_n_16,79,353,0 duplicate(LogTrap#tt_main) trap_d#n16-1 -1,5,2 -turbo_n_16,85,354,0 duplicate(LogTrap#tt_main) trap_d#n16-2 -1,0,1 -turbo_n_16,99,353,0 duplicate(LogTrap#tt_main) trap_d#n16-3 -1,14,0 -turbo_n_16,99,352,0 duplicate(LogTrap#tt_main) trap_d#n16-4 -1,14,0 -turbo_n_16,99,356,0 duplicate(LogTrap#tt_main) trap_d#n16-5 -1,3,3 -turbo_n_16,103,356,0 duplicate(LogTrap#tt_main) trap_d#n16-6 -1,0,3 -turbo_n_16,108,354,0 duplicate(LogTrap#tt_main) trap_d#n16-7 -1,5,1 -turbo_n_16,112,356,0 duplicate(LogTrap#tt_main) trap_d#n16-8 -1,0,1 -turbo_n_16,113,356,0 duplicate(LogTrap#tt_main) trap_d#n16-9 -1,0,1 -turbo_n_16,123,353,0 duplicate(LogTrap#tt_main) trap_d#n16-10 -1,3,2 -turbo_n_16,127,353,0 duplicate(LogTrap#tt_main) trap_d#n16-11 -1,0,2 -turbo_n_16,145,352,0 duplicate(LogTrap#tt_main) trap_d#n16-12 -1,17,1 -turbo_n_16,152,354,0 duplicate(LogTrap#tt_main) trap_d#n16-13 -1,10,1 -turbo_n_16,145,357,0 duplicate(LogTrap#tt_main) trap_d#n16-14 -1,1,2 -turbo_n_16,148,357,0 duplicate(LogTrap#tt_main) trap_d#n16-15 -1,1,2 -turbo_n_1,118,377,0 duplicate(LogTrap#tt_main) trap_a#n1-1 -1,44,1, -turbo_n_1,77,375,0 duplicate(LogTrap#tt_main) trap_a#n1-2 -1,3,1 -turbo_n_1,82,375,0 duplicate(LogTrap#tt_main) trap_a#n1-3 -1,1,1 -turbo_n_1,82,372,0 duplicate(LogTrap#tt_main) trap_a#n1-4 -1,0,2 -turbo_n_1,83,372,0 duplicate(LogTrap#tt_main) trap_a#n1-5 -1,0,2 -turbo_n_1,97,374,0 duplicate(LogTrap#tt_main) trap_a#n1-6 -1,1,2 -turbo_n_1,98,374,0 duplicate(LogTrap#tt_main) trap_a#n1-7 -1,1,2 -turbo_n_1,122,372,0 duplicate(LogTrap#tt_main) trap_a#n1-8 -1,2,4 -turbo_n_1,125,374,0 duplicate(LogTrap#tt_main) trap_a#n1-9 -1,0,4 -turbo_n_1,132,374,0 duplicate(LogTrap#tt_main) trap_a#n1-10 -1,7,2 -turbo_n_1,156,374,0 duplicate(LogTrap#tt_main) trap_a#n1-11 -1,6,2 -turbo_n_1,163,375,0 duplicate(LogTrap#tt_main) trap_a#n1-12 -1,0,3 -turbo_n_1,164,377,0 duplicate(LogTrap#tt_main) trap_a#n1-13 -1,1,1 -turbo_n_1,76,369,0 duplicate(LogTrap#tt_main) trap_b#n1-1 -1,2,2 -turbo_n_1,79,369,0 duplicate(LogTrap#tt_main) trap_b#n1-2 -1,0,2 -turbo_n_1,77,366,0 duplicate(LogTrap#tt_main) trap_b#n1-3 -1,3,0 -turbo_n_1,85,366,0 duplicate(LogTrap#tt_main) trap_b#n1-4 -1,5,1 -turbo_n_1,87,363,0 duplicate(LogTrap#tt_main) trap_b#n1-5 -1,2,1 -turbo_n_1,88,368,0 duplicate(LogTrap#tt_main) trap_b#n1-6 -1,2,5 -turbo_n_1,92,370,0 duplicate(LogTrap#tt_main) trap_b#n1-7 -1,1,3 -turbo_n_1,98,368,0 duplicate(LogTrap#tt_main) trap_b#n1-8 -1,4,1 -turbo_n_1,109,371,0 duplicate(LogTrap#tt_main) trap_b#n1-9 -1,7,2 -turbo_n_1,110,368,0 duplicate(LogTrap#tt_main) trap_b#n1-10 -1,7,0 -turbo_n_1,113,366,0 duplicate(LogTrap#tt_main) trap_b#n1-11 -1,3,2 -turbo_n_1,117,368,0 duplicate(LogTrap#tt_main) trap_b#n1-12 -1,0,5 -turbo_n_1,123,364,0 duplicate(LogTrap#tt_main) trap_b#n1-13 -1,6,1 -turbo_n_1,136,368,0 duplicate(LogTrap#tt_main) trap_b#n1-14 -1,8,1 -turbo_n_1,136,366,0 duplicate(LogTrap#tt_main) trap_b#n1-15 -1,8,0 -turbo_n_1,144,370,0 duplicate(LogTrap#tt_main) trap_b#n1-16 -1,2,3 -turbo_n_1,147,370,0 duplicate(LogTrap#tt_main) trap_b#n1-17 -1,0,3 -turbo_n_1,155,369,0 duplicate(LogTrap#tt_main) trap_b#n1-18 -1,7,0 -turbo_n_1,155,368,0 duplicate(LogTrap#tt_main) trap_b#n1-19 -1,7,0 -turbo_n_1,151,367,0 duplicate(LogTrap#tt_main) trap_b#n1-20 -1,3,0 -turbo_n_1,153,366,0 duplicate(LogTrap#tt_main) trap_b#n1-21 -1,1,0 -turbo_n_1,155,367,0 duplicate(LogTrap#tt_main) trap_b#n1-22 -1,0,1 -turbo_n_1,78,362,0 duplicate(LogTrap#tt_main) trap_c#n1-1 -1,4,1 -turbo_n_1,78,359,0 duplicate(LogTrap#tt_main) trap_c#n1-2 -1,4,1 -turbo_n_1,83,362,0 duplicate(LogTrap#tt_main) trap_c#n1-3 -1,0,1 -turbo_n_1,88,359,0 duplicate(LogTrap#tt_main) trap_c#n1-4 -1,5,1 -turbo_n_1,89,357,0 duplicate(LogTrap#tt_main) trap_c#n1-5 -1,1,1 -turbo_n_1,92,390,0 duplicate(LogTrap#tt_main) trap_c#n1-6 -1,1,1 -turbo_n_1,92,357,0 duplicate(LogTrap#tt_main) trap_c#n1-7 -1,1,1 -turbo_n_1,98,364,0 duplicate(LogTrap#tt_main) trap_c#n1-8 -1,6,1 -turbo_n_1,98,362,0 duplicate(LogTrap#tt_main) trap_c#n1-9 -1,6,0 -turbo_n_1,106,364,0 duplicate(LogTrap#tt_main) trap_c#n1-10 -1,2,2 -turbo_n_1,107,360,0 duplicate(LogTrap#tt_main) trap_c#n1-11 -1,1,2 -turbo_n_1,109,360,0 duplicate(LogTrap#tt_main) trap_c#n1-12 -1,0,2 -turbo_n_1,112,361,0 duplicate(LogTrap#tt_main) trap_c#n1-13 -1,3,1 -turbo_n_1,116,359,0 duplicate(LogTrap#tt_main) trap_c#n1-14 -1,0,2 -turbo_n_1,117,359,0 duplicate(LogTrap#tt_main) trap_c#n1-15 -1,0,2 -turbo_n_1,116,356,0 duplicate(LogTrap#tt_main) trap_c#n1-16 -1,0,2 -turbo_n_1,117,356,0 duplicate(LogTrap#tt_main) trap_c#n1-17 -1,0,2 -turbo_n_1,129,360,0 duplicate(LogTrap#tt_main) trap_c#n1-18 -1,12,1 -turbo_n_1,129,358,0 duplicate(LogTrap#tt_main) trap_c#n1-19 -1,12,0 -turbo_n_1,132,357,0 duplicate(LogTrap#tt_main) trap_c#n1-20 -1,2,1 -turbo_n_1,137,357,0 duplicate(LogTrap#tt_main) trap_c#n1-21 -1,2,1 -turbo_n_1,147,363,0 duplicate(LogTrap#tt_main) trap_c#n1-22 -1,16,1 -turbo_n_1,149,365,0 duplicate(LogTrap#tt_main) trap_c#n1-23 -1,1,0 -turbo_n_1,158,362,0 duplicate(LogTrap#tt_main) trap_c#n1-24 -1,1,4 -turbo_n_1,154,360,0 duplicate(LogTrap#tt_main) trap_c#n1-25 -1,2,2 -turbo_n_1,161,360,0 duplicate(LogTrap#tt_main) trap_c#n1-26 -1,1,2 -turbo_n_1,161,365,0 duplicate(LogTrap#tt_main) trap_c#n1-27 -1,1,0 -turbo_n_1,160,366,0 duplicate(LogTrap#tt_main) trap_c#n1-28 -1 -turbo_n_1,79,353,0 duplicate(LogTrap#tt_main) trap_d#n1-1 -1,5,2 -turbo_n_1,85,354,0 duplicate(LogTrap#tt_main) trap_d#n1-2 -1,0,1 -turbo_n_1,99,353,0 duplicate(LogTrap#tt_main) trap_d#n1-3 -1,14,0 -turbo_n_1,99,352,0 duplicate(LogTrap#tt_main) trap_d#n1-4 -1,14,0 -turbo_n_1,99,356,0 duplicate(LogTrap#tt_main) trap_d#n1-5 -1,3,3 -turbo_n_1,103,356,0 duplicate(LogTrap#tt_main) trap_d#n1-6 -1,0,3 -turbo_n_1,108,354,0 duplicate(LogTrap#tt_main) trap_d#n1-7 -1,5,1 -turbo_n_1,112,356,0 duplicate(LogTrap#tt_main) trap_d#n1-8 -1,0,1 -turbo_n_1,113,356,0 duplicate(LogTrap#tt_main) trap_d#n1-9 -1,0,1 -turbo_n_1,123,353,0 duplicate(LogTrap#tt_main) trap_d#n1-10 -1,3,2 -turbo_n_1,127,353,0 duplicate(LogTrap#tt_main) trap_d#n1-11 -1,0,2 -turbo_n_1,145,352,0 duplicate(LogTrap#tt_main) trap_d#n1-12 -1,17,1 -turbo_n_1,152,354,0 duplicate(LogTrap#tt_main) trap_d#n1-13 -1,10,1 -turbo_n_1,145,357,0 duplicate(LogTrap#tt_main) trap_d#n1-14 -1,1,2 -turbo_n_1,148,357,0 duplicate(LogTrap#tt_main) trap_d#n1-15 -1,1,2 - -- script SandTrap#tt_main -1,{ +turbo_e_4,118,377,0 duplicate(LogTrap#tt_main) trap_a#e4-1 FAKE_NPC,44,1 +turbo_e_4,77,375,0 duplicate(LogTrap#tt_main) trap_a#e4-2 FAKE_NPC,3,1 +turbo_e_4,82,375,0 duplicate(LogTrap#tt_main) trap_a#e4-3 FAKE_NPC,1,1 +turbo_e_4,82,372,0 duplicate(LogTrap#tt_main) trap_a#e4-4 FAKE_NPC,0,2 +turbo_e_4,83,372,0 duplicate(LogTrap#tt_main) trap_a#e4-5 FAKE_NPC,0,2 +turbo_e_4,97,374,0 duplicate(LogTrap#tt_main) trap_a#e4-6 FAKE_NPC,1,2 +turbo_e_4,98,374,0 duplicate(LogTrap#tt_main) trap_a#e4-7 FAKE_NPC,1,2 +turbo_e_4,122,372,0 duplicate(LogTrap#tt_main) trap_a#e4-8 FAKE_NPC,2,4 +turbo_e_4,125,374,0 duplicate(LogTrap#tt_main) trap_a#e4-9 FAKE_NPC,0,4 +turbo_e_4,132,374,0 duplicate(LogTrap#tt_main) trap_a#e4-10 FAKE_NPC,7,2 +turbo_e_4,156,374,0 duplicate(LogTrap#tt_main) trap_a#e4-11 FAKE_NPC,6,2 +turbo_e_4,163,375,0 duplicate(LogTrap#tt_main) trap_a#e4-12 FAKE_NPC,0,3 +turbo_e_4,164,377,0 duplicate(LogTrap#tt_main) trap_a#e4-13 FAKE_NPC,1,1 +turbo_e_4,76,369,0 duplicate(LogTrap#tt_main) trap_b#e4-1 FAKE_NPC,2,2 +turbo_e_4,79,369,0 duplicate(LogTrap#tt_main) trap_b#e4-2 FAKE_NPC,0,2 +turbo_e_4,77,366,0 duplicate(LogTrap#tt_main) trap_b#e4-3 FAKE_NPC,3,0 +turbo_e_4,85,366,0 duplicate(LogTrap#tt_main) trap_b#e4-4 FAKE_NPC,5,1 +turbo_e_4,87,363,0 duplicate(LogTrap#tt_main) trap_b#e4-5 FAKE_NPC,2,1 +turbo_e_4,88,368,0 duplicate(LogTrap#tt_main) trap_b#e4-6 FAKE_NPC,2,5 +turbo_e_4,92,370,0 duplicate(LogTrap#tt_main) trap_b#e4-7 FAKE_NPC,1,3 +turbo_e_4,98,368,0 duplicate(LogTrap#tt_main) trap_b#e4-8 FAKE_NPC,4,1 +turbo_e_4,109,371,0 duplicate(LogTrap#tt_main) trap_b#e4-9 FAKE_NPC,7,2 +turbo_e_4,110,368,0 duplicate(LogTrap#tt_main) trap_b#e4-10 FAKE_NPC,7,0 +turbo_e_4,113,366,0 duplicate(LogTrap#tt_main) trap_b#e4-11 FAKE_NPC,3,2 +turbo_e_4,117,368,0 duplicate(LogTrap#tt_main) trap_b#e4-12 FAKE_NPC,0,5 +turbo_e_4,123,364,0 duplicate(LogTrap#tt_main) trap_b#e4-13 FAKE_NPC,6,1 +turbo_e_4,136,368,0 duplicate(LogTrap#tt_main) trap_b#e4-14 FAKE_NPC,8,1 +turbo_e_4,136,366,0 duplicate(LogTrap#tt_main) trap_b#e4-15 FAKE_NPC,8,0 +turbo_e_4,144,370,0 duplicate(LogTrap#tt_main) trap_b#e4-16 FAKE_NPC,2,3 +turbo_e_4,147,370,0 duplicate(LogTrap#tt_main) trap_b#e4-17 FAKE_NPC,0,3 +turbo_e_4,155,369,0 duplicate(LogTrap#tt_main) trap_b#e4-18 FAKE_NPC,7,0 +turbo_e_4,155,368,0 duplicate(LogTrap#tt_main) trap_b#e4-19 FAKE_NPC,7,0 +turbo_e_4,151,367,0 duplicate(LogTrap#tt_main) trap_b#e4-20 FAKE_NPC,3,0 +turbo_e_4,153,366,0 duplicate(LogTrap#tt_main) trap_b#e4-21 FAKE_NPC,1,0 +turbo_e_4,155,367,0 duplicate(LogTrap#tt_main) trap_b#e4-22 FAKE_NPC,0,1 +turbo_e_4,78,362,0 duplicate(LogTrap#tt_main) trap_c#e4-1 FAKE_NPC,4,1 +turbo_e_4,78,359,0 duplicate(LogTrap#tt_main) trap_c#e4-2 FAKE_NPC,4,1 +turbo_e_4,83,362,0 duplicate(LogTrap#tt_main) trap_c#e4-3 FAKE_NPC,0,1 +turbo_e_4,88,359,0 duplicate(LogTrap#tt_main) trap_c#e4-4 FAKE_NPC,5,1 +turbo_e_4,89,357,0 duplicate(LogTrap#tt_main) trap_c#e4-5 FAKE_NPC,1,1 +turbo_e_4,92,390,0 duplicate(LogTrap#tt_main) trap_c#e4-6 FAKE_NPC,1,1 +turbo_e_4,92,357,0 duplicate(LogTrap#tt_main) trap_c#e4-7 FAKE_NPC,1,1 +turbo_e_4,98,364,0 duplicate(LogTrap#tt_main) trap_c#e4-8 FAKE_NPC,6,1 +turbo_e_4,98,362,0 duplicate(LogTrap#tt_main) trap_c#e4-9 FAKE_NPC,6,0 +turbo_e_4,106,364,0 duplicate(LogTrap#tt_main) trap_c#e4-10 FAKE_NPC,2,2 +turbo_e_4,107,360,0 duplicate(LogTrap#tt_main) trap_c#e4-11 FAKE_NPC,1,2 +turbo_e_4,109,360,0 duplicate(LogTrap#tt_main) trap_c#e4-12 FAKE_NPC,0,2 +turbo_e_4,112,361,0 duplicate(LogTrap#tt_main) trap_c#e4-13 FAKE_NPC,3,1 +turbo_e_4,116,359,0 duplicate(LogTrap#tt_main) trap_c#e4-14 FAKE_NPC,0,2 +turbo_e_4,117,359,0 duplicate(LogTrap#tt_main) trap_c#e4-15 FAKE_NPC,0,2 +turbo_e_4,116,356,0 duplicate(LogTrap#tt_main) trap_c#e4-16 FAKE_NPC,0,2 +turbo_e_4,117,356,0 duplicate(LogTrap#tt_main) trap_c#e4-17 FAKE_NPC,0,2 +turbo_e_4,129,360,0 duplicate(LogTrap#tt_main) trap_c#e4-18 FAKE_NPC,12,1 +turbo_e_4,129,358,0 duplicate(LogTrap#tt_main) trap_c#e4-19 FAKE_NPC,12,0 +turbo_e_4,132,357,0 duplicate(LogTrap#tt_main) trap_c#e4-20 FAKE_NPC,2,1 +turbo_e_4,137,357,0 duplicate(LogTrap#tt_main) trap_c#e4-21 FAKE_NPC,2,1 +turbo_e_4,147,363,0 duplicate(LogTrap#tt_main) trap_c#e4-22 FAKE_NPC,16,1 +turbo_e_4,149,365,0 duplicate(LogTrap#tt_main) trap_c#e4-23 FAKE_NPC,1,0 +turbo_e_4,158,362,0 duplicate(LogTrap#tt_main) trap_c#e4-24 FAKE_NPC,1,4 +turbo_e_4,154,360,0 duplicate(LogTrap#tt_main) trap_c#e4-25 FAKE_NPC,2,2 +turbo_e_4,161,360,0 duplicate(LogTrap#tt_main) trap_c#e4-26 FAKE_NPC,1,2 +turbo_e_4,161,365,0 duplicate(LogTrap#tt_main) trap_c#e4-27 FAKE_NPC,1,0 +turbo_e_4,160,366,0 duplicate(LogTrap#tt_main) trap_c#e4-28 FAKE_NPC +turbo_e_4,79,353,0 duplicate(LogTrap#tt_main) trap_d#e4-1 FAKE_NPC,5,2 +turbo_e_4,85,354,0 duplicate(LogTrap#tt_main) trap_d#e4-2 FAKE_NPC,0,1 +turbo_e_4,99,353,0 duplicate(LogTrap#tt_main) trap_d#e4-3 FAKE_NPC,14,0 +turbo_e_4,99,352,0 duplicate(LogTrap#tt_main) trap_d#e4-4 FAKE_NPC,14,0 +turbo_e_4,99,356,0 duplicate(LogTrap#tt_main) trap_d#e4-5 FAKE_NPC,3,3 +turbo_e_4,103,356,0 duplicate(LogTrap#tt_main) trap_d#e4-6 FAKE_NPC,0,3 +turbo_e_4,108,354,0 duplicate(LogTrap#tt_main) trap_d#e4-7 FAKE_NPC,5,1 +turbo_e_4,112,356,0 duplicate(LogTrap#tt_main) trap_d#e4-8 FAKE_NPC,0,1 +turbo_e_4,113,356,0 duplicate(LogTrap#tt_main) trap_d#e4-9 FAKE_NPC,0,1 +turbo_e_4,123,353,0 duplicate(LogTrap#tt_main) trap_d#e4-10 FAKE_NPC,3,2 +turbo_e_4,127,353,0 duplicate(LogTrap#tt_main) trap_d#e4-11 FAKE_NPC,0,2 +turbo_e_4,145,352,0 duplicate(LogTrap#tt_main) trap_d#e4-12 FAKE_NPC,17,1 +turbo_e_4,152,354,0 duplicate(LogTrap#tt_main) trap_d#e4-13 FAKE_NPC,10,1 +turbo_e_4,145,357,0 duplicate(LogTrap#tt_main) trap_d#e4-14 FAKE_NPC,1,2 +turbo_e_4,148,357,0 duplicate(LogTrap#tt_main) trap_d#e4-15 FAKE_NPC,1,2 +turbo_e_8,118,377,0 duplicate(LogTrap#tt_main) trap_a#e8-1 FAKE_NPC,44,1 +turbo_e_8,77,375,0 duplicate(LogTrap#tt_main) trap_a#e8-2 FAKE_NPC,3,1 +turbo_e_8,82,375,0 duplicate(LogTrap#tt_main) trap_a#e8-3 FAKE_NPC,1,1 +turbo_e_8,82,372,0 duplicate(LogTrap#tt_main) trap_a#e8-4 FAKE_NPC,0,2 +turbo_e_8,83,372,0 duplicate(LogTrap#tt_main) trap_a#e8-5 FAKE_NPC,0,2 +turbo_e_8,97,374,0 duplicate(LogTrap#tt_main) trap_a#e8-6 FAKE_NPC,1,2 +turbo_e_8,98,374,0 duplicate(LogTrap#tt_main) trap_a#e8-7 FAKE_NPC,1,2 +turbo_e_8,122,372,0 duplicate(LogTrap#tt_main) trap_a#e8-8 FAKE_NPC,2,4 +turbo_e_8,125,374,0 duplicate(LogTrap#tt_main) trap_a#e8-9 FAKE_NPC,0,4 +turbo_e_8,132,374,0 duplicate(LogTrap#tt_main) trap_a#e8-10 FAKE_NPC,7,2 +turbo_e_8,156,374,0 duplicate(LogTrap#tt_main) trap_a#e8-11 FAKE_NPC,6,2 +turbo_e_8,163,375,0 duplicate(LogTrap#tt_main) trap_a#e8-12 FAKE_NPC,0,3 +turbo_e_8,164,377,0 duplicate(LogTrap#tt_main) trap_a#e8-13 FAKE_NPC,1,1 +turbo_e_8,76,369,0 duplicate(LogTrap#tt_main) trap_b#e8-1 FAKE_NPC,2,2 +turbo_e_8,79,369,0 duplicate(LogTrap#tt_main) trap_b#e8-2 FAKE_NPC,0,2 +turbo_e_8,77,366,0 duplicate(LogTrap#tt_main) trap_b#e8-3 FAKE_NPC,3,0 +turbo_e_8,85,366,0 duplicate(LogTrap#tt_main) trap_b#e8-4 FAKE_NPC,5,1 +turbo_e_8,87,363,0 duplicate(LogTrap#tt_main) trap_b#e8-5 FAKE_NPC,2,1 +turbo_e_8,88,368,0 duplicate(LogTrap#tt_main) trap_b#e8-6 FAKE_NPC,2,5 +turbo_e_8,92,370,0 duplicate(LogTrap#tt_main) trap_b#e8-7 FAKE_NPC,1,3 +turbo_e_8,98,368,0 duplicate(LogTrap#tt_main) trap_b#e8-8 FAKE_NPC,4,1 +turbo_e_8,109,371,0 duplicate(LogTrap#tt_main) trap_b#e8-9 FAKE_NPC,7,2 +turbo_e_8,110,368,0 duplicate(LogTrap#tt_main) trap_b#e8-10 FAKE_NPC,7,0 +turbo_e_8,113,366,0 duplicate(LogTrap#tt_main) trap_b#e8-11 FAKE_NPC,3,2 +turbo_e_8,117,368,0 duplicate(LogTrap#tt_main) trap_b#e8-12 FAKE_NPC,0,5 +turbo_e_8,123,364,0 duplicate(LogTrap#tt_main) trap_b#e8-13 FAKE_NPC,6,1 +turbo_e_8,136,368,0 duplicate(LogTrap#tt_main) trap_b#e8-14 FAKE_NPC,8,1 +turbo_e_8,136,366,0 duplicate(LogTrap#tt_main) trap_b#e8-15 FAKE_NPC,8,0 +turbo_e_8,144,370,0 duplicate(LogTrap#tt_main) trap_b#e8-16 FAKE_NPC,2,3 +turbo_e_8,147,370,0 duplicate(LogTrap#tt_main) trap_b#e8-17 FAKE_NPC,0,3 +turbo_e_8,155,369,0 duplicate(LogTrap#tt_main) trap_b#e8-18 FAKE_NPC,7,0 +turbo_e_8,155,368,0 duplicate(LogTrap#tt_main) trap_b#e8-19 FAKE_NPC,7,0 +turbo_e_8,151,367,0 duplicate(LogTrap#tt_main) trap_b#e8-20 FAKE_NPC,3,0 +turbo_e_8,153,366,0 duplicate(LogTrap#tt_main) trap_b#e8-21 FAKE_NPC,1,0 +turbo_e_8,155,367,0 duplicate(LogTrap#tt_main) trap_b#e8-22 FAKE_NPC,0,1 +turbo_e_8,78,362,0 duplicate(LogTrap#tt_main) trap_c#e8-1 FAKE_NPC,4,1 +turbo_e_8,78,359,0 duplicate(LogTrap#tt_main) trap_c#e8-2 FAKE_NPC,4,1 +turbo_e_8,83,362,0 duplicate(LogTrap#tt_main) trap_c#e8-3 FAKE_NPC,0,1 +turbo_e_8,88,359,0 duplicate(LogTrap#tt_main) trap_c#e8-4 FAKE_NPC,5,1 +turbo_e_8,89,357,0 duplicate(LogTrap#tt_main) trap_c#e8-5 FAKE_NPC,1,1 +turbo_e_8,92,390,0 duplicate(LogTrap#tt_main) trap_c#e8-6 FAKE_NPC,1,1 +turbo_e_8,92,357,0 duplicate(LogTrap#tt_main) trap_c#e8-7 FAKE_NPC,1,1 +turbo_e_8,98,364,0 duplicate(LogTrap#tt_main) trap_c#e8-8 FAKE_NPC,6,1 +turbo_e_8,98,362,0 duplicate(LogTrap#tt_main) trap_c#e8-9 FAKE_NPC,6,0 +turbo_e_8,106,364,0 duplicate(LogTrap#tt_main) trap_c#e8-10 FAKE_NPC,2,2 +turbo_e_8,107,360,0 duplicate(LogTrap#tt_main) trap_c#e8-11 FAKE_NPC,1,2 +turbo_e_8,109,360,0 duplicate(LogTrap#tt_main) trap_c#e8-12 FAKE_NPC,0,2 +turbo_e_8,112,361,0 duplicate(LogTrap#tt_main) trap_c#e8-13 FAKE_NPC,3,1 +turbo_e_8,116,359,0 duplicate(LogTrap#tt_main) trap_c#e8-14 FAKE_NPC,0,2 +turbo_e_8,117,359,0 duplicate(LogTrap#tt_main) trap_c#e8-15 FAKE_NPC,0,2 +turbo_e_8,116,356,0 duplicate(LogTrap#tt_main) trap_c#e8-16 FAKE_NPC,0,2 +turbo_e_8,117,356,0 duplicate(LogTrap#tt_main) trap_c#e8-17 FAKE_NPC,0,2 +turbo_e_8,129,360,0 duplicate(LogTrap#tt_main) trap_c#e8-18 FAKE_NPC,12,1 +turbo_e_8,129,358,0 duplicate(LogTrap#tt_main) trap_c#e8-19 FAKE_NPC,12,0 +turbo_e_8,132,357,0 duplicate(LogTrap#tt_main) trap_c#e8-20 FAKE_NPC,2,1 +turbo_e_8,137,357,0 duplicate(LogTrap#tt_main) trap_c#e8-21 FAKE_NPC,2,1 +turbo_e_8,147,363,0 duplicate(LogTrap#tt_main) trap_c#e8-22 FAKE_NPC,16,1 +turbo_e_8,149,365,0 duplicate(LogTrap#tt_main) trap_c#e8-23 FAKE_NPC,1,0 +turbo_e_8,158,362,0 duplicate(LogTrap#tt_main) trap_c#e8-24 FAKE_NPC,1,4 +turbo_e_8,154,360,0 duplicate(LogTrap#tt_main) trap_c#e8-25 FAKE_NPC,2,2 +turbo_e_8,161,360,0 duplicate(LogTrap#tt_main) trap_c#e8-26 FAKE_NPC,1,2 +turbo_e_8,161,365,0 duplicate(LogTrap#tt_main) trap_c#e8-27 FAKE_NPC,1,0 +turbo_e_8,160,366,0 duplicate(LogTrap#tt_main) trap_c#e8-28 FAKE_NPC +turbo_e_8,79,353,0 duplicate(LogTrap#tt_main) trap_d#e8-1 FAKE_NPC,5,2 +turbo_e_8,85,354,0 duplicate(LogTrap#tt_main) trap_d#e8-2 FAKE_NPC,0,1 +turbo_e_8,99,353,0 duplicate(LogTrap#tt_main) trap_d#e8-3 FAKE_NPC,14,0 +turbo_e_8,99,352,0 duplicate(LogTrap#tt_main) trap_d#e8-4 FAKE_NPC,14,0 +turbo_e_8,99,356,0 duplicate(LogTrap#tt_main) trap_d#e8-5 FAKE_NPC,3,3 +turbo_e_8,103,356,0 duplicate(LogTrap#tt_main) trap_d#e8-6 FAKE_NPC,0,3 +turbo_e_8,108,354,0 duplicate(LogTrap#tt_main) trap_d#e8-7 FAKE_NPC,5,1 +turbo_e_8,112,356,0 duplicate(LogTrap#tt_main) trap_d#e8-8 FAKE_NPC,0,1 +turbo_e_8,113,356,0 duplicate(LogTrap#tt_main) trap_d#e8-9 FAKE_NPC,0,1 +turbo_e_8,123,353,0 duplicate(LogTrap#tt_main) trap_d#e8-10 FAKE_NPC,3,2 +turbo_e_8,127,353,0 duplicate(LogTrap#tt_main) trap_d#e8-11 FAKE_NPC,0,2 +turbo_e_8,145,352,0 duplicate(LogTrap#tt_main) trap_d#e8-12 FAKE_NPC,17,1 +turbo_e_8,152,354,0 duplicate(LogTrap#tt_main) trap_d#e8-13 FAKE_NPC,10,1 +turbo_e_8,145,357,0 duplicate(LogTrap#tt_main) trap_d#e8-14 FAKE_NPC,1,2 +turbo_e_8,148,357,0 duplicate(LogTrap#tt_main) trap_d#e8-15 FAKE_NPC,1,2 +turbo_e_16,118,377,0 duplicate(LogTrap#tt_main) trap_a#e16-1 FAKE_NPC,44,1 +turbo_e_16,77,375,0 duplicate(LogTrap#tt_main) trap_a#e16-2 FAKE_NPC,3,1 +turbo_e_16,82,375,0 duplicate(LogTrap#tt_main) trap_a#e16-3 FAKE_NPC,1,1 +turbo_e_16,82,372,0 duplicate(LogTrap#tt_main) trap_a#e16-4 FAKE_NPC,0,2 +turbo_e_16,83,372,0 duplicate(LogTrap#tt_main) trap_a#e16-5 FAKE_NPC,0,2 +turbo_e_16,97,374,0 duplicate(LogTrap#tt_main) trap_a#e16-6 FAKE_NPC,1,2 +turbo_e_16,98,374,0 duplicate(LogTrap#tt_main) trap_a#e16-7 FAKE_NPC,1,2 +turbo_e_16,122,372,0 duplicate(LogTrap#tt_main) trap_a#e16-8 FAKE_NPC,2,4 +turbo_e_16,125,374,0 duplicate(LogTrap#tt_main) trap_a#e16-9 FAKE_NPC,0,4 +turbo_e_16,132,374,0 duplicate(LogTrap#tt_main) trap_a#e16-10 FAKE_NPC,7,2 +turbo_e_16,156,374,0 duplicate(LogTrap#tt_main) trap_a#e16-11 FAKE_NPC,6,2 +turbo_e_16,163,375,0 duplicate(LogTrap#tt_main) trap_a#e16-12 FAKE_NPC,0,3 +turbo_e_16,164,377,0 duplicate(LogTrap#tt_main) trap_a#e16-13 FAKE_NPC,1,1 +turbo_e_16,76,369,0 duplicate(LogTrap#tt_main) trap_b#e16-1 FAKE_NPC,2,2 +turbo_e_16,79,369,0 duplicate(LogTrap#tt_main) trap_b#e16-2 FAKE_NPC,0,2 +turbo_e_16,77,366,0 duplicate(LogTrap#tt_main) trap_b#e16-3 FAKE_NPC,3,0 +turbo_e_16,85,366,0 duplicate(LogTrap#tt_main) trap_b#e16-4 FAKE_NPC,5,1 +turbo_e_16,87,363,0 duplicate(LogTrap#tt_main) trap_b#e16-5 FAKE_NPC,2,1 +turbo_e_16,88,368,0 duplicate(LogTrap#tt_main) trap_b#e16-6 FAKE_NPC,2,5 +turbo_e_16,92,370,0 duplicate(LogTrap#tt_main) trap_b#e16-7 FAKE_NPC,1,3 +turbo_e_16,98,368,0 duplicate(LogTrap#tt_main) trap_b#e16-8 FAKE_NPC,4,1 +turbo_e_16,109,371,0 duplicate(LogTrap#tt_main) trap_b#e16-9 FAKE_NPC,7,2 +turbo_e_16,110,368,0 duplicate(LogTrap#tt_main) trap_b#e16-10 FAKE_NPC,7,0 +turbo_e_16,113,366,0 duplicate(LogTrap#tt_main) trap_b#e16-11 FAKE_NPC,3,2 +turbo_e_16,117,368,0 duplicate(LogTrap#tt_main) trap_b#e16-12 FAKE_NPC,0,5 +turbo_e_16,123,364,0 duplicate(LogTrap#tt_main) trap_b#e16-13 FAKE_NPC,6,1 +turbo_e_16,136,368,0 duplicate(LogTrap#tt_main) trap_b#e16-14 FAKE_NPC,8,1 +turbo_e_16,136,366,0 duplicate(LogTrap#tt_main) trap_b#e16-15 FAKE_NPC,8,0 +turbo_e_16,144,370,0 duplicate(LogTrap#tt_main) trap_b#e16-16 FAKE_NPC,2,3 +turbo_e_16,147,370,0 duplicate(LogTrap#tt_main) trap_b#e16-17 FAKE_NPC,0,3 +turbo_e_16,155,369,0 duplicate(LogTrap#tt_main) trap_b#e16-18 FAKE_NPC,7,0 +turbo_e_16,155,368,0 duplicate(LogTrap#tt_main) trap_b#e16-19 FAKE_NPC,7,0 +turbo_e_16,151,367,0 duplicate(LogTrap#tt_main) trap_b#e16-20 FAKE_NPC,3,0 +turbo_e_16,153,366,0 duplicate(LogTrap#tt_main) trap_b#e16-21 FAKE_NPC,1,0 +turbo_e_16,155,367,0 duplicate(LogTrap#tt_main) trap_b#e16-22 FAKE_NPC,0,1 +turbo_e_16,78,362,0 duplicate(LogTrap#tt_main) trap_c#e16-1 FAKE_NPC,4,1 +turbo_e_16,78,359,0 duplicate(LogTrap#tt_main) trap_c#e16-2 FAKE_NPC,4,1 +turbo_e_16,83,362,0 duplicate(LogTrap#tt_main) trap_c#e16-3 FAKE_NPC,0,1 +turbo_e_16,88,359,0 duplicate(LogTrap#tt_main) trap_c#e16-4 FAKE_NPC,5,1 +turbo_e_16,89,357,0 duplicate(LogTrap#tt_main) trap_c#e16-5 FAKE_NPC,1,1 +turbo_e_16,92,390,0 duplicate(LogTrap#tt_main) trap_c#e16-6 FAKE_NPC,1,1 +turbo_e_16,92,357,0 duplicate(LogTrap#tt_main) trap_c#e16-7 FAKE_NPC,1,1 +turbo_e_16,98,364,0 duplicate(LogTrap#tt_main) trap_c#e16-8 FAKE_NPC,6,1 +turbo_e_16,98,362,0 duplicate(LogTrap#tt_main) trap_c#e16-9 FAKE_NPC,6,0 +turbo_e_16,106,364,0 duplicate(LogTrap#tt_main) trap_c#e16-10 FAKE_NPC,2,2 +turbo_e_16,107,360,0 duplicate(LogTrap#tt_main) trap_c#e16-11 FAKE_NPC,1,2 +turbo_e_16,109,360,0 duplicate(LogTrap#tt_main) trap_c#e16-12 FAKE_NPC,0,2 +turbo_e_16,112,361,0 duplicate(LogTrap#tt_main) trap_c#e16-13 FAKE_NPC,3,1 +turbo_e_16,116,359,0 duplicate(LogTrap#tt_main) trap_c#e16-14 FAKE_NPC,0,2 +turbo_e_16,117,359,0 duplicate(LogTrap#tt_main) trap_c#e16-15 FAKE_NPC,0,2 +turbo_e_16,116,356,0 duplicate(LogTrap#tt_main) trap_c#e16-16 FAKE_NPC,0,2 +turbo_e_16,117,356,0 duplicate(LogTrap#tt_main) trap_c#e16-17 FAKE_NPC,0,2 +turbo_e_16,129,360,0 duplicate(LogTrap#tt_main) trap_c#e16-18 FAKE_NPC,12,1 +turbo_e_16,129,358,0 duplicate(LogTrap#tt_main) trap_c#e16-19 FAKE_NPC,12,0 +turbo_e_16,132,357,0 duplicate(LogTrap#tt_main) trap_c#e16-20 FAKE_NPC,2,1 +turbo_e_16,137,357,0 duplicate(LogTrap#tt_main) trap_c#e16-21 FAKE_NPC,2,1 +turbo_e_16,147,363,0 duplicate(LogTrap#tt_main) trap_c#e16-22 FAKE_NPC,16,1 +turbo_e_16,149,365,0 duplicate(LogTrap#tt_main) trap_c#e16-23 FAKE_NPC,1,0 +turbo_e_16,158,362,0 duplicate(LogTrap#tt_main) trap_c#e16-24 FAKE_NPC,1,4 +turbo_e_16,154,360,0 duplicate(LogTrap#tt_main) trap_c#e16-25 FAKE_NPC,2,2 +turbo_e_16,161,360,0 duplicate(LogTrap#tt_main) trap_c#e16-26 FAKE_NPC,1,2 +turbo_e_16,161,365,0 duplicate(LogTrap#tt_main) trap_c#e16-27 FAKE_NPC,1,0 +turbo_e_16,160,366,0 duplicate(LogTrap#tt_main) trap_c#e16-28 FAKE_NPC +turbo_e_16,79,353,0 duplicate(LogTrap#tt_main) trap_d#e16-1 FAKE_NPC,5,2 +turbo_e_16,85,354,0 duplicate(LogTrap#tt_main) trap_d#e16-2 FAKE_NPC,0,1 +turbo_e_16,99,353,0 duplicate(LogTrap#tt_main) trap_d#e16-3 FAKE_NPC,14,0 +turbo_e_16,99,352,0 duplicate(LogTrap#tt_main) trap_d#e16-4 FAKE_NPC,14,0 +turbo_e_16,99,356,0 duplicate(LogTrap#tt_main) trap_d#e16-5 FAKE_NPC,3,3 +turbo_e_16,103,356,0 duplicate(LogTrap#tt_main) trap_d#e16-6 FAKE_NPC,0,3 +turbo_e_16,108,354,0 duplicate(LogTrap#tt_main) trap_d#e16-7 FAKE_NPC,5,1 +turbo_e_16,112,356,0 duplicate(LogTrap#tt_main) trap_d#e16-8 FAKE_NPC,0,1 +turbo_e_16,113,356,0 duplicate(LogTrap#tt_main) trap_d#e16-9 FAKE_NPC,0,1 +turbo_e_16,123,353,0 duplicate(LogTrap#tt_main) trap_d#e16-10 FAKE_NPC,3,2 +turbo_e_16,127,353,0 duplicate(LogTrap#tt_main) trap_d#e16-11 FAKE_NPC,0,2 +turbo_e_16,145,352,0 duplicate(LogTrap#tt_main) trap_d#e16-12 FAKE_NPC,17,1 +turbo_e_16,152,354,0 duplicate(LogTrap#tt_main) trap_d#e16-13 FAKE_NPC,10,1 +turbo_e_16,145,357,0 duplicate(LogTrap#tt_main) trap_d#e16-14 FAKE_NPC,1,2 +turbo_e_16,148,357,0 duplicate(LogTrap#tt_main) trap_d#e16-15 FAKE_NPC,1,2 +turbo_n_4,118,377,0 duplicate(LogTrap#tt_main) trap_a#n4-1 FAKE_NPC,44,1 +turbo_n_4,77,375,0 duplicate(LogTrap#tt_main) trap_a#n4-2 FAKE_NPC,3,1 +turbo_n_4,82,375,0 duplicate(LogTrap#tt_main) trap_a#n4-3 FAKE_NPC,1,1 +turbo_n_4,82,372,0 duplicate(LogTrap#tt_main) trap_a#n4-4 FAKE_NPC,0,2 +turbo_n_4,83,372,0 duplicate(LogTrap#tt_main) trap_a#n4-5 FAKE_NPC,0,2 +turbo_n_4,97,374,0 duplicate(LogTrap#tt_main) trap_a#n4-6 FAKE_NPC,1,2 +turbo_n_4,98,374,0 duplicate(LogTrap#tt_main) trap_a#n4-7 FAKE_NPC,1,2 +turbo_n_4,122,372,0 duplicate(LogTrap#tt_main) trap_a#n4-8 FAKE_NPC,2,4 +turbo_n_4,125,374,0 duplicate(LogTrap#tt_main) trap_a#n4-9 FAKE_NPC,0,4 +turbo_n_4,132,374,0 duplicate(LogTrap#tt_main) trap_a#n4-10 FAKE_NPC,7,2 +turbo_n_4,156,374,0 duplicate(LogTrap#tt_main) trap_a#n4-11 FAKE_NPC,6,2 +turbo_n_4,163,375,0 duplicate(LogTrap#tt_main) trap_a#n4-12 FAKE_NPC,0,3 +turbo_n_4,164,377,0 duplicate(LogTrap#tt_main) trap_a#n4-13 FAKE_NPC,1,1 +turbo_n_4,76,369,0 duplicate(LogTrap#tt_main) trap_b#n4-1 FAKE_NPC,2,2 +turbo_n_4,79,369,0 duplicate(LogTrap#tt_main) trap_b#n4-2 FAKE_NPC,0,2 +turbo_n_4,77,366,0 duplicate(LogTrap#tt_main) trap_b#n4-3 FAKE_NPC,3,0 +turbo_n_4,85,366,0 duplicate(LogTrap#tt_main) trap_b#n4-4 FAKE_NPC,5,1 +turbo_n_4,87,363,0 duplicate(LogTrap#tt_main) trap_b#n4-5 FAKE_NPC,2,1 +turbo_n_4,88,368,0 duplicate(LogTrap#tt_main) trap_b#n4-6 FAKE_NPC,2,5 +turbo_n_4,92,370,0 duplicate(LogTrap#tt_main) trap_b#n4-7 FAKE_NPC,1,3 +turbo_n_4,98,368,0 duplicate(LogTrap#tt_main) trap_b#n4-8 FAKE_NPC,4,1 +turbo_n_4,109,371,0 duplicate(LogTrap#tt_main) trap_b#n4-9 FAKE_NPC,7,2 +turbo_n_4,110,368,0 duplicate(LogTrap#tt_main) trap_b#n4-10 FAKE_NPC,7,0 +turbo_n_4,113,366,0 duplicate(LogTrap#tt_main) trap_b#n4-11 FAKE_NPC,3,2 +turbo_n_4,117,368,0 duplicate(LogTrap#tt_main) trap_b#n4-12 FAKE_NPC,0,5 +turbo_n_4,123,364,0 duplicate(LogTrap#tt_main) trap_b#n4-13 FAKE_NPC,6,1 +turbo_n_4,136,368,0 duplicate(LogTrap#tt_main) trap_b#n4-14 FAKE_NPC,8,1 +turbo_n_4,136,366,0 duplicate(LogTrap#tt_main) trap_b#n4-15 FAKE_NPC,8,0 +turbo_n_4,144,370,0 duplicate(LogTrap#tt_main) trap_b#n4-16 FAKE_NPC,2,3 +turbo_n_4,147,370,0 duplicate(LogTrap#tt_main) trap_b#n4-17 FAKE_NPC,0,3 +turbo_n_4,155,369,0 duplicate(LogTrap#tt_main) trap_b#n4-18 FAKE_NPC,7,0 +turbo_n_4,155,368,0 duplicate(LogTrap#tt_main) trap_b#n4-19 FAKE_NPC,7,0 +turbo_n_4,151,367,0 duplicate(LogTrap#tt_main) trap_b#n4-20 FAKE_NPC,3,0 +turbo_n_4,153,366,0 duplicate(LogTrap#tt_main) trap_b#n4-21 FAKE_NPC,1,0 +turbo_n_4,155,367,0 duplicate(LogTrap#tt_main) trap_b#n4-22 FAKE_NPC,0,1 +turbo_n_4,78,362,0 duplicate(LogTrap#tt_main) trap_c#n4-1 FAKE_NPC,4,1 +turbo_n_4,78,359,0 duplicate(LogTrap#tt_main) trap_c#n4-2 FAKE_NPC,4,1 +turbo_n_4,83,362,0 duplicate(LogTrap#tt_main) trap_c#n4-3 FAKE_NPC,0,1 +turbo_n_4,88,359,0 duplicate(LogTrap#tt_main) trap_c#n4-4 FAKE_NPC,5,1 +turbo_n_4,89,357,0 duplicate(LogTrap#tt_main) trap_c#n4-5 FAKE_NPC,1,1 +turbo_n_4,92,390,0 duplicate(LogTrap#tt_main) trap_c#n4-6 FAKE_NPC,1,1 +turbo_n_4,92,357,0 duplicate(LogTrap#tt_main) trap_c#n4-7 FAKE_NPC,1,1 +turbo_n_4,98,364,0 duplicate(LogTrap#tt_main) trap_c#n4-8 FAKE_NPC,6,1 +turbo_n_4,98,362,0 duplicate(LogTrap#tt_main) trap_c#n4-9 FAKE_NPC,6,0 +turbo_n_4,106,364,0 duplicate(LogTrap#tt_main) trap_c#n4-10 FAKE_NPC,2,2 +turbo_n_4,107,360,0 duplicate(LogTrap#tt_main) trap_c#n4-11 FAKE_NPC,1,2 +turbo_n_4,109,360,0 duplicate(LogTrap#tt_main) trap_c#n4-12 FAKE_NPC,0,2 +turbo_n_4,112,361,0 duplicate(LogTrap#tt_main) trap_c#n4-13 FAKE_NPC,3,1 +turbo_n_4,116,359,0 duplicate(LogTrap#tt_main) trap_c#n4-14 FAKE_NPC,0,2 +turbo_n_4,117,359,0 duplicate(LogTrap#tt_main) trap_c#n4-15 FAKE_NPC,0,2 +turbo_n_4,116,356,0 duplicate(LogTrap#tt_main) trap_c#n4-16 FAKE_NPC,0,2 +turbo_n_4,117,356,0 duplicate(LogTrap#tt_main) trap_c#n4-17 FAKE_NPC,0,2 +turbo_n_4,129,360,0 duplicate(LogTrap#tt_main) trap_c#n4-18 FAKE_NPC,12,1 +turbo_n_4,129,358,0 duplicate(LogTrap#tt_main) trap_c#n4-19 FAKE_NPC,12,0 +turbo_n_4,132,357,0 duplicate(LogTrap#tt_main) trap_c#n4-20 FAKE_NPC,2,1 +turbo_n_4,137,357,0 duplicate(LogTrap#tt_main) trap_c#n4-21 FAKE_NPC,2,1 +turbo_n_4,147,363,0 duplicate(LogTrap#tt_main) trap_c#n4-22 FAKE_NPC,16,1 +turbo_n_4,149,365,0 duplicate(LogTrap#tt_main) trap_c#n4-23 FAKE_NPC,1,0 +turbo_n_4,158,362,0 duplicate(LogTrap#tt_main) trap_c#n4-24 FAKE_NPC,1,4 +turbo_n_4,154,360,0 duplicate(LogTrap#tt_main) trap_c#n4-25 FAKE_NPC,2,2 +turbo_n_4,161,360,0 duplicate(LogTrap#tt_main) trap_c#n4-26 FAKE_NPC,1,2 +turbo_n_4,161,365,0 duplicate(LogTrap#tt_main) trap_c#n4-27 FAKE_NPC,1,0 +turbo_n_4,160,366,0 duplicate(LogTrap#tt_main) trap_c#n4-28 FAKE_NPC +turbo_n_4,79,353,0 duplicate(LogTrap#tt_main) trap_d#n4-1 FAKE_NPC,5,2 +turbo_n_4,85,354,0 duplicate(LogTrap#tt_main) trap_d#n4-2 FAKE_NPC,0,1 +turbo_n_4,99,353,0 duplicate(LogTrap#tt_main) trap_d#n4-3 FAKE_NPC,14,0 +turbo_n_4,99,352,0 duplicate(LogTrap#tt_main) trap_d#n4-4 FAKE_NPC,14,0 +turbo_n_4,99,356,0 duplicate(LogTrap#tt_main) trap_d#n4-5 FAKE_NPC,3,3 +turbo_n_4,103,356,0 duplicate(LogTrap#tt_main) trap_d#n4-6 FAKE_NPC,0,3 +turbo_n_4,108,354,0 duplicate(LogTrap#tt_main) trap_d#n4-7 FAKE_NPC,5,1 +turbo_n_4,112,356,0 duplicate(LogTrap#tt_main) trap_d#n4-8 FAKE_NPC,0,1 +turbo_n_4,113,356,0 duplicate(LogTrap#tt_main) trap_d#n4-9 FAKE_NPC,0,1 +turbo_n_4,123,353,0 duplicate(LogTrap#tt_main) trap_d#n4-10 FAKE_NPC,3,2 +turbo_n_4,127,353,0 duplicate(LogTrap#tt_main) trap_d#n4-11 FAKE_NPC,0,2 +turbo_n_4,145,352,0 duplicate(LogTrap#tt_main) trap_d#n4-12 FAKE_NPC,17,1 +turbo_n_4,152,354,0 duplicate(LogTrap#tt_main) trap_d#n4-13 FAKE_NPC,10,1 +turbo_n_4,145,357,0 duplicate(LogTrap#tt_main) trap_d#n4-14 FAKE_NPC,1,2 +turbo_n_4,148,357,0 duplicate(LogTrap#tt_main) trap_d#n4-15 FAKE_NPC,1,2 +turbo_n_8,118,377,0 duplicate(LogTrap#tt_main) trap_a#n8-1 FAKE_NPC,44,1 +turbo_n_8,77,375,0 duplicate(LogTrap#tt_main) trap_a#n8-2 FAKE_NPC,3,1 +turbo_n_8,82,375,0 duplicate(LogTrap#tt_main) trap_a#n8-3 FAKE_NPC,1,1 +turbo_n_8,82,372,0 duplicate(LogTrap#tt_main) trap_a#n8-4 FAKE_NPC,0,2 +turbo_n_8,83,372,0 duplicate(LogTrap#tt_main) trap_a#n8-5 FAKE_NPC,0,2 +turbo_n_8,97,374,0 duplicate(LogTrap#tt_main) trap_a#n8-6 FAKE_NPC,1,2 +turbo_n_8,98,374,0 duplicate(LogTrap#tt_main) trap_a#n8-7 FAKE_NPC,1,2 +turbo_n_8,122,372,0 duplicate(LogTrap#tt_main) trap_a#n8-8 FAKE_NPC,2,4 +turbo_n_8,125,374,0 duplicate(LogTrap#tt_main) trap_a#n8-9 FAKE_NPC,0,4 +turbo_n_8,132,374,0 duplicate(LogTrap#tt_main) trap_a#n8-10 FAKE_NPC,7,2 +turbo_n_8,156,374,0 duplicate(LogTrap#tt_main) trap_a#n8-11 FAKE_NPC,6,2 +turbo_n_8,163,375,0 duplicate(LogTrap#tt_main) trap_a#n8-12 FAKE_NPC,0,3 +turbo_n_8,164,377,0 duplicate(LogTrap#tt_main) trap_a#n8-13 FAKE_NPC,1,1 +turbo_n_8,76,369,0 duplicate(LogTrap#tt_main) trap_b#n8-1 FAKE_NPC,2,2 +turbo_n_8,79,369,0 duplicate(LogTrap#tt_main) trap_b#n8-2 FAKE_NPC,0,2 +turbo_n_8,77,366,0 duplicate(LogTrap#tt_main) trap_b#n8-3 FAKE_NPC,3,0 +turbo_n_8,85,366,0 duplicate(LogTrap#tt_main) trap_b#n8-4 FAKE_NPC,5,1 +turbo_n_8,87,363,0 duplicate(LogTrap#tt_main) trap_b#n8-5 FAKE_NPC,2,1 +turbo_n_8,88,368,0 duplicate(LogTrap#tt_main) trap_b#n8-6 FAKE_NPC,2,5 +turbo_n_8,92,370,0 duplicate(LogTrap#tt_main) trap_b#n8-7 FAKE_NPC,1,3 +turbo_n_8,98,368,0 duplicate(LogTrap#tt_main) trap_b#n8-8 FAKE_NPC,4,1 +turbo_n_8,109,371,0 duplicate(LogTrap#tt_main) trap_b#n8-9 FAKE_NPC,7,2 +turbo_n_8,110,368,0 duplicate(LogTrap#tt_main) trap_b#n8-10 FAKE_NPC,7,0 +turbo_n_8,113,366,0 duplicate(LogTrap#tt_main) trap_b#n8-11 FAKE_NPC,3,2 +turbo_n_8,117,368,0 duplicate(LogTrap#tt_main) trap_b#n8-12 FAKE_NPC,0,5 +turbo_n_8,123,364,0 duplicate(LogTrap#tt_main) trap_b#n8-13 FAKE_NPC,6,1 +turbo_n_8,136,368,0 duplicate(LogTrap#tt_main) trap_b#n8-14 FAKE_NPC,8,1 +turbo_n_8,136,366,0 duplicate(LogTrap#tt_main) trap_b#n8-15 FAKE_NPC,8,0 +turbo_n_8,144,370,0 duplicate(LogTrap#tt_main) trap_b#n8-16 FAKE_NPC,2,3 +turbo_n_8,147,370,0 duplicate(LogTrap#tt_main) trap_b#n8-17 FAKE_NPC,0,3 +turbo_n_8,155,369,0 duplicate(LogTrap#tt_main) trap_b#n8-18 FAKE_NPC,7,0 +turbo_n_8,155,368,0 duplicate(LogTrap#tt_main) trap_b#n8-19 FAKE_NPC,7,0 +turbo_n_8,151,367,0 duplicate(LogTrap#tt_main) trap_b#n8-20 FAKE_NPC,3,0 +turbo_n_8,153,366,0 duplicate(LogTrap#tt_main) trap_b#n8-21 FAKE_NPC,1,0 +turbo_n_8,155,367,0 duplicate(LogTrap#tt_main) trap_b#n8-22 FAKE_NPC,0,1 +turbo_n_8,78,362,0 duplicate(LogTrap#tt_main) trap_c#n8-1 FAKE_NPC,4,1 +turbo_n_8,78,359,0 duplicate(LogTrap#tt_main) trap_c#n8-2 FAKE_NPC,4,1 +turbo_n_8,83,362,0 duplicate(LogTrap#tt_main) trap_c#n8-3 FAKE_NPC,0,1 +turbo_n_8,88,359,0 duplicate(LogTrap#tt_main) trap_c#n8-4 FAKE_NPC,5,1 +turbo_n_8,89,357,0 duplicate(LogTrap#tt_main) trap_c#n8-5 FAKE_NPC,1,1 +turbo_n_8,92,390,0 duplicate(LogTrap#tt_main) trap_c#n8-6 FAKE_NPC,1,1 +turbo_n_8,92,357,0 duplicate(LogTrap#tt_main) trap_c#n8-7 FAKE_NPC,1,1 +turbo_n_8,98,364,0 duplicate(LogTrap#tt_main) trap_c#n8-8 FAKE_NPC,6,1 +turbo_n_8,98,362,0 duplicate(LogTrap#tt_main) trap_c#n8-9 FAKE_NPC,6,0 +turbo_n_8,106,364,0 duplicate(LogTrap#tt_main) trap_c#n8-10 FAKE_NPC,2,2 +turbo_n_8,107,360,0 duplicate(LogTrap#tt_main) trap_c#n8-11 FAKE_NPC,1,2 +turbo_n_8,109,360,0 duplicate(LogTrap#tt_main) trap_c#n8-12 FAKE_NPC,0,2 +turbo_n_8,112,361,0 duplicate(LogTrap#tt_main) trap_c#n8-13 FAKE_NPC,3,1 +turbo_n_8,116,359,0 duplicate(LogTrap#tt_main) trap_c#n8-14 FAKE_NPC,0,2 +turbo_n_8,117,359,0 duplicate(LogTrap#tt_main) trap_c#n8-15 FAKE_NPC,0,2 +turbo_n_8,116,356,0 duplicate(LogTrap#tt_main) trap_c#n8-16 FAKE_NPC,0,2 +turbo_n_8,117,356,0 duplicate(LogTrap#tt_main) trap_c#n8-17 FAKE_NPC,0,2 +turbo_n_8,129,360,0 duplicate(LogTrap#tt_main) trap_c#n8-18 FAKE_NPC,12,1 +turbo_n_8,129,358,0 duplicate(LogTrap#tt_main) trap_c#n8-19 FAKE_NPC,12,0 +turbo_n_8,132,357,0 duplicate(LogTrap#tt_main) trap_c#n8-20 FAKE_NPC,2,1 +turbo_n_8,137,357,0 duplicate(LogTrap#tt_main) trap_c#n8-21 FAKE_NPC,2,1 +turbo_n_8,147,363,0 duplicate(LogTrap#tt_main) trap_c#n8-22 FAKE_NPC,16,1 +turbo_n_8,149,365,0 duplicate(LogTrap#tt_main) trap_c#n8-23 FAKE_NPC,1,0 +turbo_n_8,158,362,0 duplicate(LogTrap#tt_main) trap_c#n8-24 FAKE_NPC,1,4 +turbo_n_8,154,360,0 duplicate(LogTrap#tt_main) trap_c#n8-25 FAKE_NPC,2,2 +turbo_n_8,161,360,0 duplicate(LogTrap#tt_main) trap_c#n8-26 FAKE_NPC,1,2 +turbo_n_8,161,365,0 duplicate(LogTrap#tt_main) trap_c#n8-27 FAKE_NPC,1,0 +turbo_n_8,160,366,0 duplicate(LogTrap#tt_main) trap_c#n8-28 FAKE_NPC +turbo_n_8,79,353,0 duplicate(LogTrap#tt_main) trap_d#n8-1 FAKE_NPC,5,2 +turbo_n_8,85,354,0 duplicate(LogTrap#tt_main) trap_d#n8-2 FAKE_NPC,0,1 +turbo_n_8,99,353,0 duplicate(LogTrap#tt_main) trap_d#n8-3 FAKE_NPC,14,0 +turbo_n_8,99,352,0 duplicate(LogTrap#tt_main) trap_d#n8-4 FAKE_NPC,14,0 +turbo_n_8,99,356,0 duplicate(LogTrap#tt_main) trap_d#n8-5 FAKE_NPC,3,3 +turbo_n_8,103,356,0 duplicate(LogTrap#tt_main) trap_d#n8-6 FAKE_NPC,0,3 +turbo_n_8,108,354,0 duplicate(LogTrap#tt_main) trap_d#n8-7 FAKE_NPC,5,1 +turbo_n_8,112,356,0 duplicate(LogTrap#tt_main) trap_d#n8-8 FAKE_NPC,0,1 +turbo_n_8,113,356,0 duplicate(LogTrap#tt_main) trap_d#n8-9 FAKE_NPC,0,1 +turbo_n_8,123,353,0 duplicate(LogTrap#tt_main) trap_d#n8-10 FAKE_NPC,3,2 +turbo_n_8,127,353,0 duplicate(LogTrap#tt_main) trap_d#n8-11 FAKE_NPC,0,2 +turbo_n_8,145,352,0 duplicate(LogTrap#tt_main) trap_d#n8-12 FAKE_NPC,17,1 +turbo_n_8,152,354,0 duplicate(LogTrap#tt_main) trap_d#n8-13 FAKE_NPC,10,1 +turbo_n_8,145,357,0 duplicate(LogTrap#tt_main) trap_d#n8-14 FAKE_NPC,1,2 +turbo_n_8,148,357,0 duplicate(LogTrap#tt_main) trap_d#n8-15 FAKE_NPC,1,2 +turbo_n_16,118,377,0 duplicate(LogTrap#tt_main) trap_a#n16-1 FAKE_NPC,44,1 +turbo_n_16,77,375,0 duplicate(LogTrap#tt_main) trap_a#n16-2 FAKE_NPC,3,1 +turbo_n_16,82,375,0 duplicate(LogTrap#tt_main) trap_a#n16-3 FAKE_NPC,1,1 +turbo_n_16,82,372,0 duplicate(LogTrap#tt_main) trap_a#n16-4 FAKE_NPC,0,2 +turbo_n_16,83,372,0 duplicate(LogTrap#tt_main) trap_a#n16-5 FAKE_NPC,0,2 +turbo_n_16,97,374,0 duplicate(LogTrap#tt_main) trap_a#n16-6 FAKE_NPC,1,2 +turbo_n_16,98,374,0 duplicate(LogTrap#tt_main) trap_a#n16-7 FAKE_NPC,1,2 +turbo_n_16,122,372,0 duplicate(LogTrap#tt_main) trap_a#n16-8 FAKE_NPC,2,4 +turbo_n_16,125,374,0 duplicate(LogTrap#tt_main) trap_a#n16-9 FAKE_NPC,0,4 +turbo_n_16,132,374,0 duplicate(LogTrap#tt_main) trap_a#n16-10 FAKE_NPC,7,2 +turbo_n_16,156,374,0 duplicate(LogTrap#tt_main) trap_a#n16-11 FAKE_NPC,6,2 +turbo_n_16,163,375,0 duplicate(LogTrap#tt_main) trap_a#n16-12 FAKE_NPC,0,3 +turbo_n_16,164,377,0 duplicate(LogTrap#tt_main) trap_a#n16-13 FAKE_NPC,1,1 +turbo_n_16,76,369,0 duplicate(LogTrap#tt_main) trap_b#n16-1 FAKE_NPC,2,2 +turbo_n_16,79,369,0 duplicate(LogTrap#tt_main) trap_b#n16-2 FAKE_NPC,0,2 +turbo_n_16,77,366,0 duplicate(LogTrap#tt_main) trap_b#n16-3 FAKE_NPC,3,0 +turbo_n_16,85,366,0 duplicate(LogTrap#tt_main) trap_b#n16-4 FAKE_NPC,5,1 +turbo_n_16,87,363,0 duplicate(LogTrap#tt_main) trap_b#n16-5 FAKE_NPC,2,1 +turbo_n_16,88,368,0 duplicate(LogTrap#tt_main) trap_b#n16-6 FAKE_NPC,2,5 +turbo_n_16,92,370,0 duplicate(LogTrap#tt_main) trap_b#n16-7 FAKE_NPC,1,3 +turbo_n_16,98,368,0 duplicate(LogTrap#tt_main) trap_b#n16-8 FAKE_NPC,4,1 +turbo_n_16,109,371,0 duplicate(LogTrap#tt_main) trap_b#n16-9 FAKE_NPC,7,2 +turbo_n_16,110,368,0 duplicate(LogTrap#tt_main) trap_b#n16-10 FAKE_NPC,7,0 +turbo_n_16,113,366,0 duplicate(LogTrap#tt_main) trap_b#n16-11 FAKE_NPC,3,2 +turbo_n_16,117,368,0 duplicate(LogTrap#tt_main) trap_b#n16-12 FAKE_NPC,0,5 +turbo_n_16,123,364,0 duplicate(LogTrap#tt_main) trap_b#n16-13 FAKE_NPC,6,1 +turbo_n_16,136,368,0 duplicate(LogTrap#tt_main) trap_b#n16-14 FAKE_NPC,8,1 +turbo_n_16,136,366,0 duplicate(LogTrap#tt_main) trap_b#n16-15 FAKE_NPC,8,0 +turbo_n_16,144,370,0 duplicate(LogTrap#tt_main) trap_b#n16-16 FAKE_NPC,2,3 +turbo_n_16,147,370,0 duplicate(LogTrap#tt_main) trap_b#n16-17 FAKE_NPC,0,3 +turbo_n_16,155,369,0 duplicate(LogTrap#tt_main) trap_b#n16-18 FAKE_NPC,7,0 +turbo_n_16,155,368,0 duplicate(LogTrap#tt_main) trap_b#n16-19 FAKE_NPC,7,0 +turbo_n_16,151,367,0 duplicate(LogTrap#tt_main) trap_b#n16-20 FAKE_NPC,3,0 +turbo_n_16,153,366,0 duplicate(LogTrap#tt_main) trap_b#n16-21 FAKE_NPC,1,0 +turbo_n_16,155,367,0 duplicate(LogTrap#tt_main) trap_b#n16-22 FAKE_NPC,0,1 +turbo_n_16,78,362,0 duplicate(LogTrap#tt_main) trap_c#n16-1 FAKE_NPC,4,1 +turbo_n_16,78,359,0 duplicate(LogTrap#tt_main) trap_c#n16-2 FAKE_NPC,4,1 +turbo_n_16,83,362,0 duplicate(LogTrap#tt_main) trap_c#n16-3 FAKE_NPC,0,1 +turbo_n_16,88,359,0 duplicate(LogTrap#tt_main) trap_c#n16-4 FAKE_NPC,5,1 +turbo_n_16,89,357,0 duplicate(LogTrap#tt_main) trap_c#n16-5 FAKE_NPC,1,1 +turbo_n_16,92,390,0 duplicate(LogTrap#tt_main) trap_c#n16-6 FAKE_NPC,1,1 +turbo_n_16,92,357,0 duplicate(LogTrap#tt_main) trap_c#n16-7 FAKE_NPC,1,1 +turbo_n_16,98,364,0 duplicate(LogTrap#tt_main) trap_c#n16-8 FAKE_NPC,6,1 +turbo_n_16,98,362,0 duplicate(LogTrap#tt_main) trap_c#n16-9 FAKE_NPC,6,0 +turbo_n_16,106,364,0 duplicate(LogTrap#tt_main) trap_c#n16-10 FAKE_NPC,2,2 +turbo_n_16,107,360,0 duplicate(LogTrap#tt_main) trap_c#n16-11 FAKE_NPC,1,2 +turbo_n_16,109,360,0 duplicate(LogTrap#tt_main) trap_c#n16-12 FAKE_NPC,0,2 +turbo_n_16,112,361,0 duplicate(LogTrap#tt_main) trap_c#n16-13 FAKE_NPC,3,1 +turbo_n_16,116,359,0 duplicate(LogTrap#tt_main) trap_c#n16-14 FAKE_NPC,0,2 +turbo_n_16,117,359,0 duplicate(LogTrap#tt_main) trap_c#n16-15 FAKE_NPC,0,2 +turbo_n_16,116,356,0 duplicate(LogTrap#tt_main) trap_c#n16-16 FAKE_NPC,0,2 +turbo_n_16,117,356,0 duplicate(LogTrap#tt_main) trap_c#n16-17 FAKE_NPC,0,2 +turbo_n_16,129,360,0 duplicate(LogTrap#tt_main) trap_c#n16-18 FAKE_NPC,12,1 +turbo_n_16,129,358,0 duplicate(LogTrap#tt_main) trap_c#n16-19 FAKE_NPC,12,0 +turbo_n_16,132,357,0 duplicate(LogTrap#tt_main) trap_c#n16-20 FAKE_NPC,2,1 +turbo_n_16,137,357,0 duplicate(LogTrap#tt_main) trap_c#n16-21 FAKE_NPC,2,1 +turbo_n_16,147,363,0 duplicate(LogTrap#tt_main) trap_c#n16-22 FAKE_NPC,16,1 +turbo_n_16,149,365,0 duplicate(LogTrap#tt_main) trap_c#n16-23 FAKE_NPC,1,0 +turbo_n_16,158,362,0 duplicate(LogTrap#tt_main) trap_c#n16-24 FAKE_NPC,1,4 +turbo_n_16,154,360,0 duplicate(LogTrap#tt_main) trap_c#n16-25 FAKE_NPC,2,2 +turbo_n_16,161,360,0 duplicate(LogTrap#tt_main) trap_c#n16-26 FAKE_NPC,1,2 +turbo_n_16,161,365,0 duplicate(LogTrap#tt_main) trap_c#n16-27 FAKE_NPC,1,0 +turbo_n_16,160,366,0 duplicate(LogTrap#tt_main) trap_c#n16-28 FAKE_NPC +turbo_n_16,79,353,0 duplicate(LogTrap#tt_main) trap_d#n16-1 FAKE_NPC,5,2 +turbo_n_16,85,354,0 duplicate(LogTrap#tt_main) trap_d#n16-2 FAKE_NPC,0,1 +turbo_n_16,99,353,0 duplicate(LogTrap#tt_main) trap_d#n16-3 FAKE_NPC,14,0 +turbo_n_16,99,352,0 duplicate(LogTrap#tt_main) trap_d#n16-4 FAKE_NPC,14,0 +turbo_n_16,99,356,0 duplicate(LogTrap#tt_main) trap_d#n16-5 FAKE_NPC,3,3 +turbo_n_16,103,356,0 duplicate(LogTrap#tt_main) trap_d#n16-6 FAKE_NPC,0,3 +turbo_n_16,108,354,0 duplicate(LogTrap#tt_main) trap_d#n16-7 FAKE_NPC,5,1 +turbo_n_16,112,356,0 duplicate(LogTrap#tt_main) trap_d#n16-8 FAKE_NPC,0,1 +turbo_n_16,113,356,0 duplicate(LogTrap#tt_main) trap_d#n16-9 FAKE_NPC,0,1 +turbo_n_16,123,353,0 duplicate(LogTrap#tt_main) trap_d#n16-10 FAKE_NPC,3,2 +turbo_n_16,127,353,0 duplicate(LogTrap#tt_main) trap_d#n16-11 FAKE_NPC,0,2 +turbo_n_16,145,352,0 duplicate(LogTrap#tt_main) trap_d#n16-12 FAKE_NPC,17,1 +turbo_n_16,152,354,0 duplicate(LogTrap#tt_main) trap_d#n16-13 FAKE_NPC,10,1 +turbo_n_16,145,357,0 duplicate(LogTrap#tt_main) trap_d#n16-14 FAKE_NPC,1,2 +turbo_n_16,148,357,0 duplicate(LogTrap#tt_main) trap_d#n16-15 FAKE_NPC,1,2 +turbo_n_1,118,377,0 duplicate(LogTrap#tt_main) trap_a#n1-1 FAKE_NPC,44,1 +turbo_n_1,77,375,0 duplicate(LogTrap#tt_main) trap_a#n1-2 FAKE_NPC,3,1 +turbo_n_1,82,375,0 duplicate(LogTrap#tt_main) trap_a#n1-3 FAKE_NPC,1,1 +turbo_n_1,82,372,0 duplicate(LogTrap#tt_main) trap_a#n1-4 FAKE_NPC,0,2 +turbo_n_1,83,372,0 duplicate(LogTrap#tt_main) trap_a#n1-5 FAKE_NPC,0,2 +turbo_n_1,97,374,0 duplicate(LogTrap#tt_main) trap_a#n1-6 FAKE_NPC,1,2 +turbo_n_1,98,374,0 duplicate(LogTrap#tt_main) trap_a#n1-7 FAKE_NPC,1,2 +turbo_n_1,122,372,0 duplicate(LogTrap#tt_main) trap_a#n1-8 FAKE_NPC,2,4 +turbo_n_1,125,374,0 duplicate(LogTrap#tt_main) trap_a#n1-9 FAKE_NPC,0,4 +turbo_n_1,132,374,0 duplicate(LogTrap#tt_main) trap_a#n1-10 FAKE_NPC,7,2 +turbo_n_1,156,374,0 duplicate(LogTrap#tt_main) trap_a#n1-11 FAKE_NPC,6,2 +turbo_n_1,163,375,0 duplicate(LogTrap#tt_main) trap_a#n1-12 FAKE_NPC,0,3 +turbo_n_1,164,377,0 duplicate(LogTrap#tt_main) trap_a#n1-13 FAKE_NPC,1,1 +turbo_n_1,76,369,0 duplicate(LogTrap#tt_main) trap_b#n1-1 FAKE_NPC,2,2 +turbo_n_1,79,369,0 duplicate(LogTrap#tt_main) trap_b#n1-2 FAKE_NPC,0,2 +turbo_n_1,77,366,0 duplicate(LogTrap#tt_main) trap_b#n1-3 FAKE_NPC,3,0 +turbo_n_1,85,366,0 duplicate(LogTrap#tt_main) trap_b#n1-4 FAKE_NPC,5,1 +turbo_n_1,87,363,0 duplicate(LogTrap#tt_main) trap_b#n1-5 FAKE_NPC,2,1 +turbo_n_1,88,368,0 duplicate(LogTrap#tt_main) trap_b#n1-6 FAKE_NPC,2,5 +turbo_n_1,92,370,0 duplicate(LogTrap#tt_main) trap_b#n1-7 FAKE_NPC,1,3 +turbo_n_1,98,368,0 duplicate(LogTrap#tt_main) trap_b#n1-8 FAKE_NPC,4,1 +turbo_n_1,109,371,0 duplicate(LogTrap#tt_main) trap_b#n1-9 FAKE_NPC,7,2 +turbo_n_1,110,368,0 duplicate(LogTrap#tt_main) trap_b#n1-10 FAKE_NPC,7,0 +turbo_n_1,113,366,0 duplicate(LogTrap#tt_main) trap_b#n1-11 FAKE_NPC,3,2 +turbo_n_1,117,368,0 duplicate(LogTrap#tt_main) trap_b#n1-12 FAKE_NPC,0,5 +turbo_n_1,123,364,0 duplicate(LogTrap#tt_main) trap_b#n1-13 FAKE_NPC,6,1 +turbo_n_1,136,368,0 duplicate(LogTrap#tt_main) trap_b#n1-14 FAKE_NPC,8,1 +turbo_n_1,136,366,0 duplicate(LogTrap#tt_main) trap_b#n1-15 FAKE_NPC,8,0 +turbo_n_1,144,370,0 duplicate(LogTrap#tt_main) trap_b#n1-16 FAKE_NPC,2,3 +turbo_n_1,147,370,0 duplicate(LogTrap#tt_main) trap_b#n1-17 FAKE_NPC,0,3 +turbo_n_1,155,369,0 duplicate(LogTrap#tt_main) trap_b#n1-18 FAKE_NPC,7,0 +turbo_n_1,155,368,0 duplicate(LogTrap#tt_main) trap_b#n1-19 FAKE_NPC,7,0 +turbo_n_1,151,367,0 duplicate(LogTrap#tt_main) trap_b#n1-20 FAKE_NPC,3,0 +turbo_n_1,153,366,0 duplicate(LogTrap#tt_main) trap_b#n1-21 FAKE_NPC,1,0 +turbo_n_1,155,367,0 duplicate(LogTrap#tt_main) trap_b#n1-22 FAKE_NPC,0,1 +turbo_n_1,78,362,0 duplicate(LogTrap#tt_main) trap_c#n1-1 FAKE_NPC,4,1 +turbo_n_1,78,359,0 duplicate(LogTrap#tt_main) trap_c#n1-2 FAKE_NPC,4,1 +turbo_n_1,83,362,0 duplicate(LogTrap#tt_main) trap_c#n1-3 FAKE_NPC,0,1 +turbo_n_1,88,359,0 duplicate(LogTrap#tt_main) trap_c#n1-4 FAKE_NPC,5,1 +turbo_n_1,89,357,0 duplicate(LogTrap#tt_main) trap_c#n1-5 FAKE_NPC,1,1 +turbo_n_1,92,390,0 duplicate(LogTrap#tt_main) trap_c#n1-6 FAKE_NPC,1,1 +turbo_n_1,92,357,0 duplicate(LogTrap#tt_main) trap_c#n1-7 FAKE_NPC,1,1 +turbo_n_1,98,364,0 duplicate(LogTrap#tt_main) trap_c#n1-8 FAKE_NPC,6,1 +turbo_n_1,98,362,0 duplicate(LogTrap#tt_main) trap_c#n1-9 FAKE_NPC,6,0 +turbo_n_1,106,364,0 duplicate(LogTrap#tt_main) trap_c#n1-10 FAKE_NPC,2,2 +turbo_n_1,107,360,0 duplicate(LogTrap#tt_main) trap_c#n1-11 FAKE_NPC,1,2 +turbo_n_1,109,360,0 duplicate(LogTrap#tt_main) trap_c#n1-12 FAKE_NPC,0,2 +turbo_n_1,112,361,0 duplicate(LogTrap#tt_main) trap_c#n1-13 FAKE_NPC,3,1 +turbo_n_1,116,359,0 duplicate(LogTrap#tt_main) trap_c#n1-14 FAKE_NPC,0,2 +turbo_n_1,117,359,0 duplicate(LogTrap#tt_main) trap_c#n1-15 FAKE_NPC,0,2 +turbo_n_1,116,356,0 duplicate(LogTrap#tt_main) trap_c#n1-16 FAKE_NPC,0,2 +turbo_n_1,117,356,0 duplicate(LogTrap#tt_main) trap_c#n1-17 FAKE_NPC,0,2 +turbo_n_1,129,360,0 duplicate(LogTrap#tt_main) trap_c#n1-18 FAKE_NPC,12,1 +turbo_n_1,129,358,0 duplicate(LogTrap#tt_main) trap_c#n1-19 FAKE_NPC,12,0 +turbo_n_1,132,357,0 duplicate(LogTrap#tt_main) trap_c#n1-20 FAKE_NPC,2,1 +turbo_n_1,137,357,0 duplicate(LogTrap#tt_main) trap_c#n1-21 FAKE_NPC,2,1 +turbo_n_1,147,363,0 duplicate(LogTrap#tt_main) trap_c#n1-22 FAKE_NPC,16,1 +turbo_n_1,149,365,0 duplicate(LogTrap#tt_main) trap_c#n1-23 FAKE_NPC,1,0 +turbo_n_1,158,362,0 duplicate(LogTrap#tt_main) trap_c#n1-24 FAKE_NPC,1,4 +turbo_n_1,154,360,0 duplicate(LogTrap#tt_main) trap_c#n1-25 FAKE_NPC,2,2 +turbo_n_1,161,360,0 duplicate(LogTrap#tt_main) trap_c#n1-26 FAKE_NPC,1,2 +turbo_n_1,161,365,0 duplicate(LogTrap#tt_main) trap_c#n1-27 FAKE_NPC,1,0 +turbo_n_1,160,366,0 duplicate(LogTrap#tt_main) trap_c#n1-28 FAKE_NPC +turbo_n_1,79,353,0 duplicate(LogTrap#tt_main) trap_d#n1-1 FAKE_NPC,5,2 +turbo_n_1,85,354,0 duplicate(LogTrap#tt_main) trap_d#n1-2 FAKE_NPC,0,1 +turbo_n_1,99,353,0 duplicate(LogTrap#tt_main) trap_d#n1-3 FAKE_NPC,14,0 +turbo_n_1,99,352,0 duplicate(LogTrap#tt_main) trap_d#n1-4 FAKE_NPC,14,0 +turbo_n_1,99,356,0 duplicate(LogTrap#tt_main) trap_d#n1-5 FAKE_NPC,3,3 +turbo_n_1,103,356,0 duplicate(LogTrap#tt_main) trap_d#n1-6 FAKE_NPC,0,3 +turbo_n_1,108,354,0 duplicate(LogTrap#tt_main) trap_d#n1-7 FAKE_NPC,5,1 +turbo_n_1,112,356,0 duplicate(LogTrap#tt_main) trap_d#n1-8 FAKE_NPC,0,1 +turbo_n_1,113,356,0 duplicate(LogTrap#tt_main) trap_d#n1-9 FAKE_NPC,0,1 +turbo_n_1,123,353,0 duplicate(LogTrap#tt_main) trap_d#n1-10 FAKE_NPC,3,2 +turbo_n_1,127,353,0 duplicate(LogTrap#tt_main) trap_d#n1-11 FAKE_NPC,0,2 +turbo_n_1,145,352,0 duplicate(LogTrap#tt_main) trap_d#n1-12 FAKE_NPC,17,1 +turbo_n_1,152,354,0 duplicate(LogTrap#tt_main) trap_d#n1-13 FAKE_NPC,10,1 +turbo_n_1,145,357,0 duplicate(LogTrap#tt_main) trap_d#n1-14 FAKE_NPC,1,2 +turbo_n_1,148,357,0 duplicate(LogTrap#tt_main) trap_d#n1-15 FAKE_NPC,1,2 + +- script SandTrap#tt_main FAKE_NPC,{ OnTouch: switch(rand(1,10)) { case 1: @@ -1034,169 +1034,169 @@ OnTouch: end; } } -turbo_e_4,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-1 -1,3,3 -turbo_e_4,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-2 -1,3,3 -turbo_e_4,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-3 -1,1,1 -turbo_e_4,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-4 -1,3,3 -turbo_e_4,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-5 -1,1,1 -turbo_e_4,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-6 -1,3,3 -turbo_e_4,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-7 -1,3,3 -turbo_e_4,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-8 -1,3,3 -turbo_e_4,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-9 -1,2,2 -turbo_e_4,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-10 -1,1,1 -turbo_e_4,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-11 -1,3,3 -turbo_e_4,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-12 -1,1,1 -turbo_e_4,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-13 -1,2,2 -turbo_e_4,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-14 -1,9,9 -turbo_e_4,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-15 -1,3,3 -turbo_e_4,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-16 -1,1,1 -turbo_e_4,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-17 -1,3,3 -turbo_e_4,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-18 -1,2,2 -turbo_e_4,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-19 -1,3,3 -turbo_e_4,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-20 -1,1,1 -turbo_e_4,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-21 -1,3,3 -turbo_e_4,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-22 -1,2,2 -turbo_e_4,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-23 -1,1,1 -turbo_e_8,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-1 -1,3,3 -turbo_e_8,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-2 -1,3,3 -turbo_e_8,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-3 -1,1,1 -turbo_e_8,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-4 -1,3,3 -turbo_e_8,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-5 -1,1,1 -turbo_e_8,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-6 -1,3,3 -turbo_e_8,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-7 -1,3,3 -turbo_e_8,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-8 -1,3,3 -turbo_e_8,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-9 -1,2,2 -turbo_e_8,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-10 -1,1,1 -turbo_e_8,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-11 -1,3,3 -turbo_e_8,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-12 -1,1,1 -turbo_e_8,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-13 -1,2,2 -turbo_e_8,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-14 -1,9,9 -turbo_e_8,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-15 -1,3,3 -turbo_e_8,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-16 -1,1,1 -turbo_e_8,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-17 -1,3,3 -turbo_e_8,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-18 -1,2,2 -turbo_e_8,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-19 -1,3,3 -turbo_e_8,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-20 -1,1,1 -turbo_e_8,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-21 -1,3,3 -turbo_e_8,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-22 -1,2,2 -turbo_e_8,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-23 -1,1,1 -turbo_e_16,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-1 -1,3,3 -turbo_e_16,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-2 -1,3,3 -turbo_e_16,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-3 -1,1,1 -turbo_e_16,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-4 -1,3,3 -turbo_e_16,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-5 -1,1,1 -turbo_e_16,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-6 -1,3,3 -turbo_e_16,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-7 -1,3,3 -turbo_e_16,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-8 -1,3,3 -turbo_e_16,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-9 -1,2,2 -turbo_e_16,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-10 -1,1,1 -turbo_e_16,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-11 -1,3,3 -turbo_e_16,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-12 -1,1,1 -turbo_e_16,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-13 -1,2,2 -turbo_e_16,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-14 -1,9,9 -turbo_e_16,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-15 -1,3,3 -turbo_e_16,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-16 -1,1,1 -turbo_e_16,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-17 -1,3,3 -turbo_e_16,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-18 -1,2,2 -turbo_e_16,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-19 -1,3,3 -turbo_e_16,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-20 -1,1,1 -turbo_e_16,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-21 -1,3,3 -turbo_e_16,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-22 -1,2,2 -turbo_e_16,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-23 -1,1,1 -turbo_n_4,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-1 -1,3,3, -turbo_n_4,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-2 -1,3,3 -turbo_n_4,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-3 -1,1,1 -turbo_n_4,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-4 -1,3,3 -turbo_n_4,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-5 -1,1,1 -turbo_n_4,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-6 -1,3,3 -turbo_n_4,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-7 -1,3,3 -turbo_n_4,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-8 -1,3,3 -turbo_n_4,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-9 -1,2,2 -turbo_n_4,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-10 -1,1,1 -turbo_n_4,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-11 -1,3,3 -turbo_n_4,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-12 -1,1,1 -turbo_n_4,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-13 -1,2,2 -turbo_n_4,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-14 -1,9,9 -turbo_n_4,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-15 -1,3,3 -turbo_n_4,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-16 -1,1,1 -turbo_n_4,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-17 -1,3,3 -turbo_n_4,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-18 -1,2,2 -turbo_n_4,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-19 -1,3,3 -turbo_n_4,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-20 -1,1,1 -turbo_n_4,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-21 -1,3,3 -turbo_n_4,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-22 -1,2,2 -turbo_n_4,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-23 -1,1,1 -turbo_n_8,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-1 -1,3,3 -turbo_n_8,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-2 -1,3,3 -turbo_n_8,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-3 -1,1,1 -turbo_n_8,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-4 -1,3,3 -turbo_n_8,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-5 -1,1,1 -turbo_n_8,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-6 -1,3,3 -turbo_n_8,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-7 -1,3,3 -turbo_n_8,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-8 -1,3,3 -turbo_n_8,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-9 -1,2,2 -turbo_n_8,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-10 -1,1,1 -turbo_n_8,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-11 -1,3,3 -turbo_n_8,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-12 -1,1,1 -turbo_n_8,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-13 -1,2,2 -turbo_n_8,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-14 -1,9,9 -turbo_n_8,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-15 -1,3,3 -turbo_n_8,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-16 -1,1,1 -turbo_n_8,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-17 -1,3,3 -turbo_n_8,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-18 -1,2,2 -turbo_n_8,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-19 -1,3,3 -turbo_n_8,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-20 -1,1,1 -turbo_n_8,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-21 -1,3,3 -turbo_n_8,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-22 -1,2,2 -turbo_n_8,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-23 -1,1,1 -turbo_n_16,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-1 -1,3,3 -turbo_n_16,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-2 -1,3,3 -turbo_n_16,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-3 -1,1,1 -turbo_n_16,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-4 -1,3,3 -turbo_n_16,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-5 -1,1,1 -turbo_n_16,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-6 -1,3,3 -turbo_n_16,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-7 -1,3,3 -turbo_n_16,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-8 -1,3,3 -turbo_n_16,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-9 -1,2,2 -turbo_n_16,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-10 -1,1,1 -turbo_n_16,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-11 -1,3,3 -turbo_n_16,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-12 -1,1,1 -turbo_n_16,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-13 -1,2,2 -turbo_n_16,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-14 -1,9,9 -turbo_n_16,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-15 -1,3,3 -turbo_n_16,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-16 -1,1,1 -turbo_n_16,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-17 -1,3,3 -turbo_n_16,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-18 -1,2,2 -turbo_n_16,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-19 -1,3,3 -turbo_n_16,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-20 -1,1,1 -turbo_n_16,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-21 -1,3,3 -turbo_n_16,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-22 -1,2,2 -turbo_n_16,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-23 -1,1,1 -turbo_n_1,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-1 -1,3,3 -turbo_n_1,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-2 -1,3,3 -turbo_n_1,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-3 -1,1,1 -turbo_n_1,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-4 -1,3,3 -turbo_n_1,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-5 -1,1,1 -turbo_n_1,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-6 -1,3,3 -turbo_n_1,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-7 -1,3,3 -turbo_n_1,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-8 -1,3,3 -turbo_n_1,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-9 -1,2,2 -turbo_n_1,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-10 -1,1,1 -turbo_n_1,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-11 -1,3,3 -turbo_n_1,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-12 -1,1,1 -turbo_n_1,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-13 -1,2,2 -turbo_n_1,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-14 -1,9,9 -turbo_n_1,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-15 -1,3,3 -turbo_n_1,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-16 -1,1,1 -turbo_n_1,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-17 -1,3,3 -turbo_n_1,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-18 -1,2,2 -turbo_n_1,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-19 -1,3,3 -turbo_n_1,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-20 -1,1,1 -turbo_n_1,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-21 -1,3,3 -turbo_n_1,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-22 -1,2,2 -turbo_n_1,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-23 -1,1,1 - -- script Trap#tt_main -1,{ +turbo_e_4,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-1 FAKE_NPC,3,3 +turbo_e_4,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-2 FAKE_NPC,3,3 +turbo_e_4,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-3 FAKE_NPC,1,1 +turbo_e_4,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-4 FAKE_NPC,3,3 +turbo_e_4,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-5 FAKE_NPC,1,1 +turbo_e_4,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-6 FAKE_NPC,3,3 +turbo_e_4,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-7 FAKE_NPC,3,3 +turbo_e_4,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-8 FAKE_NPC,3,3 +turbo_e_4,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-9 FAKE_NPC,2,2 +turbo_e_4,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-10 FAKE_NPC,1,1 +turbo_e_4,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-11 FAKE_NPC,3,3 +turbo_e_4,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-12 FAKE_NPC,1,1 +turbo_e_4,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-13 FAKE_NPC,2,2 +turbo_e_4,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-14 FAKE_NPC,9,9 +turbo_e_4,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-15 FAKE_NPC,3,3 +turbo_e_4,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-16 FAKE_NPC,1,1 +turbo_e_4,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-17 FAKE_NPC,3,3 +turbo_e_4,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-18 FAKE_NPC,2,2 +turbo_e_4,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-19 FAKE_NPC,3,3 +turbo_e_4,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-20 FAKE_NPC,1,1 +turbo_e_4,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-21 FAKE_NPC,3,3 +turbo_e_4,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-22 FAKE_NPC,2,2 +turbo_e_4,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e4-23 FAKE_NPC,1,1 +turbo_e_8,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-1 FAKE_NPC,3,3 +turbo_e_8,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-2 FAKE_NPC,3,3 +turbo_e_8,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-3 FAKE_NPC,1,1 +turbo_e_8,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-4 FAKE_NPC,3,3 +turbo_e_8,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-5 FAKE_NPC,1,1 +turbo_e_8,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-6 FAKE_NPC,3,3 +turbo_e_8,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-7 FAKE_NPC,3,3 +turbo_e_8,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-8 FAKE_NPC,3,3 +turbo_e_8,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-9 FAKE_NPC,2,2 +turbo_e_8,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-10 FAKE_NPC,1,1 +turbo_e_8,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-11 FAKE_NPC,3,3 +turbo_e_8,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-12 FAKE_NPC,1,1 +turbo_e_8,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-13 FAKE_NPC,2,2 +turbo_e_8,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-14 FAKE_NPC,9,9 +turbo_e_8,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-15 FAKE_NPC,3,3 +turbo_e_8,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-16 FAKE_NPC,1,1 +turbo_e_8,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-17 FAKE_NPC,3,3 +turbo_e_8,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-18 FAKE_NPC,2,2 +turbo_e_8,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-19 FAKE_NPC,3,3 +turbo_e_8,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-20 FAKE_NPC,1,1 +turbo_e_8,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-21 FAKE_NPC,3,3 +turbo_e_8,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-22 FAKE_NPC,2,2 +turbo_e_8,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e8-23 FAKE_NPC,1,1 +turbo_e_16,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-1 FAKE_NPC,3,3 +turbo_e_16,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-2 FAKE_NPC,3,3 +turbo_e_16,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-3 FAKE_NPC,1,1 +turbo_e_16,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-4 FAKE_NPC,3,3 +turbo_e_16,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-5 FAKE_NPC,1,1 +turbo_e_16,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-6 FAKE_NPC,3,3 +turbo_e_16,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-7 FAKE_NPC,3,3 +turbo_e_16,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-8 FAKE_NPC,3,3 +turbo_e_16,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-9 FAKE_NPC,2,2 +turbo_e_16,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-10 FAKE_NPC,1,1 +turbo_e_16,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-11 FAKE_NPC,3,3 +turbo_e_16,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-12 FAKE_NPC,1,1 +turbo_e_16,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-13 FAKE_NPC,2,2 +turbo_e_16,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-14 FAKE_NPC,9,9 +turbo_e_16,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-15 FAKE_NPC,3,3 +turbo_e_16,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-16 FAKE_NPC,1,1 +turbo_e_16,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-17 FAKE_NPC,3,3 +turbo_e_16,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-18 FAKE_NPC,2,2 +turbo_e_16,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-19 FAKE_NPC,3,3 +turbo_e_16,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-20 FAKE_NPC,1,1 +turbo_e_16,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-21 FAKE_NPC,3,3 +turbo_e_16,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-22 FAKE_NPC,2,2 +turbo_e_16,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_e16-23 FAKE_NPC,1,1 +turbo_n_4,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-1 FAKE_NPC,3,3 +turbo_n_4,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-2 FAKE_NPC,3,3 +turbo_n_4,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-3 FAKE_NPC,1,1 +turbo_n_4,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-4 FAKE_NPC,3,3 +turbo_n_4,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-5 FAKE_NPC,1,1 +turbo_n_4,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-6 FAKE_NPC,3,3 +turbo_n_4,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-7 FAKE_NPC,3,3 +turbo_n_4,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-8 FAKE_NPC,3,3 +turbo_n_4,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-9 FAKE_NPC,2,2 +turbo_n_4,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-10 FAKE_NPC,1,1 +turbo_n_4,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-11 FAKE_NPC,3,3 +turbo_n_4,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-12 FAKE_NPC,1,1 +turbo_n_4,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-13 FAKE_NPC,2,2 +turbo_n_4,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-14 FAKE_NPC,9,9 +turbo_n_4,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-15 FAKE_NPC,3,3 +turbo_n_4,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-16 FAKE_NPC,1,1 +turbo_n_4,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-17 FAKE_NPC,3,3 +turbo_n_4,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-18 FAKE_NPC,2,2 +turbo_n_4,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-19 FAKE_NPC,3,3 +turbo_n_4,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-20 FAKE_NPC,1,1 +turbo_n_4,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-21 FAKE_NPC,3,3 +turbo_n_4,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-22 FAKE_NPC,2,2 +turbo_n_4,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n4-23 FAKE_NPC,1,1 +turbo_n_8,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-1 FAKE_NPC,3,3 +turbo_n_8,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-2 FAKE_NPC,3,3 +turbo_n_8,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-3 FAKE_NPC,1,1 +turbo_n_8,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-4 FAKE_NPC,3,3 +turbo_n_8,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-5 FAKE_NPC,1,1 +turbo_n_8,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-6 FAKE_NPC,3,3 +turbo_n_8,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-7 FAKE_NPC,3,3 +turbo_n_8,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-8 FAKE_NPC,3,3 +turbo_n_8,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-9 FAKE_NPC,2,2 +turbo_n_8,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-10 FAKE_NPC,1,1 +turbo_n_8,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-11 FAKE_NPC,3,3 +turbo_n_8,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-12 FAKE_NPC,1,1 +turbo_n_8,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-13 FAKE_NPC,2,2 +turbo_n_8,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-14 FAKE_NPC,9,9 +turbo_n_8,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-15 FAKE_NPC,3,3 +turbo_n_8,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-16 FAKE_NPC,1,1 +turbo_n_8,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-17 FAKE_NPC,3,3 +turbo_n_8,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-18 FAKE_NPC,2,2 +turbo_n_8,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-19 FAKE_NPC,3,3 +turbo_n_8,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-20 FAKE_NPC,1,1 +turbo_n_8,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-21 FAKE_NPC,3,3 +turbo_n_8,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-22 FAKE_NPC,2,2 +turbo_n_8,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n8-23 FAKE_NPC,1,1 +turbo_n_16,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-1 FAKE_NPC,3,3 +turbo_n_16,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-2 FAKE_NPC,3,3 +turbo_n_16,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-3 FAKE_NPC,1,1 +turbo_n_16,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-4 FAKE_NPC,3,3 +turbo_n_16,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-5 FAKE_NPC,1,1 +turbo_n_16,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-6 FAKE_NPC,3,3 +turbo_n_16,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-7 FAKE_NPC,3,3 +turbo_n_16,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-8 FAKE_NPC,3,3 +turbo_n_16,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-9 FAKE_NPC,2,2 +turbo_n_16,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-10 FAKE_NPC,1,1 +turbo_n_16,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-11 FAKE_NPC,3,3 +turbo_n_16,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-12 FAKE_NPC,1,1 +turbo_n_16,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-13 FAKE_NPC,2,2 +turbo_n_16,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-14 FAKE_NPC,9,9 +turbo_n_16,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-15 FAKE_NPC,3,3 +turbo_n_16,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-16 FAKE_NPC,1,1 +turbo_n_16,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-17 FAKE_NPC,3,3 +turbo_n_16,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-18 FAKE_NPC,2,2 +turbo_n_16,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-19 FAKE_NPC,3,3 +turbo_n_16,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-20 FAKE_NPC,1,1 +turbo_n_16,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-21 FAKE_NPC,3,3 +turbo_n_16,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-22 FAKE_NPC,2,2 +turbo_n_16,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n16-23 FAKE_NPC,1,1 +turbo_n_1,322,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-1 FAKE_NPC,3,3 +turbo_n_1,323,360,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-2 FAKE_NPC,3,3 +turbo_n_1,324,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-3 FAKE_NPC,1,1 +turbo_n_1,325,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-4 FAKE_NPC,3,3 +turbo_n_1,325,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-5 FAKE_NPC,1,1 +turbo_n_1,329,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-6 FAKE_NPC,3,3 +turbo_n_1,338,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-7 FAKE_NPC,3,3 +turbo_n_1,341,364,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-8 FAKE_NPC,3,3 +turbo_n_1,325,359,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-9 FAKE_NPC,2,2 +turbo_n_1,341,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-10 FAKE_NPC,1,1 +turbo_n_1,350,355,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-11 FAKE_NPC,3,3 +turbo_n_1,348,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-12 FAKE_NPC,1,1 +turbo_n_1,347,370,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-13 FAKE_NPC,2,2 +turbo_n_1,349,377,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-14 FAKE_NPC,9,9 +turbo_n_1,362,372,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-15 FAKE_NPC,3,3 +turbo_n_1,364,365,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-16 FAKE_NPC,1,1 +turbo_n_1,363,357,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-17 FAKE_NPC,3,3 +turbo_n_1,374,358,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-18 FAKE_NPC,2,2 +turbo_n_1,371,367,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-19 FAKE_NPC,3,3 +turbo_n_1,371,376,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-20 FAKE_NPC,1,1 +turbo_n_1,379,375,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-21 FAKE_NPC,3,3 +turbo_n_1,382,363,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-22 FAKE_NPC,2,2 +turbo_n_1,381,354,0 duplicate(SandTrap#tt_main) #TBT_trap_n1-23 FAKE_NPC,1,1 + +- script Trap#tt_main FAKE_NPC,{ OnTouch: if (rand(1,3) == 1) { .@w$ = callfunc("F_tt"); @@ -1258,378 +1258,378 @@ OnTouch: sc_start SC_CONFUSION,4000,0; end; } -turbo_e_4,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e4-24 -1,3,3 -turbo_e_8,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e8-24 -1,3,3 -turbo_e_16,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e16-24 -1,3,3 -turbo_n_4,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n4-24 -1,3,3 -turbo_n_8,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n8-24 -1,3,3 -turbo_n_16,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n16-24 -1,3,3 -turbo_n_1,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n1-24 -1,3,3 - -- script WaterTrap#tt_main -1,{ +turbo_e_4,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e4-24 FAKE_NPC,3,3 +turbo_e_8,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e8-24 FAKE_NPC,3,3 +turbo_e_16,355,362,0 duplicate(Trap#tt_main) #TBT_trap_e16-24 FAKE_NPC,3,3 +turbo_n_4,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n4-24 FAKE_NPC,3,3 +turbo_n_8,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n8-24 FAKE_NPC,3,3 +turbo_n_16,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n16-24 FAKE_NPC,3,3 +turbo_n_1,355,362,0 duplicate(Trap#tt_main) #TBT_trap_n1-24 FAKE_NPC,3,3 + +- script WaterTrap#tt_main FAKE_NPC,{ OnTouch: sc_start SC_BLIND,60000,0; end; } -turbo_e_4,13,266,0 duplicate(WaterTrap#tt_main) flasher#e4-01 -1,0,2 -turbo_e_4,24,268,0 duplicate(WaterTrap#tt_main) flasher#e4-02 -1,1,0 -turbo_e_4,20,258,0 duplicate(WaterTrap#tt_main) flasher#e4-03 -1,1,0 -turbo_e_4,23,251,0 duplicate(WaterTrap#tt_main) flasher#e4-04 -1,0,1 -turbo_e_4,36,270,0 duplicate(WaterTrap#tt_main) flasher#e4-05 -1,1,0 -turbo_e_4,22,239,0 duplicate(WaterTrap#tt_main) flasher#e4-06 -1,1,0 -turbo_e_4,38,239,0 duplicate(WaterTrap#tt_main) flasher#e4-07 -1,0,1 -turbo_e_4,37,237,0 duplicate(WaterTrap#tt_main) flasher#e4-08 -1,1,0 -turbo_e_4,55,247,0 duplicate(WaterTrap#tt_main) flasher#e4-09 -1,0,1 -turbo_e_4,55,246,0 duplicate(WaterTrap#tt_main) flasher#e4-10 -1,1,0 -turbo_e_4,63,253,0 duplicate(WaterTrap#tt_main) flasher#e4-11 -1,0,1 -turbo_e_4,36,216,0 duplicate(WaterTrap#tt_main) flasher#e4-12 -1,1,0 -turbo_e_4,20,209,0 duplicate(WaterTrap#tt_main) flasher#e4-13 -1,1,0 -turbo_e_4,28,195,0 duplicate(WaterTrap#tt_main) flasher#e4-14 -1,1,0 -turbo_e_4,82,264,0 duplicate(WaterTrap#tt_main) flasher#e4-15 -1,1,0 -turbo_e_4,47,185,0 duplicate(WaterTrap#tt_main) flasher#e4-16 -1,0,1 -turbo_e_4,53,207,0 duplicate(WaterTrap#tt_main) flasher#e4-17 -1,1,0 -turbo_e_4,54,208,0 duplicate(WaterTrap#tt_main) flasher#e4-18 -1,0,1 -turbo_e_4,81,247,0 duplicate(WaterTrap#tt_main) flasher#e4-19 -1,0,1 -turbo_e_4,105,257,0 duplicate(WaterTrap#tt_main) flasher#e4-20 -1,0,1 -turbo_e_4,95,242,0 duplicate(WaterTrap#tt_main) flasher#e4-21 -1,0,1 -turbo_e_4,77,232,0 duplicate(WaterTrap#tt_main) flasher#e4-22 -1,2,0 -turbo_e_4,67,222,0 duplicate(WaterTrap#tt_main) flasher#e4-23 -1,2,0 -turbo_e_4,83,206,0 duplicate(WaterTrap#tt_main) flasher#e4-24 -1,0,1 -turbo_e_4,95,224,0 duplicate(WaterTrap#tt_main) flasher#e4-25 -1,0,1 -turbo_e_4,106,220,0 duplicate(WaterTrap#tt_main) flasher#e4-26 -1,2,0 -turbo_e_4,93,191,0 duplicate(WaterTrap#tt_main) flasher#e4-27 -1,1,0 -turbo_e_4,94,192,0 duplicate(WaterTrap#tt_main) flasher#e4-28a -1,0,1 -turbo_e_4,46,214,0 duplicate(WaterTrap#tt_main) flasher#e4-28b -1,0,1 -turbo_e_4,16,247,0 duplicate(WaterTrap#tt_main) flasher#e4-29 -1,1,0 -turbo_e_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#e4-30 -1,1,1 -turbo_e_4,36,253,0 duplicate(WaterTrap#tt_main) flasher#e4-31 -1,1,0 -turbo_e_4,69,238,0 duplicate(WaterTrap#tt_main) flasher#e4-32 -1,1,1 -turbo_e_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#e4-33 -1,1,1 -turbo_e_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#e4-34 -1,2,0 -turbo_e_4,99,207,0 duplicate(WaterTrap#tt_main) flasher#e4-35 -1,1,1 -turbo_e_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#e4-36 -1,2,0 -turbo_e_4,111,188,0 duplicate(WaterTrap#tt_main) flasher#e4-37a -1,1,0 -turbo_e_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#e4-37b -1,1,1 -turbo_e_4,30,232,0 duplicate(WaterTrap#tt_main) flasher#e4-38 -1,1,1 -turbo_e_4,92,256,0 duplicate(WaterTrap#tt_main) flasher#e4-39 -1,1,1 -turbo_e_4,79,220,0 duplicate(WaterTrap#tt_main) flasher#e4-40 -1,1,1 -turbo_e_4,51,192,0 duplicate(WaterTrap#tt_main) flasher#e4-41 -1,1,1 -turbo_e_4,22,227,0 duplicate(WaterTrap#tt_main) flasher#e4-42 -1,1,1 -turbo_e_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#e4-43 -1,1,1 -turbo_e_4,42,258,0 duplicate(WaterTrap#tt_main) flasher#e4-44 -1,1,0 -turbo_e_4,45,271,0 duplicate(WaterTrap#tt_main) flasher#e4-45 -1,2,1 -turbo_e_4,72,207,0 duplicate(WaterTrap#tt_main) flasher#e4-46 -1,1,1 -turbo_e_4,33,192,0 duplicate(WaterTrap#tt_main) flasher#e4-47 -1,0,1 -turbo_e_4,90,241,0 duplicate(WaterTrap#tt_main) flasher#e4-48a -1,1,0 -turbo_e_4,236,3,0 duplicate(WaterTrap#tt_main) flasher#e4-48b -1,3,0 -turbo_e_8,13,266,0 duplicate(WaterTrap#tt_main) flasher#e8-01 -1,0,2 -turbo_e_8,24,268,0 duplicate(WaterTrap#tt_main) flasher#e8-02 -1,1,0 -turbo_e_8,20,258,0 duplicate(WaterTrap#tt_main) flasher#e8-03 -1,1,0 -turbo_e_8,23,251,0 duplicate(WaterTrap#tt_main) flasher#e8-04 -1,0,1 -turbo_e_8,36,270,0 duplicate(WaterTrap#tt_main) flasher#e8-05 -1,1,0 -turbo_e_8,22,239,0 duplicate(WaterTrap#tt_main) flasher#e8-06 -1,1,0 -turbo_e_8,38,239,0 duplicate(WaterTrap#tt_main) flasher#e8-07 -1,0,1 -turbo_e_8,37,237,0 duplicate(WaterTrap#tt_main) flasher#e8-08 -1,1,0 -turbo_e_8,55,247,0 duplicate(WaterTrap#tt_main) flasher#e8-09 -1,0,1 -turbo_e_8,55,246,0 duplicate(WaterTrap#tt_main) flasher#e8-10 -1,1,0 -turbo_e_8,63,253,0 duplicate(WaterTrap#tt_main) flasher#e8-11 -1,0,1 -turbo_e_8,36,216,0 duplicate(WaterTrap#tt_main) flasher#e8-12 -1,1,0 -turbo_e_8,20,209,0 duplicate(WaterTrap#tt_main) flasher#e8-13 -1,1,0 -turbo_e_8,28,195,0 duplicate(WaterTrap#tt_main) flasher#e8-14 -1,1,0 -turbo_e_8,82,264,0 duplicate(WaterTrap#tt_main) flasher#e8-15 -1,1,0 -turbo_e_8,47,185,0 duplicate(WaterTrap#tt_main) flasher#e8-16 -1,0,1 -turbo_e_8,53,207,0 duplicate(WaterTrap#tt_main) flasher#e8-17 -1,1,0 -turbo_e_8,54,208,0 duplicate(WaterTrap#tt_main) flasher#e8-18 -1,0,1 -turbo_e_8,81,247,0 duplicate(WaterTrap#tt_main) flasher#e8-19 -1,0,1 -turbo_e_8,105,257,0 duplicate(WaterTrap#tt_main) flasher#e8-20 -1,0,1 -turbo_e_8,95,242,0 duplicate(WaterTrap#tt_main) flasher#e8-21 -1,0,1 -turbo_e_8,77,232,0 duplicate(WaterTrap#tt_main) flasher#e8-22 -1,2,0 -turbo_e_8,67,222,0 duplicate(WaterTrap#tt_main) flasher#e8-23 -1,2,0 -turbo_e_8,83,206,0 duplicate(WaterTrap#tt_main) flasher#e8-24 -1,0,1 -turbo_e_8,95,224,0 duplicate(WaterTrap#tt_main) flasher#e8-25 -1,0,1 -turbo_e_8,106,220,0 duplicate(WaterTrap#tt_main) flasher#e8-26 -1,2,0 -turbo_e_8,93,191,0 duplicate(WaterTrap#tt_main) flasher#e8-27 -1,1,0 -turbo_e_8,94,192,0 duplicate(WaterTrap#tt_main) flasher#e8-28a -1,0,1 -turbo_e_8,46,214,0 duplicate(WaterTrap#tt_main) flasher#e8-28b -1,0,1 -turbo_e_8,16,247,0 duplicate(WaterTrap#tt_main) flasher#e8-29 -1,1,0 -turbo_e_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#e8-30 -1,1,1 -turbo_e_8,36,253,0 duplicate(WaterTrap#tt_main) flasher#e8-31 -1,1,0 -turbo_e_8,69,238,0 duplicate(WaterTrap#tt_main) flasher#e8-32 -1,1,1 -turbo_e_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#e8-33 -1,1,1 -turbo_e_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#e8-34 -1,2,0 -turbo_e_8,99,207,0 duplicate(WaterTrap#tt_main) flasher#e8-35 -1,1,1 -turbo_e_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#e8-36 -1,2,0 -turbo_e_8,111,188,0 duplicate(WaterTrap#tt_main) flasher#e8-37a -1,1,0 -turbo_e_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#e8-37b -1,1,1 -turbo_e_8,30,232,0 duplicate(WaterTrap#tt_main) flasher#e8-38 -1,1,1 -turbo_e_8,92,256,0 duplicate(WaterTrap#tt_main) flasher#e8-39 -1,1,1 -turbo_e_8,79,220,0 duplicate(WaterTrap#tt_main) flasher#e8-40 -1,1,1 -turbo_e_8,51,192,0 duplicate(WaterTrap#tt_main) flasher#e8-41 -1,1,1 -turbo_e_8,22,227,0 duplicate(WaterTrap#tt_main) flasher#e8-42 -1,1,1 -turbo_e_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#e8-43 -1,1,1 -turbo_e_8,42,258,0 duplicate(WaterTrap#tt_main) flasher#e8-44 -1,1,0 -turbo_e_8,45,271,0 duplicate(WaterTrap#tt_main) flasher#e8-45 -1,2,1 -turbo_e_8,72,207,0 duplicate(WaterTrap#tt_main) flasher#e8-46 -1,1,1 -turbo_e_8,33,192,0 duplicate(WaterTrap#tt_main) flasher#e8-47 -1,0,1 -turbo_e_8,90,241,0 duplicate(WaterTrap#tt_main) flasher#e8-48a -1,1,0 -turbo_e_8,236,3,0 duplicate(WaterTrap#tt_main) flasher#e8-48b -1,3,0 -turbo_e_16,13,266,0 duplicate(WaterTrap#tt_main) flasher#e16-01 -1,0,2 -turbo_e_16,24,268,0 duplicate(WaterTrap#tt_main) flasher#e16-02 -1,1,0 -turbo_e_16,20,258,0 duplicate(WaterTrap#tt_main) flasher#e16-03 -1,1,0 -turbo_e_16,23,251,0 duplicate(WaterTrap#tt_main) flasher#e16-04 -1,0,1 -turbo_e_16,36,270,0 duplicate(WaterTrap#tt_main) flasher#e16-05 -1,1,0 -turbo_e_16,22,239,0 duplicate(WaterTrap#tt_main) flasher#e16-06 -1,1,0 -turbo_e_16,38,239,0 duplicate(WaterTrap#tt_main) flasher#e16-07 -1,0,1 -turbo_e_16,37,237,0 duplicate(WaterTrap#tt_main) flasher#e16-08 -1,1,0 -turbo_e_16,55,247,0 duplicate(WaterTrap#tt_main) flasher#e16-09 -1,0,1 -turbo_e_16,55,246,0 duplicate(WaterTrap#tt_main) flasher#e16-10 -1,1,0 -turbo_e_16,63,253,0 duplicate(WaterTrap#tt_main) flasher#e16-11 -1,0,1 -turbo_e_16,36,216,0 duplicate(WaterTrap#tt_main) flasher#e16-12 -1,1,0 -turbo_e_16,20,209,0 duplicate(WaterTrap#tt_main) flasher#e16-13 -1,1,0 -turbo_e_16,28,195,0 duplicate(WaterTrap#tt_main) flasher#e16-14 -1,1,0 -turbo_e_16,82,264,0 duplicate(WaterTrap#tt_main) flasher#e16-15 -1,1,0 -turbo_e_16,47,185,0 duplicate(WaterTrap#tt_main) flasher#e16-16 -1,0,1 -turbo_e_16,53,207,0 duplicate(WaterTrap#tt_main) flasher#e16-17 -1,1,0 -turbo_e_16,54,208,0 duplicate(WaterTrap#tt_main) flasher#e16-18 -1,0,1 -turbo_e_16,81,247,0 duplicate(WaterTrap#tt_main) flasher#e16-19 -1,0,1 -turbo_e_16,105,257,0 duplicate(WaterTrap#tt_main) flasher#e16-20 -1,0,1 -turbo_e_16,95,242,0 duplicate(WaterTrap#tt_main) flasher#e16-21 -1,0,1 -turbo_e_16,77,232,0 duplicate(WaterTrap#tt_main) flasher#e16-22 -1,2,0 -turbo_e_16,67,222,0 duplicate(WaterTrap#tt_main) flasher#e16-23 -1,2,0 -turbo_e_16,83,206,0 duplicate(WaterTrap#tt_main) flasher#e16-24 -1,0,1 -turbo_e_16,95,224,0 duplicate(WaterTrap#tt_main) flasher#e16-25 -1,0,1 -turbo_e_16,106,220,0 duplicate(WaterTrap#tt_main) flasher#e16-26 -1,2,0 -turbo_e_16,93,191,0 duplicate(WaterTrap#tt_main) flasher#e16-27 -1,1,0 -turbo_e_16,94,192,0 duplicate(WaterTrap#tt_main) flasher#e16-28a -1,0,1 -turbo_e_16,46,214,0 duplicate(WaterTrap#tt_main) flasher#e16-28b -1,0,1 -turbo_e_16,16,247,0 duplicate(WaterTrap#tt_main) flasher#e16-29 -1,1,0 -turbo_e_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#e16-30 -1,1,1 -turbo_e_16,36,253,0 duplicate(WaterTrap#tt_main) flasher#e16-31 -1,1,0 -turbo_e_16,69,238,0 duplicate(WaterTrap#tt_main) flasher#e16-32 -1,1,1 -turbo_e_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#e16-33 -1,1,1 -turbo_e_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#e16-34 -1,2,0 -turbo_e_16,99,207,0 duplicate(WaterTrap#tt_main) flasher#e16-35 -1,1,1 -turbo_e_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#e16-36 -1,2,0 -turbo_e_16,111,188,0 duplicate(WaterTrap#tt_main) flasher#e16-37a -1,1,0 -turbo_e_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#e16-37b -1,1,1 -turbo_e_16,30,232,0 duplicate(WaterTrap#tt_main) flasher#e16-38 -1,1,1 -turbo_e_16,92,256,0 duplicate(WaterTrap#tt_main) flasher#e16-39 -1,1,1 -turbo_e_16,79,220,0 duplicate(WaterTrap#tt_main) flasher#e16-40 -1,1,1 -turbo_e_16,51,192,0 duplicate(WaterTrap#tt_main) flasher#e16-41 -1,1,1 -turbo_e_16,22,227,0 duplicate(WaterTrap#tt_main) flasher#e16-42 -1,1,1 -turbo_e_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#e16-43 -1,1,1 -turbo_e_16,42,258,0 duplicate(WaterTrap#tt_main) flasher#e16-44 -1,1,0 -turbo_e_16,45,271,0 duplicate(WaterTrap#tt_main) flasher#e16-45 -1,2,1 -turbo_e_16,72,207,0 duplicate(WaterTrap#tt_main) flasher#e16-46 -1,1,1 -turbo_e_16,33,192,0 duplicate(WaterTrap#tt_main) flasher#e16-47 -1,0,1 -turbo_e_16,90,241,0 duplicate(WaterTrap#tt_main) flasher#e16-48a -1,1,0 -turbo_e_16,236,3,0 duplicate(WaterTrap#tt_main) flasher#e16-48b -1,3,0 -turbo_n_4,13,266,0 duplicate(WaterTrap#tt_main) flasher#n4-01 -1,0,2 -turbo_n_4,24,268,0 duplicate(WaterTrap#tt_main) flasher#n4-02 -1,1,0 -turbo_n_4,20,258,0 duplicate(WaterTrap#tt_main) flasher#n4-03 -1,1,0 -turbo_n_4,23,251,0 duplicate(WaterTrap#tt_main) flasher#n4-04 -1,0,1 -turbo_n_4,36,270,0 duplicate(WaterTrap#tt_main) flasher#n4-05 -1,1,0 -turbo_n_4,22,239,0 duplicate(WaterTrap#tt_main) flasher#n4-06 -1,1,0 -turbo_n_4,38,239,0 duplicate(WaterTrap#tt_main) flasher#n4-07 -1,0,1 -turbo_n_4,37,237,0 duplicate(WaterTrap#tt_main) flasher#n4-08 -1,1,0 -turbo_n_4,55,247,0 duplicate(WaterTrap#tt_main) flasher#n4-09 -1,0,1 -turbo_n_4,55,246,0 duplicate(WaterTrap#tt_main) flasher#n4-10 -1,1,0 -turbo_n_4,63,253,0 duplicate(WaterTrap#tt_main) flasher#n4-11 -1,0,1 -turbo_n_4,36,216,0 duplicate(WaterTrap#tt_main) flasher#n4-12 -1,1,0 -turbo_n_4,20,209,0 duplicate(WaterTrap#tt_main) flasher#n4-13 -1,1,0 -turbo_n_4,28,195,0 duplicate(WaterTrap#tt_main) flasher#n4-14 -1,1,0 -turbo_n_4,82,264,0 duplicate(WaterTrap#tt_main) flasher#n4-15 -1,1,0 -turbo_n_4,47,185,0 duplicate(WaterTrap#tt_main) flasher#n4-16 -1,0,1 -turbo_n_4,53,207,0 duplicate(WaterTrap#tt_main) flasher#n4-17 -1,1,0 -turbo_n_4,54,208,0 duplicate(WaterTrap#tt_main) flasher#n4-18 -1,0,1 -turbo_n_4,81,247,0 duplicate(WaterTrap#tt_main) flasher#n4-19 -1,0,1 -turbo_n_4,105,257,0 duplicate(WaterTrap#tt_main) flasher#n4-20 -1,0,1 -turbo_n_4,95,242,0 duplicate(WaterTrap#tt_main) flasher#n4-21 -1,0,1 -turbo_n_4,77,232,0 duplicate(WaterTrap#tt_main) flasher#n4-22 -1,2,0 -turbo_n_4,67,222,0 duplicate(WaterTrap#tt_main) flasher#n4-23 -1,2,0 -turbo_n_4,83,206,0 duplicate(WaterTrap#tt_main) flasher#n4-24 -1,0,1 -turbo_n_4,95,224,0 duplicate(WaterTrap#tt_main) flasher#n4-25 -1,0,1 -turbo_n_4,106,220,0 duplicate(WaterTrap#tt_main) flasher#n4-26 -1,2,0 -turbo_n_4,93,191,0 duplicate(WaterTrap#tt_main) flasher#n4-27 -1,1,0 -turbo_n_4,94,192,0 duplicate(WaterTrap#tt_main) flasher#n4-28a -1,0,1 -turbo_n_4,46,214,0 duplicate(WaterTrap#tt_main) flasher#n4-28b -1,0,1 -turbo_n_4,16,247,0 duplicate(WaterTrap#tt_main) flasher#n4-29 -1,1,0 -turbo_n_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#n4-30 -1,1,1 -turbo_n_4,36,253,0 duplicate(WaterTrap#tt_main) flasher#n4-31 -1,1,0 -turbo_n_4,69,238,0 duplicate(WaterTrap#tt_main) flasher#n4-32 -1,1,1 -turbo_n_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#n4-33 -1,1,1 -turbo_n_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#n4-34 -1,2,0 -turbo_n_4,99,207,0 duplicate(WaterTrap#tt_main) flasher#n4-35 -1,1,1 -turbo_n_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#n4-36 -1,2,0 -turbo_n_4,111,188,0 duplicate(WaterTrap#tt_main) flasher#n4-37a -1,1,0 -turbo_n_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#n4-37b -1,1,1 -turbo_n_4,30,232,0 duplicate(WaterTrap#tt_main) flasher#n4-38 -1,1,1 -turbo_n_4,92,256,0 duplicate(WaterTrap#tt_main) flasher#n4-39 -1,1,1 -turbo_n_4,79,220,0 duplicate(WaterTrap#tt_main) flasher#n4-40 -1,1,1 -turbo_n_4,51,192,0 duplicate(WaterTrap#tt_main) flasher#n4-41 -1,1,1 -turbo_n_4,22,227,0 duplicate(WaterTrap#tt_main) flasher#n4-42 -1,1,1 -turbo_n_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#n4-43 -1,1,1 -turbo_n_4,42,258,0 duplicate(WaterTrap#tt_main) flasher#n4-44 -1,1,0 -turbo_n_4,45,271,0 duplicate(WaterTrap#tt_main) flasher#n4-45 -1,2,1 -turbo_n_4,72,207,0 duplicate(WaterTrap#tt_main) flasher#n4-46 -1,1,1 -turbo_n_4,33,192,0 duplicate(WaterTrap#tt_main) flasher#n4-47 -1,0,1 -turbo_n_4,90,241,0 duplicate(WaterTrap#tt_main) flasher#n4-48a -1,1,0 -turbo_n_4,236,3,0 duplicate(WaterTrap#tt_main) flasher#n4-48b -1,3,0 -turbo_n_8,13,266,0 duplicate(WaterTrap#tt_main) flasher#n8-01 -1,0,2 -turbo_n_8,24,268,0 duplicate(WaterTrap#tt_main) flasher#n8-02 -1,1,0 -turbo_n_8,20,258,0 duplicate(WaterTrap#tt_main) flasher#n8-03 -1,1,0 -turbo_n_8,23,251,0 duplicate(WaterTrap#tt_main) flasher#n8-04 -1,0,1 -turbo_n_8,36,270,0 duplicate(WaterTrap#tt_main) flasher#n8-05 -1,1,0 -turbo_n_8,22,239,0 duplicate(WaterTrap#tt_main) flasher#n8-06 -1,1,0 -turbo_n_8,38,239,0 duplicate(WaterTrap#tt_main) flasher#n8-07 -1,0,1 -turbo_n_8,37,237,0 duplicate(WaterTrap#tt_main) flasher#n8-08 -1,1,0 -turbo_n_8,55,247,0 duplicate(WaterTrap#tt_main) flasher#n8-09 -1,0,1 -turbo_n_8,55,246,0 duplicate(WaterTrap#tt_main) flasher#n8-10 -1,1,0 -turbo_n_8,63,253,0 duplicate(WaterTrap#tt_main) flasher#n8-11 -1,0,1 -turbo_n_8,36,216,0 duplicate(WaterTrap#tt_main) flasher#n8-12 -1,1,0 -turbo_n_8,20,209,0 duplicate(WaterTrap#tt_main) flasher#n8-13 -1,1,0 -turbo_n_8,28,195,0 duplicate(WaterTrap#tt_main) flasher#n8-14 -1,1,0 -turbo_n_8,82,264,0 duplicate(WaterTrap#tt_main) flasher#n8-15 -1,1,0 -turbo_n_8,47,185,0 duplicate(WaterTrap#tt_main) flasher#n8-16 -1,0,1 -turbo_n_8,53,207,0 duplicate(WaterTrap#tt_main) flasher#n8-17 -1,1,0 -turbo_n_8,54,208,0 duplicate(WaterTrap#tt_main) flasher#n8-18 -1,0,1 -turbo_n_8,81,247,0 duplicate(WaterTrap#tt_main) flasher#n8-19 -1,0,1 -turbo_n_8,105,257,0 duplicate(WaterTrap#tt_main) flasher#n8-20 -1,0,1 -turbo_n_8,95,242,0 duplicate(WaterTrap#tt_main) flasher#n8-21 -1,0,1 -turbo_n_8,77,232,0 duplicate(WaterTrap#tt_main) flasher#n8-22 -1,2,0 -turbo_n_8,67,222,0 duplicate(WaterTrap#tt_main) flasher#n8-23 -1,2,0 -turbo_n_8,83,206,0 duplicate(WaterTrap#tt_main) flasher#n8-24 -1,0,1 -turbo_n_8,95,224,0 duplicate(WaterTrap#tt_main) flasher#n8-25 -1,0,1 -turbo_n_8,106,220,0 duplicate(WaterTrap#tt_main) flasher#n8-26 -1,2,0 -turbo_n_8,93,191,0 duplicate(WaterTrap#tt_main) flasher#n8-27 -1,1,0 -turbo_n_8,94,192,0 duplicate(WaterTrap#tt_main) flasher#n8-28a -1,0,1 -turbo_n_8,46,214,0 duplicate(WaterTrap#tt_main) flasher#n8-28b -1,0,1 -turbo_n_8,16,247,0 duplicate(WaterTrap#tt_main) flasher#n8-29 -1,1,0 -turbo_n_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#n8-30 -1,1,1 -turbo_n_8,36,253,0 duplicate(WaterTrap#tt_main) flasher#n8-31 -1,1,0 -turbo_n_8,69,238,0 duplicate(WaterTrap#tt_main) flasher#n8-32 -1,1,1 -turbo_n_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#n8-33 -1,1,1 -turbo_n_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#n8-34 -1,2,0 -turbo_n_8,99,207,0 duplicate(WaterTrap#tt_main) flasher#n8-35 -1,1,1 -turbo_n_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#n8-36 -1,2,0 -turbo_n_8,111,188,0 duplicate(WaterTrap#tt_main) flasher#n8-37a -1,1,0 -turbo_n_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#n8-37b -1,1,1 -turbo_n_8,30,232,0 duplicate(WaterTrap#tt_main) flasher#n8-38 -1,1,1 -turbo_n_8,92,256,0 duplicate(WaterTrap#tt_main) flasher#n8-39 -1,1,1 -turbo_n_8,79,220,0 duplicate(WaterTrap#tt_main) flasher#n8-40 -1,1,1 -turbo_n_8,51,192,0 duplicate(WaterTrap#tt_main) flasher#n8-41 -1,1,1 -turbo_n_8,22,227,0 duplicate(WaterTrap#tt_main) flasher#n8-42 -1,1,1 -turbo_n_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#n8-43 -1,1,1 -turbo_n_8,42,258,0 duplicate(WaterTrap#tt_main) flasher#n8-44 -1,1,0 -turbo_n_8,45,271,0 duplicate(WaterTrap#tt_main) flasher#n8-45 -1,2,1 -turbo_n_8,72,207,0 duplicate(WaterTrap#tt_main) flasher#n8-46 -1,1,1 -turbo_n_8,33,192,0 duplicate(WaterTrap#tt_main) flasher#n8-47 -1,0,1 -turbo_n_8,90,241,0 duplicate(WaterTrap#tt_main) flasher#n8-48a -1,1,0 -turbo_n_8,236,3,0 duplicate(WaterTrap#tt_main) flasher#n8-48b -1,3,0 -turbo_n_16,13,266,0 duplicate(WaterTrap#tt_main) flasher#n16-01 -1,0,2 -turbo_n_16,24,268,0 duplicate(WaterTrap#tt_main) flasher#n16-02 -1,1,0 -turbo_n_16,20,258,0 duplicate(WaterTrap#tt_main) flasher#n16-03 -1,1,0 -turbo_n_16,23,251,0 duplicate(WaterTrap#tt_main) flasher#n16-04 -1,0,1 -turbo_n_16,36,270,0 duplicate(WaterTrap#tt_main) flasher#n16-05 -1,1,0 -turbo_n_16,22,239,0 duplicate(WaterTrap#tt_main) flasher#n16-06 -1,1,0 -turbo_n_16,38,239,0 duplicate(WaterTrap#tt_main) flasher#n16-07 -1,0,1 -turbo_n_16,37,237,0 duplicate(WaterTrap#tt_main) flasher#n16-08 -1,1,0 -turbo_n_16,55,247,0 duplicate(WaterTrap#tt_main) flasher#n16-09 -1,0,1 -turbo_n_16,55,246,0 duplicate(WaterTrap#tt_main) flasher#n16-10 -1,1,0 -turbo_n_16,63,253,0 duplicate(WaterTrap#tt_main) flasher#n16-11 -1,0,1 -turbo_n_16,36,216,0 duplicate(WaterTrap#tt_main) flasher#n16-12 -1,1,0 -turbo_n_16,20,209,0 duplicate(WaterTrap#tt_main) flasher#n16-13 -1,1,0 -turbo_n_16,28,195,0 duplicate(WaterTrap#tt_main) flasher#n16-14 -1,1,0 -turbo_n_16,82,264,0 duplicate(WaterTrap#tt_main) flasher#n16-15 -1,1,0 -turbo_n_16,47,185,0 duplicate(WaterTrap#tt_main) flasher#n16-16 -1,0,1 -turbo_n_16,53,207,0 duplicate(WaterTrap#tt_main) flasher#n16-17 -1,1,0 -turbo_n_16,54,208,0 duplicate(WaterTrap#tt_main) flasher#n16-18 -1,0,1 -turbo_n_16,81,247,0 duplicate(WaterTrap#tt_main) flasher#n16-19 -1,0,1 -turbo_n_16,105,257,0 duplicate(WaterTrap#tt_main) flasher#n16-20 -1,0,1 -turbo_n_16,95,242,0 duplicate(WaterTrap#tt_main) flasher#n16-21 -1,0,1 -turbo_n_16,77,232,0 duplicate(WaterTrap#tt_main) flasher#n16-22 -1,2,0 -turbo_n_16,67,222,0 duplicate(WaterTrap#tt_main) flasher#n16-23 -1,2,0 -turbo_n_16,83,206,0 duplicate(WaterTrap#tt_main) flasher#n16-24 -1,0,1 -turbo_n_16,95,224,0 duplicate(WaterTrap#tt_main) flasher#n16-25 -1,0,1 -turbo_n_16,106,220,0 duplicate(WaterTrap#tt_main) flasher#n16-26 -1,2,0 -turbo_n_16,93,191,0 duplicate(WaterTrap#tt_main) flasher#n16-27 -1,1,0 -turbo_n_16,94,192,0 duplicate(WaterTrap#tt_main) flasher#n16-28a -1,0,1 -turbo_n_16,46,214,0 duplicate(WaterTrap#tt_main) flasher#n16-28b -1,0,1 -turbo_n_16,16,247,0 duplicate(WaterTrap#tt_main) flasher#n16-29 -1,1,0 -turbo_n_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#n16-30 -1,1,1 -turbo_n_16,36,253,0 duplicate(WaterTrap#tt_main) flasher#n16-31 -1,1,0 -turbo_n_16,69,238,0 duplicate(WaterTrap#tt_main) flasher#n16-32 -1,1,1 -turbo_n_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#n16-33 -1,1,1 -turbo_n_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#n16-34 -1,2,0 -turbo_n_16,99,207,0 duplicate(WaterTrap#tt_main) flasher#n16-35 -1,1,1 -turbo_n_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#n16-36 -1,2,0 -turbo_n_16,111,188,0 duplicate(WaterTrap#tt_main) flasher#n16-37a -1,1,0 -turbo_n_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#n16-37b -1,1,1 -turbo_n_16,30,232,0 duplicate(WaterTrap#tt_main) flasher#n16-38 -1,1,1 -turbo_n_16,92,256,0 duplicate(WaterTrap#tt_main) flasher#n16-39 -1,1,1 -turbo_n_16,79,220,0 duplicate(WaterTrap#tt_main) flasher#n16-40 -1,1,1 -turbo_n_16,51,192,0 duplicate(WaterTrap#tt_main) flasher#n16-41 -1,1,1 -turbo_n_16,22,227,0 duplicate(WaterTrap#tt_main) flasher#n16-42 -1,1,1 -turbo_n_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#n16-43 -1,1,1 -turbo_n_16,42,258,0 duplicate(WaterTrap#tt_main) flasher#n16-44 -1,1,0 -turbo_n_16,45,271,0 duplicate(WaterTrap#tt_main) flasher#n16-45 -1,2,1 -turbo_n_16,72,207,0 duplicate(WaterTrap#tt_main) flasher#n16-46 -1,1,1 -turbo_n_16,33,192,0 duplicate(WaterTrap#tt_main) flasher#n16-47 -1,0,1 -turbo_n_16,90,241,0 duplicate(WaterTrap#tt_main) flasher#n16-48a -1,1,0 -turbo_n_16,236,3,0 duplicate(WaterTrap#tt_main) flasher#n16-48b -1,3,0 -turbo_n_1,13,266,0 duplicate(WaterTrap#tt_main) flasher#n1-01 -1,0,2 -turbo_n_1,24,268,0 duplicate(WaterTrap#tt_main) flasher#n1-02 -1,1,0 -turbo_n_1,20,258,0 duplicate(WaterTrap#tt_main) flasher#n1-03 -1,1,0 -turbo_n_1,23,251,0 duplicate(WaterTrap#tt_main) flasher#n1-04 -1,0,1 -turbo_n_1,36,270,0 duplicate(WaterTrap#tt_main) flasher#n1-05 -1,1,0 -turbo_n_1,22,239,0 duplicate(WaterTrap#tt_main) flasher#n1-06 -1,1,0 -turbo_n_1,38,239,0 duplicate(WaterTrap#tt_main) flasher#n1-07 -1,0,1 -turbo_n_1,37,237,0 duplicate(WaterTrap#tt_main) flasher#n1-08 -1,1,0 -turbo_n_1,55,247,0 duplicate(WaterTrap#tt_main) flasher#n1-09 -1,0,1 -turbo_n_1,55,246,0 duplicate(WaterTrap#tt_main) flasher#n1-10 -1,1,0 -turbo_n_1,63,253,0 duplicate(WaterTrap#tt_main) flasher#n1-11 -1,0,1 -turbo_n_1,36,216,0 duplicate(WaterTrap#tt_main) flasher#n1-12 -1,1,0 -turbo_n_1,20,209,0 duplicate(WaterTrap#tt_main) flasher#n1-13 -1,1,0 -turbo_n_1,28,195,0 duplicate(WaterTrap#tt_main) flasher#n1-14 -1,1,0 -turbo_n_1,82,264,0 duplicate(WaterTrap#tt_main) flasher#n1-15 -1,1,0 -turbo_n_1,47,185,0 duplicate(WaterTrap#tt_main) flasher#n1-16 -1,0,1 -turbo_n_1,53,207,0 duplicate(WaterTrap#tt_main) flasher#n1-17 -1,1,0 -turbo_n_1,54,208,0 duplicate(WaterTrap#tt_main) flasher#n1-18 -1,0,1 -turbo_n_1,81,247,0 duplicate(WaterTrap#tt_main) flasher#n1-19 -1,0,1 -turbo_n_1,105,257,0 duplicate(WaterTrap#tt_main) flasher#n1-20 -1,0,1 -turbo_n_1,95,242,0 duplicate(WaterTrap#tt_main) flasher#n1-21 -1,0,1 -turbo_n_1,77,232,0 duplicate(WaterTrap#tt_main) flasher#n1-22 -1,2,0 -turbo_n_1,67,222,0 duplicate(WaterTrap#tt_main) flasher#n1-23 -1,2,0 -turbo_n_1,83,206,0 duplicate(WaterTrap#tt_main) flasher#n1-24 -1,0,1 -turbo_n_1,95,224,0 duplicate(WaterTrap#tt_main) flasher#n1-25 -1,0,1 -turbo_n_1,106,220,0 duplicate(WaterTrap#tt_main) flasher#n1-26 -1,2,0 -turbo_n_1,93,191,0 duplicate(WaterTrap#tt_main) flasher#n1-27 -1,1,0 -turbo_n_1,94,192,0 duplicate(WaterTrap#tt_main) flasher#n1-28a -1,0,1 -turbo_n_1,46,214,0 duplicate(WaterTrap#tt_main) flasher#n1-28b -1,0,1 -turbo_n_1,16,247,0 duplicate(WaterTrap#tt_main) flasher#n1-29 -1,1,0 -turbo_n_1,58,268,0 duplicate(WaterTrap#tt_main) flasher#n1-30 -1,1,1 -turbo_n_1,36,253,0 duplicate(WaterTrap#tt_main) flasher#n1-31 -1,1,0 -turbo_n_1,69,238,0 duplicate(WaterTrap#tt_main) flasher#n1-32 -1,1,1 -turbo_n_1,58,268,0 duplicate(WaterTrap#tt_main) flasher#n1-33 -1,1,1 -turbo_n_1,74,188,0 duplicate(WaterTrap#tt_main) flasher#n1-34 -1,2,0 -turbo_n_1,99,207,0 duplicate(WaterTrap#tt_main) flasher#n1-35 -1,1,1 -turbo_n_1,74,188,0 duplicate(WaterTrap#tt_main) flasher#n1-36 -1,2,0 -turbo_n_1,111,188,0 duplicate(WaterTrap#tt_main) flasher#n1-37a -1,1,0 -turbo_n_1,51,232,0 duplicate(WaterTrap#tt_main) flasher#n1-37b -1,1,1 -turbo_n_1,30,232,0 duplicate(WaterTrap#tt_main) flasher#n1-38 -1,1,1 -turbo_n_1,92,256,0 duplicate(WaterTrap#tt_main) flasher#n1-39 -1,1,1 -turbo_n_1,79,220,0 duplicate(WaterTrap#tt_main) flasher#n1-40 -1,1,1 -turbo_n_1,51,192,0 duplicate(WaterTrap#tt_main) flasher#n1-41 -1,1,1 -turbo_n_1,22,227,0 duplicate(WaterTrap#tt_main) flasher#n1-42 -1,1,1 -turbo_n_1,51,232,0 duplicate(WaterTrap#tt_main) flasher#n1-43 -1,1,1 -turbo_n_1,42,258,0 duplicate(WaterTrap#tt_main) flasher#n1-44 -1,1,0 -turbo_n_1,45,271,0 duplicate(WaterTrap#tt_main) flasher#n1-45 -1,2,1 -turbo_n_1,72,207,0 duplicate(WaterTrap#tt_main) flasher#n1-46 -1,1,1 -turbo_n_1,33,192,0 duplicate(WaterTrap#tt_main) flasher#n1-47 -1,0,1 -turbo_n_1,90,241,0 duplicate(WaterTrap#tt_main) flasher#n1-48a -1,1,0 -turbo_n_1,236,3,0 duplicate(WaterTrap#tt_main) flasher#n1-48b -1,3,0 - -- script snake01#tt_main -1,{ +turbo_e_4,13,266,0 duplicate(WaterTrap#tt_main) flasher#e4-01 FAKE_NPC,0,2 +turbo_e_4,24,268,0 duplicate(WaterTrap#tt_main) flasher#e4-02 FAKE_NPC,1,0 +turbo_e_4,20,258,0 duplicate(WaterTrap#tt_main) flasher#e4-03 FAKE_NPC,1,0 +turbo_e_4,23,251,0 duplicate(WaterTrap#tt_main) flasher#e4-04 FAKE_NPC,0,1 +turbo_e_4,36,270,0 duplicate(WaterTrap#tt_main) flasher#e4-05 FAKE_NPC,1,0 +turbo_e_4,22,239,0 duplicate(WaterTrap#tt_main) flasher#e4-06 FAKE_NPC,1,0 +turbo_e_4,38,239,0 duplicate(WaterTrap#tt_main) flasher#e4-07 FAKE_NPC,0,1 +turbo_e_4,37,237,0 duplicate(WaterTrap#tt_main) flasher#e4-08 FAKE_NPC,1,0 +turbo_e_4,55,247,0 duplicate(WaterTrap#tt_main) flasher#e4-09 FAKE_NPC,0,1 +turbo_e_4,55,246,0 duplicate(WaterTrap#tt_main) flasher#e4-10 FAKE_NPC,1,0 +turbo_e_4,63,253,0 duplicate(WaterTrap#tt_main) flasher#e4-11 FAKE_NPC,0,1 +turbo_e_4,36,216,0 duplicate(WaterTrap#tt_main) flasher#e4-12 FAKE_NPC,1,0 +turbo_e_4,20,209,0 duplicate(WaterTrap#tt_main) flasher#e4-13 FAKE_NPC,1,0 +turbo_e_4,28,195,0 duplicate(WaterTrap#tt_main) flasher#e4-14 FAKE_NPC,1,0 +turbo_e_4,82,264,0 duplicate(WaterTrap#tt_main) flasher#e4-15 FAKE_NPC,1,0 +turbo_e_4,47,185,0 duplicate(WaterTrap#tt_main) flasher#e4-16 FAKE_NPC,0,1 +turbo_e_4,53,207,0 duplicate(WaterTrap#tt_main) flasher#e4-17 FAKE_NPC,1,0 +turbo_e_4,54,208,0 duplicate(WaterTrap#tt_main) flasher#e4-18 FAKE_NPC,0,1 +turbo_e_4,81,247,0 duplicate(WaterTrap#tt_main) flasher#e4-19 FAKE_NPC,0,1 +turbo_e_4,105,257,0 duplicate(WaterTrap#tt_main) flasher#e4-20 FAKE_NPC,0,1 +turbo_e_4,95,242,0 duplicate(WaterTrap#tt_main) flasher#e4-21 FAKE_NPC,0,1 +turbo_e_4,77,232,0 duplicate(WaterTrap#tt_main) flasher#e4-22 FAKE_NPC,2,0 +turbo_e_4,67,222,0 duplicate(WaterTrap#tt_main) flasher#e4-23 FAKE_NPC,2,0 +turbo_e_4,83,206,0 duplicate(WaterTrap#tt_main) flasher#e4-24 FAKE_NPC,0,1 +turbo_e_4,95,224,0 duplicate(WaterTrap#tt_main) flasher#e4-25 FAKE_NPC,0,1 +turbo_e_4,106,220,0 duplicate(WaterTrap#tt_main) flasher#e4-26 FAKE_NPC,2,0 +turbo_e_4,93,191,0 duplicate(WaterTrap#tt_main) flasher#e4-27 FAKE_NPC,1,0 +turbo_e_4,94,192,0 duplicate(WaterTrap#tt_main) flasher#e4-28a FAKE_NPC,0,1 +turbo_e_4,46,214,0 duplicate(WaterTrap#tt_main) flasher#e4-28b FAKE_NPC,0,1 +turbo_e_4,16,247,0 duplicate(WaterTrap#tt_main) flasher#e4-29 FAKE_NPC,1,0 +turbo_e_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#e4-30 FAKE_NPC,1,1 +turbo_e_4,36,253,0 duplicate(WaterTrap#tt_main) flasher#e4-31 FAKE_NPC,1,0 +turbo_e_4,69,238,0 duplicate(WaterTrap#tt_main) flasher#e4-32 FAKE_NPC,1,1 +turbo_e_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#e4-33 FAKE_NPC,1,1 +turbo_e_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#e4-34 FAKE_NPC,2,0 +turbo_e_4,99,207,0 duplicate(WaterTrap#tt_main) flasher#e4-35 FAKE_NPC,1,1 +turbo_e_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#e4-36 FAKE_NPC,2,0 +turbo_e_4,111,188,0 duplicate(WaterTrap#tt_main) flasher#e4-37a FAKE_NPC,1,0 +turbo_e_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#e4-37b FAKE_NPC,1,1 +turbo_e_4,30,232,0 duplicate(WaterTrap#tt_main) flasher#e4-38 FAKE_NPC,1,1 +turbo_e_4,92,256,0 duplicate(WaterTrap#tt_main) flasher#e4-39 FAKE_NPC,1,1 +turbo_e_4,79,220,0 duplicate(WaterTrap#tt_main) flasher#e4-40 FAKE_NPC,1,1 +turbo_e_4,51,192,0 duplicate(WaterTrap#tt_main) flasher#e4-41 FAKE_NPC,1,1 +turbo_e_4,22,227,0 duplicate(WaterTrap#tt_main) flasher#e4-42 FAKE_NPC,1,1 +turbo_e_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#e4-43 FAKE_NPC,1,1 +turbo_e_4,42,258,0 duplicate(WaterTrap#tt_main) flasher#e4-44 FAKE_NPC,1,0 +turbo_e_4,45,271,0 duplicate(WaterTrap#tt_main) flasher#e4-45 FAKE_NPC,2,1 +turbo_e_4,72,207,0 duplicate(WaterTrap#tt_main) flasher#e4-46 FAKE_NPC,1,1 +turbo_e_4,33,192,0 duplicate(WaterTrap#tt_main) flasher#e4-47 FAKE_NPC,0,1 +turbo_e_4,90,241,0 duplicate(WaterTrap#tt_main) flasher#e4-48a FAKE_NPC,1,0 +turbo_e_4,236,3,0 duplicate(WaterTrap#tt_main) flasher#e4-48b FAKE_NPC,3,0 +turbo_e_8,13,266,0 duplicate(WaterTrap#tt_main) flasher#e8-01 FAKE_NPC,0,2 +turbo_e_8,24,268,0 duplicate(WaterTrap#tt_main) flasher#e8-02 FAKE_NPC,1,0 +turbo_e_8,20,258,0 duplicate(WaterTrap#tt_main) flasher#e8-03 FAKE_NPC,1,0 +turbo_e_8,23,251,0 duplicate(WaterTrap#tt_main) flasher#e8-04 FAKE_NPC,0,1 +turbo_e_8,36,270,0 duplicate(WaterTrap#tt_main) flasher#e8-05 FAKE_NPC,1,0 +turbo_e_8,22,239,0 duplicate(WaterTrap#tt_main) flasher#e8-06 FAKE_NPC,1,0 +turbo_e_8,38,239,0 duplicate(WaterTrap#tt_main) flasher#e8-07 FAKE_NPC,0,1 +turbo_e_8,37,237,0 duplicate(WaterTrap#tt_main) flasher#e8-08 FAKE_NPC,1,0 +turbo_e_8,55,247,0 duplicate(WaterTrap#tt_main) flasher#e8-09 FAKE_NPC,0,1 +turbo_e_8,55,246,0 duplicate(WaterTrap#tt_main) flasher#e8-10 FAKE_NPC,1,0 +turbo_e_8,63,253,0 duplicate(WaterTrap#tt_main) flasher#e8-11 FAKE_NPC,0,1 +turbo_e_8,36,216,0 duplicate(WaterTrap#tt_main) flasher#e8-12 FAKE_NPC,1,0 +turbo_e_8,20,209,0 duplicate(WaterTrap#tt_main) flasher#e8-13 FAKE_NPC,1,0 +turbo_e_8,28,195,0 duplicate(WaterTrap#tt_main) flasher#e8-14 FAKE_NPC,1,0 +turbo_e_8,82,264,0 duplicate(WaterTrap#tt_main) flasher#e8-15 FAKE_NPC,1,0 +turbo_e_8,47,185,0 duplicate(WaterTrap#tt_main) flasher#e8-16 FAKE_NPC,0,1 +turbo_e_8,53,207,0 duplicate(WaterTrap#tt_main) flasher#e8-17 FAKE_NPC,1,0 +turbo_e_8,54,208,0 duplicate(WaterTrap#tt_main) flasher#e8-18 FAKE_NPC,0,1 +turbo_e_8,81,247,0 duplicate(WaterTrap#tt_main) flasher#e8-19 FAKE_NPC,0,1 +turbo_e_8,105,257,0 duplicate(WaterTrap#tt_main) flasher#e8-20 FAKE_NPC,0,1 +turbo_e_8,95,242,0 duplicate(WaterTrap#tt_main) flasher#e8-21 FAKE_NPC,0,1 +turbo_e_8,77,232,0 duplicate(WaterTrap#tt_main) flasher#e8-22 FAKE_NPC,2,0 +turbo_e_8,67,222,0 duplicate(WaterTrap#tt_main) flasher#e8-23 FAKE_NPC,2,0 +turbo_e_8,83,206,0 duplicate(WaterTrap#tt_main) flasher#e8-24 FAKE_NPC,0,1 +turbo_e_8,95,224,0 duplicate(WaterTrap#tt_main) flasher#e8-25 FAKE_NPC,0,1 +turbo_e_8,106,220,0 duplicate(WaterTrap#tt_main) flasher#e8-26 FAKE_NPC,2,0 +turbo_e_8,93,191,0 duplicate(WaterTrap#tt_main) flasher#e8-27 FAKE_NPC,1,0 +turbo_e_8,94,192,0 duplicate(WaterTrap#tt_main) flasher#e8-28a FAKE_NPC,0,1 +turbo_e_8,46,214,0 duplicate(WaterTrap#tt_main) flasher#e8-28b FAKE_NPC,0,1 +turbo_e_8,16,247,0 duplicate(WaterTrap#tt_main) flasher#e8-29 FAKE_NPC,1,0 +turbo_e_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#e8-30 FAKE_NPC,1,1 +turbo_e_8,36,253,0 duplicate(WaterTrap#tt_main) flasher#e8-31 FAKE_NPC,1,0 +turbo_e_8,69,238,0 duplicate(WaterTrap#tt_main) flasher#e8-32 FAKE_NPC,1,1 +turbo_e_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#e8-33 FAKE_NPC,1,1 +turbo_e_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#e8-34 FAKE_NPC,2,0 +turbo_e_8,99,207,0 duplicate(WaterTrap#tt_main) flasher#e8-35 FAKE_NPC,1,1 +turbo_e_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#e8-36 FAKE_NPC,2,0 +turbo_e_8,111,188,0 duplicate(WaterTrap#tt_main) flasher#e8-37a FAKE_NPC,1,0 +turbo_e_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#e8-37b FAKE_NPC,1,1 +turbo_e_8,30,232,0 duplicate(WaterTrap#tt_main) flasher#e8-38 FAKE_NPC,1,1 +turbo_e_8,92,256,0 duplicate(WaterTrap#tt_main) flasher#e8-39 FAKE_NPC,1,1 +turbo_e_8,79,220,0 duplicate(WaterTrap#tt_main) flasher#e8-40 FAKE_NPC,1,1 +turbo_e_8,51,192,0 duplicate(WaterTrap#tt_main) flasher#e8-41 FAKE_NPC,1,1 +turbo_e_8,22,227,0 duplicate(WaterTrap#tt_main) flasher#e8-42 FAKE_NPC,1,1 +turbo_e_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#e8-43 FAKE_NPC,1,1 +turbo_e_8,42,258,0 duplicate(WaterTrap#tt_main) flasher#e8-44 FAKE_NPC,1,0 +turbo_e_8,45,271,0 duplicate(WaterTrap#tt_main) flasher#e8-45 FAKE_NPC,2,1 +turbo_e_8,72,207,0 duplicate(WaterTrap#tt_main) flasher#e8-46 FAKE_NPC,1,1 +turbo_e_8,33,192,0 duplicate(WaterTrap#tt_main) flasher#e8-47 FAKE_NPC,0,1 +turbo_e_8,90,241,0 duplicate(WaterTrap#tt_main) flasher#e8-48a FAKE_NPC,1,0 +turbo_e_8,236,3,0 duplicate(WaterTrap#tt_main) flasher#e8-48b FAKE_NPC,3,0 +turbo_e_16,13,266,0 duplicate(WaterTrap#tt_main) flasher#e16-01 FAKE_NPC,0,2 +turbo_e_16,24,268,0 duplicate(WaterTrap#tt_main) flasher#e16-02 FAKE_NPC,1,0 +turbo_e_16,20,258,0 duplicate(WaterTrap#tt_main) flasher#e16-03 FAKE_NPC,1,0 +turbo_e_16,23,251,0 duplicate(WaterTrap#tt_main) flasher#e16-04 FAKE_NPC,0,1 +turbo_e_16,36,270,0 duplicate(WaterTrap#tt_main) flasher#e16-05 FAKE_NPC,1,0 +turbo_e_16,22,239,0 duplicate(WaterTrap#tt_main) flasher#e16-06 FAKE_NPC,1,0 +turbo_e_16,38,239,0 duplicate(WaterTrap#tt_main) flasher#e16-07 FAKE_NPC,0,1 +turbo_e_16,37,237,0 duplicate(WaterTrap#tt_main) flasher#e16-08 FAKE_NPC,1,0 +turbo_e_16,55,247,0 duplicate(WaterTrap#tt_main) flasher#e16-09 FAKE_NPC,0,1 +turbo_e_16,55,246,0 duplicate(WaterTrap#tt_main) flasher#e16-10 FAKE_NPC,1,0 +turbo_e_16,63,253,0 duplicate(WaterTrap#tt_main) flasher#e16-11 FAKE_NPC,0,1 +turbo_e_16,36,216,0 duplicate(WaterTrap#tt_main) flasher#e16-12 FAKE_NPC,1,0 +turbo_e_16,20,209,0 duplicate(WaterTrap#tt_main) flasher#e16-13 FAKE_NPC,1,0 +turbo_e_16,28,195,0 duplicate(WaterTrap#tt_main) flasher#e16-14 FAKE_NPC,1,0 +turbo_e_16,82,264,0 duplicate(WaterTrap#tt_main) flasher#e16-15 FAKE_NPC,1,0 +turbo_e_16,47,185,0 duplicate(WaterTrap#tt_main) flasher#e16-16 FAKE_NPC,0,1 +turbo_e_16,53,207,0 duplicate(WaterTrap#tt_main) flasher#e16-17 FAKE_NPC,1,0 +turbo_e_16,54,208,0 duplicate(WaterTrap#tt_main) flasher#e16-18 FAKE_NPC,0,1 +turbo_e_16,81,247,0 duplicate(WaterTrap#tt_main) flasher#e16-19 FAKE_NPC,0,1 +turbo_e_16,105,257,0 duplicate(WaterTrap#tt_main) flasher#e16-20 FAKE_NPC,0,1 +turbo_e_16,95,242,0 duplicate(WaterTrap#tt_main) flasher#e16-21 FAKE_NPC,0,1 +turbo_e_16,77,232,0 duplicate(WaterTrap#tt_main) flasher#e16-22 FAKE_NPC,2,0 +turbo_e_16,67,222,0 duplicate(WaterTrap#tt_main) flasher#e16-23 FAKE_NPC,2,0 +turbo_e_16,83,206,0 duplicate(WaterTrap#tt_main) flasher#e16-24 FAKE_NPC,0,1 +turbo_e_16,95,224,0 duplicate(WaterTrap#tt_main) flasher#e16-25 FAKE_NPC,0,1 +turbo_e_16,106,220,0 duplicate(WaterTrap#tt_main) flasher#e16-26 FAKE_NPC,2,0 +turbo_e_16,93,191,0 duplicate(WaterTrap#tt_main) flasher#e16-27 FAKE_NPC,1,0 +turbo_e_16,94,192,0 duplicate(WaterTrap#tt_main) flasher#e16-28a FAKE_NPC,0,1 +turbo_e_16,46,214,0 duplicate(WaterTrap#tt_main) flasher#e16-28b FAKE_NPC,0,1 +turbo_e_16,16,247,0 duplicate(WaterTrap#tt_main) flasher#e16-29 FAKE_NPC,1,0 +turbo_e_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#e16-30 FAKE_NPC,1,1 +turbo_e_16,36,253,0 duplicate(WaterTrap#tt_main) flasher#e16-31 FAKE_NPC,1,0 +turbo_e_16,69,238,0 duplicate(WaterTrap#tt_main) flasher#e16-32 FAKE_NPC,1,1 +turbo_e_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#e16-33 FAKE_NPC,1,1 +turbo_e_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#e16-34 FAKE_NPC,2,0 +turbo_e_16,99,207,0 duplicate(WaterTrap#tt_main) flasher#e16-35 FAKE_NPC,1,1 +turbo_e_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#e16-36 FAKE_NPC,2,0 +turbo_e_16,111,188,0 duplicate(WaterTrap#tt_main) flasher#e16-37a FAKE_NPC,1,0 +turbo_e_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#e16-37b FAKE_NPC,1,1 +turbo_e_16,30,232,0 duplicate(WaterTrap#tt_main) flasher#e16-38 FAKE_NPC,1,1 +turbo_e_16,92,256,0 duplicate(WaterTrap#tt_main) flasher#e16-39 FAKE_NPC,1,1 +turbo_e_16,79,220,0 duplicate(WaterTrap#tt_main) flasher#e16-40 FAKE_NPC,1,1 +turbo_e_16,51,192,0 duplicate(WaterTrap#tt_main) flasher#e16-41 FAKE_NPC,1,1 +turbo_e_16,22,227,0 duplicate(WaterTrap#tt_main) flasher#e16-42 FAKE_NPC,1,1 +turbo_e_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#e16-43 FAKE_NPC,1,1 +turbo_e_16,42,258,0 duplicate(WaterTrap#tt_main) flasher#e16-44 FAKE_NPC,1,0 +turbo_e_16,45,271,0 duplicate(WaterTrap#tt_main) flasher#e16-45 FAKE_NPC,2,1 +turbo_e_16,72,207,0 duplicate(WaterTrap#tt_main) flasher#e16-46 FAKE_NPC,1,1 +turbo_e_16,33,192,0 duplicate(WaterTrap#tt_main) flasher#e16-47 FAKE_NPC,0,1 +turbo_e_16,90,241,0 duplicate(WaterTrap#tt_main) flasher#e16-48a FAKE_NPC,1,0 +turbo_e_16,236,3,0 duplicate(WaterTrap#tt_main) flasher#e16-48b FAKE_NPC,3,0 +turbo_n_4,13,266,0 duplicate(WaterTrap#tt_main) flasher#n4-01 FAKE_NPC,0,2 +turbo_n_4,24,268,0 duplicate(WaterTrap#tt_main) flasher#n4-02 FAKE_NPC,1,0 +turbo_n_4,20,258,0 duplicate(WaterTrap#tt_main) flasher#n4-03 FAKE_NPC,1,0 +turbo_n_4,23,251,0 duplicate(WaterTrap#tt_main) flasher#n4-04 FAKE_NPC,0,1 +turbo_n_4,36,270,0 duplicate(WaterTrap#tt_main) flasher#n4-05 FAKE_NPC,1,0 +turbo_n_4,22,239,0 duplicate(WaterTrap#tt_main) flasher#n4-06 FAKE_NPC,1,0 +turbo_n_4,38,239,0 duplicate(WaterTrap#tt_main) flasher#n4-07 FAKE_NPC,0,1 +turbo_n_4,37,237,0 duplicate(WaterTrap#tt_main) flasher#n4-08 FAKE_NPC,1,0 +turbo_n_4,55,247,0 duplicate(WaterTrap#tt_main) flasher#n4-09 FAKE_NPC,0,1 +turbo_n_4,55,246,0 duplicate(WaterTrap#tt_main) flasher#n4-10 FAKE_NPC,1,0 +turbo_n_4,63,253,0 duplicate(WaterTrap#tt_main) flasher#n4-11 FAKE_NPC,0,1 +turbo_n_4,36,216,0 duplicate(WaterTrap#tt_main) flasher#n4-12 FAKE_NPC,1,0 +turbo_n_4,20,209,0 duplicate(WaterTrap#tt_main) flasher#n4-13 FAKE_NPC,1,0 +turbo_n_4,28,195,0 duplicate(WaterTrap#tt_main) flasher#n4-14 FAKE_NPC,1,0 +turbo_n_4,82,264,0 duplicate(WaterTrap#tt_main) flasher#n4-15 FAKE_NPC,1,0 +turbo_n_4,47,185,0 duplicate(WaterTrap#tt_main) flasher#n4-16 FAKE_NPC,0,1 +turbo_n_4,53,207,0 duplicate(WaterTrap#tt_main) flasher#n4-17 FAKE_NPC,1,0 +turbo_n_4,54,208,0 duplicate(WaterTrap#tt_main) flasher#n4-18 FAKE_NPC,0,1 +turbo_n_4,81,247,0 duplicate(WaterTrap#tt_main) flasher#n4-19 FAKE_NPC,0,1 +turbo_n_4,105,257,0 duplicate(WaterTrap#tt_main) flasher#n4-20 FAKE_NPC,0,1 +turbo_n_4,95,242,0 duplicate(WaterTrap#tt_main) flasher#n4-21 FAKE_NPC,0,1 +turbo_n_4,77,232,0 duplicate(WaterTrap#tt_main) flasher#n4-22 FAKE_NPC,2,0 +turbo_n_4,67,222,0 duplicate(WaterTrap#tt_main) flasher#n4-23 FAKE_NPC,2,0 +turbo_n_4,83,206,0 duplicate(WaterTrap#tt_main) flasher#n4-24 FAKE_NPC,0,1 +turbo_n_4,95,224,0 duplicate(WaterTrap#tt_main) flasher#n4-25 FAKE_NPC,0,1 +turbo_n_4,106,220,0 duplicate(WaterTrap#tt_main) flasher#n4-26 FAKE_NPC,2,0 +turbo_n_4,93,191,0 duplicate(WaterTrap#tt_main) flasher#n4-27 FAKE_NPC,1,0 +turbo_n_4,94,192,0 duplicate(WaterTrap#tt_main) flasher#n4-28a FAKE_NPC,0,1 +turbo_n_4,46,214,0 duplicate(WaterTrap#tt_main) flasher#n4-28b FAKE_NPC,0,1 +turbo_n_4,16,247,0 duplicate(WaterTrap#tt_main) flasher#n4-29 FAKE_NPC,1,0 +turbo_n_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#n4-30 FAKE_NPC,1,1 +turbo_n_4,36,253,0 duplicate(WaterTrap#tt_main) flasher#n4-31 FAKE_NPC,1,0 +turbo_n_4,69,238,0 duplicate(WaterTrap#tt_main) flasher#n4-32 FAKE_NPC,1,1 +turbo_n_4,58,268,0 duplicate(WaterTrap#tt_main) flasher#n4-33 FAKE_NPC,1,1 +turbo_n_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#n4-34 FAKE_NPC,2,0 +turbo_n_4,99,207,0 duplicate(WaterTrap#tt_main) flasher#n4-35 FAKE_NPC,1,1 +turbo_n_4,74,188,0 duplicate(WaterTrap#tt_main) flasher#n4-36 FAKE_NPC,2,0 +turbo_n_4,111,188,0 duplicate(WaterTrap#tt_main) flasher#n4-37a FAKE_NPC,1,0 +turbo_n_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#n4-37b FAKE_NPC,1,1 +turbo_n_4,30,232,0 duplicate(WaterTrap#tt_main) flasher#n4-38 FAKE_NPC,1,1 +turbo_n_4,92,256,0 duplicate(WaterTrap#tt_main) flasher#n4-39 FAKE_NPC,1,1 +turbo_n_4,79,220,0 duplicate(WaterTrap#tt_main) flasher#n4-40 FAKE_NPC,1,1 +turbo_n_4,51,192,0 duplicate(WaterTrap#tt_main) flasher#n4-41 FAKE_NPC,1,1 +turbo_n_4,22,227,0 duplicate(WaterTrap#tt_main) flasher#n4-42 FAKE_NPC,1,1 +turbo_n_4,51,232,0 duplicate(WaterTrap#tt_main) flasher#n4-43 FAKE_NPC,1,1 +turbo_n_4,42,258,0 duplicate(WaterTrap#tt_main) flasher#n4-44 FAKE_NPC,1,0 +turbo_n_4,45,271,0 duplicate(WaterTrap#tt_main) flasher#n4-45 FAKE_NPC,2,1 +turbo_n_4,72,207,0 duplicate(WaterTrap#tt_main) flasher#n4-46 FAKE_NPC,1,1 +turbo_n_4,33,192,0 duplicate(WaterTrap#tt_main) flasher#n4-47 FAKE_NPC,0,1 +turbo_n_4,90,241,0 duplicate(WaterTrap#tt_main) flasher#n4-48a FAKE_NPC,1,0 +turbo_n_4,236,3,0 duplicate(WaterTrap#tt_main) flasher#n4-48b FAKE_NPC,3,0 +turbo_n_8,13,266,0 duplicate(WaterTrap#tt_main) flasher#n8-01 FAKE_NPC,0,2 +turbo_n_8,24,268,0 duplicate(WaterTrap#tt_main) flasher#n8-02 FAKE_NPC,1,0 +turbo_n_8,20,258,0 duplicate(WaterTrap#tt_main) flasher#n8-03 FAKE_NPC,1,0 +turbo_n_8,23,251,0 duplicate(WaterTrap#tt_main) flasher#n8-04 FAKE_NPC,0,1 +turbo_n_8,36,270,0 duplicate(WaterTrap#tt_main) flasher#n8-05 FAKE_NPC,1,0 +turbo_n_8,22,239,0 duplicate(WaterTrap#tt_main) flasher#n8-06 FAKE_NPC,1,0 +turbo_n_8,38,239,0 duplicate(WaterTrap#tt_main) flasher#n8-07 FAKE_NPC,0,1 +turbo_n_8,37,237,0 duplicate(WaterTrap#tt_main) flasher#n8-08 FAKE_NPC,1,0 +turbo_n_8,55,247,0 duplicate(WaterTrap#tt_main) flasher#n8-09 FAKE_NPC,0,1 +turbo_n_8,55,246,0 duplicate(WaterTrap#tt_main) flasher#n8-10 FAKE_NPC,1,0 +turbo_n_8,63,253,0 duplicate(WaterTrap#tt_main) flasher#n8-11 FAKE_NPC,0,1 +turbo_n_8,36,216,0 duplicate(WaterTrap#tt_main) flasher#n8-12 FAKE_NPC,1,0 +turbo_n_8,20,209,0 duplicate(WaterTrap#tt_main) flasher#n8-13 FAKE_NPC,1,0 +turbo_n_8,28,195,0 duplicate(WaterTrap#tt_main) flasher#n8-14 FAKE_NPC,1,0 +turbo_n_8,82,264,0 duplicate(WaterTrap#tt_main) flasher#n8-15 FAKE_NPC,1,0 +turbo_n_8,47,185,0 duplicate(WaterTrap#tt_main) flasher#n8-16 FAKE_NPC,0,1 +turbo_n_8,53,207,0 duplicate(WaterTrap#tt_main) flasher#n8-17 FAKE_NPC,1,0 +turbo_n_8,54,208,0 duplicate(WaterTrap#tt_main) flasher#n8-18 FAKE_NPC,0,1 +turbo_n_8,81,247,0 duplicate(WaterTrap#tt_main) flasher#n8-19 FAKE_NPC,0,1 +turbo_n_8,105,257,0 duplicate(WaterTrap#tt_main) flasher#n8-20 FAKE_NPC,0,1 +turbo_n_8,95,242,0 duplicate(WaterTrap#tt_main) flasher#n8-21 FAKE_NPC,0,1 +turbo_n_8,77,232,0 duplicate(WaterTrap#tt_main) flasher#n8-22 FAKE_NPC,2,0 +turbo_n_8,67,222,0 duplicate(WaterTrap#tt_main) flasher#n8-23 FAKE_NPC,2,0 +turbo_n_8,83,206,0 duplicate(WaterTrap#tt_main) flasher#n8-24 FAKE_NPC,0,1 +turbo_n_8,95,224,0 duplicate(WaterTrap#tt_main) flasher#n8-25 FAKE_NPC,0,1 +turbo_n_8,106,220,0 duplicate(WaterTrap#tt_main) flasher#n8-26 FAKE_NPC,2,0 +turbo_n_8,93,191,0 duplicate(WaterTrap#tt_main) flasher#n8-27 FAKE_NPC,1,0 +turbo_n_8,94,192,0 duplicate(WaterTrap#tt_main) flasher#n8-28a FAKE_NPC,0,1 +turbo_n_8,46,214,0 duplicate(WaterTrap#tt_main) flasher#n8-28b FAKE_NPC,0,1 +turbo_n_8,16,247,0 duplicate(WaterTrap#tt_main) flasher#n8-29 FAKE_NPC,1,0 +turbo_n_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#n8-30 FAKE_NPC,1,1 +turbo_n_8,36,253,0 duplicate(WaterTrap#tt_main) flasher#n8-31 FAKE_NPC,1,0 +turbo_n_8,69,238,0 duplicate(WaterTrap#tt_main) flasher#n8-32 FAKE_NPC,1,1 +turbo_n_8,58,268,0 duplicate(WaterTrap#tt_main) flasher#n8-33 FAKE_NPC,1,1 +turbo_n_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#n8-34 FAKE_NPC,2,0 +turbo_n_8,99,207,0 duplicate(WaterTrap#tt_main) flasher#n8-35 FAKE_NPC,1,1 +turbo_n_8,74,188,0 duplicate(WaterTrap#tt_main) flasher#n8-36 FAKE_NPC,2,0 +turbo_n_8,111,188,0 duplicate(WaterTrap#tt_main) flasher#n8-37a FAKE_NPC,1,0 +turbo_n_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#n8-37b FAKE_NPC,1,1 +turbo_n_8,30,232,0 duplicate(WaterTrap#tt_main) flasher#n8-38 FAKE_NPC,1,1 +turbo_n_8,92,256,0 duplicate(WaterTrap#tt_main) flasher#n8-39 FAKE_NPC,1,1 +turbo_n_8,79,220,0 duplicate(WaterTrap#tt_main) flasher#n8-40 FAKE_NPC,1,1 +turbo_n_8,51,192,0 duplicate(WaterTrap#tt_main) flasher#n8-41 FAKE_NPC,1,1 +turbo_n_8,22,227,0 duplicate(WaterTrap#tt_main) flasher#n8-42 FAKE_NPC,1,1 +turbo_n_8,51,232,0 duplicate(WaterTrap#tt_main) flasher#n8-43 FAKE_NPC,1,1 +turbo_n_8,42,258,0 duplicate(WaterTrap#tt_main) flasher#n8-44 FAKE_NPC,1,0 +turbo_n_8,45,271,0 duplicate(WaterTrap#tt_main) flasher#n8-45 FAKE_NPC,2,1 +turbo_n_8,72,207,0 duplicate(WaterTrap#tt_main) flasher#n8-46 FAKE_NPC,1,1 +turbo_n_8,33,192,0 duplicate(WaterTrap#tt_main) flasher#n8-47 FAKE_NPC,0,1 +turbo_n_8,90,241,0 duplicate(WaterTrap#tt_main) flasher#n8-48a FAKE_NPC,1,0 +turbo_n_8,236,3,0 duplicate(WaterTrap#tt_main) flasher#n8-48b FAKE_NPC,3,0 +turbo_n_16,13,266,0 duplicate(WaterTrap#tt_main) flasher#n16-01 FAKE_NPC,0,2 +turbo_n_16,24,268,0 duplicate(WaterTrap#tt_main) flasher#n16-02 FAKE_NPC,1,0 +turbo_n_16,20,258,0 duplicate(WaterTrap#tt_main) flasher#n16-03 FAKE_NPC,1,0 +turbo_n_16,23,251,0 duplicate(WaterTrap#tt_main) flasher#n16-04 FAKE_NPC,0,1 +turbo_n_16,36,270,0 duplicate(WaterTrap#tt_main) flasher#n16-05 FAKE_NPC,1,0 +turbo_n_16,22,239,0 duplicate(WaterTrap#tt_main) flasher#n16-06 FAKE_NPC,1,0 +turbo_n_16,38,239,0 duplicate(WaterTrap#tt_main) flasher#n16-07 FAKE_NPC,0,1 +turbo_n_16,37,237,0 duplicate(WaterTrap#tt_main) flasher#n16-08 FAKE_NPC,1,0 +turbo_n_16,55,247,0 duplicate(WaterTrap#tt_main) flasher#n16-09 FAKE_NPC,0,1 +turbo_n_16,55,246,0 duplicate(WaterTrap#tt_main) flasher#n16-10 FAKE_NPC,1,0 +turbo_n_16,63,253,0 duplicate(WaterTrap#tt_main) flasher#n16-11 FAKE_NPC,0,1 +turbo_n_16,36,216,0 duplicate(WaterTrap#tt_main) flasher#n16-12 FAKE_NPC,1,0 +turbo_n_16,20,209,0 duplicate(WaterTrap#tt_main) flasher#n16-13 FAKE_NPC,1,0 +turbo_n_16,28,195,0 duplicate(WaterTrap#tt_main) flasher#n16-14 FAKE_NPC,1,0 +turbo_n_16,82,264,0 duplicate(WaterTrap#tt_main) flasher#n16-15 FAKE_NPC,1,0 +turbo_n_16,47,185,0 duplicate(WaterTrap#tt_main) flasher#n16-16 FAKE_NPC,0,1 +turbo_n_16,53,207,0 duplicate(WaterTrap#tt_main) flasher#n16-17 FAKE_NPC,1,0 +turbo_n_16,54,208,0 duplicate(WaterTrap#tt_main) flasher#n16-18 FAKE_NPC,0,1 +turbo_n_16,81,247,0 duplicate(WaterTrap#tt_main) flasher#n16-19 FAKE_NPC,0,1 +turbo_n_16,105,257,0 duplicate(WaterTrap#tt_main) flasher#n16-20 FAKE_NPC,0,1 +turbo_n_16,95,242,0 duplicate(WaterTrap#tt_main) flasher#n16-21 FAKE_NPC,0,1 +turbo_n_16,77,232,0 duplicate(WaterTrap#tt_main) flasher#n16-22 FAKE_NPC,2,0 +turbo_n_16,67,222,0 duplicate(WaterTrap#tt_main) flasher#n16-23 FAKE_NPC,2,0 +turbo_n_16,83,206,0 duplicate(WaterTrap#tt_main) flasher#n16-24 FAKE_NPC,0,1 +turbo_n_16,95,224,0 duplicate(WaterTrap#tt_main) flasher#n16-25 FAKE_NPC,0,1 +turbo_n_16,106,220,0 duplicate(WaterTrap#tt_main) flasher#n16-26 FAKE_NPC,2,0 +turbo_n_16,93,191,0 duplicate(WaterTrap#tt_main) flasher#n16-27 FAKE_NPC,1,0 +turbo_n_16,94,192,0 duplicate(WaterTrap#tt_main) flasher#n16-28a FAKE_NPC,0,1 +turbo_n_16,46,214,0 duplicate(WaterTrap#tt_main) flasher#n16-28b FAKE_NPC,0,1 +turbo_n_16,16,247,0 duplicate(WaterTrap#tt_main) flasher#n16-29 FAKE_NPC,1,0 +turbo_n_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#n16-30 FAKE_NPC,1,1 +turbo_n_16,36,253,0 duplicate(WaterTrap#tt_main) flasher#n16-31 FAKE_NPC,1,0 +turbo_n_16,69,238,0 duplicate(WaterTrap#tt_main) flasher#n16-32 FAKE_NPC,1,1 +turbo_n_16,58,268,0 duplicate(WaterTrap#tt_main) flasher#n16-33 FAKE_NPC,1,1 +turbo_n_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#n16-34 FAKE_NPC,2,0 +turbo_n_16,99,207,0 duplicate(WaterTrap#tt_main) flasher#n16-35 FAKE_NPC,1,1 +turbo_n_16,74,188,0 duplicate(WaterTrap#tt_main) flasher#n16-36 FAKE_NPC,2,0 +turbo_n_16,111,188,0 duplicate(WaterTrap#tt_main) flasher#n16-37a FAKE_NPC,1,0 +turbo_n_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#n16-37b FAKE_NPC,1,1 +turbo_n_16,30,232,0 duplicate(WaterTrap#tt_main) flasher#n16-38 FAKE_NPC,1,1 +turbo_n_16,92,256,0 duplicate(WaterTrap#tt_main) flasher#n16-39 FAKE_NPC,1,1 +turbo_n_16,79,220,0 duplicate(WaterTrap#tt_main) flasher#n16-40 FAKE_NPC,1,1 +turbo_n_16,51,192,0 duplicate(WaterTrap#tt_main) flasher#n16-41 FAKE_NPC,1,1 +turbo_n_16,22,227,0 duplicate(WaterTrap#tt_main) flasher#n16-42 FAKE_NPC,1,1 +turbo_n_16,51,232,0 duplicate(WaterTrap#tt_main) flasher#n16-43 FAKE_NPC,1,1 +turbo_n_16,42,258,0 duplicate(WaterTrap#tt_main) flasher#n16-44 FAKE_NPC,1,0 +turbo_n_16,45,271,0 duplicate(WaterTrap#tt_main) flasher#n16-45 FAKE_NPC,2,1 +turbo_n_16,72,207,0 duplicate(WaterTrap#tt_main) flasher#n16-46 FAKE_NPC,1,1 +turbo_n_16,33,192,0 duplicate(WaterTrap#tt_main) flasher#n16-47 FAKE_NPC,0,1 +turbo_n_16,90,241,0 duplicate(WaterTrap#tt_main) flasher#n16-48a FAKE_NPC,1,0 +turbo_n_16,236,3,0 duplicate(WaterTrap#tt_main) flasher#n16-48b FAKE_NPC,3,0 +turbo_n_1,13,266,0 duplicate(WaterTrap#tt_main) flasher#n1-01 FAKE_NPC,0,2 +turbo_n_1,24,268,0 duplicate(WaterTrap#tt_main) flasher#n1-02 FAKE_NPC,1,0 +turbo_n_1,20,258,0 duplicate(WaterTrap#tt_main) flasher#n1-03 FAKE_NPC,1,0 +turbo_n_1,23,251,0 duplicate(WaterTrap#tt_main) flasher#n1-04 FAKE_NPC,0,1 +turbo_n_1,36,270,0 duplicate(WaterTrap#tt_main) flasher#n1-05 FAKE_NPC,1,0 +turbo_n_1,22,239,0 duplicate(WaterTrap#tt_main) flasher#n1-06 FAKE_NPC,1,0 +turbo_n_1,38,239,0 duplicate(WaterTrap#tt_main) flasher#n1-07 FAKE_NPC,0,1 +turbo_n_1,37,237,0 duplicate(WaterTrap#tt_main) flasher#n1-08 FAKE_NPC,1,0 +turbo_n_1,55,247,0 duplicate(WaterTrap#tt_main) flasher#n1-09 FAKE_NPC,0,1 +turbo_n_1,55,246,0 duplicate(WaterTrap#tt_main) flasher#n1-10 FAKE_NPC,1,0 +turbo_n_1,63,253,0 duplicate(WaterTrap#tt_main) flasher#n1-11 FAKE_NPC,0,1 +turbo_n_1,36,216,0 duplicate(WaterTrap#tt_main) flasher#n1-12 FAKE_NPC,1,0 +turbo_n_1,20,209,0 duplicate(WaterTrap#tt_main) flasher#n1-13 FAKE_NPC,1,0 +turbo_n_1,28,195,0 duplicate(WaterTrap#tt_main) flasher#n1-14 FAKE_NPC,1,0 +turbo_n_1,82,264,0 duplicate(WaterTrap#tt_main) flasher#n1-15 FAKE_NPC,1,0 +turbo_n_1,47,185,0 duplicate(WaterTrap#tt_main) flasher#n1-16 FAKE_NPC,0,1 +turbo_n_1,53,207,0 duplicate(WaterTrap#tt_main) flasher#n1-17 FAKE_NPC,1,0 +turbo_n_1,54,208,0 duplicate(WaterTrap#tt_main) flasher#n1-18 FAKE_NPC,0,1 +turbo_n_1,81,247,0 duplicate(WaterTrap#tt_main) flasher#n1-19 FAKE_NPC,0,1 +turbo_n_1,105,257,0 duplicate(WaterTrap#tt_main) flasher#n1-20 FAKE_NPC,0,1 +turbo_n_1,95,242,0 duplicate(WaterTrap#tt_main) flasher#n1-21 FAKE_NPC,0,1 +turbo_n_1,77,232,0 duplicate(WaterTrap#tt_main) flasher#n1-22 FAKE_NPC,2,0 +turbo_n_1,67,222,0 duplicate(WaterTrap#tt_main) flasher#n1-23 FAKE_NPC,2,0 +turbo_n_1,83,206,0 duplicate(WaterTrap#tt_main) flasher#n1-24 FAKE_NPC,0,1 +turbo_n_1,95,224,0 duplicate(WaterTrap#tt_main) flasher#n1-25 FAKE_NPC,0,1 +turbo_n_1,106,220,0 duplicate(WaterTrap#tt_main) flasher#n1-26 FAKE_NPC,2,0 +turbo_n_1,93,191,0 duplicate(WaterTrap#tt_main) flasher#n1-27 FAKE_NPC,1,0 +turbo_n_1,94,192,0 duplicate(WaterTrap#tt_main) flasher#n1-28a FAKE_NPC,0,1 +turbo_n_1,46,214,0 duplicate(WaterTrap#tt_main) flasher#n1-28b FAKE_NPC,0,1 +turbo_n_1,16,247,0 duplicate(WaterTrap#tt_main) flasher#n1-29 FAKE_NPC,1,0 +turbo_n_1,58,268,0 duplicate(WaterTrap#tt_main) flasher#n1-30 FAKE_NPC,1,1 +turbo_n_1,36,253,0 duplicate(WaterTrap#tt_main) flasher#n1-31 FAKE_NPC,1,0 +turbo_n_1,69,238,0 duplicate(WaterTrap#tt_main) flasher#n1-32 FAKE_NPC,1,1 +turbo_n_1,58,268,0 duplicate(WaterTrap#tt_main) flasher#n1-33 FAKE_NPC,1,1 +turbo_n_1,74,188,0 duplicate(WaterTrap#tt_main) flasher#n1-34 FAKE_NPC,2,0 +turbo_n_1,99,207,0 duplicate(WaterTrap#tt_main) flasher#n1-35 FAKE_NPC,1,1 +turbo_n_1,74,188,0 duplicate(WaterTrap#tt_main) flasher#n1-36 FAKE_NPC,2,0 +turbo_n_1,111,188,0 duplicate(WaterTrap#tt_main) flasher#n1-37a FAKE_NPC,1,0 +turbo_n_1,51,232,0 duplicate(WaterTrap#tt_main) flasher#n1-37b FAKE_NPC,1,1 +turbo_n_1,30,232,0 duplicate(WaterTrap#tt_main) flasher#n1-38 FAKE_NPC,1,1 +turbo_n_1,92,256,0 duplicate(WaterTrap#tt_main) flasher#n1-39 FAKE_NPC,1,1 +turbo_n_1,79,220,0 duplicate(WaterTrap#tt_main) flasher#n1-40 FAKE_NPC,1,1 +turbo_n_1,51,192,0 duplicate(WaterTrap#tt_main) flasher#n1-41 FAKE_NPC,1,1 +turbo_n_1,22,227,0 duplicate(WaterTrap#tt_main) flasher#n1-42 FAKE_NPC,1,1 +turbo_n_1,51,232,0 duplicate(WaterTrap#tt_main) flasher#n1-43 FAKE_NPC,1,1 +turbo_n_1,42,258,0 duplicate(WaterTrap#tt_main) flasher#n1-44 FAKE_NPC,1,0 +turbo_n_1,45,271,0 duplicate(WaterTrap#tt_main) flasher#n1-45 FAKE_NPC,2,1 +turbo_n_1,72,207,0 duplicate(WaterTrap#tt_main) flasher#n1-46 FAKE_NPC,1,1 +turbo_n_1,33,192,0 duplicate(WaterTrap#tt_main) flasher#n1-47 FAKE_NPC,0,1 +turbo_n_1,90,241,0 duplicate(WaterTrap#tt_main) flasher#n1-48a FAKE_NPC,1,0 +turbo_n_1,236,3,0 duplicate(WaterTrap#tt_main) flasher#n1-48b FAKE_NPC,3,0 + +- script snake01#tt_main FAKE_NPC,{ OnTouch: .@turbo2 = rand(1,7); if (.@turbo2 < 3) warp strnpcinfo(4),370,292; @@ -1646,7 +1646,7 @@ turbo_n_8,324,279,0 duplicate(snake01#tt_main) snake01#n8 WARPNPC,1,1 turbo_n_16,324,279,0 duplicate(snake01#tt_main) snake01#n16 WARPNPC,1,1 turbo_n_1,324,279,0 duplicate(snake01#tt_main) snake01#n1 WARPNPC,1,1 -- script snake02#tt_main -1,{ +- script snake02#tt_main FAKE_NPC,{ OnTouch: .@turbo2 = rand(1,8); if (.@turbo2 < 3) warp strnpcinfo(4),287,256; @@ -1697,7 +1697,7 @@ turbo_n_8,332,270,0 duplicate(snake04#tt_main) snake04#n8 WARPNPC,1,1 turbo_n_16,332,270,0 duplicate(snake04#tt_main) snake04#n16 WARPNPC,1,1 turbo_n_1,332,270,0 duplicate(snake04#tt_main) snake04#n1 WARPNPC,1,1 -- script SnakeHunt#tt_main -1,{ +- script SnakeHunt#tt_main FAKE_NPC,{ end; OnReset: @@ -1736,7 +1736,7 @@ turbo_e_16,90,46,0 duplicate(SnakeHunt#tt_main) hunting#e16 HIDDEN_NPC turbo_n_4,90,46,0 duplicate(SnakeHunt#tt_main) hunting#n4 HIDDEN_NPC turbo_n_1,90,46,0 duplicate(SnakeHunt#tt_main) hunting#n1 HIDDEN_NPC -- script cos#tt_main -1,{ +- script cos#tt_main FAKE_NPC,{ OnTouch: .@n = charat(strnpcinfo(2),getstrlen(strnpcinfo(2))-1); switch (.@n) { @@ -1822,123 +1822,123 @@ turbo_n_1,389,275,0 duplicate(cos#tt_main) #cos_n1_6 WARPNPC,1,1 turbo_n_1,93,19,0 duplicate(cos#tt_main) #cos_n1_7 WARPNPC,1,1 turbo_n_1,232,14,0 duplicate(cos#tt_main) #cos_n1_8 WARPNPC,1,1 -turbo_e_16,179,55,0 script TurboHint_1#tt_main -1,1,1,{ +turbo_e_16,179,55,0 script TurboHint_1#tt_main FAKE_NPC,1,1,{ OnTouch: emotion e_what,1; end; } -turbo_e_16,179,55,0 duplicate(TurboHint_1#tt_main) #e16Intersectiona -1,1,1 -turbo_e_16,184,45,0 duplicate(TurboHint_1#tt_main) #e16Intersectionb -1,1,1 -turbo_e_16,181,30,0 duplicate(TurboHint_1#tt_main) #e16Intersectionc -1,1,1 -turbo_e_16,186,28,0 duplicate(TurboHint_1#tt_main) #e16Intersectiond -1,1,1 -turbo_e_16,183,19,0 duplicate(TurboHint_1#tt_main) #e16Intersectione -1,1,1 -turbo_e_16,191,37,0 duplicate(TurboHint_1#tt_main) #e16Intersectionf -1,1,1 -turbo_e_16,173,25,0 duplicate(TurboHint_1#tt_main) #e16Intersectiong -1,1,1 -turbo_e_16,201,21,0 duplicate(TurboHint_1#tt_main) #e16Intersectionh -1,1,1 -turbo_e_16,222,21,0 duplicate(TurboHint_1#tt_main) #e16Intersectioni -1,1,1 -turbo_e_16,214,39,0 duplicate(TurboHint_1#tt_main) #e16Intersectionj -1,1,1 -turbo_e_16,222,48,0 duplicate(TurboHint_1#tt_main) #e16Intersectionk -1,1,1 -turbo_e_16,214,60,0 duplicate(TurboHint_1#tt_main) #e16Intersectionl -1,1,1 -turbo_e_16,209,61,0 duplicate(TurboHint_1#tt_main) #e16Intersectionm -1,1,1 -turbo_e_16,208,56,0 duplicate(TurboHint_1#tt_main) #e16Intersectionn -1,1,1 -turbo_n_16,179,55,0 duplicate(TurboHint_1#tt_main) #n16Intersectiona -1,1,1 -turbo_n_16,184,45,0 duplicate(TurboHint_1#tt_main) #n16Intersectionb -1,1,1 -turbo_n_16,181,30,0 duplicate(TurboHint_1#tt_main) #n16Intersectionc -1,1,1 -turbo_n_16,186,28,0 duplicate(TurboHint_1#tt_main) #n16Intersectiond -1,1,1 -turbo_n_16,183,19,0 duplicate(TurboHint_1#tt_main) #n16Intersectione -1,1,1 -turbo_n_16,191,37,0 duplicate(TurboHint_1#tt_main) #n16Intersectionf -1,1,1 -turbo_n_16,173,25,0 duplicate(TurboHint_1#tt_main) #n16Intersectiong -1,1,1 -turbo_n_16,201,21,0 duplicate(TurboHint_1#tt_main) #n16Intersectionh -1,1,1 -turbo_n_16,222,21,0 duplicate(TurboHint_1#tt_main) #n16Intersectioni -1,1,1 -turbo_n_16,214,39,0 duplicate(TurboHint_1#tt_main) #n16Intersectionj -1,1,1 -turbo_n_16,222,48,0 duplicate(TurboHint_1#tt_main) #n16Intersectionk -1,1,1 -turbo_n_16,214,60,0 duplicate(TurboHint_1#tt_main) #n16Intersectionl -1,1,1 -turbo_n_16,209,61,0 duplicate(TurboHint_1#tt_main) #n16Intersectionm -1,1,1 -turbo_n_16,208,56,0 duplicate(TurboHint_1#tt_main) #n16Intersectionn -1,1,1 -turbo_n_1,179,55,0 duplicate(TurboHint_1#tt_main) #n1Intersectiona -1,1,1 -turbo_n_1,184,45,0 duplicate(TurboHint_1#tt_main) #n1Intersectionb -1,1,1 -turbo_n_1,181,30,0 duplicate(TurboHint_1#tt_main) #n1Intersectionc -1,1,1 -turbo_n_1,186,28,0 duplicate(TurboHint_1#tt_main) #n1Intersectiond -1,1,1 -turbo_n_1,183,19,0 duplicate(TurboHint_1#tt_main) #n1Intersectione -1,1,1 -turbo_n_1,191,37,0 duplicate(TurboHint_1#tt_main) #n1Intersectionf -1,1,1 -turbo_n_1,173,25,0 duplicate(TurboHint_1#tt_main) #n1Intersectiong -1,1,1 -turbo_n_1,201,21,0 duplicate(TurboHint_1#tt_main) #n1Intersectionh -1,1,1 -turbo_n_1,222,21,0 duplicate(TurboHint_1#tt_main) #n1Intersectioni -1,1,1 -turbo_n_1,214,39,0 duplicate(TurboHint_1#tt_main) #n1Intersectionj -1,1,1 -turbo_n_1,222,48,0 duplicate(TurboHint_1#tt_main) #n1Intersectionk -1,1,1 -turbo_n_1,214,60,0 duplicate(TurboHint_1#tt_main) #n1Intersectionl -1,1,1 -turbo_n_1,209,61,0 duplicate(TurboHint_1#tt_main) #n1Intersectionm -1,1,1 -turbo_n_1,208,56,0 duplicate(TurboHint_1#tt_main) #n1Intersectionn -1,1,1 - -- script TurboHint_2#tt_main -1,{ +turbo_e_16,179,55,0 duplicate(TurboHint_1#tt_main) #e16Intersectiona FAKE_NPC,1,1 +turbo_e_16,184,45,0 duplicate(TurboHint_1#tt_main) #e16Intersectionb FAKE_NPC,1,1 +turbo_e_16,181,30,0 duplicate(TurboHint_1#tt_main) #e16Intersectionc FAKE_NPC,1,1 +turbo_e_16,186,28,0 duplicate(TurboHint_1#tt_main) #e16Intersectiond FAKE_NPC,1,1 +turbo_e_16,183,19,0 duplicate(TurboHint_1#tt_main) #e16Intersectione FAKE_NPC,1,1 +turbo_e_16,191,37,0 duplicate(TurboHint_1#tt_main) #e16Intersectionf FAKE_NPC,1,1 +turbo_e_16,173,25,0 duplicate(TurboHint_1#tt_main) #e16Intersectiong FAKE_NPC,1,1 +turbo_e_16,201,21,0 duplicate(TurboHint_1#tt_main) #e16Intersectionh FAKE_NPC,1,1 +turbo_e_16,222,21,0 duplicate(TurboHint_1#tt_main) #e16Intersectioni FAKE_NPC,1,1 +turbo_e_16,214,39,0 duplicate(TurboHint_1#tt_main) #e16Intersectionj FAKE_NPC,1,1 +turbo_e_16,222,48,0 duplicate(TurboHint_1#tt_main) #e16Intersectionk FAKE_NPC,1,1 +turbo_e_16,214,60,0 duplicate(TurboHint_1#tt_main) #e16Intersectionl FAKE_NPC,1,1 +turbo_e_16,209,61,0 duplicate(TurboHint_1#tt_main) #e16Intersectionm FAKE_NPC,1,1 +turbo_e_16,208,56,0 duplicate(TurboHint_1#tt_main) #e16Intersectionn FAKE_NPC,1,1 +turbo_n_16,179,55,0 duplicate(TurboHint_1#tt_main) #n16Intersectiona FAKE_NPC,1,1 +turbo_n_16,184,45,0 duplicate(TurboHint_1#tt_main) #n16Intersectionb FAKE_NPC,1,1 +turbo_n_16,181,30,0 duplicate(TurboHint_1#tt_main) #n16Intersectionc FAKE_NPC,1,1 +turbo_n_16,186,28,0 duplicate(TurboHint_1#tt_main) #n16Intersectiond FAKE_NPC,1,1 +turbo_n_16,183,19,0 duplicate(TurboHint_1#tt_main) #n16Intersectione FAKE_NPC,1,1 +turbo_n_16,191,37,0 duplicate(TurboHint_1#tt_main) #n16Intersectionf FAKE_NPC,1,1 +turbo_n_16,173,25,0 duplicate(TurboHint_1#tt_main) #n16Intersectiong FAKE_NPC,1,1 +turbo_n_16,201,21,0 duplicate(TurboHint_1#tt_main) #n16Intersectionh FAKE_NPC,1,1 +turbo_n_16,222,21,0 duplicate(TurboHint_1#tt_main) #n16Intersectioni FAKE_NPC,1,1 +turbo_n_16,214,39,0 duplicate(TurboHint_1#tt_main) #n16Intersectionj FAKE_NPC,1,1 +turbo_n_16,222,48,0 duplicate(TurboHint_1#tt_main) #n16Intersectionk FAKE_NPC,1,1 +turbo_n_16,214,60,0 duplicate(TurboHint_1#tt_main) #n16Intersectionl FAKE_NPC,1,1 +turbo_n_16,209,61,0 duplicate(TurboHint_1#tt_main) #n16Intersectionm FAKE_NPC,1,1 +turbo_n_16,208,56,0 duplicate(TurboHint_1#tt_main) #n16Intersectionn FAKE_NPC,1,1 +turbo_n_1,179,55,0 duplicate(TurboHint_1#tt_main) #n1Intersectiona FAKE_NPC,1,1 +turbo_n_1,184,45,0 duplicate(TurboHint_1#tt_main) #n1Intersectionb FAKE_NPC,1,1 +turbo_n_1,181,30,0 duplicate(TurboHint_1#tt_main) #n1Intersectionc FAKE_NPC,1,1 +turbo_n_1,186,28,0 duplicate(TurboHint_1#tt_main) #n1Intersectiond FAKE_NPC,1,1 +turbo_n_1,183,19,0 duplicate(TurboHint_1#tt_main) #n1Intersectione FAKE_NPC,1,1 +turbo_n_1,191,37,0 duplicate(TurboHint_1#tt_main) #n1Intersectionf FAKE_NPC,1,1 +turbo_n_1,173,25,0 duplicate(TurboHint_1#tt_main) #n1Intersectiong FAKE_NPC,1,1 +turbo_n_1,201,21,0 duplicate(TurboHint_1#tt_main) #n1Intersectionh FAKE_NPC,1,1 +turbo_n_1,222,21,0 duplicate(TurboHint_1#tt_main) #n1Intersectioni FAKE_NPC,1,1 +turbo_n_1,214,39,0 duplicate(TurboHint_1#tt_main) #n1Intersectionj FAKE_NPC,1,1 +turbo_n_1,222,48,0 duplicate(TurboHint_1#tt_main) #n1Intersectionk FAKE_NPC,1,1 +turbo_n_1,214,60,0 duplicate(TurboHint_1#tt_main) #n1Intersectionl FAKE_NPC,1,1 +turbo_n_1,209,61,0 duplicate(TurboHint_1#tt_main) #n1Intersectionm FAKE_NPC,1,1 +turbo_n_1,208,56,0 duplicate(TurboHint_1#tt_main) #n1Intersectionn FAKE_NPC,1,1 + +- script TurboHint_2#tt_main FAKE_NPC,{ OnTouch: emotion e_gasp,1; end; } -turbo_e_16,178,63,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath1 -1,1,1 -turbo_e_16,182,40,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath2 -1,1,1 -turbo_e_16,176,29,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath3 -1,1,1 -turbo_e_16,180,25,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath4 -1,1,1 -turbo_e_16,201,157,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath5 -1,1,1 -turbo_e_16,203,65,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath6 -1,1,1 -turbo_e_16,208,52,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath7 -1,1,1 -turbo_e_16,208,26,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath8 -1,1,1 -turbo_e_16,191,30,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath9 -1,1,1 -turbo_n_16,178,63,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath1 -1,1,1 -turbo_n_16,182,40,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath2 -1,1,1 -turbo_n_16,176,29,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath3 -1,1,1 -turbo_n_16,180,25,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath4 -1,1,1 -turbo_n_16,201,157,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath5 -1,1,1 -turbo_n_16,203,65,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath6 -1,1,1 -turbo_n_16,208,52,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath7 -1,1,1 -turbo_n_16,208,26,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath8 -1,1,1 -turbo_n_16,191,30,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath9 -1,1,1 -turbo_n_1,178,63,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath1 -1,1,1 -turbo_n_1,182,40,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath2 -1,1,1 -turbo_n_1,176,29,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath3 -1,1,1 -turbo_n_1,180,25,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath4 -1,1,1 -turbo_n_1,201,157,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath5 -1,1,1 -turbo_n_1,203,65,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath6 -1,1,1 -turbo_n_1,208,52,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath7 -1,1,1 -turbo_n_1,208,26,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath8 -1,1,1 -turbo_n_1,191,30,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath9 -1,1,1 - -- script TurboHint_3#tt_main -1,{ +turbo_e_16,178,63,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath1 FAKE_NPC,1,1 +turbo_e_16,182,40,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath2 FAKE_NPC,1,1 +turbo_e_16,176,29,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath3 FAKE_NPC,1,1 +turbo_e_16,180,25,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath4 FAKE_NPC,1,1 +turbo_e_16,201,157,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath5 FAKE_NPC,1,1 +turbo_e_16,203,65,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath6 FAKE_NPC,1,1 +turbo_e_16,208,52,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath7 FAKE_NPC,1,1 +turbo_e_16,208,26,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath8 FAKE_NPC,1,1 +turbo_e_16,191,30,0 duplicate(TurboHint_2#tt_main) #e16CorrectPath9 FAKE_NPC,1,1 +turbo_n_16,178,63,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath1 FAKE_NPC,1,1 +turbo_n_16,182,40,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath2 FAKE_NPC,1,1 +turbo_n_16,176,29,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath3 FAKE_NPC,1,1 +turbo_n_16,180,25,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath4 FAKE_NPC,1,1 +turbo_n_16,201,157,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath5 FAKE_NPC,1,1 +turbo_n_16,203,65,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath6 FAKE_NPC,1,1 +turbo_n_16,208,52,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath7 FAKE_NPC,1,1 +turbo_n_16,208,26,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath8 FAKE_NPC,1,1 +turbo_n_16,191,30,0 duplicate(TurboHint_2#tt_main) #n16CorrectPath9 FAKE_NPC,1,1 +turbo_n_1,178,63,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath1 FAKE_NPC,1,1 +turbo_n_1,182,40,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath2 FAKE_NPC,1,1 +turbo_n_1,176,29,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath3 FAKE_NPC,1,1 +turbo_n_1,180,25,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath4 FAKE_NPC,1,1 +turbo_n_1,201,157,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath5 FAKE_NPC,1,1 +turbo_n_1,203,65,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath6 FAKE_NPC,1,1 +turbo_n_1,208,52,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath7 FAKE_NPC,1,1 +turbo_n_1,208,26,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath8 FAKE_NPC,1,1 +turbo_n_1,191,30,0 duplicate(TurboHint_2#tt_main) #n1CorrectPath9 FAKE_NPC,1,1 + +- script TurboHint_3#tt_main FAKE_NPC,{ OnTouch: emotion e_swt2,1; if (rand(1,4) == 3) emotion e_gasp; end; } -turbo_e_16,187,55,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut1 -1,1,1 -turbo_e_16,176,45,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut2 -1,1,1 -turbo_e_16,222,26,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut3 -1,1,1 -turbo_e_16,219,39,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut4 -1,1,1 -turbo_n_16,187,55,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut1 -1,1,1 -turbo_n_16,176,45,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut2 -1,1,1 -turbo_n_16,222,26,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut3 -1,1,1 -turbo_n_16,219,39,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut4 -1,1,1 -turbo_n_1,187,55,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut1 -1,1,1 -turbo_n_1,176,45,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut2 -1,1,1 -turbo_n_1,222,26,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut3 -1,1,1 -turbo_n_1,219,39,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut4 -1,1,1 - -- script TurboHint_4#tt_main -1,1,1,{ +turbo_e_16,187,55,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut1 FAKE_NPC,1,1 +turbo_e_16,176,45,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut2 FAKE_NPC,1,1 +turbo_e_16,222,26,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut3 FAKE_NPC,1,1 +turbo_e_16,219,39,0 duplicate(TurboHint_3#tt_main) #e16NoWayOut4 FAKE_NPC,1,1 +turbo_n_16,187,55,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut1 FAKE_NPC,1,1 +turbo_n_16,176,45,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut2 FAKE_NPC,1,1 +turbo_n_16,222,26,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut3 FAKE_NPC,1,1 +turbo_n_16,219,39,0 duplicate(TurboHint_3#tt_main) #n16NoWayOut4 FAKE_NPC,1,1 +turbo_n_1,187,55,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut1 FAKE_NPC,1,1 +turbo_n_1,176,45,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut2 FAKE_NPC,1,1 +turbo_n_1,222,26,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut3 FAKE_NPC,1,1 +turbo_n_1,219,39,0 duplicate(TurboHint_3#tt_main) #n1NoWayOut4 FAKE_NPC,1,1 + +- script TurboHint_4#tt_main FAKE_NPC,1,1,{ OnTouch: emotion e_swt2,1; end; } -turbo_e_16,222,45,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut5 -1,1,1 -turbo_e_16,222,61,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut6 -1,1,1 -turbo_e_16,222,65,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut7 -1,1,1 -turbo_n_16,222,45,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut5 -1,1,1 -turbo_n_16,222,61,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut6 -1,1,1 -turbo_n_16,222,65,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut7 -1,1,1 -turbo_n_1,222,45,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut5 -1,1,1 -turbo_n_1,222,61,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut6 -1,1,1 -turbo_n_1,222,65,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut7 -1,1,1 - -- script cos_end#tt_main -1,{ +turbo_e_16,222,45,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut5 FAKE_NPC,1,1 +turbo_e_16,222,61,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut6 FAKE_NPC,1,1 +turbo_e_16,222,65,0 duplicate(TurboHint_4#tt_main) #e16NoWayOut7 FAKE_NPC,1,1 +turbo_n_16,222,45,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut5 FAKE_NPC,1,1 +turbo_n_16,222,61,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut6 FAKE_NPC,1,1 +turbo_n_16,222,65,0 duplicate(TurboHint_4#tt_main) #n16NoWayOut7 FAKE_NPC,1,1 +turbo_n_1,222,45,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut5 FAKE_NPC,1,1 +turbo_n_1,222,61,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut6 FAKE_NPC,1,1 +turbo_n_1,222,65,0 duplicate(TurboHint_4#tt_main) #n1NoWayOut7 FAKE_NPC,1,1 + +- script cos_end#tt_main FAKE_NPC,{ function GetNumber; OnTouch: .@w$ = callfunc("F_tt"); @@ -2011,7 +2011,7 @@ turbo_e_16,371,51,0 duplicate(cos_end2#tt_main) #cos_e16_end2 WARPNPC,1,1 turbo_n_8,371,51,0 duplicate(cos_end2#tt_main) #cos_n8_end2 WARPNPC,1,1 turbo_n_16,371,51,0 duplicate(cos_end2#tt_main) #cos_n16_end2 WARPNPC,1,1 -- script cos_end3#tt_main -1,{ +- script cos_end3#tt_main FAKE_NPC,{ OnTouch: .@w$ = callfunc("F_tt"); mapannounce strnpcinfo(4),"" + strcharinfo(0) +" is third to reach the Finish Line! Congratulations!",bc_map,"0xFFFF00"; @@ -2035,7 +2035,7 @@ turbo_e_16,371,43,0 duplicate(cos_end3#tt_main) #cos_e16_end3 WARPNPC,1,1 turbo_n_8,371,43,0 duplicate(cos_end3#tt_main) #cos_n8_end3 WARPNPC,1,1 turbo_n_16,371,43,0 duplicate(cos_end3#tt_main) #cos_n16_end3 WARPNPC,1,1 -turbo_e_4,316,365,0 script DSwitch#tt_main -1,1,1,{ +turbo_e_4,316,365,0 script DSwitch#tt_main FAKE_NPC,1,1,{ OnTouch: .@w$ = callfunc("F_tt"); if (rand(1,2) == 1) @@ -2045,15 +2045,15 @@ OnTouch: disablenpc "Disposable_Switch#"+.@w$; end; } -turbo_e_4,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e4 -1,1,1 -turbo_e_8,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e8 -1,1,1 -turbo_e_16,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e16 -1,1,1 -turbo_n_4,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n4 -1,1,1 -turbo_n_8,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n8 -1,1,1 -turbo_n_16,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n16 -1,1,1 -turbo_n_1,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n1 -1,1,1 - -- script Flasher#tt_main -1,{ +turbo_e_4,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e4 FAKE_NPC,1,1 +turbo_e_8,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e8 FAKE_NPC,1,1 +turbo_e_16,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#e16 FAKE_NPC,1,1 +turbo_n_4,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n4 FAKE_NPC,1,1 +turbo_n_8,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n8 FAKE_NPC,1,1 +turbo_n_16,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n16 FAKE_NPC,1,1 +turbo_n_1,316,365,0 duplicate(DSwitch#tt_main) Disposable_Switch#n1 FAKE_NPC,1,1 + +- script Flasher#tt_main FAKE_NPC,{ OnTouch: mapannounce strnpcinfo(4),strcharinfo(0) +" has just passed the Flasher Maze!",bc_map,"0x70DBDB"; warp strnpcinfo(4),185,227; @@ -2079,7 +2079,7 @@ turbo_n_16,114,190,0 duplicate(Flasher#tt_main) Flasher_Exit_2#n16 WARPNPC,1,1 turbo_n_1,11,266,0 duplicate(Flasher#tt_main) Flasher_Exit_1#n1 WARPNPC,1,1 turbo_n_1,114,190,0 duplicate(Flasher#tt_main) Flasher_Exit_2#n1 WARPNPC,1,1 -- script WHelper#tt_main -1,{ +- script WHelper#tt_main FAKE_NPC,{ function RName; if (tt_rank < 29999) { mes "[Guide]"; @@ -2779,7 +2779,7 @@ OnInit: end; } -- script NMaker1#tt_main -1,{ +- script NMaker1#tt_main FAKE_NPC,{ OnTouch: .@w$ = callfunc("F_tt"); mapannounce strnpcinfo(4),strcharinfo(0) +" is now entering the Small Cave! " + strcharinfo(0) +" is now in the lead!",bc_map,"0xFFFF00"; @@ -2792,15 +2792,15 @@ OnInit: enablenpc "Notice_Maker1#TBT_"+.@w$; end; } -turbo_e_4,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e4 -1,3,3 -turbo_e_8,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e8 -1,3,3 -turbo_e_16,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e16 -1,3,3 -turbo_n_4,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n4 -1,3,3 -turbo_n_8,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n8 -1,3,3 -turbo_n_16,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n16 -1,3,3 -turbo_n_1,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n1 -1,3,3 - -- script NMaker3#tt_main -1,{ +turbo_e_4,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e4 FAKE_NPC,3,3 +turbo_e_8,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e8 FAKE_NPC,3,3 +turbo_e_16,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_e16 FAKE_NPC,3,3 +turbo_n_4,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n4 FAKE_NPC,3,3 +turbo_n_8,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n8 FAKE_NPC,3,3 +turbo_n_16,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n16 FAKE_NPC,3,3 +turbo_n_1,11,91,0 duplicate(NMaker1#tt_main) Notice_Maker1#TBT_n1 FAKE_NPC,3,3 + +- script NMaker3#tt_main FAKE_NPC,{ OnTouch: .@w$ = callfunc("F_tt"); mapannounce strnpcinfo(4),strcharinfo(0) +" is now entering the Single Snail! " + strcharinfo(0) +" is now in the lead!",bc_map,"0xFFFF00"; @@ -2812,15 +2812,15 @@ OnInit: enablenpc "Notice_Maker3#TBT_"+.@w$; end; } -turbo_e_4,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e4 -1,3,3 -turbo_e_8,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e8 -1,3,3 -turbo_e_16,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e16 -1,3,3 -turbo_n_4,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n4 -1,3,3 -turbo_n_8,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n8 -1,3,3 -turbo_n_16,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n16 -1,3,3 -turbo_n_1,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n1 -1,3,3 - -- script NMaker4#tt_main -1,{ +turbo_e_4,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e4 FAKE_NPC,3,3 +turbo_e_8,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e8 FAKE_NPC,3,3 +turbo_e_16,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_e16 FAKE_NPC,3,3 +turbo_n_4,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n4 FAKE_NPC,3,3 +turbo_n_8,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n8 FAKE_NPC,3,3 +turbo_n_16,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n16 FAKE_NPC,3,3 +turbo_n_1,234,223,0 duplicate(NMaker3#tt_main) Notice_Maker3#TBT_n1 FAKE_NPC,3,3 + +- script NMaker4#tt_main FAKE_NPC,{ OnTouch: .@w$ = callfunc("F_tt"); mapannounce strnpcinfo(4),strcharinfo(0) +" is currently in First Place!",bc_map,"0xFFFF00"; @@ -2833,15 +2833,15 @@ OnInit: end; } -turbo_e_4,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e4 -1,3,3 -turbo_e_8,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e8 -1,3,3 -turbo_e_16,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e16 -1,3,3 -turbo_n_4,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n4 -1,3,3 -turbo_n_8,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n8 -1,3,3 -turbo_n_16,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n16 -1,3,3 -turbo_n_1,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n1 -1,3,3 - -- script warp#tt_main -1,{ +turbo_e_4,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e4 FAKE_NPC,3,3 +turbo_e_8,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e8 FAKE_NPC,3,3 +turbo_e_16,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_e16 FAKE_NPC,3,3 +turbo_n_4,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n4 FAKE_NPC,3,3 +turbo_n_8,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n8 FAKE_NPC,3,3 +turbo_n_16,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n16 FAKE_NPC,3,3 +turbo_n_1,226,15,0 duplicate(NMaker4#tt_main) Notice_Maker4#TBT_n1 FAKE_NPC,3,3 + +- script warp#tt_main FAKE_NPC,{ OnTouch: switch (rand(1,20)) { case 1: warp strnpcinfo(4),216,378; break; @@ -2853,57 +2853,57 @@ OnTouch: } end; } -turbo_e_4,227,379,0 duplicate(warp#tt_main) Warp#e4_1 -1,1,1 -turbo_e_4,237,380,0 duplicate(warp#tt_main) Warp#e4_2 -1,1,1 -turbo_e_4,227,367,0 duplicate(warp#tt_main) Warp#e4_3 -1,1,1 -turbo_e_4,231,360,0 duplicate(warp#tt_main) Warp#e4_4 -1,1,1 -turbo_e_4,225,349,0 duplicate(warp#tt_main) Warp#e4_5 -1,1,1 -turbo_e_4,249,352,0 duplicate(warp#tt_main) Warp#e4_6 -1,1,1 -turbo_e_4,253,364,0 duplicate(warp#tt_main) Warp#e4_7 -1,2,2 -turbo_e_8,227,379,0 duplicate(warp#tt_main) Warp#e8_1 -1,1,1 -turbo_e_8,237,380,0 duplicate(warp#tt_main) Warp#e8_2 -1,1,1 -turbo_e_8,227,367,0 duplicate(warp#tt_main) Warp#e8_3 -1,1,1 -turbo_e_8,231,360,0 duplicate(warp#tt_main) Warp#e8_4 -1,1,1 -turbo_e_8,225,349,0 duplicate(warp#tt_main) Warp#e8_5 -1,1,1 -turbo_e_8,249,352,0 duplicate(warp#tt_main) Warp#e8_6 -1,1,1 -turbo_e_8,253,364,0 duplicate(warp#tt_main) Warp#e8_7 -1,2,2 -turbo_e_16,227,379,0 duplicate(warp#tt_main) Warp#e16_1 -1,1,1 -turbo_e_16,237,380,0 duplicate(warp#tt_main) Warp#e16_2 -1,1,1 -turbo_e_16,227,367,0 duplicate(warp#tt_main) Warp#e16_3 -1,1,1 -turbo_e_16,231,360,0 duplicate(warp#tt_main) Warp#e16_4 -1,1,1 -turbo_e_16,225,349,0 duplicate(warp#tt_main) Warp#e16_5 -1,1,1 -turbo_e_16,249,352,0 duplicate(warp#tt_main) Warp#e16_6 -1,1,1 -turbo_e_16,253,364,0 duplicate(warp#tt_main) Warp#e16_7 -1,2,2 -turbo_n_4,227,379,0 duplicate(warp#tt_main) Warp#n4_1 -1,1,1 -turbo_n_4,237,380,0 duplicate(warp#tt_main) Warp#n4_2 -1,1,1 -turbo_n_4,227,367,0 duplicate(warp#tt_main) Warp#n4_3 -1,1,1 -turbo_n_4,231,360,0 duplicate(warp#tt_main) Warp#n4_4 -1,1,1 -turbo_n_4,225,349,0 duplicate(warp#tt_main) Warp#n4_5 -1,1,1 -turbo_n_4,249,352,0 duplicate(warp#tt_main) Warp#n4_6 -1,1,1 -turbo_n_4,253,364,0 duplicate(warp#tt_main) Warp#n4_7 -1,2,2 -turbo_n_8,227,379,0 duplicate(warp#tt_main) Warp#n8_1 -1,1,1 -turbo_n_8,237,380,0 duplicate(warp#tt_main) Warp#n8_2 -1,1,1 -turbo_n_8,227,367,0 duplicate(warp#tt_main) Warp#n8_3 -1,1,1 -turbo_n_8,231,360,0 duplicate(warp#tt_main) Warp#n8_4 -1,1,1 -turbo_n_8,225,349,0 duplicate(warp#tt_main) Warp#n8_5 -1,1,1 -turbo_n_8,249,352,0 duplicate(warp#tt_main) Warp#n8_6 -1,1,1 -turbo_n_8,253,364,0 duplicate(warp#tt_main) Warp#n8_7 -1,2,2 -turbo_n_16,227,379,0 duplicate(warp#tt_main) Warp#n16_1 -1,1,1 -turbo_n_16,237,380,0 duplicate(warp#tt_main) Warp#n16_2 -1,1,1 -turbo_n_16,227,367,0 duplicate(warp#tt_main) Warp#n16_3 -1,1,1 -turbo_n_16,231,360,0 duplicate(warp#tt_main) Warp#n16_4 -1,1,1 -turbo_n_16,225,349,0 duplicate(warp#tt_main) Warp#n16_5 -1,1,1 -turbo_n_16,249,352,0 duplicate(warp#tt_main) Warp#n16_6 -1,1,1 -turbo_n_16,253,364,0 duplicate(warp#tt_main) Warp#n16_7 -1,2,2 -turbo_n_1,227,379,0 duplicate(warp#tt_main) Warp#n1_1 -1,1,1 -turbo_n_1,237,380,0 duplicate(warp#tt_main) Warp#n1_2 -1,1,1 -turbo_n_1,227,367,0 duplicate(warp#tt_main) Warp#n1_3 -1,1,1 -turbo_n_1,231,360,0 duplicate(warp#tt_main) Warp#n1_4 -1,1,1 -turbo_n_1,225,349,0 duplicate(warp#tt_main) Warp#n1_5 -1,1,1 -turbo_n_1,249,352,0 duplicate(warp#tt_main) Warp#n1_6 -1,1,1 -turbo_n_1,253,364,0 duplicate(warp#tt_main) Warp#n1_7 -1,2,2 - -- script TurboTrap#tt_main -1,{ +turbo_e_4,227,379,0 duplicate(warp#tt_main) Warp#e4_1 FAKE_NPC,1,1 +turbo_e_4,237,380,0 duplicate(warp#tt_main) Warp#e4_2 FAKE_NPC,1,1 +turbo_e_4,227,367,0 duplicate(warp#tt_main) Warp#e4_3 FAKE_NPC,1,1 +turbo_e_4,231,360,0 duplicate(warp#tt_main) Warp#e4_4 FAKE_NPC,1,1 +turbo_e_4,225,349,0 duplicate(warp#tt_main) Warp#e4_5 FAKE_NPC,1,1 +turbo_e_4,249,352,0 duplicate(warp#tt_main) Warp#e4_6 FAKE_NPC,1,1 +turbo_e_4,253,364,0 duplicate(warp#tt_main) Warp#e4_7 FAKE_NPC,2,2 +turbo_e_8,227,379,0 duplicate(warp#tt_main) Warp#e8_1 FAKE_NPC,1,1 +turbo_e_8,237,380,0 duplicate(warp#tt_main) Warp#e8_2 FAKE_NPC,1,1 +turbo_e_8,227,367,0 duplicate(warp#tt_main) Warp#e8_3 FAKE_NPC,1,1 +turbo_e_8,231,360,0 duplicate(warp#tt_main) Warp#e8_4 FAKE_NPC,1,1 +turbo_e_8,225,349,0 duplicate(warp#tt_main) Warp#e8_5 FAKE_NPC,1,1 +turbo_e_8,249,352,0 duplicate(warp#tt_main) Warp#e8_6 FAKE_NPC,1,1 +turbo_e_8,253,364,0 duplicate(warp#tt_main) Warp#e8_7 FAKE_NPC,2,2 +turbo_e_16,227,379,0 duplicate(warp#tt_main) Warp#e16_1 FAKE_NPC,1,1 +turbo_e_16,237,380,0 duplicate(warp#tt_main) Warp#e16_2 FAKE_NPC,1,1 +turbo_e_16,227,367,0 duplicate(warp#tt_main) Warp#e16_3 FAKE_NPC,1,1 +turbo_e_16,231,360,0 duplicate(warp#tt_main) Warp#e16_4 FAKE_NPC,1,1 +turbo_e_16,225,349,0 duplicate(warp#tt_main) Warp#e16_5 FAKE_NPC,1,1 +turbo_e_16,249,352,0 duplicate(warp#tt_main) Warp#e16_6 FAKE_NPC,1,1 +turbo_e_16,253,364,0 duplicate(warp#tt_main) Warp#e16_7 FAKE_NPC,2,2 +turbo_n_4,227,379,0 duplicate(warp#tt_main) Warp#n4_1 FAKE_NPC,1,1 +turbo_n_4,237,380,0 duplicate(warp#tt_main) Warp#n4_2 FAKE_NPC,1,1 +turbo_n_4,227,367,0 duplicate(warp#tt_main) Warp#n4_3 FAKE_NPC,1,1 +turbo_n_4,231,360,0 duplicate(warp#tt_main) Warp#n4_4 FAKE_NPC,1,1 +turbo_n_4,225,349,0 duplicate(warp#tt_main) Warp#n4_5 FAKE_NPC,1,1 +turbo_n_4,249,352,0 duplicate(warp#tt_main) Warp#n4_6 FAKE_NPC,1,1 +turbo_n_4,253,364,0 duplicate(warp#tt_main) Warp#n4_7 FAKE_NPC,2,2 +turbo_n_8,227,379,0 duplicate(warp#tt_main) Warp#n8_1 FAKE_NPC,1,1 +turbo_n_8,237,380,0 duplicate(warp#tt_main) Warp#n8_2 FAKE_NPC,1,1 +turbo_n_8,227,367,0 duplicate(warp#tt_main) Warp#n8_3 FAKE_NPC,1,1 +turbo_n_8,231,360,0 duplicate(warp#tt_main) Warp#n8_4 FAKE_NPC,1,1 +turbo_n_8,225,349,0 duplicate(warp#tt_main) Warp#n8_5 FAKE_NPC,1,1 +turbo_n_8,249,352,0 duplicate(warp#tt_main) Warp#n8_6 FAKE_NPC,1,1 +turbo_n_8,253,364,0 duplicate(warp#tt_main) Warp#n8_7 FAKE_NPC,2,2 +turbo_n_16,227,379,0 duplicate(warp#tt_main) Warp#n16_1 FAKE_NPC,1,1 +turbo_n_16,237,380,0 duplicate(warp#tt_main) Warp#n16_2 FAKE_NPC,1,1 +turbo_n_16,227,367,0 duplicate(warp#tt_main) Warp#n16_3 FAKE_NPC,1,1 +turbo_n_16,231,360,0 duplicate(warp#tt_main) Warp#n16_4 FAKE_NPC,1,1 +turbo_n_16,225,349,0 duplicate(warp#tt_main) Warp#n16_5 FAKE_NPC,1,1 +turbo_n_16,249,352,0 duplicate(warp#tt_main) Warp#n16_6 FAKE_NPC,1,1 +turbo_n_16,253,364,0 duplicate(warp#tt_main) Warp#n16_7 FAKE_NPC,2,2 +turbo_n_1,227,379,0 duplicate(warp#tt_main) Warp#n1_1 FAKE_NPC,1,1 +turbo_n_1,237,380,0 duplicate(warp#tt_main) Warp#n1_2 FAKE_NPC,1,1 +turbo_n_1,227,367,0 duplicate(warp#tt_main) Warp#n1_3 FAKE_NPC,1,1 +turbo_n_1,231,360,0 duplicate(warp#tt_main) Warp#n1_4 FAKE_NPC,1,1 +turbo_n_1,225,349,0 duplicate(warp#tt_main) Warp#n1_5 FAKE_NPC,1,1 +turbo_n_1,249,352,0 duplicate(warp#tt_main) Warp#n1_6 FAKE_NPC,1,1 +turbo_n_1,253,364,0 duplicate(warp#tt_main) Warp#n1_7 FAKE_NPC,2,2 + +- script TurboTrap#tt_main FAKE_NPC,{ end; OnTouch: specialeffect EF_BLASTMINEBOMB; @@ -3540,7 +3540,7 @@ turbo_n_1,368,44,0 duplicate(TurboTrap#tt_main) trap_n1#F93 HIDDEN_WARP_NPC,1,1 turbo_n_1,368,40,0 duplicate(TurboTrap#tt_main) trap_n1#F94 HIDDEN_WARP_NPC,1,1 turbo_n_1,368,36,0 duplicate(TurboTrap#tt_main) trap_n1#F95 HIDDEN_WARP_NPC,1,1 -- script TurboTrap_2#tt_main -1,{ +- script TurboTrap_2#tt_main FAKE_NPC,{ end; OnTouch: specialeffect EF_FREEZING; @@ -3606,7 +3606,7 @@ turbo_n_1,336,50,0 duplicate(TurboTrap_2#tt_main) trap_n1#F46 HIDDEN_WARP_NPC,1, turbo_n_1,336,36,0 duplicate(TurboTrap_2#tt_main) trap_n1#F47 HIDDEN_WARP_NPC,1,1 turbo_n_1,340,55,0 duplicate(TurboTrap_2#tt_main) trap_n1#F48 HIDDEN_WARP_NPC,1,1 -- script bing_1#tt_main -1,{ +- script bing_1#tt_main FAKE_NPC,{ end; OnTouch: .@w$ = callfunc("F_tt"); @@ -3632,7 +3632,7 @@ turbo_n_4,217,214,0 duplicate(bing_1#tt_main) bing#n4 WARPNPC,3,3 turbo_n_8,217,214,0 duplicate(bing_1#tt_main) bing#n8 WARPNPC,3,3 turbo_n_16,217,214,0 duplicate(bing_1#tt_main) bing#n16 WARPNPC,3,3 -- script bing_2#tt_main -1,{ +- script bing_2#tt_main FAKE_NPC,{ end; OnTouch: switch (rand(1,10)) { @@ -4702,7 +4702,7 @@ alde_gld,186,199,3 script Turbo Track Guide#Entran 4_F_RACING,{ close; } -- script ::MountManager_turbo -1,{ +- script ::MountManager_turbo FAKE_NPC,{ .@n$ = "["+strnpcinfo(1)+"]"; mes .@n$; if (hascashmount()) { diff --git a/npc/pre-re/jobs/1-1/swordman.txt b/npc/pre-re/jobs/1-1/swordman.txt index 49a113d01..45da68fa8 100644 --- a/npc/pre-re/jobs/1-1/swordman.txt +++ b/npc/pre-re/jobs/1-1/swordman.txt @@ -407,7 +407,7 @@ job_sword1,98,27,0 warp pitfall02-01 1,1,job_sword1,11,207 job_sword1,161,27,0 warp pitfall02-02 1,1,job_sword1,11,207 job_sword1,239,117,0 warp pitfall03-01 1,1,job_sword1,11,169 -job_sword1,16,251,0 script 1_blank_1_a::SwdTrap1 -1,0,1,{ +job_sword1,16,251,0 script 1_blank_1_a::SwdTrap1 FAKE_NPC,0,1,{ OnTouch: switch(rand(1,5)) { case 1: warp "job_sword1",65,56; end; @@ -417,58 +417,58 @@ OnTouch: case 5: warp "job_sword1",58,83; end; } } -job_sword1,19,251,0 duplicate(SwdTrap1) 1_blank_1_b -1,0,1 -job_sword1,17,250,0 duplicate(SwdTrap1) 1_blank_1_c -1,1,0 -job_sword1,16,238,0 duplicate(SwdTrap1) 1_blank_2_a -1,0,1 -job_sword1,19,238,0 duplicate(SwdTrap1) 1_blank_2_b -1,0,1 -job_sword1,17,239,0 duplicate(SwdTrap1) 1_blank_2_c -1,0,1 -job_sword1,28,247,0 duplicate(SwdTrap1) 1_blank_3_a -1,4,0 -job_sword1,33,245,0 duplicate(SwdTrap1) 1_blank_3_b -1,0,2 -job_sword1,29,242,0 duplicate(SwdTrap1) 1_blank_3_c -1,4,0 -job_sword1,24,244,0 duplicate(SwdTrap1) 1_blank_3_d -1,0,2 -job_sword1,38,251,0 duplicate(SwdTrap1) 1_blank_4_a -1,0,1 -job_sword1,41,251,0 duplicate(SwdTrap1) 1_blank_4_b -1,0,1 -job_sword1,39,250,0 duplicate(SwdTrap1) 1_blank_4_c -1,1,0 -job_sword1,38,238,0 duplicate(SwdTrap1) 1_blank_5_a -1,0,1 -job_sword1,41,238,0 duplicate(SwdTrap1) 1_blank_5_b -1,0,1 -job_sword1,39,239,0 duplicate(SwdTrap1) 1_blank_5_c -1,1,0 -job_sword1,54,251,0 duplicate(SwdTrap1) 1_blank_6_a -1,0,1 -job_sword1,71,251,0 duplicate(SwdTrap1) 1_blank_6_b -1,0,1 -job_sword1,62,250,0 duplicate(SwdTrap1) 1_blank_6_c -1,9,0 -job_sword1,62,247,0 duplicate(SwdTrap1) 1_blank_7_a -1,8,0 -job_sword1,71,244,0 duplicate(SwdTrap1) 1_blank_7_b -1,0,2 -job_sword1,63,242,0 duplicate(SwdTrap1) 1_blank_7_c -1,8,0 -job_sword1,54,244,0 duplicate(SwdTrap1) 1_blank_7_d -1,0,2 -job_sword1,54,238,0 duplicate(SwdTrap1) 1_blank_8_a -1,0,1 -job_sword1,71,238,0 duplicate(SwdTrap1) 1_blank_8_b -1,0,1 -job_sword1,62,239,0 duplicate(SwdTrap1) 1_blank_8_c -1,9,0 -job_sword1,102,247,0 duplicate(SwdTrap1) 1_blank_9_a -1,2,0 -job_sword1,105,245,0 duplicate(SwdTrap1) 1_blank_9_b -1,0,2 -job_sword1,103,242,0 duplicate(SwdTrap1) 1_blank_9_c -1,2,0 -job_sword1,100,244,0 duplicate(SwdTrap1) 1_blank_9_d -1,0,2 -job_sword1,156,249,0 duplicate(SwdTrap1) 1_blank_10_a -1,14,0 -job_sword1,156,248,0 duplicate(SwdTrap1) 1_blank_10_b -1,14,0 -job_sword1,170,249,0 duplicate(SwdTrap1) 1_blank_10_c -1,1,0 -job_sword1,170,248,0 duplicate(SwdTrap1) 1_blank_10_d -1,1,0 -job_sword1,156,245,0 duplicate(SwdTrap1) 1_blank_11_a -1,14,0 -job_sword1,156,244,0 duplicate(SwdTrap1) 1_blank_11_b -1,14,0 -job_sword1,170,245,0 duplicate(SwdTrap1) 1_blank_11_c -1,1,0 -job_sword1,170,244,0 duplicate(SwdTrap1) 1_blank_11_d -1,1,0 -job_sword1,156,241,0 duplicate(SwdTrap1) 1_blank_12_a -1,14,0 -job_sword1,156,240,0 duplicate(SwdTrap1) 1_blank_12_b -1,14,0 -job_sword1,170,241,0 duplicate(SwdTrap1) 1_blank_12_c -1,1,0 -job_sword1,170,240,0 duplicate(SwdTrap1) 1_blank_12_d -1,1,0 -job_sword1,180,251,0 duplicate(SwdTrap1) 1_blank_13_a -1,0,1 -job_sword1,183,251,0 duplicate(SwdTrap1) 1_blank_13_b -1,0,1 -job_sword1,181,250,0 duplicate(SwdTrap1) 1_blank_13_c -1,1,0 -job_sword1,180,238,0 duplicate(SwdTrap1) 1_blank_14_a -1,0,1 -job_sword1,183,238,0 duplicate(SwdTrap1) 1_blank_14_b -1,0,1 -job_sword1,181,239,0 duplicate(SwdTrap1) 1_blank_14_c -1,1,0 +job_sword1,19,251,0 duplicate(SwdTrap1) 1_blank_1_b FAKE_NPC,0,1 +job_sword1,17,250,0 duplicate(SwdTrap1) 1_blank_1_c FAKE_NPC,1,0 +job_sword1,16,238,0 duplicate(SwdTrap1) 1_blank_2_a FAKE_NPC,0,1 +job_sword1,19,238,0 duplicate(SwdTrap1) 1_blank_2_b FAKE_NPC,0,1 +job_sword1,17,239,0 duplicate(SwdTrap1) 1_blank_2_c FAKE_NPC,0,1 +job_sword1,28,247,0 duplicate(SwdTrap1) 1_blank_3_a FAKE_NPC,4,0 +job_sword1,33,245,0 duplicate(SwdTrap1) 1_blank_3_b FAKE_NPC,0,2 +job_sword1,29,242,0 duplicate(SwdTrap1) 1_blank_3_c FAKE_NPC,4,0 +job_sword1,24,244,0 duplicate(SwdTrap1) 1_blank_3_d FAKE_NPC,0,2 +job_sword1,38,251,0 duplicate(SwdTrap1) 1_blank_4_a FAKE_NPC,0,1 +job_sword1,41,251,0 duplicate(SwdTrap1) 1_blank_4_b FAKE_NPC,0,1 +job_sword1,39,250,0 duplicate(SwdTrap1) 1_blank_4_c FAKE_NPC,1,0 +job_sword1,38,238,0 duplicate(SwdTrap1) 1_blank_5_a FAKE_NPC,0,1 +job_sword1,41,238,0 duplicate(SwdTrap1) 1_blank_5_b FAKE_NPC,0,1 +job_sword1,39,239,0 duplicate(SwdTrap1) 1_blank_5_c FAKE_NPC,1,0 +job_sword1,54,251,0 duplicate(SwdTrap1) 1_blank_6_a FAKE_NPC,0,1 +job_sword1,71,251,0 duplicate(SwdTrap1) 1_blank_6_b FAKE_NPC,0,1 +job_sword1,62,250,0 duplicate(SwdTrap1) 1_blank_6_c FAKE_NPC,9,0 +job_sword1,62,247,0 duplicate(SwdTrap1) 1_blank_7_a FAKE_NPC,8,0 +job_sword1,71,244,0 duplicate(SwdTrap1) 1_blank_7_b FAKE_NPC,0,2 +job_sword1,63,242,0 duplicate(SwdTrap1) 1_blank_7_c FAKE_NPC,8,0 +job_sword1,54,244,0 duplicate(SwdTrap1) 1_blank_7_d FAKE_NPC,0,2 +job_sword1,54,238,0 duplicate(SwdTrap1) 1_blank_8_a FAKE_NPC,0,1 +job_sword1,71,238,0 duplicate(SwdTrap1) 1_blank_8_b FAKE_NPC,0,1 +job_sword1,62,239,0 duplicate(SwdTrap1) 1_blank_8_c FAKE_NPC,9,0 +job_sword1,102,247,0 duplicate(SwdTrap1) 1_blank_9_a FAKE_NPC,2,0 +job_sword1,105,245,0 duplicate(SwdTrap1) 1_blank_9_b FAKE_NPC,0,2 +job_sword1,103,242,0 duplicate(SwdTrap1) 1_blank_9_c FAKE_NPC,2,0 +job_sword1,100,244,0 duplicate(SwdTrap1) 1_blank_9_d FAKE_NPC,0,2 +job_sword1,156,249,0 duplicate(SwdTrap1) 1_blank_10_a FAKE_NPC,14,0 +job_sword1,156,248,0 duplicate(SwdTrap1) 1_blank_10_b FAKE_NPC,14,0 +job_sword1,170,249,0 duplicate(SwdTrap1) 1_blank_10_c FAKE_NPC,1,0 +job_sword1,170,248,0 duplicate(SwdTrap1) 1_blank_10_d FAKE_NPC,1,0 +job_sword1,156,245,0 duplicate(SwdTrap1) 1_blank_11_a FAKE_NPC,14,0 +job_sword1,156,244,0 duplicate(SwdTrap1) 1_blank_11_b FAKE_NPC,14,0 +job_sword1,170,245,0 duplicate(SwdTrap1) 1_blank_11_c FAKE_NPC,1,0 +job_sword1,170,244,0 duplicate(SwdTrap1) 1_blank_11_d FAKE_NPC,1,0 +job_sword1,156,241,0 duplicate(SwdTrap1) 1_blank_12_a FAKE_NPC,14,0 +job_sword1,156,240,0 duplicate(SwdTrap1) 1_blank_12_b FAKE_NPC,14,0 +job_sword1,170,241,0 duplicate(SwdTrap1) 1_blank_12_c FAKE_NPC,1,0 +job_sword1,170,240,0 duplicate(SwdTrap1) 1_blank_12_d FAKE_NPC,1,0 +job_sword1,180,251,0 duplicate(SwdTrap1) 1_blank_13_a FAKE_NPC,0,1 +job_sword1,183,251,0 duplicate(SwdTrap1) 1_blank_13_b FAKE_NPC,0,1 +job_sword1,181,250,0 duplicate(SwdTrap1) 1_blank_13_c FAKE_NPC,1,0 +job_sword1,180,238,0 duplicate(SwdTrap1) 1_blank_14_a FAKE_NPC,0,1 +job_sword1,183,238,0 duplicate(SwdTrap1) 1_blank_14_b FAKE_NPC,0,1 +job_sword1,181,239,0 duplicate(SwdTrap1) 1_blank_14_c FAKE_NPC,1,0 job_sword1,193,245,0 warp 1_rest 1,3,job_sword1,215,244 //== Pitfalls (Set 2) ====================================== -job_sword1,56,212,0 script 2_blank_1_a::SwdTrap2 -1,40,0,{ +job_sword1,56,212,0 script 2_blank_1_a::SwdTrap2 FAKE_NPC,40,0,{ OnTouch: switch(rand(1,5)) { case 1: warp "job_sword1",162,120; end; @@ -479,40 +479,40 @@ OnTouch: } } -job_sword1,95,212,0 duplicate(SwdTrap2) 2_blank_1_b -1,2,0 -job_sword1,56,210,0 duplicate(SwdTrap2) 2_blank_2_a -1,40,0 -job_sword1,95,210,0 duplicate(SwdTrap2) 2_blank_2_b -1,2,0 -job_sword1,16,206,0 duplicate(SwdTrap2) 2_blank_2_c -1,0,3 -job_sword1,97,206,0 duplicate(SwdTrap2) 2_blank_2_d -1,0,3 -job_sword1,56,203,0 duplicate(SwdTrap2) 2_blank_2_e -1,40,0 -job_sword1,95,203,0 duplicate(SwdTrap2) 2_blank_2_f -1,2,0 -job_sword1,56,201,0 duplicate(SwdTrap2) 2_blank_3_a -1,40,0 -job_sword1,95,201,0 duplicate(SwdTrap2) 2_blank_3_b -1,2,0 +job_sword1,95,212,0 duplicate(SwdTrap2) 2_blank_1_b FAKE_NPC,2,0 +job_sword1,56,210,0 duplicate(SwdTrap2) 2_blank_2_a FAKE_NPC,40,0 +job_sword1,95,210,0 duplicate(SwdTrap2) 2_blank_2_b FAKE_NPC,2,0 +job_sword1,16,206,0 duplicate(SwdTrap2) 2_blank_2_c FAKE_NPC,0,3 +job_sword1,97,206,0 duplicate(SwdTrap2) 2_blank_2_d FAKE_NPC,0,3 +job_sword1,56,203,0 duplicate(SwdTrap2) 2_blank_2_e FAKE_NPC,40,0 +job_sword1,95,203,0 duplicate(SwdTrap2) 2_blank_2_f FAKE_NPC,2,0 +job_sword1,56,201,0 duplicate(SwdTrap2) 2_blank_3_a FAKE_NPC,40,0 +job_sword1,95,201,0 duplicate(SwdTrap2) 2_blank_3_b FAKE_NPC,2,0 -job_sword1,113,212,0 duplicate(SwdTrap2) 2_blank_4_a -1,14,0 -job_sword1,125,212,0 duplicate(SwdTrap2) 2_blank_4_b -1,2,0 -job_sword1,113,210,0 duplicate(SwdTrap2) 2_blank_5_a -1,14,0 -job_sword1,125,210,0 duplicate(SwdTrap2) 2_blank_5_b -1,2,0 -job_sword1,100,206,0 duplicate(SwdTrap2) 2_blank_5_c -1,0,3 -job_sword1,127,206,0 duplicate(SwdTrap2) 2_blank_5_d -1,0,3 -job_sword1,113,203,0 duplicate(SwdTrap2) 2_blank_5_e -1,14,0 -job_sword1,125,210,0 duplicate(SwdTrap2) 2_blank_5_f -1,2,0 -job_sword1,113,201,0 duplicate(SwdTrap2) 2_blank_6_a -1,14,0 -job_sword1,113,201,0 duplicate(SwdTrap2) 2_blank_6_b -1,2,0 +job_sword1,113,212,0 duplicate(SwdTrap2) 2_blank_4_a FAKE_NPC,14,0 +job_sword1,125,212,0 duplicate(SwdTrap2) 2_blank_4_b FAKE_NPC,2,0 +job_sword1,113,210,0 duplicate(SwdTrap2) 2_blank_5_a FAKE_NPC,14,0 +job_sword1,125,210,0 duplicate(SwdTrap2) 2_blank_5_b FAKE_NPC,2,0 +job_sword1,100,206,0 duplicate(SwdTrap2) 2_blank_5_c FAKE_NPC,0,3 +job_sword1,127,206,0 duplicate(SwdTrap2) 2_blank_5_d FAKE_NPC,0,3 +job_sword1,113,203,0 duplicate(SwdTrap2) 2_blank_5_e FAKE_NPC,14,0 +job_sword1,125,210,0 duplicate(SwdTrap2) 2_blank_5_f FAKE_NPC,2,0 +job_sword1,113,201,0 duplicate(SwdTrap2) 2_blank_6_a FAKE_NPC,14,0 +job_sword1,113,201,0 duplicate(SwdTrap2) 2_blank_6_b FAKE_NPC,2,0 -job_sword1,155,212,0 duplicate(SwdTrap2) 2_blank_7_a -1,21,0 -job_sword1,181,212,0 duplicate(SwdTrap2) 2_blank_7_b -1,2,0 -job_sword1,155,210,0 duplicate(SwdTrap2) 2_blank_8_a -1,21,0 -job_sword1,181,210,0 duplicate(SwdTrap2) 2_blank_8_b -1,2,0 -job_sword1,130,206,0 duplicate(SwdTrap2) 2_blank_8_c -1,0,3 -job_sword1,183,206,0 duplicate(SwdTrap2) 2_blank_8_d -1,0,3 -job_sword1,155,203,0 duplicate(SwdTrap2) 2_blank_8_e -1,21,0 -job_sword1,181,203,0 duplicate(SwdTrap2) 2_blank_8_f -1,2,0 -job_sword1,155,201,0 duplicate(SwdTrap2) 2_blank_9_a -1,40,0 -job_sword1,181,201,0 duplicate(SwdTrap2) 2_blank_9_b -1,2,0 +job_sword1,155,212,0 duplicate(SwdTrap2) 2_blank_7_a FAKE_NPC,21,0 +job_sword1,181,212,0 duplicate(SwdTrap2) 2_blank_7_b FAKE_NPC,2,0 +job_sword1,155,210,0 duplicate(SwdTrap2) 2_blank_8_a FAKE_NPC,21,0 +job_sword1,181,210,0 duplicate(SwdTrap2) 2_blank_8_b FAKE_NPC,2,0 +job_sword1,130,206,0 duplicate(SwdTrap2) 2_blank_8_c FAKE_NPC,0,3 +job_sword1,183,206,0 duplicate(SwdTrap2) 2_blank_8_d FAKE_NPC,0,3 +job_sword1,155,203,0 duplicate(SwdTrap2) 2_blank_8_e FAKE_NPC,21,0 +job_sword1,181,203,0 duplicate(SwdTrap2) 2_blank_8_f FAKE_NPC,2,0 +job_sword1,155,201,0 duplicate(SwdTrap2) 2_blank_9_a FAKE_NPC,40,0 +job_sword1,181,201,0 duplicate(SwdTrap2) 2_blank_9_b FAKE_NPC,2,0 //== Pitfalls (Set 3) ====================================== -job_sword1,17,174,0 script 3_blank_1_a::SwdTrap3 -1,2,0,{ +job_sword1,17,174,0 script 3_blank_1_a::SwdTrap3 FAKE_NPC,2,0,{ OnTouch: switch(rand(1,5)) { case 1: warp "job_sword1",195,15; end; @@ -523,105 +523,105 @@ OnTouch: } } -job_sword1,17,163,0 duplicate(SwdTrap3) 3_blank_2_a -1,2,0 -job_sword1,29,171,0 duplicate(SwdTrap3) 3_blank_3_a -1,2,0 -job_sword1,31,168,0 duplicate(SwdTrap3) 3_blank_3_b -1,0,2 -job_sword1,28,166,0 duplicate(SwdTrap3) 3_blank_3_c -1,2,0 -job_sword1,26,168,0 duplicate(SwdTrap3) 3_blank_3_d -1,0,2 -job_sword1,36,169,0 duplicate(SwdTrap3) 3_blank_4_a -1,0,0 -job_sword1,37,169,0 duplicate(SwdTrap3) 3_blank_4_b -1,0,0 -job_sword1,37,168,0 duplicate(SwdTrap3) 3_blank_4_c -1,0,0 -job_sword1,36,168,0 duplicate(SwdTrap3) 3_blank_4_c2 -1,0,0 -job_sword1,40,175,0 duplicate(SwdTrap3) 3_blank_5_a -1,0,1 -job_sword1,41,175,0 duplicate(SwdTrap3) 3_blank_5_b -1,0,1 -job_sword1,41,171,0 duplicate(SwdTrap3) 3_blank_6_a -1,1,0 -job_sword1,41,170,0 duplicate(SwdTrap3) 3_blank_6_b -1,1,0 -job_sword1,41,167,0 duplicate(SwdTrap3) 3_blank_6_c -1,1,0 -job_sword1,41,166,0 duplicate(SwdTrap3) 3_blank_6_d -1,1,0 -job_sword1,42,169,0 duplicate(SwdTrap3) 3_blank_6_e -1,0,1 -job_sword1,43,170,0 duplicate(SwdTrap3) 3_blank_6_f -1,0,1 -job_sword1,43,167,0 duplicate(SwdTrap3) 3_blank_6_g -1,0,1 -job_sword1,40,162,0 duplicate(SwdTrap3) 3_blank_7_a -1,0,1 -job_sword1,41,162,0 duplicate(SwdTrap3) 3_blank_7_b -1,0,1 -job_sword1,46,175,0 duplicate(SwdTrap3) 3_blank_8_a -1,0,1 -job_sword1,51,175,0 duplicate(SwdTrap3) 3_blank_8_b -1,0,1 -job_sword1,47,174,0 duplicate(SwdTrap3) 3_blank_8_c -1,1,0 -job_sword1,50,174,0 duplicate(SwdTrap3) 3_blank_8_d -1,1,0 -job_sword1,48,173,0 duplicate(SwdTrap3) 3_blank_8_e -1,0,1 -job_sword1,49,173,0 duplicate(SwdTrap3) 3_blank_8_f -1,0,1 -job_sword1,46,162,0 duplicate(SwdTrap3) 3_blank_9_a -1,0,1 -job_sword1,51,162,0 duplicate(SwdTrap3) 3_blank_9_b -1,0,1 -job_sword1,47,163,0 duplicate(SwdTrap3) 3_blank_9_c -1,1,0 -job_sword1,50,163,0 duplicate(SwdTrap3) 3_blank_9_d -1,1,0 -job_sword1,48,164,0 duplicate(SwdTrap3) 3_blank_9_e -1,0,1 -job_sword1,49,164,0 duplicate(SwdTrap3) 3_blank_9_f -1,0,1 -job_sword1,54,170,0 duplicate(SwdTrap3) 3_blank_10_a -1,0,1 -job_sword1,55,170,0 duplicate(SwdTrap3) 3_blank_10_b -1,0,1 -job_sword1,54,167,0 duplicate(SwdTrap3) 3_blank_10_c -1,0,1 -job_sword1,55,167,0 duplicate(SwdTrap3) 3_blank_10_d -1,0,1 -job_sword1,53,169,0 duplicate(SwdTrap3) 3_blank_10_e -1,1,0 -job_sword1,53,168,0 duplicate(SwdTrap3) 3_blank_10_f -1,1,0 -job_sword1,56,169,0 duplicate(SwdTrap3) 3_blank_10_g -1,1,0 -job_sword1,56,168,0 duplicate(SwdTrap3) 3_blank_10_h -1,1,0 -job_sword1,58,175,0 duplicate(SwdTrap3) 3_blank_11_a -1,0,1 -job_sword1,59,174,0 duplicate(SwdTrap3) 3_blank_11_b -1,1,0 -job_sword1,60,173,0 duplicate(SwdTrap3) 3_blank_11_c -1,0,1 -job_sword1,61,172,0 duplicate(SwdTrap3) 3_blank_11_d -1,1,0 -job_sword1,58,162,0 duplicate(SwdTrap3) 3_blank_12_a -1,0,1 -job_sword1,59,163,0 duplicate(SwdTrap3) 3_blank_12_b -1,1,0 -job_sword1,60,164,0 duplicate(SwdTrap3) 3_blank_12_c -1,0,1 -job_sword1,61,165,0 duplicate(SwdTrap3) 3_blank_12_d -1,1,0 -job_sword1,76,172,0 duplicate(SwdTrap3) 3_blank_13_a -1,1,0 -job_sword1,77,173,0 duplicate(SwdTrap3) 3_blank_13_b -1,0,1 -job_sword1,78,174,0 duplicate(SwdTrap3) 3_blank_13_c -1,1,0 -job_sword1,79,175,0 duplicate(SwdTrap3) 3_blank_13_d -1,0,1 -job_sword1,76,165,0 duplicate(SwdTrap3) 3_blank_14_a -1,1,0 -job_sword1,77,164,0 duplicate(SwdTrap3) 3_blank_14_b -1,0,1 -job_sword1,78,163,0 duplicate(SwdTrap3) 3_blank_14_c -1,1,0 -job_sword1,79,162,0 duplicate(SwdTrap3) 3_blank_14_d -1,0,1 -job_sword1,94,175,0 duplicate(SwdTrap3) 3_blank_15_a -1,0,1 -job_sword1,95,174,0 duplicate(SwdTrap3) 3_blank_15_b -1,1,0 -job_sword1,98,174,0 duplicate(SwdTrap3) 3_blank_15_c -1,1,0 -job_sword1,99,175,0 duplicate(SwdTrap3) 3_blank_16_d -1,0,1 -job_sword1,96,169,0 duplicate(SwdTrap3) 3_blank_17_a -1,0,0 -job_sword1,97,169,0 duplicate(SwdTrap3) 3_blank_17_b -1,0,0 -job_sword1,97,168,0 duplicate(SwdTrap3) 3_blank_17_c -1,0,0 -job_sword1,96,168,0 duplicate(SwdTrap3) 3_blank_17_d -1,0,0 -job_sword1,94,162,0 duplicate(SwdTrap3) 3_blank_18_a -1,0,1 -job_sword1,95,163,0 duplicate(SwdTrap3) 3_blank_18_b -1,1,0 -job_sword1,98,163,0 duplicate(SwdTrap3) 3_blank_18_c -1,1,0 -job_sword1,99,162,0 duplicate(SwdTrap3) 3_blank_18_d -1,0,1 -job_sword1,114,175,0 duplicate(SwdTrap3) 3_blank_19_a -1,0,1 -job_sword1,115,175,0 duplicate(SwdTrap3) 3_blank_19_b -1,0,1 -job_sword1,114,162,0 duplicate(SwdTrap3) 3_blank_20_a -1,0,1 -job_sword1,115,162,0 duplicate(SwdTrap3) 3_blank_20_b -1,0,1 -job_sword1,126,175,0 duplicate(SwdTrap3) 3_blank_21_a -1,0,1 -job_sword1,127,175,0 duplicate(SwdTrap3) 3_blank_21_b -1,0,1 -job_sword1,126,162,0 duplicate(SwdTrap3) 3_blank_23_a -1,0,1 -job_sword1,127,162,0 duplicate(SwdTrap3) 3_blank_23_b -1,0,1 -job_sword1,160,174,0 duplicate(SwdTrap3) 3_blank_24_a -1,0,2 -job_sword1,161,174,0 duplicate(SwdTrap3) 3_blank_24_b -1,0,2 -job_sword1,160,163,0 duplicate(SwdTrap3) 3_blank_25_a -1,0,2 -job_sword1,161,163,0 duplicate(SwdTrap3) 3_blank_25_b -1,0,2 -job_sword1,168,175,0 duplicate(SwdTrap3) 3_blank_26_a -1,0,2 -job_sword1,169,175,0 duplicate(SwdTrap3) 3_blank_26_b -1,0,2 -job_sword1,168,162,0 duplicate(SwdTrap3) 3_blank_27_a -1,0,2 -job_sword1,169,162,0 duplicate(SwdTrap3) 3_blank_27_b -1,0,2 -job_sword1,176,174,0 duplicate(SwdTrap3) 3_blank_28_a -1,0,2 -job_sword1,177,174,0 duplicate(SwdTrap3) 3_blank_28_b -1,0,2 -job_sword1,178,173,0 duplicate(SwdTrap3) 3_blank_28_c -1,1,0 -job_sword1,178,172,0 duplicate(SwdTrap3) 3_blank_28_d -1,1,0 -job_sword1,181,174,0 duplicate(SwdTrap3) 3_blank_28_e -1,2,0 -job_sword1,179,169,0 duplicate(SwdTrap3) 3_blank_29_a -1,3,0 -job_sword1,179,168,0 duplicate(SwdTrap3) 3_blank_29_b -1,3,0 -job_sword1,182,169,0 duplicate(SwdTrap3) 3_blank_29_c -1,0,2 -job_sword1,183,169,0 duplicate(SwdTrap3) 3_blank_29_d -1,0,2 -job_sword1,181,167,0 duplicate(SwdTrap3) 3_blank_29_e -1,1,0 -job_sword1,181,166,0 duplicate(SwdTrap3) 3_blank_29_f -1,1,0 -job_sword1,183,167,0 duplicate(SwdTrap3) 3_blank_29_g -1,0,1 -job_sword1,176,163,0 duplicate(SwdTrap3) 3_blank_30_a -1,0,2 -job_sword1,177,163,0 duplicate(SwdTrap3) 3_blank_30_b -1,0,2 -job_sword1,181,163,0 duplicate(SwdTrap3) 3_blank_30_c -1,2,0 +job_sword1,17,163,0 duplicate(SwdTrap3) 3_blank_2_a FAKE_NPC,2,0 +job_sword1,29,171,0 duplicate(SwdTrap3) 3_blank_3_a FAKE_NPC,2,0 +job_sword1,31,168,0 duplicate(SwdTrap3) 3_blank_3_b FAKE_NPC,0,2 +job_sword1,28,166,0 duplicate(SwdTrap3) 3_blank_3_c FAKE_NPC,2,0 +job_sword1,26,168,0 duplicate(SwdTrap3) 3_blank_3_d FAKE_NPC,0,2 +job_sword1,36,169,0 duplicate(SwdTrap3) 3_blank_4_a FAKE_NPC,0,0 +job_sword1,37,169,0 duplicate(SwdTrap3) 3_blank_4_b FAKE_NPC,0,0 +job_sword1,37,168,0 duplicate(SwdTrap3) 3_blank_4_c FAKE_NPC,0,0 +job_sword1,36,168,0 duplicate(SwdTrap3) 3_blank_4_c2 FAKE_NPC,0,0 +job_sword1,40,175,0 duplicate(SwdTrap3) 3_blank_5_a FAKE_NPC,0,1 +job_sword1,41,175,0 duplicate(SwdTrap3) 3_blank_5_b FAKE_NPC,0,1 +job_sword1,41,171,0 duplicate(SwdTrap3) 3_blank_6_a FAKE_NPC,1,0 +job_sword1,41,170,0 duplicate(SwdTrap3) 3_blank_6_b FAKE_NPC,1,0 +job_sword1,41,167,0 duplicate(SwdTrap3) 3_blank_6_c FAKE_NPC,1,0 +job_sword1,41,166,0 duplicate(SwdTrap3) 3_blank_6_d FAKE_NPC,1,0 +job_sword1,42,169,0 duplicate(SwdTrap3) 3_blank_6_e FAKE_NPC,0,1 +job_sword1,43,170,0 duplicate(SwdTrap3) 3_blank_6_f FAKE_NPC,0,1 +job_sword1,43,167,0 duplicate(SwdTrap3) 3_blank_6_g FAKE_NPC,0,1 +job_sword1,40,162,0 duplicate(SwdTrap3) 3_blank_7_a FAKE_NPC,0,1 +job_sword1,41,162,0 duplicate(SwdTrap3) 3_blank_7_b FAKE_NPC,0,1 +job_sword1,46,175,0 duplicate(SwdTrap3) 3_blank_8_a FAKE_NPC,0,1 +job_sword1,51,175,0 duplicate(SwdTrap3) 3_blank_8_b FAKE_NPC,0,1 +job_sword1,47,174,0 duplicate(SwdTrap3) 3_blank_8_c FAKE_NPC,1,0 +job_sword1,50,174,0 duplicate(SwdTrap3) 3_blank_8_d FAKE_NPC,1,0 +job_sword1,48,173,0 duplicate(SwdTrap3) 3_blank_8_e FAKE_NPC,0,1 +job_sword1,49,173,0 duplicate(SwdTrap3) 3_blank_8_f FAKE_NPC,0,1 +job_sword1,46,162,0 duplicate(SwdTrap3) 3_blank_9_a FAKE_NPC,0,1 +job_sword1,51,162,0 duplicate(SwdTrap3) 3_blank_9_b FAKE_NPC,0,1 +job_sword1,47,163,0 duplicate(SwdTrap3) 3_blank_9_c FAKE_NPC,1,0 +job_sword1,50,163,0 duplicate(SwdTrap3) 3_blank_9_d FAKE_NPC,1,0 +job_sword1,48,164,0 duplicate(SwdTrap3) 3_blank_9_e FAKE_NPC,0,1 +job_sword1,49,164,0 duplicate(SwdTrap3) 3_blank_9_f FAKE_NPC,0,1 +job_sword1,54,170,0 duplicate(SwdTrap3) 3_blank_10_a FAKE_NPC,0,1 +job_sword1,55,170,0 duplicate(SwdTrap3) 3_blank_10_b FAKE_NPC,0,1 +job_sword1,54,167,0 duplicate(SwdTrap3) 3_blank_10_c FAKE_NPC,0,1 +job_sword1,55,167,0 duplicate(SwdTrap3) 3_blank_10_d FAKE_NPC,0,1 +job_sword1,53,169,0 duplicate(SwdTrap3) 3_blank_10_e FAKE_NPC,1,0 +job_sword1,53,168,0 duplicate(SwdTrap3) 3_blank_10_f FAKE_NPC,1,0 +job_sword1,56,169,0 duplicate(SwdTrap3) 3_blank_10_g FAKE_NPC,1,0 +job_sword1,56,168,0 duplicate(SwdTrap3) 3_blank_10_h FAKE_NPC,1,0 +job_sword1,58,175,0 duplicate(SwdTrap3) 3_blank_11_a FAKE_NPC,0,1 +job_sword1,59,174,0 duplicate(SwdTrap3) 3_blank_11_b FAKE_NPC,1,0 +job_sword1,60,173,0 duplicate(SwdTrap3) 3_blank_11_c FAKE_NPC,0,1 +job_sword1,61,172,0 duplicate(SwdTrap3) 3_blank_11_d FAKE_NPC,1,0 +job_sword1,58,162,0 duplicate(SwdTrap3) 3_blank_12_a FAKE_NPC,0,1 +job_sword1,59,163,0 duplicate(SwdTrap3) 3_blank_12_b FAKE_NPC,1,0 +job_sword1,60,164,0 duplicate(SwdTrap3) 3_blank_12_c FAKE_NPC,0,1 +job_sword1,61,165,0 duplicate(SwdTrap3) 3_blank_12_d FAKE_NPC,1,0 +job_sword1,76,172,0 duplicate(SwdTrap3) 3_blank_13_a FAKE_NPC,1,0 +job_sword1,77,173,0 duplicate(SwdTrap3) 3_blank_13_b FAKE_NPC,0,1 +job_sword1,78,174,0 duplicate(SwdTrap3) 3_blank_13_c FAKE_NPC,1,0 +job_sword1,79,175,0 duplicate(SwdTrap3) 3_blank_13_d FAKE_NPC,0,1 +job_sword1,76,165,0 duplicate(SwdTrap3) 3_blank_14_a FAKE_NPC,1,0 +job_sword1,77,164,0 duplicate(SwdTrap3) 3_blank_14_b FAKE_NPC,0,1 +job_sword1,78,163,0 duplicate(SwdTrap3) 3_blank_14_c FAKE_NPC,1,0 +job_sword1,79,162,0 duplicate(SwdTrap3) 3_blank_14_d FAKE_NPC,0,1 +job_sword1,94,175,0 duplicate(SwdTrap3) 3_blank_15_a FAKE_NPC,0,1 +job_sword1,95,174,0 duplicate(SwdTrap3) 3_blank_15_b FAKE_NPC,1,0 +job_sword1,98,174,0 duplicate(SwdTrap3) 3_blank_15_c FAKE_NPC,1,0 +job_sword1,99,175,0 duplicate(SwdTrap3) 3_blank_16_d FAKE_NPC,0,1 +job_sword1,96,169,0 duplicate(SwdTrap3) 3_blank_17_a FAKE_NPC,0,0 +job_sword1,97,169,0 duplicate(SwdTrap3) 3_blank_17_b FAKE_NPC,0,0 +job_sword1,97,168,0 duplicate(SwdTrap3) 3_blank_17_c FAKE_NPC,0,0 +job_sword1,96,168,0 duplicate(SwdTrap3) 3_blank_17_d FAKE_NPC,0,0 +job_sword1,94,162,0 duplicate(SwdTrap3) 3_blank_18_a FAKE_NPC,0,1 +job_sword1,95,163,0 duplicate(SwdTrap3) 3_blank_18_b FAKE_NPC,1,0 +job_sword1,98,163,0 duplicate(SwdTrap3) 3_blank_18_c FAKE_NPC,1,0 +job_sword1,99,162,0 duplicate(SwdTrap3) 3_blank_18_d FAKE_NPC,0,1 +job_sword1,114,175,0 duplicate(SwdTrap3) 3_blank_19_a FAKE_NPC,0,1 +job_sword1,115,175,0 duplicate(SwdTrap3) 3_blank_19_b FAKE_NPC,0,1 +job_sword1,114,162,0 duplicate(SwdTrap3) 3_blank_20_a FAKE_NPC,0,1 +job_sword1,115,162,0 duplicate(SwdTrap3) 3_blank_20_b FAKE_NPC,0,1 +job_sword1,126,175,0 duplicate(SwdTrap3) 3_blank_21_a FAKE_NPC,0,1 +job_sword1,127,175,0 duplicate(SwdTrap3) 3_blank_21_b FAKE_NPC,0,1 +job_sword1,126,162,0 duplicate(SwdTrap3) 3_blank_23_a FAKE_NPC,0,1 +job_sword1,127,162,0 duplicate(SwdTrap3) 3_blank_23_b FAKE_NPC,0,1 +job_sword1,160,174,0 duplicate(SwdTrap3) 3_blank_24_a FAKE_NPC,0,2 +job_sword1,161,174,0 duplicate(SwdTrap3) 3_blank_24_b FAKE_NPC,0,2 +job_sword1,160,163,0 duplicate(SwdTrap3) 3_blank_25_a FAKE_NPC,0,2 +job_sword1,161,163,0 duplicate(SwdTrap3) 3_blank_25_b FAKE_NPC,0,2 +job_sword1,168,175,0 duplicate(SwdTrap3) 3_blank_26_a FAKE_NPC,0,2 +job_sword1,169,175,0 duplicate(SwdTrap3) 3_blank_26_b FAKE_NPC,0,2 +job_sword1,168,162,0 duplicate(SwdTrap3) 3_blank_27_a FAKE_NPC,0,2 +job_sword1,169,162,0 duplicate(SwdTrap3) 3_blank_27_b FAKE_NPC,0,2 +job_sword1,176,174,0 duplicate(SwdTrap3) 3_blank_28_a FAKE_NPC,0,2 +job_sword1,177,174,0 duplicate(SwdTrap3) 3_blank_28_b FAKE_NPC,0,2 +job_sword1,178,173,0 duplicate(SwdTrap3) 3_blank_28_c FAKE_NPC,1,0 +job_sword1,178,172,0 duplicate(SwdTrap3) 3_blank_28_d FAKE_NPC,1,0 +job_sword1,181,174,0 duplicate(SwdTrap3) 3_blank_28_e FAKE_NPC,2,0 +job_sword1,179,169,0 duplicate(SwdTrap3) 3_blank_29_a FAKE_NPC,3,0 +job_sword1,179,168,0 duplicate(SwdTrap3) 3_blank_29_b FAKE_NPC,3,0 +job_sword1,182,169,0 duplicate(SwdTrap3) 3_blank_29_c FAKE_NPC,0,2 +job_sword1,183,169,0 duplicate(SwdTrap3) 3_blank_29_d FAKE_NPC,0,2 +job_sword1,181,167,0 duplicate(SwdTrap3) 3_blank_29_e FAKE_NPC,1,0 +job_sword1,181,166,0 duplicate(SwdTrap3) 3_blank_29_f FAKE_NPC,1,0 +job_sword1,183,167,0 duplicate(SwdTrap3) 3_blank_29_g FAKE_NPC,0,1 +job_sword1,176,163,0 duplicate(SwdTrap3) 3_blank_30_a FAKE_NPC,0,2 +job_sword1,177,163,0 duplicate(SwdTrap3) 3_blank_30_b FAKE_NPC,0,2 +job_sword1,181,163,0 duplicate(SwdTrap3) 3_blank_30_c FAKE_NPC,2,0 //== Monsters (all three courses) ========================== job_sword1,0,0,0,0 monster Chonchon 1183,20,0,0,0 diff --git a/npc/pre-re/merchants/shops.txt b/npc/pre-re/merchants/shops.txt index 20f0ee933..4abe887a6 100644 --- a/npc/pre-re/merchants/shops.txt +++ b/npc/pre-re/merchants/shops.txt @@ -31,9 +31,63 @@ //================= Description =========================================== //= Pre-renewal-specific town shop NPCs. //================= Current Version ======================================= -//= 1.2 +//= 1.4 //========================================================================= +//== Prontera ============================================== +prt_fild05,290,221,2 trader Tool Dealer#prt 4_M_01,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Green_Potion; + sellitem Center_Potion; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; +} + +prt_in,126,76,0 trader Tool Dealer#prt1 1_M_INNKEEPER,{ +OnInit: + sellitem Spectacles; + sellitem Arrow; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Green_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; + sellitem One_Eyed_Glass; +} + +prontera,218,211,4 trader Pet Groomer#prt 4_M_TELEPORTER,{ +OnInit: + sellitem Pet_Food; + sellitem Pet_Incubator; + sellitem Backpack; + sellitem Rocker_Glasses; + sellitem Mojji; + sellitem Flame_Gemstone; + sellitem Vital_Flower_; + sellitem Vital_Flower; + sellitem Bun_; + sellitem Damp_Darkness; + sellitem Small_Snow_Flower; + sellitem Fresh_Plant; + sellitem Big_Cell; + sellitem Apple_Pudding; + sellitem Mystic_Stone; + sellitem Flavored_Alcohol; + sellitem Grilled_Rice_Cake; + sellitem Fish_With_Blue_Back; + sellitem Pumpkin_Pie_; + sellitem Traditional_Cookie; +} + //== Izlude ================================================ izlude,105,99,0 trader Butcher#iz 1_M_JOBGUIDER,{ OnInit: @@ -94,3 +148,67 @@ OnInit: sellitem Jungle_Carbine; sellitem Thunder_P; } + +//== Morroc ================================================ +moc_ruins,91,128,4 trader Tool Dealer#moc1 4_F_04,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Green_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +moc_ruins,114,63,6 trader Tool Dealer#moc2 4W_M_03,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Green_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; + sellitem Luxury_Sunglasses; +} + +moc_ruins,118,170,4 trader Pet Groomer#moc 4_M_TELEPORTER,{ +OnInit: + sellitem Pet_Food; + sellitem Pet_Incubator; + sellitem Backpack; + sellitem Rocker_Glasses; + sellitem Mojji; + sellitem Vital_Flower_; + sellitem Flame_Gemstone; + sellitem Bun_; +} + +//== Cooking Addition ====================================== +prontera,156,212,1 trader Chef Assistant#prt 8_F_GIRL,{ +OnInit: + sellitem Plain_Sauce; + sellitem Red_Spice; + sellitem Pot; + sellitem Bread; +} + +moc_ruins,115,123,5 trader Chef Assistant#moc 4_M_04,{ +OnInit: + sellitem Hot_Sauce; + sellitem Sweet_Sauce; + sellitem Plain_Sauce; + sellitem Red_Spice; + sellitem Yellow_Spice; +} diff --git a/npc/pre-re/mobs/dungeons/lhz_dun.txt b/npc/pre-re/mobs/dungeons/lhz_dun.txt index b75f72c5f..725fbe2fe 100644 --- a/npc/pre-re/mobs/dungeons/lhz_dun.txt +++ b/npc/pre-re/mobs/dungeons/lhz_dun.txt @@ -229,7 +229,7 @@ lhz_dun03,139,117,20,11 monster Sniper Cecil 1644,1,2700000,2500000,1 lhz_dun03,138,138,36,34 monster High Priest Margaretha 1643,1,3300000,3000000,1 lhz_dun03,138,138,36,34 monster High Wizard Kathryne 1645,1,2580000,2460000,1 -lhz_dun03,2,2,0 script summon_boss_lt -1,{ +lhz_dun03,2,2,0 script summon_boss_lt FAKE_NPC,{ OnInit: initnpctimer; end; diff --git a/npc/pre-re/mobs/fields/niflheim.txt b/npc/pre-re/mobs/fields/niflheim.txt index f6998af62..3c9cc5fe0 100644 --- a/npc/pre-re/mobs/fields/niflheim.txt +++ b/npc/pre-re/mobs/fields/niflheim.txt @@ -70,7 +70,7 @@ niflheim,0,0,0,0 monster Heirozoist 1510,10,1200000,600000,0 niflheim,0,0,0,0 monster Quve 1508,20,300000,150000,0 niflheim,0,0,0,0 monster Lude 1509,20,300000,150000,0 -niflheim,1,1,0 script NifInvasion -1,{ +niflheim,1,1,0 script NifInvasion FAKE_NPC,{ OnInit: while(1) diff --git a/npc/quests/dandelion_request.txt b/npc/quests/dandelion_request.txt index 32bf2f407..20ccb9332 100644 --- a/npc/quests/dandelion_request.txt +++ b/npc/quests/dandelion_request.txt @@ -2794,7 +2794,7 @@ OnTouch: end; } -que_job01,1,1,1 script #maobartimer1 -1,{ +que_job01,1,1,1 script #maobartimer1 FAKE_NPC,{ OnEnter: initnpctimer; @@ -2924,7 +2924,7 @@ OnTouch: end; } -que_job01,1,2,1 script #maobartimer2 -1,{ +que_job01,1,2,1 script #maobartimer2 FAKE_NPC,{ OnEnter: initnpctimer; @@ -6446,7 +6446,7 @@ OnEnter: end; } -yuno_in04,1,1,1 script #maobooktimer -1,{ +yuno_in04,1,1,1 script #maobooktimer FAKE_NPC,{ OnEnter: initnpctimer; @@ -9970,7 +9970,7 @@ OnEnter: end; } -morocc,1,1,1 script #mao_timer -1,{ +morocc,1,1,1 script #mao_timer FAKE_NPC,{ OnStart: initnpctimer; @@ -9986,7 +9986,7 @@ OnStop: end; } -morocc,1,2,1 script #mao_manager -1,{ +morocc,1,2,1 script #mao_manager FAKE_NPC,{ OnStart: initnpctimer; diff --git a/npc/quests/eye_of_hellion.txt b/npc/quests/eye_of_hellion.txt index 52fb40ef2..1b3c18595 100644 --- a/npc/quests/eye_of_hellion.txt +++ b/npc/quests/eye_of_hellion.txt @@ -1619,7 +1619,7 @@ payon,182,132,3 script Grout'he Tuccok#hellion 1_M_02,{ } } -payon,101,190,0 script #paypuzz1 -1,1,1,{ +payon,101,190,0 script #paypuzz1 FAKE_NPC,1,1,{ OnTouch: if (HELLIONQ == 48) { mes "[" + strcharinfo(0) + "]"; diff --git a/npc/quests/first_class/tu_archer.txt b/npc/quests/first_class/tu_archer.txt index 064f3fd9f..144bdfb2f 100644 --- a/npc/quests/first_class/tu_archer.txt +++ b/npc/quests/first_class/tu_archer.txt @@ -1403,7 +1403,7 @@ pay_arche,84,139,3 script Seisner 4_F_JOB_HUNTER,{ pay_arche,76,135,3 script #Target HIDDEN_NPC,{ end; } //== Acolyte =============================================== -- script ::Acolyte_Tu -1,{ +- script ::Acolyte_Tu FAKE_NPC,{ mes "[Acolyte]"; if(tu_archer01 == 14){ if (gettime(GETTIME_HOUR) >= 18 && gettime(GETTIME_HOUR) < 22) { diff --git a/npc/quests/kiel_hyre_quest.txt b/npc/quests/kiel_hyre_quest.txt index 610ad4e00..756da22a7 100644 --- a/npc/quests/kiel_hyre_quest.txt +++ b/npc/quests/kiel_hyre_quest.txt @@ -1986,7 +1986,7 @@ kh_vila,178,20,0 duplicate(BookKHQ1) Book#kh3 HIDDEN_NPC kh_vila,175,19,0 duplicate(BookKHQ1) Book#kh4 HIDDEN_NPC //- Store room interior; Letter to Elly on the floor. - -kh_vila,179,11,0 script Letter#kh -1,1,1,{ +kh_vila,179,11,0 script Letter#kh FAKE_NPC,1,1,{ //OnTouch2: OnTouch: if (KielHyreQuest == 18) { @@ -3443,19 +3443,19 @@ kh_dun01,162,206,0 duplicate(KHKeyardReader) Mechanical Device HIDDEN_NPC //- Keep monsters out of the quest area - // Silly really since the rest of it's a dungeon -//kh_dun01,180,220,0 script Monster Warp#kh1::KHMobWarp -1,5,20,{ +//kh_dun01,180,220,0 script Monster Warp#kh1::KHMobWarp FAKE_NPC,5,20,{ //OnTouchNPC: // warp "kh_dun01",178,138; // end; //} -//kh_dun01,190,220,0 duplicate(KHMobWarp) Monster Warp#kh2 -1,5,20 -//kh_dun01,200,250,0 duplicate(KHMobWarp) Monster Warp#kh3 -1,5,20 -//kh_dun01,210,220,0 duplicate(KHMobWarp) Monster Warp#kh4 -1,5,20 -//kh_dun01,220,220,0 duplicate(KHMobWarp) Monster Warp#kh5 -1,5,10 +//kh_dun01,190,220,0 duplicate(KHMobWarp) Monster Warp#kh2 FAKE_NPC,5,20 +//kh_dun01,200,250,0 duplicate(KHMobWarp) Monster Warp#kh3 FAKE_NPC,5,20 +//kh_dun01,210,220,0 duplicate(KHMobWarp) Monster Warp#kh4 FAKE_NPC,5,20 +//kh_dun01,220,220,0 duplicate(KHMobWarp) Monster Warp#kh5 FAKE_NPC,5,10 //- Kiel Hyre - OnTouch - -kh_dun01,224,233,0 script Factory B Area Door -1,5,5,{ +kh_dun01,224,233,0 script Factory B Area Door FAKE_NPC,5,5,{ //OnTouch2: OnTouch: if (KielHyreQuest == 40) { @@ -4611,7 +4611,7 @@ kh_mansion,18,30,4 script Allysia 4_F_KHELLISIA,{ } //- Abduction triggering NPC - -lighthalzen,188,200,0 script Abduction_trigger -1,3,1,{ +lighthalzen,188,200,0 script Abduction_trigger FAKE_NPC,3,1,{ //OnTouch2: OnTouch: if (KielHyreQuest == 50) { @@ -6191,7 +6191,7 @@ OnTouch: } //- Kiehl's Room; Kiehl_Room_Trap (Entry way trap) - -kh_kiehl02,49,10,0 script Kiehl_Room_Trap -1,5,3,{ +kh_kiehl02,49,10,0 script Kiehl_Room_Trap FAKE_NPC,5,3,{ end; OnTouch: @@ -6729,7 +6729,7 @@ OnTimer1000: } //- Kiehl's Room; NPC for mob control, timers, and other junk. - -kh_kiehl02,1,1,0 script KiehlRoom -1,{ +kh_kiehl02,1,1,0 script KiehlRoom FAKE_NPC,{ end; OnKiehlMobDead: diff --git a/npc/quests/monstertamers.txt b/npc/quests/monstertamers.txt index d8e9e375a..5e8884b17 100644 --- a/npc/quests/monstertamers.txt +++ b/npc/quests/monstertamers.txt @@ -484,7 +484,7 @@ aldeba_in,168,175,4 script Monster Tamer#alde 4_M_TELEPORTER,{ } } -- script ::MonsterTamer_izlude -1,{ +- script ::MonsterTamer_izlude FAKE_NPC,{ mes "[Shogo]"; mes "Are you pre-occupied with"; mes "gathering items for monsters"; diff --git a/npc/quests/newgears/2004_headgears.txt b/npc/quests/newgears/2004_headgears.txt index e9cb42069..6ad398d23 100644 --- a/npc/quests/newgears/2004_headgears.txt +++ b/npc/quests/newgears/2004_headgears.txt @@ -2610,7 +2610,7 @@ OnInit: end; } -pay_dun03,48,84,4 script SpawnManager#Kitsune -1,{ +pay_dun03,48,84,4 script SpawnManager#Kitsune FAKE_NPC,{ OnInit: .MyMobs1 = 1; .MyMobs2 = 1; diff --git a/npc/quests/okolnir.txt b/npc/quests/okolnir.txt index d29f0d5b4..67582267e 100644 --- a/npc/quests/okolnir.txt +++ b/npc/quests/okolnir.txt @@ -41,7 +41,7 @@ function script F_Okolnir { return .@sub$; } -- script Guide#gq_main -1,{ +- script Guide#gq_main FAKE_NPC,{ .@sub$ = callfunc("F_Okolnir"); .@GID = getcastledata(strnpcinfo(4),1); if (getcharid(2) == .@GID) { @@ -188,7 +188,7 @@ que_qsch03,345,23,0 warp Gate02#gq_sch03 1,1,schg_cas03,81,95 que_qsch04,345,23,0 warp Gate02#gq_sch04 1,1,schg_cas04,369,306 que_qsch05,345,23,0 warp Gate02#gq_sch05 1,1,schg_cas05,369,306 -- script Wish Maiden#gq_main -1,{ +- script Wish Maiden#gq_main FAKE_NPC,{ .@sub$ = callfunc("F_Okolnir"); .@t$ = ((compare(strnpcinfo(4),"aru"))?"arug_cas0":"schg_cas0")+(charat(strnpcinfo(4),getstrlen(strnpcinfo(4))-1)); .@GID = getcastledata(.@t$,1); @@ -386,7 +386,7 @@ que_qsch03,345,82,3 duplicate(Wish Maiden#gq_main) Wish Maiden#gq_sch03 4_F_VALK que_qsch04,345,82,3 duplicate(Wish Maiden#gq_main) Wish Maiden#gq_sch04 4_F_VALKYRIE2 que_qsch05,345,82,3 duplicate(Wish Maiden#gq_main) Wish Maiden#gq_sch05 4_F_VALKYRIE2 -- script Gate01#gq_main -1,{ +- script Gate01#gq_main FAKE_NPC,{ function SMonster; .@sub$ = callfunc("F_Okolnir"); @@ -481,7 +481,7 @@ que_qsch03,346,81,0 duplicate(Gate01#gq_main) Gate01#gq_sch03 WARPNPC,1,1 que_qsch04,346,81,0 duplicate(Gate01#gq_main) Gate01#gq_sch04 WARPNPC,1,1 que_qsch05,346,81,0 duplicate(Gate01#gq_main) Gate01#gq_sch05 WARPNPC,1,1 -- script #Gate_manager_main -1,{ +- script #Gate_manager_main FAKE_NPC,{ end; OnMyMobDead: @@ -504,7 +504,7 @@ que_qsch03,1,4,0 duplicate(#Gate_manager_main) #Gate_manager_sch03 CLEAR_NPC que_qsch04,1,4,0 duplicate(#Gate_manager_main) #Gate_manager_sch04 CLEAR_NPC que_qsch05,1,4,0 duplicate(#Gate_manager_main) #Gate_manager_sch05 CLEAR_NPC -- script #gq_miromob2_main -1,{ +- script #gq_miromob2_main FAKE_NPC,{ end; OnEnable: @@ -558,7 +558,7 @@ que_qsch03,1,4,0 duplicate(#gq_miromob2_main) #gq_miromob2_sch03 CLEAR_NPC que_qsch04,1,4,0 duplicate(#gq_miromob2_main) #gq_miromob2_sch04 CLEAR_NPC que_qsch05,1,4,0 duplicate(#gq_miromob2_main) #gq_miromob2_sch05 CLEAR_NPC -- script #okolnir_main -1,{ +- script #okolnir_main FAKE_NPC,{ end; OnEnable: @@ -755,7 +755,7 @@ que_qsch03,1,1,0 duplicate(#okolnir_main) #okolnir_sch03 CLEAR_NPC que_qsch04,1,1,0 duplicate(#okolnir_main) #okolnir_sch04 CLEAR_NPC que_qsch05,1,1,0 duplicate(#okolnir_main) #okolnir_sch05 CLEAR_NPC -- script #Maze_Manager_main -1,{ +- script #Maze_Manager_main FAKE_NPC,{ end; OnEnable: @@ -839,7 +839,7 @@ que_qsch03,1,2,0 duplicate(#Maze_Manager_main) #Maze_Manager_sch03 CLEAR_NPC que_qsch04,1,2,0 duplicate(#Maze_Manager_main) #Maze_Manager_sch04 CLEAR_NPC que_qsch05,1,2,0 duplicate(#Maze_Manager_main) #Maze_Manager_sch05 CLEAR_NPC -- script #miro_bf_main -1,{ +- script #miro_bf_main FAKE_NPC,{ function Cell; OnEnable: .@sub$ = callfunc("F_Okolnir"); @@ -876,7 +876,7 @@ que_qsch03,2,1,0 duplicate(#miro_bf_main) #miro_bf_sch03 CLEAR_NPC que_qsch04,2,1,0 duplicate(#miro_bf_main) #miro_bf_sch04 CLEAR_NPC que_qsch05,2,1,0 duplicate(#miro_bf_main) #miro_bf_sch05 CLEAR_NPC -- script #miro_rf_main -1,{ +- script #miro_rf_main FAKE_NPC,{ function Cell; OnEnable: .@sub$ = callfunc("F_Okolnir"); @@ -914,7 +914,7 @@ que_qsch03,2,2,0 duplicate(#miro_rf_main) #miro_rf_sch03 CLEAR_NPC que_qsch04,2,2,0 duplicate(#miro_rf_main) #miro_rf_sch04 CLEAR_NPC que_qsch05,2,2,0 duplicate(#miro_rf_main) #miro_rf_sch05 CLEAR_NPC -- script #miro_yf_main -1,{ +- script #miro_yf_main FAKE_NPC,{ function Cell; OnEnable: .@sub$ = callfunc("F_Okolnir"); @@ -952,7 +952,7 @@ que_qsch03,2,3,0 duplicate(#miro_yf_main) #miro_yf_sch03 CLEAR_NPC que_qsch04,2,3,0 duplicate(#miro_yf_main) #miro_yf_sch04 CLEAR_NPC que_qsch05,2,3,0 duplicate(#miro_yf_main) #miro_yf_sch05 CLEAR_NPC -- script windpath01_main -1,{ +- script windpath01_main FAKE_NPC,{ end; OnTouch: @@ -989,7 +989,7 @@ que_qsch03,113,165,0 warp windpath02_sch03 1,1,que_qsch03,139,172 que_qsch04,113,165,0 warp windpath02_sch04 1,1,que_qsch04,139,172 que_qsch05,113,165,0 warp windpath02_sch05 1,1,que_qsch05,139,172 -- script Piamette#main -1,{ +- script Piamette#main FAKE_NPC,{ end; OnInit: @@ -1009,7 +1009,7 @@ que_qsch03,131,136,3 duplicate(Piamette#main) Piamette#sch03 PIAMETTE que_qsch04,131,136,3 duplicate(Piamette#main) Piamette#sch04 PIAMETTE que_qsch05,131,136,3 duplicate(Piamette#main) Piamette#sch05 PIAMETTE -- script #event_start01_main -1,{ +- script #event_start01_main FAKE_NPC,{ end; OnEnable: @@ -1056,18 +1056,18 @@ OnInit: disablenpc "#event_start01_"+.@sub$; end; } -que_qaru01,114,158,0 duplicate(#event_start01_main) #event_start01_aru01 -1,1,1 -que_qaru02,114,158,0 duplicate(#event_start01_main) #event_start01_aru02 -1,1,1 -que_qaru03,114,158,0 duplicate(#event_start01_main) #event_start01_aru03 -1,1,1 -que_qaru04,114,158,0 duplicate(#event_start01_main) #event_start01_aru04 -1,1,1 -que_qaru05,114,158,0 duplicate(#event_start01_main) #event_start01_aru05 -1,1,1 -que_qsch01,114,158,0 duplicate(#event_start01_main) #event_start01_sch01 -1,1,1 -que_qsch02,114,158,0 duplicate(#event_start01_main) #event_start01_sch02 -1,1,1 -que_qsch03,114,158,0 duplicate(#event_start01_main) #event_start01_sch03 -1,1,1 -que_qsch04,114,158,0 duplicate(#event_start01_main) #event_start01_sch04 -1,1,1 -que_qsch05,114,158,0 duplicate(#event_start01_main) #event_start01_sch05 -1,1,1 +que_qaru01,114,158,0 duplicate(#event_start01_main) #event_start01_aru01 FAKE_NPC,1,1 +que_qaru02,114,158,0 duplicate(#event_start01_main) #event_start01_aru02 FAKE_NPC,1,1 +que_qaru03,114,158,0 duplicate(#event_start01_main) #event_start01_aru03 FAKE_NPC,1,1 +que_qaru04,114,158,0 duplicate(#event_start01_main) #event_start01_aru04 FAKE_NPC,1,1 +que_qaru05,114,158,0 duplicate(#event_start01_main) #event_start01_aru05 FAKE_NPC,1,1 +que_qsch01,114,158,0 duplicate(#event_start01_main) #event_start01_sch01 FAKE_NPC,1,1 +que_qsch02,114,158,0 duplicate(#event_start01_main) #event_start01_sch02 FAKE_NPC,1,1 +que_qsch03,114,158,0 duplicate(#event_start01_main) #event_start01_sch03 FAKE_NPC,1,1 +que_qsch04,114,158,0 duplicate(#event_start01_main) #event_start01_sch04 FAKE_NPC,1,1 +que_qsch05,114,158,0 duplicate(#event_start01_main) #event_start01_sch05 FAKE_NPC,1,1 -- script #gdtimer01_main -1,{ +- script #gdtimer01_main FAKE_NPC,{ end; OnEnable: @@ -1161,7 +1161,7 @@ que_qsch03,2,2,0 duplicate(#gdtimer01_main) #gdtimer01_sch03 CLEAR_NPC que_qsch04,2,2,0 duplicate(#gdtimer01_main) #gdtimer01_sch04 CLEAR_NPC que_qsch05,2,2,0 duplicate(#gdtimer01_main) #gdtimer01_sch05 CLEAR_NPC -- script #gdtimer02_main -1,{ +- script #gdtimer02_main FAKE_NPC,{ end; OnEnable: @@ -1235,7 +1235,7 @@ que_qsch03,2,3,0 duplicate(#gdtimer02_main) #gdtimer02_sch03 CLEAR_NPC que_qsch04,2,3,0 duplicate(#gdtimer02_main) #gdtimer02_sch04 CLEAR_NPC que_qsch05,2,3,0 duplicate(#gdtimer02_main) #gdtimer02_sch05 CLEAR_NPC -- script #piamette_main -1,{ +- script #piamette_main FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1278,7 +1278,7 @@ que_qsch03,1,4,0 duplicate(#piamette_main) #piamette_sch03 CLEAR_NPC que_qsch04,1,4,0 duplicate(#piamette_main) #piamette_sch04 CLEAR_NPC que_qsch05,1,4,0 duplicate(#piamette_main) #piamette_sch05 CLEAR_NPC -- script #getspells_main -1,{ +- script #getspells_main FAKE_NPC,{ end; OnEnable: @@ -1321,88 +1321,88 @@ OnInit: disablenpc "#getspell0"+.@i+"_"+.@sub$; end; } -que_qaru01,113,135,0 duplicate(#getspells_main) #getspell01_aru01 -1,1,1 -que_qaru02,113,135,0 duplicate(#getspells_main) #getspell01_aru02 -1,1,1 -que_qaru03,113,135,0 duplicate(#getspells_main) #getspell01_aru03 -1,1,1 -que_qaru04,113,135,0 duplicate(#getspells_main) #getspell01_aru04 -1,1,1 -que_qaru05,113,135,0 duplicate(#getspells_main) #getspell01_aru05 -1,1,1 -que_qsch01,113,135,0 duplicate(#getspells_main) #getspell01_sch01 -1,1,1 -que_qsch02,113,135,0 duplicate(#getspells_main) #getspell01_sch02 -1,1,1 -que_qsch03,113,135,0 duplicate(#getspells_main) #getspell01_sch03 -1,1,1 -que_qsch04,113,135,0 duplicate(#getspells_main) #getspell01_sch04 -1,1,1 -que_qsch05,113,135,0 duplicate(#getspells_main) #getspell01_sch05 -1,1,1 -que_qaru01,146,150,0 duplicate(#getspells_main) #getspell02_aru01 -1,1,1 -que_qaru02,146,150,0 duplicate(#getspells_main) #getspell02_aru02 -1,1,1 -que_qaru03,146,150,0 duplicate(#getspells_main) #getspell02_aru03 -1,1,1 -que_qaru04,146,150,0 duplicate(#getspells_main) #getspell02_aru04 -1,1,1 -que_qaru05,146,150,0 duplicate(#getspells_main) #getspell02_aru05 -1,1,1 -que_qsch01,146,150,0 duplicate(#getspells_main) #getspell02_sch01 -1,1,1 -que_qsch02,146,150,0 duplicate(#getspells_main) #getspell02_sch02 -1,1,1 -que_qsch03,146,150,0 duplicate(#getspells_main) #getspell02_sch03 -1,1,1 -que_qsch04,146,150,0 duplicate(#getspells_main) #getspell02_sch04 -1,1,1 -que_qsch05,146,150,0 duplicate(#getspells_main) #getspell02_sch05 -1,1,1 -que_qaru01,131,117,0 duplicate(#getspells_main) #getspell03_aru01 -1,1,1 -que_qaru02,131,117,0 duplicate(#getspells_main) #getspell03_aru02 -1,1,1 -que_qaru03,131,117,0 duplicate(#getspells_main) #getspell03_aru03 -1,1,1 -que_qaru04,131,117,0 duplicate(#getspells_main) #getspell03_aru04 -1,1,1 -que_qaru05,131,117,0 duplicate(#getspells_main) #getspell03_aru05 -1,1,1 -que_qsch01,131,117,0 duplicate(#getspells_main) #getspell03_sch01 -1,1,1 -que_qsch02,131,117,0 duplicate(#getspells_main) #getspell03_sch02 -1,1,1 -que_qsch03,131,117,0 duplicate(#getspells_main) #getspell03_sch03 -1,1,1 -que_qsch04,131,117,0 duplicate(#getspells_main) #getspell03_sch04 -1,1,1 -que_qsch05,131,117,0 duplicate(#getspells_main) #getspell03_sch05 -1,1,1 -que_qaru01,117,150,0 duplicate(#getspells_main) #getspell04_aru01 -1,1,1 -que_qaru02,117,150,0 duplicate(#getspells_main) #getspell04_aru02 -1,1,1 -que_qaru03,117,150,0 duplicate(#getspells_main) #getspell04_aru03 -1,1,1 -que_qaru04,117,150,0 duplicate(#getspells_main) #getspell04_aru04 -1,1,1 -que_qaru05,117,150,0 duplicate(#getspells_main) #getspell04_aru05 -1,1,1 -que_qsch01,117,150,0 duplicate(#getspells_main) #getspell04_sch01 -1,1,1 -que_qsch02,117,150,0 duplicate(#getspells_main) #getspell04_sch02 -1,1,1 -que_qsch03,117,150,0 duplicate(#getspells_main) #getspell04_sch03 -1,1,1 -que_qsch04,117,150,0 duplicate(#getspells_main) #getspell04_sch04 -1,1,1 -que_qsch05,117,150,0 duplicate(#getspells_main) #getspell04_sch05 -1,1,1 -que_qaru01,150,135,0 duplicate(#getspells_main) #getspell05_aru01 -1,1,1 -que_qaru02,150,135,0 duplicate(#getspells_main) #getspell05_aru02 -1,1,1 -que_qaru03,150,135,0 duplicate(#getspells_main) #getspell05_aru03 -1,1,1 -que_qaru04,150,135,0 duplicate(#getspells_main) #getspell05_aru04 -1,1,1 -que_qaru05,150,135,0 duplicate(#getspells_main) #getspell05_aru05 -1,1,1 -que_qsch01,150,135,0 duplicate(#getspells_main) #getspell05_sch01 -1,1,1 -que_qsch02,150,135,0 duplicate(#getspells_main) #getspell05_sch02 -1,1,1 -que_qsch03,150,135,0 duplicate(#getspells_main) #getspell05_sch03 -1,1,1 -que_qsch04,150,135,0 duplicate(#getspells_main) #getspell05_sch04 -1,1,1 -que_qsch05,150,135,0 duplicate(#getspells_main) #getspell05_sch05 -1,1,1 -que_qaru01,117,121,0 duplicate(#getspells_main) #getspell06_aru01 -1,1,1 -que_qaru02,117,121,0 duplicate(#getspells_main) #getspell06_aru02 -1,1,1 -que_qaru03,117,121,0 duplicate(#getspells_main) #getspell06_aru03 -1,1,1 -que_qaru04,117,121,0 duplicate(#getspells_main) #getspell06_aru04 -1,1,1 -que_qaru05,117,121,0 duplicate(#getspells_main) #getspell06_aru05 -1,1,1 -que_qsch01,117,121,0 duplicate(#getspells_main) #getspell06_sch01 -1,1,1 -que_qsch02,117,121,0 duplicate(#getspells_main) #getspell06_sch02 -1,1,1 -que_qsch03,117,121,0 duplicate(#getspells_main) #getspell06_sch03 -1,1,1 -que_qsch04,117,121,0 duplicate(#getspells_main) #getspell06_sch04 -1,1,1 -que_qsch05,117,121,0 duplicate(#getspells_main) #getspell06_sch05 -1,1,1 -que_qaru01,131,154,0 duplicate(#getspells_main) #getspell07_aru01 -1,1,1 -que_qaru02,131,154,0 duplicate(#getspells_main) #getspell07_aru02 -1,1,1 -que_qaru03,131,154,0 duplicate(#getspells_main) #getspell07_aru03 -1,1,1 -que_qaru04,131,154,0 duplicate(#getspells_main) #getspell07_aru04 -1,1,1 -que_qaru05,131,154,0 duplicate(#getspells_main) #getspell07_aru05 -1,1,1 -que_qsch01,131,154,0 duplicate(#getspells_main) #getspell07_sch01 -1,1,1 -que_qsch02,131,154,0 duplicate(#getspells_main) #getspell07_sch02 -1,1,1 -que_qsch03,131,154,0 duplicate(#getspells_main) #getspell07_sch03 -1,1,1 -que_qsch04,131,154,0 duplicate(#getspells_main) #getspell07_sch04 -1,1,1 -que_qsch05,131,154,0 duplicate(#getspells_main) #getspell07_sch05 -1,1,1 -que_qaru01,146,121,0 duplicate(#getspells_main) #getspell08_aru01 -1,1,1 -que_qaru02,146,121,0 duplicate(#getspells_main) #getspell08_aru02 -1,1,1 -que_qaru03,146,121,0 duplicate(#getspells_main) #getspell08_aru03 -1,1,1 -que_qaru04,146,121,0 duplicate(#getspells_main) #getspell08_aru04 -1,1,1 -que_qaru05,146,121,0 duplicate(#getspells_main) #getspell08_aru05 -1,1,1 -que_qsch01,146,121,0 duplicate(#getspells_main) #getspell08_sch01 -1,1,1 -que_qsch02,146,121,0 duplicate(#getspells_main) #getspell08_sch02 -1,1,1 -que_qsch03,146,121,0 duplicate(#getspells_main) #getspell08_sch03 -1,1,1 -que_qsch04,146,121,0 duplicate(#getspells_main) #getspell08_sch04 -1,1,1 -que_qsch05,146,121,0 duplicate(#getspells_main) #getspell08_sch05 -1,1,1 - -- script #main_cages -1,{ +que_qaru01,113,135,0 duplicate(#getspells_main) #getspell01_aru01 FAKE_NPC,1,1 +que_qaru02,113,135,0 duplicate(#getspells_main) #getspell01_aru02 FAKE_NPC,1,1 +que_qaru03,113,135,0 duplicate(#getspells_main) #getspell01_aru03 FAKE_NPC,1,1 +que_qaru04,113,135,0 duplicate(#getspells_main) #getspell01_aru04 FAKE_NPC,1,1 +que_qaru05,113,135,0 duplicate(#getspells_main) #getspell01_aru05 FAKE_NPC,1,1 +que_qsch01,113,135,0 duplicate(#getspells_main) #getspell01_sch01 FAKE_NPC,1,1 +que_qsch02,113,135,0 duplicate(#getspells_main) #getspell01_sch02 FAKE_NPC,1,1 +que_qsch03,113,135,0 duplicate(#getspells_main) #getspell01_sch03 FAKE_NPC,1,1 +que_qsch04,113,135,0 duplicate(#getspells_main) #getspell01_sch04 FAKE_NPC,1,1 +que_qsch05,113,135,0 duplicate(#getspells_main) #getspell01_sch05 FAKE_NPC,1,1 +que_qaru01,146,150,0 duplicate(#getspells_main) #getspell02_aru01 FAKE_NPC,1,1 +que_qaru02,146,150,0 duplicate(#getspells_main) #getspell02_aru02 FAKE_NPC,1,1 +que_qaru03,146,150,0 duplicate(#getspells_main) #getspell02_aru03 FAKE_NPC,1,1 +que_qaru04,146,150,0 duplicate(#getspells_main) #getspell02_aru04 FAKE_NPC,1,1 +que_qaru05,146,150,0 duplicate(#getspells_main) #getspell02_aru05 FAKE_NPC,1,1 +que_qsch01,146,150,0 duplicate(#getspells_main) #getspell02_sch01 FAKE_NPC,1,1 +que_qsch02,146,150,0 duplicate(#getspells_main) #getspell02_sch02 FAKE_NPC,1,1 +que_qsch03,146,150,0 duplicate(#getspells_main) #getspell02_sch03 FAKE_NPC,1,1 +que_qsch04,146,150,0 duplicate(#getspells_main) #getspell02_sch04 FAKE_NPC,1,1 +que_qsch05,146,150,0 duplicate(#getspells_main) #getspell02_sch05 FAKE_NPC,1,1 +que_qaru01,131,117,0 duplicate(#getspells_main) #getspell03_aru01 FAKE_NPC,1,1 +que_qaru02,131,117,0 duplicate(#getspells_main) #getspell03_aru02 FAKE_NPC,1,1 +que_qaru03,131,117,0 duplicate(#getspells_main) #getspell03_aru03 FAKE_NPC,1,1 +que_qaru04,131,117,0 duplicate(#getspells_main) #getspell03_aru04 FAKE_NPC,1,1 +que_qaru05,131,117,0 duplicate(#getspells_main) #getspell03_aru05 FAKE_NPC,1,1 +que_qsch01,131,117,0 duplicate(#getspells_main) #getspell03_sch01 FAKE_NPC,1,1 +que_qsch02,131,117,0 duplicate(#getspells_main) #getspell03_sch02 FAKE_NPC,1,1 +que_qsch03,131,117,0 duplicate(#getspells_main) #getspell03_sch03 FAKE_NPC,1,1 +que_qsch04,131,117,0 duplicate(#getspells_main) #getspell03_sch04 FAKE_NPC,1,1 +que_qsch05,131,117,0 duplicate(#getspells_main) #getspell03_sch05 FAKE_NPC,1,1 +que_qaru01,117,150,0 duplicate(#getspells_main) #getspell04_aru01 FAKE_NPC,1,1 +que_qaru02,117,150,0 duplicate(#getspells_main) #getspell04_aru02 FAKE_NPC,1,1 +que_qaru03,117,150,0 duplicate(#getspells_main) #getspell04_aru03 FAKE_NPC,1,1 +que_qaru04,117,150,0 duplicate(#getspells_main) #getspell04_aru04 FAKE_NPC,1,1 +que_qaru05,117,150,0 duplicate(#getspells_main) #getspell04_aru05 FAKE_NPC,1,1 +que_qsch01,117,150,0 duplicate(#getspells_main) #getspell04_sch01 FAKE_NPC,1,1 +que_qsch02,117,150,0 duplicate(#getspells_main) #getspell04_sch02 FAKE_NPC,1,1 +que_qsch03,117,150,0 duplicate(#getspells_main) #getspell04_sch03 FAKE_NPC,1,1 +que_qsch04,117,150,0 duplicate(#getspells_main) #getspell04_sch04 FAKE_NPC,1,1 +que_qsch05,117,150,0 duplicate(#getspells_main) #getspell04_sch05 FAKE_NPC,1,1 +que_qaru01,150,135,0 duplicate(#getspells_main) #getspell05_aru01 FAKE_NPC,1,1 +que_qaru02,150,135,0 duplicate(#getspells_main) #getspell05_aru02 FAKE_NPC,1,1 +que_qaru03,150,135,0 duplicate(#getspells_main) #getspell05_aru03 FAKE_NPC,1,1 +que_qaru04,150,135,0 duplicate(#getspells_main) #getspell05_aru04 FAKE_NPC,1,1 +que_qaru05,150,135,0 duplicate(#getspells_main) #getspell05_aru05 FAKE_NPC,1,1 +que_qsch01,150,135,0 duplicate(#getspells_main) #getspell05_sch01 FAKE_NPC,1,1 +que_qsch02,150,135,0 duplicate(#getspells_main) #getspell05_sch02 FAKE_NPC,1,1 +que_qsch03,150,135,0 duplicate(#getspells_main) #getspell05_sch03 FAKE_NPC,1,1 +que_qsch04,150,135,0 duplicate(#getspells_main) #getspell05_sch04 FAKE_NPC,1,1 +que_qsch05,150,135,0 duplicate(#getspells_main) #getspell05_sch05 FAKE_NPC,1,1 +que_qaru01,117,121,0 duplicate(#getspells_main) #getspell06_aru01 FAKE_NPC,1,1 +que_qaru02,117,121,0 duplicate(#getspells_main) #getspell06_aru02 FAKE_NPC,1,1 +que_qaru03,117,121,0 duplicate(#getspells_main) #getspell06_aru03 FAKE_NPC,1,1 +que_qaru04,117,121,0 duplicate(#getspells_main) #getspell06_aru04 FAKE_NPC,1,1 +que_qaru05,117,121,0 duplicate(#getspells_main) #getspell06_aru05 FAKE_NPC,1,1 +que_qsch01,117,121,0 duplicate(#getspells_main) #getspell06_sch01 FAKE_NPC,1,1 +que_qsch02,117,121,0 duplicate(#getspells_main) #getspell06_sch02 FAKE_NPC,1,1 +que_qsch03,117,121,0 duplicate(#getspells_main) #getspell06_sch03 FAKE_NPC,1,1 +que_qsch04,117,121,0 duplicate(#getspells_main) #getspell06_sch04 FAKE_NPC,1,1 +que_qsch05,117,121,0 duplicate(#getspells_main) #getspell06_sch05 FAKE_NPC,1,1 +que_qaru01,131,154,0 duplicate(#getspells_main) #getspell07_aru01 FAKE_NPC,1,1 +que_qaru02,131,154,0 duplicate(#getspells_main) #getspell07_aru02 FAKE_NPC,1,1 +que_qaru03,131,154,0 duplicate(#getspells_main) #getspell07_aru03 FAKE_NPC,1,1 +que_qaru04,131,154,0 duplicate(#getspells_main) #getspell07_aru04 FAKE_NPC,1,1 +que_qaru05,131,154,0 duplicate(#getspells_main) #getspell07_aru05 FAKE_NPC,1,1 +que_qsch01,131,154,0 duplicate(#getspells_main) #getspell07_sch01 FAKE_NPC,1,1 +que_qsch02,131,154,0 duplicate(#getspells_main) #getspell07_sch02 FAKE_NPC,1,1 +que_qsch03,131,154,0 duplicate(#getspells_main) #getspell07_sch03 FAKE_NPC,1,1 +que_qsch04,131,154,0 duplicate(#getspells_main) #getspell07_sch04 FAKE_NPC,1,1 +que_qsch05,131,154,0 duplicate(#getspells_main) #getspell07_sch05 FAKE_NPC,1,1 +que_qaru01,146,121,0 duplicate(#getspells_main) #getspell08_aru01 FAKE_NPC,1,1 +que_qaru02,146,121,0 duplicate(#getspells_main) #getspell08_aru02 FAKE_NPC,1,1 +que_qaru03,146,121,0 duplicate(#getspells_main) #getspell08_aru03 FAKE_NPC,1,1 +que_qaru04,146,121,0 duplicate(#getspells_main) #getspell08_aru04 FAKE_NPC,1,1 +que_qaru05,146,121,0 duplicate(#getspells_main) #getspell08_aru05 FAKE_NPC,1,1 +que_qsch01,146,121,0 duplicate(#getspells_main) #getspell08_sch01 FAKE_NPC,1,1 +que_qsch02,146,121,0 duplicate(#getspells_main) #getspell08_sch02 FAKE_NPC,1,1 +que_qsch03,146,121,0 duplicate(#getspells_main) #getspell08_sch03 FAKE_NPC,1,1 +que_qsch04,146,121,0 duplicate(#getspells_main) #getspell08_sch04 FAKE_NPC,1,1 +que_qsch05,146,121,0 duplicate(#getspells_main) #getspell08_sch05 FAKE_NPC,1,1 + +- script #main_cages FAKE_NPC,{ end; OnTouch: @@ -1421,66 +1421,66 @@ OnInit: disablenpc "#"+.@sub$+"_cage0"+.@i; end; } -que_qaru01,103,153,0 duplicate(#main_cages) #aru01_cage01 -1,1,1 -que_qaru02,103,153,0 duplicate(#main_cages) #aru02_cage01 -1,1,1 -que_qaru03,103,153,0 duplicate(#main_cages) #aru03_cage01 -1,1,1 -que_qaru04,103,153,0 duplicate(#main_cages) #aru04_cage01 -1,1,1 -que_qaru05,103,153,0 duplicate(#main_cages) #aru05_cage01 -1,1,1 -que_qsch01,103,153,0 duplicate(#main_cages) #sch01_cage01 -1,1,1 -que_qsch02,103,153,0 duplicate(#main_cages) #sch02_cage01 -1,1,1 -que_qsch03,103,153,0 duplicate(#main_cages) #sch03_cage01 -1,1,1 -que_qsch04,103,153,0 duplicate(#main_cages) #sch04_cage01 -1,1,1 -que_qsch05,103,153,0 duplicate(#main_cages) #sch05_cage01 -1,1,1 -que_qaru01,102,135,0 duplicate(#main_cages) #aru01_cage02 -1,1,1 -que_qaru02,102,135,0 duplicate(#main_cages) #aru02_cage02 -1,1,1 -que_qaru03,102,135,0 duplicate(#main_cages) #aru03_cage02 -1,1,1 -que_qaru04,102,135,0 duplicate(#main_cages) #aru04_cage02 -1,1,1 -que_qaru05,102,135,0 duplicate(#main_cages) #aru05_cage02 -1,1,1 -que_qsch01,102,135,0 duplicate(#main_cages) #sch01_cage02 -1,1,1 -que_qsch02,102,135,0 duplicate(#main_cages) #sch02_cage02 -1,1,1 -que_qsch03,102,135,0 duplicate(#main_cages) #sch03_cage02 -1,1,1 -que_qsch04,102,135,0 duplicate(#main_cages) #sch04_cage02 -1,1,1 -que_qsch05,102,135,0 duplicate(#main_cages) #sch05_cage02 -1,1,1 -que_qaru01,113,111,0 duplicate(#main_cages) #aru01_cage03 -1,1,1 -que_qaru02,113,111,0 duplicate(#main_cages) #aru02_cage03 -1,1,1 -que_qaru03,113,111,0 duplicate(#main_cages) #aru03_cage03 -1,1,1 -que_qaru04,113,111,0 duplicate(#main_cages) #aru04_cage03 -1,1,1 -que_qaru05,113,111,0 duplicate(#main_cages) #aru05_cage03 -1,1,1 -que_qsch01,113,111,0 duplicate(#main_cages) #sch01_cage03 -1,1,1 -que_qsch02,113,111,0 duplicate(#main_cages) #sch02_cage03 -1,1,1 -que_qsch03,113,111,0 duplicate(#main_cages) #sch03_cage03 -1,1,1 -que_qsch04,113,111,0 duplicate(#main_cages) #sch04_cage03 -1,1,1 -que_qsch05,113,111,0 duplicate(#main_cages) #sch05_cage03 -1,1,1 -que_qaru01,161,105,0 duplicate(#main_cages) #aru01_cage04 -1,1,1 -que_qaru02,161,105,0 duplicate(#main_cages) #aru02_cage04 -1,1,1 -que_qaru03,161,105,0 duplicate(#main_cages) #aru03_cage04 -1,1,1 -que_qaru04,161,105,0 duplicate(#main_cages) #aru04_cage04 -1,1,1 -que_qaru05,161,105,0 duplicate(#main_cages) #aru05_cage04 -1,1,1 -que_qsch01,161,105,0 duplicate(#main_cages) #sch01_cage04 -1,1,1 -que_qsch02,161,105,0 duplicate(#main_cages) #sch02_cage04 -1,1,1 -que_qsch03,161,105,0 duplicate(#main_cages) #sch03_cage04 -1,1,1 -que_qsch04,161,105,0 duplicate(#main_cages) #sch04_cage04 -1,1,1 -que_qsch05,161,105,0 duplicate(#main_cages) #sch05_cage04 -1,1,1 -que_qaru01,168,135,0 duplicate(#main_cages) #aru01_cage05 -1,1,1 -que_qaru02,168,135,0 duplicate(#main_cages) #aru02_cage05 -1,1,1 -que_qaru03,168,135,0 duplicate(#main_cages) #aru03_cage05 -1,1,1 -que_qaru04,168,135,0 duplicate(#main_cages) #aru04_cage05 -1,1,1 -que_qaru05,168,135,0 duplicate(#main_cages) #aru05_cage05 -1,1,1 -que_qsch01,168,135,0 duplicate(#main_cages) #sch01_cage05 -1,1,1 -que_qsch02,168,135,0 duplicate(#main_cages) #sch02_cage05 -1,1,1 -que_qsch03,168,135,0 duplicate(#main_cages) #sch03_cage05 -1,1,1 -que_qsch04,168,135,0 duplicate(#main_cages) #sch04_cage05 -1,1,1 -que_qsch05,168,135,0 duplicate(#main_cages) #sch05_cage05 -1,1,1 -que_qaru01,150,159,0 duplicate(#main_cages) #aru01_cage06 -1,1,1 -que_qaru02,150,159,0 duplicate(#main_cages) #aru02_cage06 -1,1,1 -que_qaru03,150,159,0 duplicate(#main_cages) #aru03_cage06 -1,1,1 -que_qaru04,150,159,0 duplicate(#main_cages) #aru04_cage06 -1,1,1 -que_qaru05,150,159,0 duplicate(#main_cages) #aru05_cage06 -1,1,1 -que_qsch01,150,159,0 duplicate(#main_cages) #sch01_cage06 -1,1,1 -que_qsch02,150,159,0 duplicate(#main_cages) #sch02_cage06 -1,1,1 -que_qsch03,150,159,0 duplicate(#main_cages) #sch03_cage06 -1,1,1 -que_qsch04,150,159,0 duplicate(#main_cages) #sch04_cage06 -1,1,1 -que_qsch05,150,159,0 duplicate(#main_cages) #sch05_cage06 -1,1,1 +que_qaru01,103,153,0 duplicate(#main_cages) #aru01_cage01 FAKE_NPC,1,1 +que_qaru02,103,153,0 duplicate(#main_cages) #aru02_cage01 FAKE_NPC,1,1 +que_qaru03,103,153,0 duplicate(#main_cages) #aru03_cage01 FAKE_NPC,1,1 +que_qaru04,103,153,0 duplicate(#main_cages) #aru04_cage01 FAKE_NPC,1,1 +que_qaru05,103,153,0 duplicate(#main_cages) #aru05_cage01 FAKE_NPC,1,1 +que_qsch01,103,153,0 duplicate(#main_cages) #sch01_cage01 FAKE_NPC,1,1 +que_qsch02,103,153,0 duplicate(#main_cages) #sch02_cage01 FAKE_NPC,1,1 +que_qsch03,103,153,0 duplicate(#main_cages) #sch03_cage01 FAKE_NPC,1,1 +que_qsch04,103,153,0 duplicate(#main_cages) #sch04_cage01 FAKE_NPC,1,1 +que_qsch05,103,153,0 duplicate(#main_cages) #sch05_cage01 FAKE_NPC,1,1 +que_qaru01,102,135,0 duplicate(#main_cages) #aru01_cage02 FAKE_NPC,1,1 +que_qaru02,102,135,0 duplicate(#main_cages) #aru02_cage02 FAKE_NPC,1,1 +que_qaru03,102,135,0 duplicate(#main_cages) #aru03_cage02 FAKE_NPC,1,1 +que_qaru04,102,135,0 duplicate(#main_cages) #aru04_cage02 FAKE_NPC,1,1 +que_qaru05,102,135,0 duplicate(#main_cages) #aru05_cage02 FAKE_NPC,1,1 +que_qsch01,102,135,0 duplicate(#main_cages) #sch01_cage02 FAKE_NPC,1,1 +que_qsch02,102,135,0 duplicate(#main_cages) #sch02_cage02 FAKE_NPC,1,1 +que_qsch03,102,135,0 duplicate(#main_cages) #sch03_cage02 FAKE_NPC,1,1 +que_qsch04,102,135,0 duplicate(#main_cages) #sch04_cage02 FAKE_NPC,1,1 +que_qsch05,102,135,0 duplicate(#main_cages) #sch05_cage02 FAKE_NPC,1,1 +que_qaru01,113,111,0 duplicate(#main_cages) #aru01_cage03 FAKE_NPC,1,1 +que_qaru02,113,111,0 duplicate(#main_cages) #aru02_cage03 FAKE_NPC,1,1 +que_qaru03,113,111,0 duplicate(#main_cages) #aru03_cage03 FAKE_NPC,1,1 +que_qaru04,113,111,0 duplicate(#main_cages) #aru04_cage03 FAKE_NPC,1,1 +que_qaru05,113,111,0 duplicate(#main_cages) #aru05_cage03 FAKE_NPC,1,1 +que_qsch01,113,111,0 duplicate(#main_cages) #sch01_cage03 FAKE_NPC,1,1 +que_qsch02,113,111,0 duplicate(#main_cages) #sch02_cage03 FAKE_NPC,1,1 +que_qsch03,113,111,0 duplicate(#main_cages) #sch03_cage03 FAKE_NPC,1,1 +que_qsch04,113,111,0 duplicate(#main_cages) #sch04_cage03 FAKE_NPC,1,1 +que_qsch05,113,111,0 duplicate(#main_cages) #sch05_cage03 FAKE_NPC,1,1 +que_qaru01,161,105,0 duplicate(#main_cages) #aru01_cage04 FAKE_NPC,1,1 +que_qaru02,161,105,0 duplicate(#main_cages) #aru02_cage04 FAKE_NPC,1,1 +que_qaru03,161,105,0 duplicate(#main_cages) #aru03_cage04 FAKE_NPC,1,1 +que_qaru04,161,105,0 duplicate(#main_cages) #aru04_cage04 FAKE_NPC,1,1 +que_qaru05,161,105,0 duplicate(#main_cages) #aru05_cage04 FAKE_NPC,1,1 +que_qsch01,161,105,0 duplicate(#main_cages) #sch01_cage04 FAKE_NPC,1,1 +que_qsch02,161,105,0 duplicate(#main_cages) #sch02_cage04 FAKE_NPC,1,1 +que_qsch03,161,105,0 duplicate(#main_cages) #sch03_cage04 FAKE_NPC,1,1 +que_qsch04,161,105,0 duplicate(#main_cages) #sch04_cage04 FAKE_NPC,1,1 +que_qsch05,161,105,0 duplicate(#main_cages) #sch05_cage04 FAKE_NPC,1,1 +que_qaru01,168,135,0 duplicate(#main_cages) #aru01_cage05 FAKE_NPC,1,1 +que_qaru02,168,135,0 duplicate(#main_cages) #aru02_cage05 FAKE_NPC,1,1 +que_qaru03,168,135,0 duplicate(#main_cages) #aru03_cage05 FAKE_NPC,1,1 +que_qaru04,168,135,0 duplicate(#main_cages) #aru04_cage05 FAKE_NPC,1,1 +que_qaru05,168,135,0 duplicate(#main_cages) #aru05_cage05 FAKE_NPC,1,1 +que_qsch01,168,135,0 duplicate(#main_cages) #sch01_cage05 FAKE_NPC,1,1 +que_qsch02,168,135,0 duplicate(#main_cages) #sch02_cage05 FAKE_NPC,1,1 +que_qsch03,168,135,0 duplicate(#main_cages) #sch03_cage05 FAKE_NPC,1,1 +que_qsch04,168,135,0 duplicate(#main_cages) #sch04_cage05 FAKE_NPC,1,1 +que_qsch05,168,135,0 duplicate(#main_cages) #sch05_cage05 FAKE_NPC,1,1 +que_qaru01,150,159,0 duplicate(#main_cages) #aru01_cage06 FAKE_NPC,1,1 +que_qaru02,150,159,0 duplicate(#main_cages) #aru02_cage06 FAKE_NPC,1,1 +que_qaru03,150,159,0 duplicate(#main_cages) #aru03_cage06 FAKE_NPC,1,1 +que_qaru04,150,159,0 duplicate(#main_cages) #aru04_cage06 FAKE_NPC,1,1 +que_qaru05,150,159,0 duplicate(#main_cages) #aru05_cage06 FAKE_NPC,1,1 +que_qsch01,150,159,0 duplicate(#main_cages) #sch01_cage06 FAKE_NPC,1,1 +que_qsch02,150,159,0 duplicate(#main_cages) #sch02_cage06 FAKE_NPC,1,1 +que_qsch03,150,159,0 duplicate(#main_cages) #sch03_cage06 FAKE_NPC,1,1 +que_qsch04,150,159,0 duplicate(#main_cages) #sch04_cage06 FAKE_NPC,1,1 +que_qsch05,150,159,0 duplicate(#main_cages) #sch05_cage06 FAKE_NPC,1,1 que_qaru01,1,8,0 script #gd_main_mobctrl CLEAR_NPC,{ end; @@ -1528,7 +1528,7 @@ que_qsch03,1,8,0 duplicate(#gd_main_mobctrl) #gd_sch03_mobctrl CLEAR_NPC que_qsch04,1,8,0 duplicate(#gd_main_mobctrl) #gd_sch04_mobctrl CLEAR_NPC que_qsch05,1,8,0 duplicate(#gd_main_mobctrl) #gd_sch05_mobctrl CLEAR_NPC -- script windpaths_main -1,{ +- script windpaths_main FAKE_NPC,{ end; OnTouch: @@ -1568,7 +1568,7 @@ que_qsch03,128,104,0 duplicate(windpaths_main) windpath04_sch03 WARPNPC,1,1 que_qsch04,128,104,0 duplicate(windpaths_main) windpath04_sch04 WARPNPC,1,1 que_qsch05,128,104,0 duplicate(windpaths_main) windpath04_sch05 WARPNPC,1,1 -- script #nm_switch_main -1,{ +- script #nm_switch_main FAKE_NPC,{ end; OnTouch: @@ -1627,18 +1627,18 @@ OnInit: disablenpc "#nm_switch_"+.@sub$; end; } -que_qaru01,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru01 -1,5,5 -que_qaru02,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru02 -1,5,5 -que_qaru03,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru03 -1,5,5 -que_qaru04,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru04 -1,5,5 -que_qaru05,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru05 -1,5,5 -que_qsch01,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch01 -1,5,5 -que_qsch02,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch02 -1,5,5 -que_qsch03,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch03 -1,5,5 -que_qsch04,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch04 -1,5,5 -que_qsch05,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch05 -1,5,5 - -- script #nmsommain_jin01 -1,{ +que_qaru01,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru01 FAKE_NPC,5,5 +que_qaru02,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru02 FAKE_NPC,5,5 +que_qaru03,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru03 FAKE_NPC,5,5 +que_qaru04,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru04 FAKE_NPC,5,5 +que_qaru05,253,273,0 duplicate(#nm_switch_main) #nm_switch_aru05 FAKE_NPC,5,5 +que_qsch01,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch01 FAKE_NPC,5,5 +que_qsch02,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch02 FAKE_NPC,5,5 +que_qsch03,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch03 FAKE_NPC,5,5 +que_qsch04,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch04 FAKE_NPC,5,5 +que_qsch05,253,273,0 duplicate(#nm_switch_main) #nm_switch_sch05 FAKE_NPC,5,5 + +- script #nmsommain_jin01 FAKE_NPC,{ OnEnable: .@sub$ = callfunc("F_Okolnir"); donpcevent "#"+.@sub$+"_stone01::OnEnable"; @@ -1676,18 +1676,18 @@ OnTimer180000: OnMyMobDead: end; } -que_qaru01,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru01_jin01 -1 -que_qaru02,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru02_jin01 -1 -que_qaru03,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru03_jin01 -1 -que_qaru04,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru04_jin01 -1 -que_qaru05,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru05_jin01 -1 -que_qsch01,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch01_jin01 -1 -que_qsch02,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch02_jin01 -1 -que_qsch03,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch03_jin01 -1 -que_qsch04,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch04_jin01 -1 -que_qsch05,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch05_jin01 -1 +que_qaru01,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru01_jin01 FAKE_NPC +que_qaru02,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru02_jin01 FAKE_NPC +que_qaru03,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru03_jin01 FAKE_NPC +que_qaru04,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru04_jin01 FAKE_NPC +que_qaru05,229,297,0 duplicate(#nmsommain_jin01) #nmsomaru05_jin01 FAKE_NPC +que_qsch01,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch01_jin01 FAKE_NPC +que_qsch02,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch02_jin01 FAKE_NPC +que_qsch03,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch03_jin01 FAKE_NPC +que_qsch04,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch04_jin01 FAKE_NPC +que_qsch05,229,297,0 duplicate(#nmsommain_jin01) #nmsomsch05_jin01 FAKE_NPC -- script #main_stone01 -1,{ +- script #main_stone01 FAKE_NPC,{ end; OnEnable: @@ -1724,7 +1724,7 @@ que_qsch03,2,8,0 duplicate(#main_stone01) #sch03_stone01 CLEAR_NPC que_qsch04,2,8,0 duplicate(#main_stone01) #sch04_stone01 CLEAR_NPC que_qsch05,2,8,0 duplicate(#main_stone01) #sch05_stone01 CLEAR_NPC -- script #nmsommain_jin02 -1,{ +- script #nmsommain_jin02 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1760,18 +1760,18 @@ OnTimer180000: OnMyMobDead: end; } -que_qaru01,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru01_jin02 -1 -que_qaru02,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru02_jin02 -1 -que_qaru03,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru03_jin02 -1 -que_qaru04,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru04_jin02 -1 -que_qaru05,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru05_jin02 -1 -que_qsch01,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch01_jin02 -1 -que_qsch02,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch02_jin02 -1 -que_qsch03,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch03_jin02 -1 -que_qsch04,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch04_jin02 -1 -que_qsch05,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch05_jin02 -1 +que_qaru01,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru01_jin02 FAKE_NPC +que_qaru02,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru02_jin02 FAKE_NPC +que_qaru03,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru03_jin02 FAKE_NPC +que_qaru04,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru04_jin02 FAKE_NPC +que_qaru05,275,299,0 duplicate(#nmsommain_jin02) #nmsomaru05_jin02 FAKE_NPC +que_qsch01,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch01_jin02 FAKE_NPC +que_qsch02,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch02_jin02 FAKE_NPC +que_qsch03,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch03_jin02 FAKE_NPC +que_qsch04,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch04_jin02 FAKE_NPC +que_qsch05,275,299,0 duplicate(#nmsommain_jin02) #nmsomsch05_jin02 FAKE_NPC -- script #main_stone02 -1,{ +- script #main_stone02 FAKE_NPC,{ end; OnEnable: @@ -1808,7 +1808,7 @@ que_qsch03,2,9,0 duplicate(#main_stone02) #sch03_stone02 CLEAR_NPC que_qsch04,2,9,0 duplicate(#main_stone02) #sch04_stone02 CLEAR_NPC que_qsch05,2,9,0 duplicate(#main_stone02) #sch05_stone02 CLEAR_NPC -- script #nmsommain_jin03 -1,{ +- script #nmsommain_jin03 FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -1852,18 +1852,18 @@ OnTimer360000: OnMyMobDead: end; } -que_qaru01,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru01_jin03 -1 -que_qaru02,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru02_jin03 -1 -que_qaru03,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru03_jin03 -1 -que_qaru04,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru04_jin03 -1 -que_qaru05,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru05_jin03 -1 -que_qsch01,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch01_jin03 -1 -que_qsch02,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch02_jin03 -1 -que_qsch03,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch03_jin03 -1 -que_qsch04,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch04_jin03 -1 -que_qsch05,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch05_jin03 -1 +que_qaru01,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru01_jin03 FAKE_NPC +que_qaru02,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru02_jin03 FAKE_NPC +que_qaru03,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru03_jin03 FAKE_NPC +que_qaru04,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru04_jin03 FAKE_NPC +que_qaru05,251,340,0 duplicate(#nmsommain_jin03) #nmsomaru05_jin03 FAKE_NPC +que_qsch01,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch01_jin03 FAKE_NPC +que_qsch02,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch02_jin03 FAKE_NPC +que_qsch03,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch03_jin03 FAKE_NPC +que_qsch04,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch04_jin03 FAKE_NPC +que_qsch05,251,340,0 duplicate(#nmsommain_jin03) #nmsomsch05_jin03 FAKE_NPC -- script #main_stone03 -1,{ +- script #main_stone03 FAKE_NPC,{ end; OnEnable: @@ -1900,7 +1900,7 @@ que_qsch03,2,10,0 duplicate(#main_stone03) #sch03_stone03 CLEAR_NPC que_qsch04,2,10,0 duplicate(#main_stone03) #sch04_stone03 CLEAR_NPC que_qsch05,2,10,0 duplicate(#main_stone03) #sch05_stone03 CLEAR_NPC -- script Guard of Shadow#main_all -1,{ +- script Guard of Shadow#main_all FAKE_NPC,{ end; OnTouch: .@sub$ = callfunc("F_Okolnir"); @@ -1973,7 +1973,7 @@ que_qsch05,224,290,5 duplicate(Guard of Shadow#main_all) Guard of Shadow#sch05_0 que_qsch05,236,296,5 duplicate(Guard of Shadow#main_all) Guard of Shadow#sch05_03 SKOGUL,4,4 que_qsch05,225,303,5 duplicate(Guard of Shadow#main_all) Guard of Shadow#sch05_04 SKOGUL,4,4 -- script Bloody Hunter#main_all -1,{ +- script Bloody Hunter#main_all FAKE_NPC,{ end; OnTouch: @@ -2047,7 +2047,7 @@ que_qsch05,271,283,3 duplicate(Bloody Hunter#main_all) Bloody Hunter#sch05_ac02 que_qsch05,270,307,3 duplicate(Bloody Hunter#main_all) Bloody Hunter#sch05_ac03 FRUS,4,4 que_qsch05,279,300,3 duplicate(Bloody Hunter#main_all) Bloody Hunter#sch05_ac04 FRUS,4,4 -- script Temple Keeper#main_all -1,{ +- script Temple Keeper#main_all FAKE_NPC,{ end; OnTouch: @@ -2099,7 +2099,7 @@ que_qsch04,255,330,3 duplicate(Temple Keeper#main_all) Temple Keeper#sch04_ac02 que_qsch05,247,330,5 duplicate(Temple Keeper#main_all) Temple Keeper#sch05_ac01 GARDEN_WATCHER,4,4 que_qsch05,255,330,3 duplicate(Temple Keeper#main_all) Temple Keeper#sch05_ac02 GARDEN_WATCHER,4,4 -- script Wish Maiden#main_boss -1,{ +- script Wish Maiden#main_boss FAKE_NPC,{ end; OnDisable: @@ -2157,7 +2157,7 @@ que_qsch03,251,255,3 duplicate(Wish Maiden#main_boss) Wish Maiden#sch03_boss WIS que_qsch04,251,255,3 duplicate(Wish Maiden#main_boss) Wish Maiden#sch04_boss WISH_MAIDEN que_qsch05,251,255,3 duplicate(Wish Maiden#main_boss) Wish Maiden#sch05_boss WISH_MAIDEN -- script Wish Maiden#main_gift -1,{ +- script Wish Maiden#main_gift FAKE_NPC,{ .@sub$ = callfunc("F_Okolnir"); .@t$ = ((compare(strnpcinfo(4),"aru"))?"arug_cas0":"schg_cas0")+(charat(strnpcinfo(4),getstrlen(strnpcinfo(4))-1)); .@GID = getcastledata(.@t$,1); @@ -2286,7 +2286,7 @@ que_qsch03,252,340,3 duplicate(Wish Maiden#main_gift) Wish Maiden#sch03_gift 4_F que_qsch04,252,340,3 duplicate(Wish Maiden#main_gift) Wish Maiden#sch04_gift 4_F_VALKYRIE2 que_qsch05,252,340,3 duplicate(Wish Maiden#main_gift) Wish Maiden#sch05_gift 4_F_VALKYRIE2 -- script #to_agit_main_gate -1,{ +- script #to_agit_main_gate FAKE_NPC,{ end; OnTouch: @@ -2310,7 +2310,7 @@ que_qsch03,252,339,0 duplicate(#to_agit_main_gate) #to_agit_sch03_gate WARPNPC,1 que_qsch04,252,339,0 duplicate(#to_agit_main_gate) #to_agit_sch04_gate WARPNPC,1,1 que_qsch05,252,339,0 duplicate(#to_agit_main_gate) #to_agit_sch05_gate WARPNPC,1,1 -- script #okolnir_main_time01 -1,{ +- script #okolnir_main_time01 FAKE_NPC,{ end; OnEnable: diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt index 8c0adc421..07bc2ff6b 100644 --- a/npc/quests/quests_13_1.txt +++ b/npc/quests/quests_13_1.txt @@ -586,7 +586,7 @@ geffen,90,67,3 script Promotional Staff#gef 4W_SAILOR,{ end; } -- script ::PromotionalStaff_izlude -1,{ +- script ::PromotionalStaff_izlude FAKE_NPC,{ if (ep13_ryu > 8) { mes "[Promotional Staff]"; mes "I bless you for your future! May it be full of happiness!"; @@ -1814,7 +1814,7 @@ moc_fild22b,230,197,5 script Munkenro#2 4_M_RUSMAN1,{ } } -moc_fild22b,1,1,0 script Head of the Alliance#moo -1,{ +moc_fild22b,1,1,0 script Head of the Alliance#moo FAKE_NPC,{ OnInit: disablenpc "Head of the Alliance#moo"; end; @@ -4663,7 +4663,7 @@ mid_camp,336,171,1 script Camp Guard#man1 4_M_EIN_SOLDIER,{ mid_camp,13,143,5 duplicate(Camp Guard#man1) Camp Guard#man2 4_M_EIN_SOLDIER mid_camp,9,215,5 duplicate(Camp Guard#man1) Camp Guard#man3 4_M_EIN_SOLDIER -mid_camp,49,154,0 script #env_clear -1,3,3,{ +mid_camp,49,154,0 script #env_clear FAKE_NPC,3,3,{ OnTouch: if (ep13_animal == 7) { enablenpc "Botanist#ep13_1"; @@ -4755,7 +4755,7 @@ mid_camp,52,148,1 script Dirt#ep13 CLEAR_NPC,{ end; } -man_fild01,59,261,0 script #evt_lumis -1,5,5,{ +man_fild01,59,261,0 script #evt_lumis FAKE_NPC,5,5,{ OnTouch: if (ep13_animal == 11) { mes "[Rumis Block]"; @@ -8432,7 +8432,7 @@ mid_camp,88,100,7 script Cat Hand Mining Agent 4_CAT,{ } } -- script Mysterious Rock#0::manukrock -1,{ +- script Mysterious Rock#0::manukrock FAKE_NPC,{ if (countitem(Unidentified_Mineral) < 3 && !questprogress(12062,PLAYTIME)) { specialeffect2 EF_REPAIRWEAPON; progressbar "ffff00",10; @@ -10301,7 +10301,7 @@ lhz_in01,110,174,5 script Gerhart 4_M_KHKYEL,{ } } -spl_fild02,1,1,0 script ep13_spl_fild02_mon_edq -1,{ +spl_fild02,1,1,0 script ep13_spl_fild02_mon_edq FAKE_NPC,{ OnInit: enablenpc "ep13_spl_fild02_mon_edq"; donpcevent "ep13_spl_fild02_mon_edq::OnEnable"; @@ -10331,7 +10331,7 @@ OnMyMobDead: end; } -spl_fild03,1,1,0 script ep13_spl_fild03_mon_edq -1,{ +spl_fild03,1,1,0 script ep13_spl_fild03_mon_edq FAKE_NPC,{ OnInit: enablenpc "ep13_spl_fild03_mon_edq"; donpcevent "ep13_spl_fild03_mon_edq::OnEnable"; @@ -10363,7 +10363,7 @@ OnMyMobDead: end; } -man_fild01,1,1,0 script ep13_man_fild01_mon_edq -1,{ +man_fild01,1,1,0 script ep13_man_fild01_mon_edq FAKE_NPC,{ OnInit: enablenpc "ep13_man_fild01_mon_edq"; donpcevent "ep13_man_fild01_mon_edq::OnEnable"; @@ -10393,7 +10393,7 @@ OnMyMobDead: end; } -man_fild03,1,1,0 script ep13_man_fild03_mon_edq -1,{ +man_fild03,1,1,0 script ep13_man_fild03_mon_edq FAKE_NPC,{ OnInit: enablenpc "ep13_man_fild03_mon_edq"; donpcevent "ep13_man_fild03_mon_edq::OnEnable"; @@ -11527,7 +11527,7 @@ OnInit: end; } -mid_camp,205,312,0 script #moc2_talkevent01 -1,1,1,{ +mid_camp,205,312,0 script #moc2_talkevent01 FAKE_NPC,1,1,{ //OnTouch2: OnTouch: if (mao_morocc2 == 11) { @@ -12511,7 +12511,7 @@ OnTimer250000: stopnpctimer; } -que_job01,12,13,0 script #room1_warp13 -1,15,15,{ +que_job01,12,13,0 script #room1_warp13 FAKE_NPC,15,15,{ OnInit: OnDisable: disablenpc "#room1_warp13"; @@ -12694,7 +12694,7 @@ OnTimer250000: stopnpctimer; } -que_job01,80,17,0 script #room2_1_warp -1,15,15,{ +que_job01,80,17,0 script #room2_1_warp FAKE_NPC,15,15,{ OnInit: OnDisable: disablenpc "#room2_1_warp"; @@ -12709,7 +12709,7 @@ OnTouch: end; } -que_job01,144,51,0 script #room2_2_warp -1,15,15,{ +que_job01,144,51,0 script #room2_2_warp FAKE_NPC,15,15,{ OnInit: OnDisable: disablenpc "#room2_2_warp"; @@ -13429,7 +13429,7 @@ hu_fild04,368,180,0 script Traces#mao2_object03 CLEAR_NPC,{ } } -que_dan01,32,27,0 script #moc2_event_on -1,1,1,{ +que_dan01,32,27,0 script #moc2_event_on FAKE_NPC,1,1,{ OnEnable: enablenpc "#moc2_event_on"; end; @@ -13489,7 +13489,7 @@ OnTimer308000: stopnpctimer; } -que_dan01,31,27,0 script #moc2_event01 -1,2,2,{ +que_dan01,31,27,0 script #moc2_event01 FAKE_NPC,2,2,{ OnInit: OnDisable: disablenpc "#moc2_event01"; @@ -13705,7 +13705,7 @@ OnTimer11000: end; } -- script #dandelion_duplicates -1,{ +- script #dandelion_duplicates FAKE_NPC,{ end; OnInit: @@ -13730,7 +13730,7 @@ que_dan01,25,32,7 duplicate(#dandelion_duplicates) Dandelion Member#moc2_5 4_M_D yuno_fild09,234,133,0 warp #moc2_fild09-que_dan02 1,1,que_dan02,13,10 que_dan02,13,6,0 warp #moc_que_dan02-fild09 1,1,yuno_fild09,234,129 -que_dan02,21,37,0 script #moc2_b1_gate -1,1,1,{ +que_dan02,21,37,0 script #moc2_b1_gate FAKE_NPC,1,1,{ //OnTouch2: OnTouch: if (mao_morocc2 == 17) { diff --git a/npc/quests/quests_13_2.txt b/npc/quests/quests_13_2.txt index 077ae7651..5a7df3b27 100644 --- a/npc/quests/quests_13_2.txt +++ b/npc/quests/quests_13_2.txt @@ -413,7 +413,7 @@ function Catwarp { } man_fild02,132,47,4 duplicate(Cat Hand Agent#spl) Cat Hand Agent#man 4_M_BOSSCAT -- script Mysterious Rock#30::manukrock2 -1,{ +- script Mysterious Rock#30::manukrock2 FAKE_NPC,{ if (countitem(Unidentified_Mineral) < 3 && !questprogress(12062,PLAYTIME)) { specialeffect2 EF_REPAIRWEAPON; progressbar "ffff00",10; @@ -1050,7 +1050,7 @@ spl_fild01,341,109,0 script ????#ep13_mdplant05 CLEAR_NPC,{ } } -spl_fild01,375,109,0 script to_dun01#ep13_2 -1,2,2,{ +spl_fild01,375,109,0 script to_dun01#ep13_2 FAKE_NPC,2,2,{ OnTouch: if (ep13_mdrama == 5) { mes "There's a stem entangled inside an opening in the roots of a huge tree..."; @@ -2353,7 +2353,7 @@ man_in01,19,126,3 script Luik#ep13md16 4_MAN_GALTUN,{ } } -man_in01,71,125,0 script Terra gone -1,3,3,{ +man_in01,71,125,0 script Terra gone FAKE_NPC,3,3,{ OnTouch: mes "There's nothing else."; mes "Only traces of the cage with something confined."; @@ -3262,7 +3262,7 @@ mid_camp,192,239,4 script Wanted Sign#ep13_2ect01 4_BOARD3,{ close; } -- script Dragon Egg#ep13_degg_0 -1,{ +- script Dragon Egg#ep13_degg_0 FAKE_NPC,{ if (checkweight(Knife,2) == 0) { mes "- You're carrying too many items. -"; close; @@ -3392,7 +3392,7 @@ OnTouch: end; } -nyd_dun02,201,157,5 script Egg Keeper Draco#13_3 -1,{ +nyd_dun02,201,157,5 script Egg Keeper Draco#13_3 FAKE_NPC,{ end; OnMyMobDead: @@ -3405,7 +3405,7 @@ OnTimer180000: end; } -nyd_dun02,206,157,3 script Egg Keeper Draco#13_4 -1,{ +nyd_dun02,206,157,3 script Egg Keeper Draco#13_4 FAKE_NPC,{ end; OnMyMobDead: @@ -3473,7 +3473,7 @@ OnTouch: end; } -nyd_dun02,144,103,0 script Stranger#ep13_2_dan03 -1,{ +nyd_dun02,144,103,0 script Stranger#ep13_2_dan03 FAKE_NPC,{ end; OnMyMobDead: @@ -3487,7 +3487,7 @@ OnTimer300000: end; } -nyd_dun02,206,114,0 script Stranger#ep13_2_dan04 -1,{ +nyd_dun02,206,114,0 script Stranger#ep13_2_dan04 FAKE_NPC,{ end; OnMyMobDead: @@ -4821,7 +4821,7 @@ function script find_13_2 { } } -- script mjo_no_find -1,{ +- script mjo_no_find FAKE_NPC,{ end; OnTouch: @@ -4829,31 +4829,31 @@ OnTouch: end; } -mjolnir_03,76,258,0 duplicate(mjo_no_find) #mj03_find_1 -1,5,5 -mjolnir_03,227,204,0 duplicate(mjo_no_find) #mj03_find_2 -1,5,5 -mjolnir_05,82,171,0 duplicate(mjo_no_find) #mj05_find_1 -1,5,5 -mjolnir_05,219,375,0 duplicate(mjo_no_find) #mj05_find_2 -1,5,5 -mjolnir_06,28,332,0 duplicate(mjo_no_find) #mj06_find_1 -1,5,5 -mjolnir_06,275,50,0 duplicate(mjo_no_find) #mj06_find_2 -1,5,5 -mjolnir_06,371,78,0 duplicate(mjo_no_find) #mj06_find_3 -1,5,5 -mjolnir_07,26,373,0 duplicate(mjo_no_find) #mj07_find_1 -1,5,5 -mjolnir_07,214,373,0 duplicate(mjo_no_find) #mj07_find_2 -1,5,5 -mjolnir_07,372,355,0 duplicate(mjo_no_find) #mj07_find_3 -1,5,5 -mjolnir_07,375,233,0 duplicate(mjo_no_find) #mj07_find_4 -1,5,5 -mjolnir_07,26,78,0 duplicate(mjo_no_find) #mj07_find_5 -1,5,5 -mjolnir_07,157,25,0 duplicate(mjo_no_find) #mj07_find_6 -1,5,5 -mjolnir_08,39,239,0 duplicate(mjo_no_find) #mj08_find_1 -1,5,5 -mjolnir_08,36,344,0 duplicate(mjo_no_find) #mj08_find_2 -1,5,5 -mjolnir_08,160,349,0 duplicate(mjo_no_find) #mj08_find_3 -1,5,5 -mjolnir_08,359,258,0 duplicate(mjo_no_find) #mj08_find_4 -1,5,5 -mjolnir_08,193,62,0 duplicate(mjo_no_find) #mj08_find_5 -1,5,5 -mjolnir_11,29,220,0 duplicate(mjo_no_find) #mj11_find_1 -1,5,5 -mjolnir_11,175,29,0 duplicate(mjo_no_find) #mj11_find_2 -1,5,5 -mjolnir_12,199,370,0 duplicate(mjo_no_find) #mj12_find_1 -1,5,5 -mjolnir_12,44,25,0 duplicate(mjo_no_find) #mj12_find_2 -1,5,5 -mjolnir_12,220,37,0 duplicate(mjo_no_find) #mj12_find_3 -1,5,5 - -- script mjo_find -1,{ +mjolnir_03,76,258,0 duplicate(mjo_no_find) #mj03_find_1 FAKE_NPC,5,5 +mjolnir_03,227,204,0 duplicate(mjo_no_find) #mj03_find_2 FAKE_NPC,5,5 +mjolnir_05,82,171,0 duplicate(mjo_no_find) #mj05_find_1 FAKE_NPC,5,5 +mjolnir_05,219,375,0 duplicate(mjo_no_find) #mj05_find_2 FAKE_NPC,5,5 +mjolnir_06,28,332,0 duplicate(mjo_no_find) #mj06_find_1 FAKE_NPC,5,5 +mjolnir_06,275,50,0 duplicate(mjo_no_find) #mj06_find_2 FAKE_NPC,5,5 +mjolnir_06,371,78,0 duplicate(mjo_no_find) #mj06_find_3 FAKE_NPC,5,5 +mjolnir_07,26,373,0 duplicate(mjo_no_find) #mj07_find_1 FAKE_NPC,5,5 +mjolnir_07,214,373,0 duplicate(mjo_no_find) #mj07_find_2 FAKE_NPC,5,5 +mjolnir_07,372,355,0 duplicate(mjo_no_find) #mj07_find_3 FAKE_NPC,5,5 +mjolnir_07,375,233,0 duplicate(mjo_no_find) #mj07_find_4 FAKE_NPC,5,5 +mjolnir_07,26,78,0 duplicate(mjo_no_find) #mj07_find_5 FAKE_NPC,5,5 +mjolnir_07,157,25,0 duplicate(mjo_no_find) #mj07_find_6 FAKE_NPC,5,5 +mjolnir_08,39,239,0 duplicate(mjo_no_find) #mj08_find_1 FAKE_NPC,5,5 +mjolnir_08,36,344,0 duplicate(mjo_no_find) #mj08_find_2 FAKE_NPC,5,5 +mjolnir_08,160,349,0 duplicate(mjo_no_find) #mj08_find_3 FAKE_NPC,5,5 +mjolnir_08,359,258,0 duplicate(mjo_no_find) #mj08_find_4 FAKE_NPC,5,5 +mjolnir_08,193,62,0 duplicate(mjo_no_find) #mj08_find_5 FAKE_NPC,5,5 +mjolnir_11,29,220,0 duplicate(mjo_no_find) #mj11_find_1 FAKE_NPC,5,5 +mjolnir_11,175,29,0 duplicate(mjo_no_find) #mj11_find_2 FAKE_NPC,5,5 +mjolnir_12,199,370,0 duplicate(mjo_no_find) #mj12_find_1 FAKE_NPC,5,5 +mjolnir_12,44,25,0 duplicate(mjo_no_find) #mj12_find_2 FAKE_NPC,5,5 +mjolnir_12,220,37,0 duplicate(mjo_no_find) #mj12_find_3 FAKE_NPC,5,5 + +- script mjo_find FAKE_NPC,{ if ((ep13_2_tre == 2) && (countitem(Portable_Toolbox) == 1)) { if (countitem(Rough_Mineral) < 10) { mes "- I can see some different colored minerals where the detector pointed to. This must be the mineral that Mr. Lifeguard told me about. -"; @@ -4911,7 +4911,7 @@ mjolnir_04,220,130,3 duplicate(mjo_find) #mj04_02 HIDDEN_NPC,7,7 mjolnir_09,229,214,3 duplicate(mjo_find) #mj09_01 HIDDEN_NPC,10,10 mjolnir_10,188,260,3 duplicate(mjo_find) #mj10_01 HIDDEN_NPC,10,10 -mjolnir_01,364,256,0 script #mj01_find -1,5,5,{ +mjolnir_01,364,256,0 script #mj01_find FAKE_NPC,5,5,{ end; OnTouch: @@ -4945,7 +4945,7 @@ OnTimer60000: end; } -mjolnir_02,313,289,0 script #mj02_find_1 -1,5,5,{ +mjolnir_02,313,289,0 script #mj02_find_1 FAKE_NPC,5,5,{ end; OnTouch: @@ -4955,7 +4955,7 @@ OnTouch: close; } -mjolnir_02,78,258,0 script #mj02_find_2 -1,5,5,{ +mjolnir_02,78,258,0 script #mj02_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -4988,7 +4988,7 @@ OnTimer60000: end; } -mjolnir_04,147,208,0 script #mj04_find_1 -1,5,5,{ +mjolnir_04,147,208,0 script #mj04_find_1 FAKE_NPC,5,5,{ end; OnTouch: @@ -4998,7 +4998,7 @@ OnTouch: close; } -mjolnir_04,160,77,0 script #mj04_find_2 -1,5,5,{ +mjolnir_04,160,77,0 script #mj04_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -5008,7 +5008,7 @@ OnTouch: close; } -mjolnir_04,361,174,0 script #mj04_find_3 -1,5,5,{ +mjolnir_04,361,174,0 script #mj04_find_3 FAKE_NPC,5,5,{ end; OnTouch: @@ -5040,7 +5040,7 @@ OnTimer60000: end; } -mjolnir_09,201,355,0 script #mj09_find_1 -1,5,5,{ +mjolnir_09,201,355,0 script #mj09_find_1 FAKE_NPC,5,5,{ end; OnTouch: @@ -5049,7 +5049,7 @@ OnTouch: close; } -mjolnir_09,38,243,0 script #mj09_find_2 -1,5,5,{ +mjolnir_09,38,243,0 script #mj09_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -5058,7 +5058,7 @@ OnTouch: close; } -mjolnir_09,106,36,0 script #mj09_find_3 -1,5,5,{ +mjolnir_09,106,36,0 script #mj09_find_3 FAKE_NPC,5,5,{ end; OnTouch: @@ -5067,7 +5067,7 @@ OnTouch: close; } -mjolnir_09,306,36,0 script #mj09_find_4 -1,5,5,{ +mjolnir_09,306,36,0 script #mj09_find_4 FAKE_NPC,5,5,{ end; OnTouch: @@ -5076,7 +5076,7 @@ OnTouch: close; } -mjolnir_09,369,279,0 script #mj09_find_5 -1,5,5,{ +mjolnir_09,369,279,0 script #mj09_find_5 FAKE_NPC,5,5,{ end; OnTouch: @@ -5096,7 +5096,7 @@ OnTimer60000: end; } -mjolnir_10,201,355,0 script #mj10_find_1 -1,5,5,{ +mjolnir_10,201,355,0 script #mj10_find_1 FAKE_NPC,5,5,{ end; OnTouch: @@ -5105,7 +5105,7 @@ OnTouch: close; } -mjolnir_10,374,215,0 script #mj10_find_2 -1,5,5,{ +mjolnir_10,374,215,0 script #mj10_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -5114,7 +5114,7 @@ OnTouch: close; } -mjolnir_10,272,20,0 script #mj10_find_3 -1,5,5,{ +mjolnir_10,272,20,0 script #mj10_find_3 FAKE_NPC,5,5,{ end; OnTouch: @@ -5123,7 +5123,7 @@ OnTouch: close; } -mjolnir_10,75,22,0 script #mj10_find_4 -1,5,5,{ +mjolnir_10,75,22,0 script #mj10_find_4 FAKE_NPC,5,5,{ end; OnTouch: @@ -5132,7 +5132,7 @@ OnTouch: close; } -mjolnir_10,27,258,0 script #mj10_find_5 -1,5,5,{ +mjolnir_10,27,258,0 script #mj10_find_5 FAKE_NPC,5,5,{ end; OnTouch: @@ -5152,7 +5152,7 @@ OnTimer60000: end; } -hu_fild05,335,152,0 script #hu_find_1 -1,5,5,{ +hu_fild05,335,152,0 script #hu_find_1 FAKE_NPC,5,5,{ end; OnTouch: @@ -5165,7 +5165,7 @@ OnTouch: close; } -hu_fild05,89,52,0 script #hu_find_2 -1,5,5,{ +hu_fild05,89,52,0 script #hu_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -5178,7 +5178,7 @@ OnTouch: close; } -hu_fild05,42,205,0 script #hu_find_3 -1,5,5,{ +hu_fild05,42,205,0 script #hu_find_3 FAKE_NPC,5,5,{ end; OnTouch: @@ -5191,7 +5191,7 @@ OnTouch: close; } -hu_fild05,276,349,0 script #hu_find_4 -1,5,5,{ +hu_fild05,276,349,0 script #hu_find_4 FAKE_NPC,5,5,{ end; OnTouch: @@ -5204,7 +5204,7 @@ OnTouch: close; } -- script hu_find -1,{ +- script hu_find FAKE_NPC,{ if ((ep13_2_tre == 3) && (countitem(Portable_Toolbox) == 1)) { if (countitem(Rough_Mineral) < 5) { mes "- I can see some different colored minerals where the detector pointed to. This must be the mineral that Mr. Lifeguard told me about. -"; @@ -5313,7 +5313,7 @@ OnTimer60000: end; } -ve_fild03,351,219,0 script #ve_find_1 -1,3,3,{ +ve_fild03,351,219,0 script #ve_find_1 FAKE_NPC,3,3,{ end; OnTouch: @@ -5325,7 +5325,7 @@ OnTouch: close; } -ve_fild03,223,51,0 script #ve_find_2 -1,5,5,{ +ve_fild03,223,51,0 script #ve_find_2 FAKE_NPC,5,5,{ end; OnTouch: @@ -5337,7 +5337,7 @@ OnTouch: close; } -- script ve_find -1,{ +- script ve_find FAKE_NPC,{ if ((ep13_2_tre == 4) && (countitem(Portable_Toolbox) == 1)) { if (countitem(Rough_Mineral) < 5) { mes "- I can see some different colored minerals where the detector pointed to. This must be the mineral that Mr. Lifeguard told me about. -"; @@ -5744,7 +5744,7 @@ spl_in02,139,65,3 script Middle-Ranked Laphine#la 4_F_FAIRYKID3,{ } } -- script Purifier -1,{ +- script Purifier FAKE_NPC,{ if (ep13_2_tre1 == 2) { if (countitem(Germinating_Sprout) > 0) { mes "- You put the seed in the"; @@ -6938,7 +6938,7 @@ OnTouch: end; } -- script ep13_warp_s_0 -1,{ +- script ep13_warp_s_0 FAKE_NPC,{ OnEnable: enablenpc strnpcinfo(0); initnpctimer; @@ -6963,7 +6963,7 @@ OnDisable: end; } -- script ep13_warp_s_1 -1,{ +- script ep13_warp_s_1 FAKE_NPC,{ OnEnable: enablenpc strnpcinfo(0); initnpctimer; @@ -6989,7 +6989,7 @@ OnDisable: end; } -- script ep13_warp_s_2 -1,{ +- script ep13_warp_s_2 FAKE_NPC,{ OnEnable: enablenpc strnpcinfo(0); initnpctimer; @@ -7016,7 +7016,7 @@ OnDisable: end; } -- script ep13_warp_w_0 -1,{ +- script ep13_warp_w_0 FAKE_NPC,{ OnTouch: warp "nyd_dun01",214,68; end; diff --git a/npc/quests/quests_airship.txt b/npc/quests/quests_airship.txt index 58051f9cb..1b4e90357 100644 --- a/npc/quests/quests_airship.txt +++ b/npc/quests/quests_airship.txt @@ -454,7 +454,7 @@ airplane,47,61,7 script Crewman 4_M_ZONDAOYAJI,{ } //- Empty Room 201 - -ein_in01,227,279,3 script #door_ein -1,5,5,{ +ein_in01,227,279,3 script #door_ein FAKE_NPC,5,5,{ OnTouch: if (kain_ticket == 5) { kain_ticket = 6; @@ -1184,7 +1184,7 @@ ein_in01,117,80,5 script Unidentified Machine#as HIDDEN_NPC,{ //== "How Does The Airship Work" Quest :: lght_air & lght_ymir = //- Monsters Attack :: lght_air - -airplane_01,1,1,0 script Airship#airplane02 -1,{ +airplane_01,1,1,0 script Airship#airplane02 FAKE_NPC,{ end; OnEnable: initnpctimer; diff --git a/npc/quests/quests_alberta.txt b/npc/quests/quests_alberta.txt index 40a450cc2..a735a19f6 100644 --- a/npc/quests/quests_alberta.txt +++ b/npc/quests/quests_alberta.txt @@ -1106,7 +1106,7 @@ alberta_in,23,104,4 script Grandpa Turtle#tur 2_M_PHARMACIST,{ } } -- script ::Sailor_alberta -1,{ +- script ::Sailor_alberta FAKE_NPC,{ if (TURTLE || (MISC_QUEST & 65536)) { mes "[Gotanblue]"; mes "Heh..."; @@ -1248,7 +1248,7 @@ tur_dun01,165,29,4 script Sailor#tur2 4_M_SEAMAN,{ close; } -- script ::Turtle_Scholar_alberta -1,{ +- script ::Turtle_Scholar_alberta FAKE_NPC,{ mes "[Jornadan Niliria]"; mes "Every single place"; mes "has its own unique"; diff --git a/npc/quests/quests_amatsu.txt b/npc/quests/quests_amatsu.txt index 599d419eb..71fad6aa9 100644 --- a/npc/quests/quests_amatsu.txt +++ b/npc/quests/quests_amatsu.txt @@ -408,7 +408,7 @@ OnReset: end; } -ama_test,34,25,0 script Hanako chan#ama -1,2,2,{ +ama_test,34,25,0 script Hanako chan#ama FAKE_NPC,2,2,{ OnTouch: mes "[Hanako chan]"; mes ".......Eeeeheeheehee"; @@ -490,7 +490,7 @@ OnTouch: end; } -ama_test,34,15,0 script Dokebi#ez -1,{ +ama_test,34,15,0 script Dokebi#ez FAKE_NPC,{ OnInit: disablenpc "Dokebi#ez"; end; @@ -538,7 +538,7 @@ OnMyMobDead: end; } -ama_test,34,16,0 script Dokebi#hd -1,{ +ama_test,34,16,0 script Dokebi#hd FAKE_NPC,{ OnInit: disablenpc "Dokebi#hd"; end; @@ -691,7 +691,7 @@ OnTouch: close; } -ama_test,34,17,0 script Am Mut#ama -1,{ +ama_test,34,17,0 script Am Mut#ama FAKE_NPC,{ OnInit: disablenpc "Am Mut#ama"; end; @@ -759,7 +759,7 @@ OnTouch: end; } -ama_test,34,18,0 script Timer#ama -1,{ +ama_test,34,18,0 script Timer#ama FAKE_NPC,{ OnInit: disablenpc "Timer#ama"; end; @@ -801,7 +801,7 @@ OnTimer362500: end; } -ama_test,50,100,0 script backwarp#ama -1,25,25,{ +ama_test,50,100,0 script backwarp#ama FAKE_NPC,25,25,{ OnInit: disablenpc "backwarp#ama"; end; diff --git a/npc/quests/quests_ayothaya.txt b/npc/quests/quests_ayothaya.txt index e357aae3f..b79ee5022 100644 --- a/npc/quests/quests_ayothaya.txt +++ b/npc/quests/quests_ayothaya.txt @@ -1944,26 +1944,26 @@ ayo_dun01,273,27,0 duplicate(AyoTrap1) #th_dun1_1_2 HIDDEN_NPC ayo_dun01,272,27,0 duplicate(AyoTrap1) #th_dun1_1_3 HIDDEN_NPC,0,4 ayo_dun01,272,26,0 duplicate(AyoTrap1) #th_dun1_1_4 HIDDEN_NPC -ayo_dun01,26,27,0 script #th_dun1_1::AyoTrap2 -1,1,1,{ +ayo_dun01,26,27,0 script #th_dun1_1::AyoTrap2 FAKE_NPC,1,1,{ OnTouch: percentheal -100,0; end; } -ayo_dun01,28,27,0 duplicate(AyoTrap2) #th_dun1_2 -1,0,1 -ayo_dun01,27,25,0 duplicate(AyoTrap2) #th_dun1_3 -1,1,0 -ayo_dun01,25,25,0 duplicate(AyoTrap2) #th_dun1_4 -1 -ayo_dun01,272,273,0 duplicate(AyoTrap2) #th_dun1_5 -1,1,1 -ayo_dun01,274,273,0 duplicate(AyoTrap2) #th_dun1_6 -1,0,1 -ayo_dun01,273,271,0 duplicate(AyoTrap2) #th_dun1_7 -1,1,0 -ayo_dun01,271,271,0 duplicate(AyoTrap2) #th_dun1_8 -1 -ayo_dun01,26,273,0 duplicate(AyoTrap2) #th_dun1_9 -1,1,1 -ayo_dun01,28,273,0 duplicate(AyoTrap2) #th_dun1_10 -1,0,1 -ayo_dun01,27,271,0 duplicate(AyoTrap2) #th_dun1_11 -1,1,0 -ayo_dun01,25,271,0 duplicate(AyoTrap2) #th_dun1_12 -1 +ayo_dun01,28,27,0 duplicate(AyoTrap2) #th_dun1_2 FAKE_NPC,0,1 +ayo_dun01,27,25,0 duplicate(AyoTrap2) #th_dun1_3 FAKE_NPC,1,0 +ayo_dun01,25,25,0 duplicate(AyoTrap2) #th_dun1_4 FAKE_NPC +ayo_dun01,272,273,0 duplicate(AyoTrap2) #th_dun1_5 FAKE_NPC,1,1 +ayo_dun01,274,273,0 duplicate(AyoTrap2) #th_dun1_6 FAKE_NPC,0,1 +ayo_dun01,273,271,0 duplicate(AyoTrap2) #th_dun1_7 FAKE_NPC,1,0 +ayo_dun01,271,271,0 duplicate(AyoTrap2) #th_dun1_8 FAKE_NPC +ayo_dun01,26,273,0 duplicate(AyoTrap2) #th_dun1_9 FAKE_NPC,1,1 +ayo_dun01,28,273,0 duplicate(AyoTrap2) #th_dun1_10 FAKE_NPC,0,1 +ayo_dun01,27,271,0 duplicate(AyoTrap2) #th_dun1_11 FAKE_NPC,1,0 +ayo_dun01,25,271,0 duplicate(AyoTrap2) #th_dun1_12 FAKE_NPC //- Hints - -ayo_dun01,156,148,0 script #hint01::AyoHint -1,0,4,{ +ayo_dun01,156,148,0 script #hint01::AyoHint FAKE_NPC,0,4,{ OnTouch: if (rand(1,100) > 60 && ayodunquest < 11) { mes "^3355FFThe Holy Thread in your pocket suddenly began to glow. You feel that something is near you...^000000"; @@ -1978,9 +1978,9 @@ OnTouch: end; } -ayo_dun01,259,42,0 duplicate(AyoHint) #hint02 -1,2,0 -ayo_dun01,259,44,0 duplicate(AyoHint) #hint02_2 -1,2,0 -ayo_dun01,259,46,0 duplicate(AyoHint) #hint02_3 -1,2,0 +ayo_dun01,259,42,0 duplicate(AyoHint) #hint02 FAKE_NPC,2,0 +ayo_dun01,259,44,0 duplicate(AyoHint) #hint02_2 FAKE_NPC,2,0 +ayo_dun01,259,46,0 duplicate(AyoHint) #hint02_3 FAKE_NPC,2,0 //- Puzzle pieces - ayo_dun01,198,164,0 script #hun_thai_1 HIDDEN_NPC,{ diff --git a/npc/quests/quests_ein.txt b/npc/quests/quests_ein.txt index cb3a9d7e3..90b32fb70 100644 --- a/npc/quests/quests_ein.txt +++ b/npc/quests/quests_ein.txt @@ -3211,7 +3211,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{ } //== Factory Quest :: ein_factory ========================== -einbroch,1,1,0 script Einbroch Smog Alert -1,{ +einbroch,1,1,0 script Einbroch Smog Alert FAKE_NPC,{ end; OnEnable: @@ -5629,7 +5629,7 @@ airplane,31,77,5 script Drunken Man#ein 4_M_YURI,{ } } -ein_in01,231,170,0 script #kenka -1,2,2,{ +ein_in01,231,170,0 script #kenka FAKE_NPC,2,2,{ OnTouch: if (Shinokas_Quest > 8) { mes "^3355FFThe open window rattles"; diff --git a/npc/quests/quests_gonryun.txt b/npc/quests/quests_gonryun.txt index ba4b1c299..0a1310369 100644 --- a/npc/quests/quests_gonryun.txt +++ b/npc/quests/quests_gonryun.txt @@ -802,7 +802,7 @@ gon_in,165,16,4 script Man in hangover#gon 4_M_ALCHE_A,{ close; } -gon_dun01,148,156,0 script start01#gnbs -1,{ +gon_dun01,148,156,0 script start01#gnbs FAKE_NPC,{ OnInit: sleep 10000; OnCommandOn: @@ -833,7 +833,7 @@ OnCommandOn: end; } -gon_dun01,2,1,0 script timer1-1 -1,{ +gon_dun01,2,1,0 script timer1-1 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -901,7 +901,7 @@ OnCommandOn: end; } -gon_dun01,3,1,0 script timer1-2 -1,{ +gon_dun01,3,1,0 script timer1-2 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -969,7 +969,7 @@ OnCommandOn: end; } -gon_dun01,4,1,0 script timer1-3 -1,{ +gon_dun01,4,1,0 script timer1-3 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1037,7 +1037,7 @@ OnCommandOn: end; } -gon_dun01,5,1,0 script timer1-4 -1,{ +gon_dun01,5,1,0 script timer1-4 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1105,7 +1105,7 @@ OnCommandOn: end; } -gon_dun01,6,1,0 script timer1-5 -1,{ +gon_dun01,6,1,0 script timer1-5 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1150,7 +1150,7 @@ OnCommandOff: end; } -gon_dun02,1,1,0 script start02#gnbs -1,{ +gon_dun02,1,1,0 script start02#gnbs FAKE_NPC,{ OnInit: sleep 10000; OnCommandOn: @@ -1181,7 +1181,7 @@ OnCommandOn: end; } -gon_dun02,2,1,0 script timer2-1 -1,{ +gon_dun02,2,1,0 script timer2-1 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1249,7 +1249,7 @@ OnCommandOn: end; } -gon_dun02,3,1,0 script timer2-2 -1,{ +gon_dun02,3,1,0 script timer2-2 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1317,7 +1317,7 @@ OnCommandOn: end; } -gon_dun02,4,1,0 script timer2-3 -1,{ +gon_dun02,4,1,0 script timer2-3 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1385,7 +1385,7 @@ OnCommandOn: end; } -gon_dun02,5,1,0 script timer2-4 -1,{ +gon_dun02,5,1,0 script timer2-4 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1453,7 +1453,7 @@ OnCommandOn: end; } -gon_dun02,6,1,0 script timer2-5 -1,{ +gon_dun02,6,1,0 script timer2-5 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1521,7 +1521,7 @@ OnCommandOn: end; } -gon_dun02,7,1,0 script timer2-6 -1,{ +gon_dun02,7,1,0 script timer2-6 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1566,7 +1566,7 @@ OnCommandOff: end; } -gon_dun03,1,1,0 script start03#gnbs -1,{ +gon_dun03,1,1,0 script start03#gnbs FAKE_NPC,{ OnInit: sleep 10000; OnCommandOn: @@ -1597,7 +1597,7 @@ OnCommandOn: end; } -gon_dun03,2,1,0 script timer3-1 -1,{ +gon_dun03,2,1,0 script timer3-1 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1669,7 +1669,7 @@ OnCommandOn: end; } -gon_dun03,3,1,0 script timer3-2 -1,{ +gon_dun03,3,1,0 script timer3-2 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1741,7 +1741,7 @@ OnCommandOn: end; } -gon_dun03,4,1,0 script timer3-3 -1,{ +gon_dun03,4,1,0 script timer3-3 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1813,7 +1813,7 @@ OnCommandOn: end; } -gon_dun03,5,1,0 script timer3-4 -1,{ +gon_dun03,5,1,0 script timer3-4 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1885,7 +1885,7 @@ OnCommandOn: end; } -gon_dun03,6,1,0 script timer3-5 -1,{ +gon_dun03,6,1,0 script timer3-5 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -1957,7 +1957,7 @@ OnCommandOn: end; } -gon_dun03,7,1,0 script timer3-6 -1,{ +gon_dun03,7,1,0 script timer3-6 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; @@ -2029,7 +2029,7 @@ OnCommandOn: end; } -gon_dun03,6,1,0 script timer3-7 -1,{ +gon_dun03,6,1,0 script timer3-7 FAKE_NPC,{ OnInit: initnpctimer; stopnpctimer; diff --git a/npc/quests/quests_hugel.txt b/npc/quests/quests_hugel.txt index 67c146f1e..1ef4c0db6 100644 --- a/npc/quests/quests_hugel.txt +++ b/npc/quests/quests_hugel.txt @@ -706,7 +706,7 @@ OnTouch: } } -hu_in01,1,1,0 script #DrawerOpener -1,{ +hu_in01,1,1,0 script #DrawerOpener FAKE_NPC,{ OnInit: disablenpc "#DrawerOpener"; end; @@ -9539,7 +9539,7 @@ odin_tem01,93,146,4 script Boatman 4_M_SEAMAN,{ } } -odin_tem03,4,2,0 script OdinInit -1,{ +odin_tem03,4,2,0 script OdinInit FAKE_NPC,{ OnInit: initnpctimer; end; diff --git a/npc/quests/quests_izlude.txt b/npc/quests/quests_izlude.txt index 3e98f7781..b17354cb4 100644 --- a/npc/quests/quests_izlude.txt +++ b/npc/quests/quests_izlude.txt @@ -37,7 +37,7 @@ //========================================================================= //== Edgar's Offer :: iz_npc =============================== -- script ::Edgar_izlude -1,{ +- script ::Edgar_izlude FAKE_NPC,{ if (MISC_QUEST & 16) { mes "[Edgar]"; mes "So are you heading to Alberta again? Let me give you the same discount and only charge 250 Zeny, just like the last time."; diff --git a/npc/quests/quests_juperos.txt b/npc/quests/quests_juperos.txt index 9db11716c..c9e931be3 100644 --- a/npc/quests/quests_juperos.txt +++ b/npc/quests/quests_juperos.txt @@ -1631,7 +1631,7 @@ juperos_01,215,127,4 script Machine Statue CLEAR_NPC,{ //== Jupers Core access Story Event ======================== //- 1rd Floor -> 2nd Floor - -juperos_01,100,91,0 script jupe_goto#1 -1,2,2,{ +juperos_01,100,91,0 script jupe_goto#1 FAKE_NPC,2,2,{ end; OnTouch: @@ -1673,7 +1673,7 @@ OnTimer10000: end; } -juperos_01,100,91,0 script jupe_goto#2 -1,2,2,{ +juperos_01,100,91,0 script jupe_goto#2 FAKE_NPC,2,2,{ OnInit: disablenpc "jupe_goto#2"; end; @@ -1695,7 +1695,7 @@ OnTimer2000: } //- 2nd Floor - -juperos_02,97,70,0 script 3F Gate Switch#jupe -1,{ +juperos_02,97,70,0 script 3F Gate Switch#jupe FAKE_NPC,{ OnInit: initnpctimer; end; @@ -1947,7 +1947,7 @@ OnTimer22500: end; } -jupe_area1,47,259,0 script Red Alarm#1-1 -1,2,2,{ +jupe_area1,47,259,0 script Red Alarm#1-1 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#1-1"; end; @@ -1961,7 +1961,7 @@ OnTouch: end; } -- script Red Alarm On#1-1 -1,{ +- script Red Alarm On#1-1 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#1-1"; end; @@ -1998,7 +1998,7 @@ OnTimer8000: end; } -- script Monster1#1-1 -1,{ +- script Monster1#1-1 FAKE_NPC,{ OnInit: disablenpc "Monster1#1-1"; end; @@ -2043,7 +2043,7 @@ OnMyMobDead: end; } -- script Monster2#1-1 -1,{ +- script Monster2#1-1 FAKE_NPC,{ OnInit: disablenpc "Monster2#1-1"; end; @@ -2238,7 +2238,7 @@ OnTimer22500: end; } -jupe_area1,21,191,0 script Red Alarm#1-2 -1,2,2,{ +jupe_area1,21,191,0 script Red Alarm#1-2 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#1-2"; end; @@ -2251,7 +2251,7 @@ OnTouch: end; } -- script Red Alarm On#1-2 -1,{ +- script Red Alarm On#1-2 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#1-2"; end; @@ -2284,7 +2284,7 @@ OnTimer8000: end; } -- script Monster1#1-2 -1,{ +- script Monster1#1-2 FAKE_NPC,{ OnInit: disablenpc "Monster1#1-2"; end; @@ -2329,7 +2329,7 @@ OnMyMobDead: end; } -- script Monster2#1-2 -1,{ +- script Monster2#1-2 FAKE_NPC,{ OnInit: disablenpc "Monster2#1-2"; end; @@ -2523,7 +2523,7 @@ OnTimer22500: end; } -jupe_area1,33,105,0 script Red Alarm#1-3 -1,0,4,{ +jupe_area1,33,105,0 script Red Alarm#1-3 FAKE_NPC,0,4,{ OnInit: disablenpc "Red Alarm#1-3"; end; @@ -2536,7 +2536,7 @@ OnTouch: end; } -- script Red Alarm On#1-3 -1,{ +- script Red Alarm On#1-3 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#1-3"; end; @@ -2569,7 +2569,7 @@ OnTimer8000: end; } -- script Monster1#1-3 -1,{ +- script Monster1#1-3 FAKE_NPC,{ OnInit: disablenpc "Monster1#1-3"; end; @@ -2613,7 +2613,7 @@ OnMyMobDead: end; } -- script Monster2#1-3 -1,{ +- script Monster2#1-3 FAKE_NPC,{ OnInit: disablenpc "Monster2#1-3"; end; @@ -2810,7 +2810,7 @@ OnTimer5000: end; } -jupe_area1,83,157,0 script Red Alarm#1-4 -1,2,2,{ +jupe_area1,83,157,0 script Red Alarm#1-4 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#1-4"; end; @@ -2827,7 +2827,7 @@ OnTouch: end; } -- script Red Alarm On#1-4 -1,{ +- script Red Alarm On#1-4 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#1-4"; end; @@ -2860,7 +2860,7 @@ OnTimer8000: end; } -- script Monster1#1-4 -1,{ +- script Monster1#1-4 FAKE_NPC,{ OnInit: disablenpc "Monster1#1-4"; end; @@ -2905,7 +2905,7 @@ OnMyMobDead: end; } -- script Monster2#1-4 -1,{ +- script Monster2#1-4 FAKE_NPC,{ OnInit: disablenpc "Monster2#1-4"; end; @@ -3146,7 +3146,7 @@ OnTimer22500: end; } -jupe_area2,116,259,0 script Red Alarm#2-1 -1,2,2,{ +jupe_area2,116,259,0 script Red Alarm#2-1 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#2-1"; end; @@ -3160,7 +3160,7 @@ OnTouch: end; } -- script Red Alarm On#2-1 -1,{ +- script Red Alarm On#2-1 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#2-1"; end; @@ -3197,7 +3197,7 @@ OnTimer8000: end; } -- script Monster1#2-1 -1,{ +- script Monster1#2-1 FAKE_NPC,{ OnInit: disablenpc "Monster1#2-1"; end; @@ -3242,7 +3242,7 @@ OnMyMobDead: end; } -- script Monster2#2-1 -1,{ +- script Monster2#2-1 FAKE_NPC,{ OnInit: disablenpc "Monster2#2-1"; end; @@ -3437,7 +3437,7 @@ OnTimer22500: end; } -jupe_area2,142,191,0 script Red Alarm#2-2 -1,2,2,{ +jupe_area2,142,191,0 script Red Alarm#2-2 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#2-2"; end; @@ -3450,7 +3450,7 @@ OnTouch: end; } -- script Red Alarm On#2-2 -1,{ +- script Red Alarm On#2-2 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#2-2"; end; @@ -3483,7 +3483,7 @@ OnTimer8000: end; } -- script Monster1#2-2 -1,{ +- script Monster1#2-2 FAKE_NPC,{ OnInit: disablenpc "Monster1#2-2"; end; @@ -3528,7 +3528,7 @@ OnMyMobDead: end; } -- script Monster2#2-2 -1,{ +- script Monster2#2-2 FAKE_NPC,{ OnInit: disablenpc "Monster2#2-2"; end; @@ -3722,7 +3722,7 @@ OnTimer22500: end; } -jupe_area2,130,105,0 script Red Alarm#2-3 -1,0,4,{ +jupe_area2,130,105,0 script Red Alarm#2-3 FAKE_NPC,0,4,{ OnInit: disablenpc "Red Alarm#2-3"; end; @@ -3735,7 +3735,7 @@ OnTouch: end; } -- script Red Alarm On#2-3 -1,{ +- script Red Alarm On#2-3 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#2-3"; end; @@ -3769,7 +3769,7 @@ OnTimer8000: end; } -- script Monster1#2-3 -1,{ +- script Monster1#2-3 FAKE_NPC,{ OnInit: disablenpc "Monster1#2-3"; end; @@ -3813,7 +3813,7 @@ OnMyMobDead: end; } -- script Monster2#2-3 -1,{ +- script Monster2#2-3 FAKE_NPC,{ OnInit: disablenpc "Monster2#2-3"; end; @@ -4011,7 +4011,7 @@ OnTimer5000: end; } -jupe_area2,80,157,0 script Red Alarm#2-4 -1,2,2,{ +jupe_area2,80,157,0 script Red Alarm#2-4 FAKE_NPC,2,2,{ OnInit: disablenpc "Red Alarm#2-4"; end; @@ -4028,7 +4028,7 @@ OnTouch: end; } -- script Red Alarm On#2-4 -1,{ +- script Red Alarm On#2-4 FAKE_NPC,{ OnInit: disablenpc "Red Alarm On#2-4"; end; @@ -4061,7 +4061,7 @@ OnTimer8000: end; } -- script Monster1#2-4 -1,{ +- script Monster1#2-4 FAKE_NPC,{ OnInit: disablenpc "Monster1#2-4"; end; @@ -4106,7 +4106,7 @@ OnMyMobDead: end; } -- script Monster2#2-4 -1,{ +- script Monster2#2-4 FAKE_NPC,{ OnInit: disablenpc "Monster2#2-4"; end; @@ -4382,7 +4382,7 @@ OnInit: } //- Elevator Reception Guards - -jupe_ele_r,10,50,0 script Elevator Guard1#ufe -1,{ +jupe_ele_r,10,50,0 script Elevator Guard1#ufe FAKE_NPC,{ OnInit: disablenpc "Elevator Guard1#ufe"; end; @@ -4451,7 +4451,7 @@ OnMyMobDead: end; } -jupe_ele_r,10,52,0 script Elevator Safety#ufe -1,{ +jupe_ele_r,10,52,0 script Elevator Safety#ufe FAKE_NPC,{ OnInit: disablenpc "Elevator Safety#ufe"; end; @@ -4476,7 +4476,7 @@ OnTimer10000: end; } -jupe_ele_r,50,89,0 script Annihilation#ufe -1,35,50,{ +jupe_ele_r,50,89,0 script Annihilation#ufe FAKE_NPC,35,50,{ OnInit: disablenpc "Annihilation#ufe"; end; @@ -4504,7 +4504,7 @@ OnTimer3000: end; } -jupe_ele_r,50,89,0 script Elevator Escape#ufe -1,35,50,{ +jupe_ele_r,50,89,0 script Elevator Escape#ufe FAKE_NPC,35,50,{ OnInit: disablenpc "Elevator Escape#ufe"; end; @@ -4514,7 +4514,7 @@ OnTouch: end; } -jupe_ele_r,10,54,0 script Elevator On#ufe -1,{ +jupe_ele_r,10,54,0 script Elevator On#ufe FAKE_NPC,{ OnInit: disablenpc "Elevator On#ufe"; end; @@ -4893,7 +4893,7 @@ OnTouch: } //- Warps - -jupe_gate,50,173,0 script gate#start -1,2,3,{ +jupe_gate,50,173,0 script gate#start FAKE_NPC,2,3,{ end; OnTouch: @@ -4927,7 +4927,7 @@ OnTimer10000: end; } -jupe_gate,50,171,0 script gate#start#2 -1,2,2,{ +jupe_gate,50,171,0 script gate#start#2 FAKE_NPC,2,2,{ OnInit: disablenpc "gate#start#2"; end; diff --git a/npc/quests/quests_lighthalzen.txt b/npc/quests/quests_lighthalzen.txt index 4ab0e4cbb..7cb0c1c0e 100644 --- a/npc/quests/quests_lighthalzen.txt +++ b/npc/quests/quests_lighthalzen.txt @@ -44,7 +44,7 @@ //========================================================================= //== Gangster Alert [Official Conversion] ================== -lighthalzen,1,1,0 script Law Enforcement -1,{ +lighthalzen,1,1,0 script Law Enforcement FAKE_NPC,{ end; OnEnable: @@ -3367,7 +3367,7 @@ yuno_in04,168,117,3 script Book#lhz HIDDEN_NPC,{ } //== Cursed Spirit Quest =================================== -lhz_dun01,147,106,0 script #kiz01-1 -1,3,3,{ +lhz_dun01,147,106,0 script #kiz01-1 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3403,11 +3403,11 @@ OnTouch_: end; } -lhz_dun01,239,135,0 duplicate(#kiz01-1) #kiz01-2 -1,3,3 -lhz_dun01,66,212,0 duplicate(#kiz01-1) #kiz01-3 -1,3,3 -lhz_dun01,225,198,0 duplicate(#kiz01-1) #kiz01-4 -1,3,3 +lhz_dun01,239,135,0 duplicate(#kiz01-1) #kiz01-2 FAKE_NPC,3,3 +lhz_dun01,66,212,0 duplicate(#kiz01-1) #kiz01-3 FAKE_NPC,3,3 +lhz_dun01,225,198,0 duplicate(#kiz01-1) #kiz01-4 FAKE_NPC,3,3 -lhz_dun02,244,229,0 script #kiz02-1 -1,3,3,{ +lhz_dun02,244,229,0 script #kiz02-1 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3443,11 +3443,11 @@ OnTouch_: end; } -lhz_dun02,60,298,0 duplicate(#kiz02-1) #kiz02-2 -1,3,3 -lhz_dun02,267,278,0 duplicate(#kiz02-1) #kiz02-3 -1,3,3 -lhz_dun02,94,199,0 duplicate(#kiz02-1) #kiz02-4 -1,3,3 +lhz_dun02,60,298,0 duplicate(#kiz02-1) #kiz02-2 FAKE_NPC,3,3 +lhz_dun02,267,278,0 duplicate(#kiz02-1) #kiz02-3 FAKE_NPC,3,3 +lhz_dun02,94,199,0 duplicate(#kiz02-1) #kiz02-4 FAKE_NPC,3,3 -lhz_dun03,244,51,0 script #kiz03-1 -1,3,3,{ +lhz_dun03,244,51,0 script #kiz03-1 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3483,10 +3483,10 @@ OnTouch_: end; } -lhz_dun03,123,191,0 duplicate(#kiz03-1) #kiz03-2 -1,3,3 -lhz_dun03,74,140,0 duplicate(#kiz03-1) #kiz03-3 -1,3,3 +lhz_dun03,123,191,0 duplicate(#kiz03-1) #kiz03-2 FAKE_NPC,3,3 +lhz_dun03,74,140,0 duplicate(#kiz03-1) #kiz03-3 FAKE_NPC,3,3 -lighthalzen,344,278,0 script #kiz03 -1,2,2,{ +lighthalzen,344,278,0 script #kiz03 FAKE_NPC,2,2,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3537,7 +3537,7 @@ OnTouch_: end; } -lhz_in03,178,22,0 script #kiz04 -1,2,2,{ +lhz_in03,178,22,0 script #kiz04 FAKE_NPC,2,2,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3616,7 +3616,7 @@ OnTouch_: end; } -lighthalzen,295,227,0 script #kiz05 -1,2,2,{ +lighthalzen,295,227,0 script #kiz05 FAKE_NPC,2,2,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3662,7 +3662,7 @@ OnTouch_: end; } -lighthalzen,364,315,0 script #kiz06 -1,3,3,{ +lighthalzen,364,315,0 script #kiz06 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3721,7 +3721,7 @@ OnTouch_: end; } -lhz_in01,113,150,0 script #kiz07 -1,3,3,{ +lhz_in01,113,150,0 script #kiz07 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3775,7 +3775,7 @@ OnTouch_: end; } -lhz_in01,272,227,0 script #kiz08 -1,2,2,{ +lhz_in01,272,227,0 script #kiz08 FAKE_NPC,2,2,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0 ) { if (lhz_curse == 0) { @@ -3859,7 +3859,7 @@ OnTouch_: end; } -lhz_in01,206,129,0 script #kiz09 -1,5,5,{ +lhz_in01,206,129,0 script #kiz09 FAKE_NPC,5,5,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0) { if (lhz_curse == 12) { @@ -4149,7 +4149,7 @@ lhz_que01,29,24,3 script #li_researcher 4_M_SAGE_A,{ end; } -lhz_in01,282,166,0 script #kiz10 -1,3,3,{ +lhz_in01,282,166,0 script #kiz10 FAKE_NPC,3,3,{ OnTouch_: if (countitem(Armlet_Of_Prisoner) > 0) { if (lhz_curse == 16) { @@ -5197,7 +5197,7 @@ OnTouch_: lhz_in03,12,162,0 warp #to_lhz 1,1,lighthalzen,321,322 -lighthalzen,319,321,0 script #li_bother -1,2,2,{ //3,3 +lighthalzen,319,321,0 script #li_bother FAKE_NPC,2,2,{ //3,3 OnTouch_: if ((lhz_curse == 24 ) || (lhz_curse == 25)) { mes "............."; @@ -6271,7 +6271,7 @@ lhz_in01,286,226,3 script Secretary Slierre#li 4_F_ZONDAGIRL,{ } } -lhz_que01,94,24,0 script #li_end -1,2,2,{ +lhz_que01,94,24,0 script #li_end FAKE_NPC,2,2,{ OnTouch_: if (lhz_curse > 30) { mes "^3131FFThere's no trace of"; @@ -7034,7 +7034,7 @@ lighthalzen,179,170,4 script Ordinary Man 4W_M_02,{ } } -lighthalzen,173,167,1 script Switch -1,2,4,{ +lighthalzen,173,167,1 script Switch FAKE_NPC,2,4,{ OnTouch: if(lhz_boss == 1) @@ -8622,7 +8622,7 @@ OnInit: end; } -yuno_pre,117,60,0 script Eavesdrop -1,10,5,{ +yuno_pre,117,60,0 script Eavesdrop FAKE_NPC,10,5,{ OnTouch: if(lhz_boss == 16) @@ -9112,7 +9112,7 @@ OnInit: end; } -lhz_fild02,224,220,0 script Wounded Man Switch -1,3,3,{ +lhz_fild02,224,220,0 script Wounded Man Switch FAKE_NPC,3,3,{ OnTouch: if(lhz_boss == 18) @@ -9126,7 +9126,7 @@ OnTouch: } } -lhz_fild01,76,214,0 script Esuna Trigger -1,5,5,{ +lhz_fild01,76,214,0 script Esuna Trigger FAKE_NPC,5,5,{ OnTouch: if((lhz_boss == 26) || (lhz_boss == 36) || (lhz_boss == 38) || (lhz_boss == 40)) @@ -9769,7 +9769,7 @@ L_Enter: } } -lhz_in01,177,44,0 script Timer_Sneak -1,8,12,{ +lhz_in01,177,44,0 script Timer_Sneak FAKE_NPC,8,12,{ OnTouch: warp "lhz_in01",191,49; @@ -11639,7 +11639,7 @@ OnStop: end; } -- script ::Scamp -1,{ +- script ::Scamp FAKE_NPC,{ if(lhz_rekenber > 21) { @@ -11822,7 +11822,7 @@ OnStop: close; } -airplane_01,1,1,1 script #bully1 -1,{ +airplane_01,1,1,1 script #bully1 FAKE_NPC,{ OnInit: disablenpc "#bully1"; @@ -11865,7 +11865,7 @@ OnTimer120000: end; } -airplane_01,2,2,1 script #bully2 -1,{ +airplane_01,2,2,1 script #bully2 FAKE_NPC,{ OnInit: disablenpc "#bully2"; diff --git a/npc/quests/quests_louyang.txt b/npc/quests/quests_louyang.txt index 6fa9a4f30..c62c5524b 100644 --- a/npc/quests/quests_louyang.txt +++ b/npc/quests/quests_louyang.txt @@ -4245,7 +4245,7 @@ lou_fild01,225,350,0 script #fire HIDDEN_WARP_NPC,{ end; } -lou_in01,101,125,0 script Trap#lou_in1 -1,20,1,{ +lou_in01,101,125,0 script Trap#lou_in1 FAKE_NPC,20,1,{ OnTouch: if (ch_poison == 12 || ch_poison == 16) { mes "[Soldier]"; @@ -4259,7 +4259,7 @@ OnTouch: end; } -lou_in01,101,129,0 script Trap#lou_in2 -1,20,1,{ +lou_in01,101,129,0 script Trap#lou_in2 FAKE_NPC,20,1,{ OnTouch: if (ch_poison == 12 || ch_poison == 16) { mes "[Soldier]"; @@ -4275,7 +4275,7 @@ OnTouch: end; } -lou_in01,101,134,0 script Trap#lou_in3 -1,20,1,{ +lou_in01,101,134,0 script Trap#lou_in3 FAKE_NPC,20,1,{ OnTouch: if (ch_poison == 12 || ch_poison == 16) { mes "[Soldier]"; @@ -4290,7 +4290,7 @@ OnTouch: end; } -lou_in01,114,163,0 script Trap#lou_in4 -1,6,1,{ +lou_in01,114,163,0 script Trap#lou_in4 FAKE_NPC,6,1,{ OnTouch: if (ch_poison == 12 || ch_poison == 16) { mes "[Soldier]"; @@ -4304,7 +4304,7 @@ OnTouch: end; } -lou_in01,114,165,0 script Trap#lou_in5 -1,1,0,{ +lou_in01,114,165,0 script Trap#lou_in5 FAKE_NPC,1,0,{ OnTouch: if (ch_poison == 12 || ch_poison == 16) { mes "[Soldier]"; diff --git a/npc/quests/quests_morocc.txt b/npc/quests/quests_morocc.txt index 077072fdc..757125618 100644 --- a/npc/quests/quests_morocc.txt +++ b/npc/quests/quests_morocc.txt @@ -759,7 +759,7 @@ OnTimer250000: end; } -que_job01,12,13,0 script #room1_warp -1,15,15,{ +que_job01,12,13,0 script #room1_warp FAKE_NPC,15,15,{ OnInit: disablenpc "#room1_warp"; end; @@ -1850,7 +1850,7 @@ morocc,159,113,3 script Chief Balrog 4_M_CRU_OLD,{ } } -moc_fild21,38,193,0 script Morocc Timer#edq -1,6,6,{ +moc_fild21,38,193,0 script Morocc Timer#edq FAKE_NPC,6,6,{ //OnInit: // $@re_moc = 0; // $@re_moc_time$ = ""; @@ -3571,7 +3571,7 @@ yuno_in04,167,120,3 script Worn-out Book#garas HIDDEN_NPC,{ } } -que_ba,247,33,0 script #bpast_1_1 -1,1,1,{ +que_ba,247,33,0 script #bpast_1_1 FAKE_NPC,1,1,{ //OnTouch2: OnTouch: if (barmunt_crow < 4) { @@ -3639,7 +3639,7 @@ que_ba,181,14,7 script Researcher#bpast_2_2 4_LGTSCIENCE,{ que_ba,183,25,0 warp #bpast_2to3_1 1,1,que_ba,72,25 que_ba,183,52,0 warp #bpast_2to3_2 1,1,que_ba,72,51 -que_ba,102,56,0 script #3room_barmunt -1,3,3,{ +que_ba,102,56,0 script #3room_barmunt FAKE_NPC,3,3,{ //OnTouch2: OnTouch: if (barmunt_crow < 4) { @@ -6809,7 +6809,7 @@ prt_castle,368,312,4 script Prince#ern 4_M_2NDPRIN1,{ } } -prt_castle,163,319,0 script #twonoble -1,3,3,{ +prt_castle,163,319,0 script #twonoble FAKE_NPC,3,3,{ //OnTouch2: OnTouch: if (nkprince_eisen == 7) { diff --git a/npc/quests/quests_moscovia.txt b/npc/quests/quests_moscovia.txt index 82b01b4e7..5142d7e41 100644 --- a/npc/quests/quests_moscovia.txt +++ b/npc/quests/quests_moscovia.txt @@ -2518,7 +2518,7 @@ OnTouch: } //- Triggers - -mosk_ship,1,1,4 script Baehideun#ship -1,{ +mosk_ship,1,1,4 script Baehideun#ship FAKE_NPC,{ OnInit: $@mos1_edq = 0; end; @@ -2567,7 +2567,7 @@ OnTimer300000: end; } -- script Baehideun#main -1,{ +- script Baehideun#main FAKE_NPC,{ OnInit: if (compare(strnpcinfo(0),"main")) end; disablenpc strnpcinfo(0); @@ -2619,10 +2619,10 @@ OnTimer300000: donpcevent strnpcinfo(0)+"::OnDisable"; end; } -mosk_ship,2,2,4 duplicate(Baehideun#main) Baehideun1#ship -1 -mosk_ship,3,3,4 duplicate(Baehideun#main) Baehideun2#ship -1 -mosk_ship,5,5,4 duplicate(Baehideun#main) Baehideun3#ship -1 -mosk_ship,15,15,4 duplicate(Baehideun#main) Baehideun4#ship -1 +mosk_ship,2,2,4 duplicate(Baehideun#main) Baehideun1#ship FAKE_NPC +mosk_ship,3,3,4 duplicate(Baehideun#main) Baehideun2#ship FAKE_NPC +mosk_ship,5,5,4 duplicate(Baehideun#main) Baehideun3#ship FAKE_NPC +mosk_ship,15,15,4 duplicate(Baehideun#main) Baehideun4#ship FAKE_NPC //== Help Mikhail :: mos_swan & mos_swan_pt2 =============== @@ -3682,7 +3682,7 @@ mosk_in,147,202,3 script Victor#mos 4_M_RUSMAN2,{ close; } -mosk_in,215,181,0 script #swan_inn -1,1,1,{ +mosk_in,215,181,0 script #swan_inn FAKE_NPC,1,1,{ end; OnTouch: if (mos_swan != 4) end; @@ -3986,7 +3986,7 @@ moscovia,208,182,7 script Acorn Dealer#mos 4_M_RUSMAN1,{ } //- Big Squirrel - Trade Acorns for Gems - -- script Squirrel#mos_main -1,{ +- script Squirrel#mos_main FAKE_NPC,{ if (compare(strnpcinfo(0),"mos_sq")) end; OnTouch: if ((MaxWeight-Weight) < 2000) { @@ -4102,7 +4102,7 @@ mosk_fild01,113,108,5 duplicate(Squirrel#mos_main) #mos_sq COCO,2,2 //== Banish Winter :: mos_nowinter ========================= //- Baba Yaga, the Horrible - Starting Point - -mosk_in,215,46,5 script #babayaga -1,7,7,{ +mosk_in,215,46,5 script #babayaga FAKE_NPC,7,7,{ end; OnTouch: if (!mos_nowinter) { @@ -6299,7 +6299,7 @@ mosk_dun03,225,233,0 script Pile of skeletons#mosk HIDDEN_NPC,{ close; } -mosk_dun03,225,233,0 script #Magic_Bottle -1,5,5,{ +mosk_dun03,225,233,0 script #Magic_Bottle FAKE_NPC,5,5,{ end; OnTouch: if (mos_nowinter == 8) { @@ -6350,7 +6350,7 @@ OnTouch: } //- Csar Alexsay III - -mosk_in,131,92,3 script #Csar -1,7,7,{ +mosk_in,131,92,3 script #Csar FAKE_NPC,7,7,{ if (mos_nowinter == 12) { mes "[Csar Alexsay III]"; mes "You!!!"; @@ -7328,7 +7328,7 @@ OnMyMobDead: } //- Koshei, The Immortal - -mosk_dun01,5,5,0 script Koshei#rus47 -1,0,0,{ +mosk_dun01,5,5,0 script Koshei#rus47 FAKE_NPC,0,0,{ end; OnInit: disablenpc "Koshei#rus47"; @@ -7363,7 +7363,7 @@ OnTimer300000: } //- Gray Wolf & Maria Morebna - -- script mos_rus#main -1,{ +- script mos_rus#main FAKE_NPC,{ end; OnInit: if (compare(strnpcinfo(0),"main")) end; @@ -8444,7 +8444,7 @@ mosk_fild02,157,233,0 script Shepherdess#rus10 1_F_04,{ } //- Pointed Trees (Wooden Flute) - -- script PTree#rusmain -1,{ +- script PTree#rusmain FAKE_NPC,{ if (rhea_rus_ring == 6) { if (countitem(Pointed_Branch) < 50) { if (rand(1,3) == 2) { @@ -8599,7 +8599,7 @@ mosk_fild02,101,204,0 duplicate(NoSwim) Caution#rus01 2_BULLETIN_BOARD mosk_fild02,101,200,0 duplicate(NoSwim) Caution#rus02 2_BULLETIN_BOARD //- Lusalka Trigger (Lusalka's Hair) - -mosk_fild02,116,202,3 script Lusalka#07russai_22 -1,3,3,{ +mosk_fild02,116,202,3 script Lusalka#07russai_22 FAKE_NPC,3,3,{ end; OnTouch: if (rhea_rus_main != 8) { @@ -9250,7 +9250,7 @@ mosk_que,0,0,0,0 monster Freezer 1887,10,20000,0,0 mosk_que,0,0,0,0 monster Hatii Baby 1888,3,300000,0,0 mosk_que,0,0,0,0 monster Sasquatch 1243,15,10000,0,0 -mosk_que,49,22,3 script #rus27 -1,3,3,{ +mosk_que,49,22,3 script #rus27 FAKE_NPC,3,3,{ end; OnTouch: if (rhea_rus_main == 8) { diff --git a/npc/quests/quests_nameless.txt b/npc/quests/quests_nameless.txt index 9ff387238..736cd6d78 100644 --- a/npc/quests/quests_nameless.txt +++ b/npc/quests/quests_nameless.txt @@ -62,7 +62,7 @@ //========================================================================= //== Nameless Island and Cursed Monestary Access Quest :: aru_monas = -airplane_01,90,63,0 script Event Switch#pc -1,3,3,{ +airplane_01,90,63,0 script Event Switch#pc FAKE_NPC,3,3,{ end; OnTouch: @@ -285,7 +285,7 @@ ra_in01,297,50,7 script Suspicious-Looking Man 4_M_MASK1,{ close; } -ra_in01,301,43,0 script MealConversation Trigger -1,3,3,{ +ra_in01,301,43,0 script MealConversation Trigger FAKE_NPC,3,3,{ end; OnTouch: @@ -919,7 +919,7 @@ OnInit: end; } -nameless_i,212,184,0 script Outside Island#Aru -1,2,3,{ +nameless_i,212,184,0 script Outside Island#Aru FAKE_NPC,2,3,{ end; OnTouch: @@ -940,7 +940,7 @@ OnTouch: end; } -nameless_in,21,176,0 script Inside Island#Aru -1,2,2,{ +nameless_in,21,176,0 script Inside Island#Aru FAKE_NPC,2,2,{ end; OnTouch: @@ -955,7 +955,7 @@ OnTouch: end; } -nameless_i,129,218,0 script Grass Behind#Aru -1,4,3,{ +nameless_i,129,218,0 script Grass Behind#Aru FAKE_NPC,4,3,{ end; OnTouch: @@ -1017,7 +1017,7 @@ nameless_i,127,207,0 script Dead Crow#Aru HIDDEN_NPC,{ end; } -nameless_in,15,61,0 script Pass Out#Aru -1,2,3,{ +nameless_in,15,61,0 script Pass Out#Aru FAKE_NPC,2,3,{ end; OnTouch: @@ -1157,7 +1157,7 @@ OnTouch: close; } -nameless_n,169,254,0 script Night#Aru2 -1,3,3,{ +nameless_n,169,254,0 script Night#Aru2 FAKE_NPC,3,3,{ end; OnTouch: @@ -2439,7 +2439,7 @@ OnTouch: end; } -moc_ruins,86,149,0 script #ForeignMerchant1 -1,3,3,{ +moc_ruins,86,149,0 script #ForeignMerchant1 FAKE_NPC,3,3,{ OnTouch: if (aru_em == 4) { aru_em = 5; @@ -2447,7 +2447,7 @@ OnTouch: end; } -moc_ruins,88,136,0 script #ForeignMerchant2 -1,3,3,{ +moc_ruins,88,136,0 script #ForeignMerchant2 FAKE_NPC,3,3,{ OnTouch: if (aru_em == 1) { aru_em = 2; @@ -2464,7 +2464,7 @@ OnTouch: end; } -moc_ruins,106,133,0 script #ForeignMerchant3 -1,3,3,{ +moc_ruins,106,133,0 script #ForeignMerchant3 FAKE_NPC,3,3,{ OnTouch: if (aru_em == 2) { aru_em = 3; @@ -2472,7 +2472,7 @@ OnTouch: end; } -moc_ruins,115,147,0 script #ForeignMerchant4 -1,3,3,{ +moc_ruins,115,147,0 script #ForeignMerchant4 FAKE_NPC,3,3,{ OnTouch: if (aru_em == 3) { aru_em = 4; @@ -2861,7 +2861,7 @@ que_temsky,99,100,6 script Pope#rachel2 4_F_ARUNA_POP,{ end; } -que_temsky,100,93,0 script #em_sky_s -1,5,2,{ +que_temsky,100,93,0 script #em_sky_s FAKE_NPC,5,2,{ //OnTouch2: OnTouch: if (aru_em == 21) { @@ -3143,7 +3143,7 @@ OnTouch: end; } -rachel,142,136,0 script #em_end -1,5,5,{ +rachel,142,136,0 script #em_end FAKE_NPC,5,5,{ OnInit: stopnpctimer; end; @@ -3768,7 +3768,7 @@ cmd_fild01,55,160,0 script Heap of Earth CLEAR_NPC,{ close; } -- script ::Dorian_izlude -1,{ +- script ::Dorian_izlude FAKE_NPC,{ if (checkweight(Resin,200) == 0) { mes "[Dorian]"; mes "Ugh, just like a member"; @@ -8716,7 +8716,7 @@ OnTouch: end; } -z_agit,98,44,0 script EntranceCheck#1 -1,10,10,{ +z_agit,98,44,0 script EntranceCheck#1 FAKE_NPC,10,10,{ OnTouch: if (((zdan_edq == 15) || (zdan_edq == 16)) && ($@monster_zgang == 0)) { $@monster_zgang = 1; @@ -8745,7 +8745,7 @@ OnTouch: end; } -z_agit,98,92,0 script EntranceCheck#2 -1,10,10,{ +z_agit,98,92,0 script EntranceCheck#2 FAKE_NPC,10,10,{ OnTouch: if (((zdan_edq == 15) || (zdan_edq == 16)) && ($@monster_zgang == 0)) { $@monster_zgang = 1; @@ -8847,7 +8847,7 @@ OnTimer350000: end; } -- script #ZGuard -1,{ +- script #ZGuard FAKE_NPC,{ OnInit: disablenpc "#ZGuard"; end; @@ -11644,7 +11644,7 @@ OnTimer60000: end; } -gef_fild08,182,182,0 script #CallGhost -1,2,2,{ +gef_fild08,182,182,0 script #CallGhost FAKE_NPC,2,2,{ end; //OnTouch2: diff --git a/npc/quests/quests_prontera.txt b/npc/quests/quests_prontera.txt index a535fd212..62ac92f42 100644 --- a/npc/quests/quests_prontera.txt +++ b/npc/quests/quests_prontera.txt @@ -1551,7 +1551,7 @@ S_Song: close; } -mjolnir_01,298,302,0 script #prt_poem01 -1,2,2,{ +mjolnir_01,298,302,0 script #prt_poem01 FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 11) { mes "^FF0000*The great serpent*^000000"; @@ -1561,7 +1561,7 @@ OnTouch: end; } -mjolnir_01,300,297,0 script #prt_poem02 -1,2,2,{ +mjolnir_01,300,297,0 script #prt_poem02 FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 11) { mes "^FF0000*The great serpent*^000000"; @@ -1571,7 +1571,7 @@ OnTouch: end; } -mjolnir_01,292,288,0 script #prt_poem03 -1,2,2,{ +mjolnir_01,292,288,0 script #prt_poem03 FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 11) { mes "^FF0000*The eagle of the rainbow*^000000"; @@ -1581,7 +1581,7 @@ OnTouch: end; } -mjolnir_01,302,286,0 script #prt_poem04 -1,2,2,{ +mjolnir_01,302,286,0 script #prt_poem04 FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 11) { mes "^FF0000*Then snake scales*^000000"; @@ -1591,7 +1591,7 @@ OnTouch: end; } -mjolnir_01,313,279,0 script #prt_poem05 -1,2,2,{ +mjolnir_01,313,279,0 script #prt_poem05 FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 11) { mes "^FF0000*And it slowly died...*^000000"; @@ -3535,7 +3535,7 @@ OnEnable: end; } -morocc,45,103,0 script #prtcurse -1,2,2,{ +morocc,45,103,0 script #prtcurse FAKE_NPC,2,2,{ OnTouch: if (prt_curse == 25) { mes "["+strcharinfo(0)+"]"; diff --git a/npc/quests/quests_rachel.txt b/npc/quests/quests_rachel.txt index db6fd02a7..ce2a18859 100644 --- a/npc/quests/quests_rachel.txt +++ b/npc/quests/quests_rachel.txt @@ -3217,7 +3217,7 @@ OnMyMobDead: end; } -ice_dun02,120,3,0 script #cave_vos -1,{ +ice_dun02,120,3,0 script #cave_vos FAKE_NPC,{ OnInit: initnpctimer; end; @@ -3646,7 +3646,7 @@ ice_dun03,127,172,0 script Blazing Fire#ice4 4_NFWISP,{ close; } -ice_dun03,1,173,5 script ice_boss#broad -1,{ +ice_dun03,1,173,5 script ice_boss#broad FAKE_NPC,{ OnStop: stopnpctimer; end; @@ -3685,7 +3685,7 @@ OnTimer21000: end; } -ice_dun03,1,174,3 script ice_boss#on -1,{ +ice_dun03,1,174,3 script ice_boss#on FAKE_NPC,{ OnStart: monster "ice_dun03",150,135,"Ktullanux",1779,1,"ice_boss#on::OnMyMobDead"; end; @@ -3715,7 +3715,7 @@ OnTimer7200000: end; } -ice_dun03,1,175,3 script #ice_sec -1,{ +ice_dun03,1,175,3 script #ice_sec FAKE_NPC,{ OnStart: initnpctimer; enablenpc "#ice_4f_1"; @@ -4494,7 +4494,7 @@ rachel,243,37,3 script Kid#Candy Addict 4_M_CHILD1,{ } } -ra_temple,67,209,0 script zawa00 -1,3,3,{ +ra_temple,67,209,0 script zawa00 FAKE_NPC,3,3,{ OnTouch: if (ra_tem_q == 2) { mes "^3355FFYou notice a slightly"; @@ -4547,7 +4547,7 @@ que_rachel,63,82,0 script Window#ra_temple HIDDEN_NPC,{ close; } -que_rachel,60,80,0 script zawa01 -1,5,5,{ +que_rachel,60,80,0 script zawa01 FAKE_NPC,5,5,{ OnTouch: if (ra_tem_q == 2) { mes "^3355FFIt's strangely"; @@ -4558,7 +4558,7 @@ OnTouch: end; } -que_rachel,59,112,0 script zawa02 -1,10,10,{ +que_rachel,59,112,0 script zawa02 FAKE_NPC,10,10,{ OnTouch: if (ra_tem_q == 3) { mes "^3355FFYou hear some"; @@ -4572,7 +4572,7 @@ OnTouch: end; } -que_rachel,94,139,0 script zawa03 -1,10,10,{ +que_rachel,94,139,0 script zawa03 FAKE_NPC,10,10,{ OnTouch: if (ra_tem_q == 4) { mes "^3355FFYou hear noises of some"; @@ -4583,7 +4583,7 @@ OnTouch: end; } -que_rachel,132,70,0 script zawa04 -1,10,10,{ +que_rachel,132,70,0 script zawa04 FAKE_NPC,10,10,{ OnTouch: if (ra_tem_q == 5) { mes " "; @@ -4600,7 +4600,7 @@ OnTouch: end; } -que_rachel,28,315,0 script Bloody Spot -1,5,5,{ +que_rachel,28,315,0 script Bloody Spot FAKE_NPC,5,5,{ OnTouch: if (ra_tem_q == 6) { mes "^3355FFThere's a spot on the"; @@ -4670,7 +4670,7 @@ OnTouch: end; } -que_rachel,170,37,0 script nemma01::nemma01 -1,5,5,{ +que_rachel,170,37,0 script nemma01::nemma01 FAKE_NPC,5,5,{ OnTouch: if (ra_tem_q == 8) { mes "[???]"; @@ -4699,10 +4699,10 @@ OnTouch: end; } -que_rachel,175,37,0 duplicate(nemma01) nemma02 -1,5,5 -que_rachel,180,37,0 duplicate(nemma01) nemma03 -1,5,5 -que_rachel,165,37,0 duplicate(nemma01) nemma04 -1,5,5 -que_rachel,160,37,0 duplicate(nemma01) nemma05 -1,5,5 +que_rachel,175,37,0 duplicate(nemma01) nemma02 FAKE_NPC,5,5 +que_rachel,180,37,0 duplicate(nemma01) nemma03 FAKE_NPC,5,5 +que_rachel,165,37,0 duplicate(nemma01) nemma04 FAKE_NPC,5,5 +que_rachel,160,37,0 duplicate(nemma01) nemma05 FAKE_NPC,5,5 que_rachel,169,18,0 script Quest Temple Exit#ra_tem WARPNPC,2,2,{ mes "^3355FFThe gate is closed.^000000"; @@ -7067,7 +7067,7 @@ OnTimer120000: end; } -ra_temin,293,144,0 script out1#rachel -1,3,3,{ +ra_temin,293,144,0 script out1#rachel FAKE_NPC,3,3,{ OnTouch: if (ra_tem_q == 18) { mes "^3355FFIt sounds like they're"; @@ -7088,7 +7088,7 @@ OnTouch: end; } -ra_temin,288,151,0 script hidden1#rachel -1,1,6,{ +ra_temin,288,151,0 script hidden1#rachel FAKE_NPC,1,6,{ OnTouch: if (ra_tem_q == 18) { mes "^3355FFAt this distance you"; @@ -7250,7 +7250,7 @@ OnTouch: end; } -ra_temin,272,143,0 script key1#rachel -1,3,3,{ +ra_temin,272,143,0 script key1#rachel FAKE_NPC,3,3,{ OnTouch: if (ra_tem_q == 20) { mes "^3355FFYou find a small"; @@ -7301,7 +7301,7 @@ OnTouch: close; } -que_san04,119,115,0 script imir1#rachel -1,2,2,{ +que_san04,119,115,0 script imir1#rachel FAKE_NPC,2,2,{ OnTouch: if (ra_tem_q == 21) { mes "^3355FFThis large area looks"; @@ -7318,7 +7318,7 @@ OnTouch: end; } -que_san04,119,133,0 script imir2#rachel -1,20,5,{ +que_san04,119,133,0 script imir2#rachel FAKE_NPC,20,5,{ OnTouch: if (ra_tem_q == 21) { mes "^3355FFThere's something here"; @@ -7329,7 +7329,7 @@ OnTouch: end; } -que_san04,119,203,0 script imir3#rachel -1,7,7,{ +que_san04,119,203,0 script imir3#rachel FAKE_NPC,7,7,{ OnTouch: if (ra_tem_q == 21) { mes "^3355FFNo wonder this object"; @@ -7418,7 +7418,7 @@ OnTimer120000: end; } -rachel,163,152,0 script imir3#rachel2 -1,3,3,{ +rachel,163,152,0 script imir3#rachel2 FAKE_NPC,3,3,{ OnTouch: if (ra_tem_q == 22) { mes "^3355FFYou feel a slight headache"; diff --git a/npc/quests/quests_umbala.txt b/npc/quests/quests_umbala.txt index bf228dd16..56cddc02d 100644 --- a/npc/quests/quests_umbala.txt +++ b/npc/quests/quests_umbala.txt @@ -1271,7 +1271,7 @@ umbala,145,217,3 script Chabimatan 4_F_UMWOMAN,{ } } -um_in,141,46,0 script #!@#$% -1,8,8,{ +um_in,141,46,0 script #!@#$% FAKE_NPC,8,8,{ OnInit: disablenpc "#!@#$%"; end; @@ -1300,7 +1300,7 @@ OnTouch: end; } -umbala,94,181,0 script #unpc -1,1,1,{ +umbala,94,181,0 script #unpc FAKE_NPC,1,1,{ OnInit: disablenpc "#unpc"; end; diff --git a/npc/quests/quests_veins.txt b/npc/quests/quests_veins.txt index ca7ef541d..bca78b9da 100644 --- a/npc/quests/quests_veins.txt +++ b/npc/quests/quests_veins.txt @@ -52,7 +52,7 @@ //========================================================================= //== Stone Quest :: veins_stone ============================ -- script ::WincingOldMan_veins -1,{ +- script ::WincingOldMan_veins FAKE_NPC,{ if ((MaxWeight - Weight) < 2000 || checkweight(Knife,1) == 0) { mes "- Wait a moment! -"; mes "- Currently you are carrying -"; @@ -2022,7 +2022,7 @@ ein_in01,166,282,4 script Employee#sch 4_M_KHMAN,{ close; } -ein_in01,176,285,0 script Bard Trigger#sch -1,1,1,{ +ein_in01,176,285,0 script Bard Trigger#sch FAKE_NPC,1,1,{ OnTouch: if (que_sch == 15) { disablenpc "Corporate Figure#sch"; @@ -5271,7 +5271,7 @@ ra_temin,115,140,1 script Flower Vase#vol HIDDEN_NPC,{ close; } -ra_temin,85,131,0 script path_vol1 -1,5,0,{ +ra_temin,85,131,0 script path_vol1 FAKE_NPC,5,0,{ OnTouch: if ((aru_vol != 3) && (aru_vol != 4)) { warp "ra_temin",85,137; @@ -5279,7 +5279,7 @@ OnTouch: end; } -ra_temin,82,131,0 script path_vol1#2 -1,5,0,{ +ra_temin,82,131,0 script path_vol1#2 FAKE_NPC,5,0,{ OnTouch: if (aru_vol != 4) { warp "ra_temin",85,137; @@ -5287,7 +5287,7 @@ OnTouch: end; } -ra_temin,82,127,0 script path_vol1#3 -1,5,1,{ +ra_temin,82,127,0 script path_vol1#3 FAKE_NPC,5,1,{ OnTouch: if (aru_vol == 5) { warp "ra_temin",84,124; @@ -5536,7 +5536,7 @@ ra_temin,73,126,1 script Ladder#vol1 HIDDEN_NPC,{ end; } -ve_in,280,223,0 script #volroom -1,2,2,{ +ve_in,280,223,0 script #volroom FAKE_NPC,2,2,{ OnTouch: if (aru_vol == 6) { mes "^3355FFThis house looks like"; @@ -6489,7 +6489,7 @@ thor_camp,250,104,3 script Sahedi#vol 4_M_RASWORD,{ } -thor_camp,194,220,0 script #Colonel1 -1,5,5,{ +thor_camp,194,220,0 script #Colonel1 FAKE_NPC,5,5,{ OnTouch: if (aru_vol == 13) { enablenpc "Colonel Vito#1"; @@ -6544,7 +6544,7 @@ OnTouch: end; } -thor_camp,162,182,0 script #Colonel2 -1,7,7,{ +thor_camp,162,182,0 script #Colonel2 FAKE_NPC,7,7,{ OnTouch: if (aru_vol == 13) { enablenpc "Colonel Vito#2"; @@ -6934,7 +6934,7 @@ thor_camp,159,74,3 script Colonel Vito#3 4_M_DST_MASTER,{ close; } -thor_camp,141,62,0 script #vol_study1::VeinsWarp -1,3,3,{ +thor_camp,141,62,0 script #vol_study1::VeinsWarp FAKE_NPC,3,3,{ OnTouch: if ((aru_vol > 13 && aru_vol < 17) || (aru_vol == 19)) { warp "thor_camp",156,67; @@ -6942,10 +6942,10 @@ OnTouch: end; } -thor_camp,172,72,0 duplicate(VeinsWarp) #vol_study2 -1,3,3 -thor_camp,172,38,0 duplicate(VeinsWarp) #vol_study3 -1,3,3 +thor_camp,172,72,0 duplicate(VeinsWarp) #vol_study2 FAKE_NPC,3,3 +thor_camp,172,38,0 duplicate(VeinsWarp) #vol_study3 FAKE_NPC,3,3 -thor_camp,172,132,0 script #sita_vol -1,3,3,{ +thor_camp,172,132,0 script #sita_vol FAKE_NPC,3,3,{ OnTouch: if (aru_vol == 21) { mes "^3355FFThere's a stream of"; @@ -6963,7 +6963,7 @@ OnTouch: end; } -thor_camp,148,310,0 script #buki_vol -1,5,5,{ +thor_camp,148,310,0 script #buki_vol FAKE_NPC,5,5,{ OnTouch: if (aru_vol == 22) { mes "^3355FFPeople are carrying"; @@ -7274,7 +7274,7 @@ OnTouch_: end; } -thor_camp,62,98,0 script #volbq -1,5,5,{ +thor_camp,62,98,0 script #volbq FAKE_NPC,5,5,{ OnTouch: mes "^3355FFThere is an old man"; mes "in high priest robes"; @@ -7305,7 +7305,7 @@ thor_camp,246,191,3 script Guard#goto 4_DST_SOLDIER,{ close; } -veins,302,166,0 script #whoau -1,2,2,{ +veins,302,166,0 script #whoau FAKE_NPC,2,2,{ OnTouch_: mes "[House Owner]"; mes "Wh-who the hell"; diff --git a/npc/quests/seals/brisingamen_seal.txt b/npc/quests/seals/brisingamen_seal.txt index 02bddfb7b..d579a94f7 100644 --- a/npc/quests/seals/brisingamen_seal.txt +++ b/npc/quests/seals/brisingamen_seal.txt @@ -3019,7 +3019,7 @@ que_god02,55,64,4 script Soldier#2_brising 8W_SOLDIER,1,1,{ close; } -que_god02,1,1,1 script #brisinsold2 -1,{ +que_god02,1,1,1 script #brisinsold2 FAKE_NPC,{ OnInit: hideonnpc "Soldier#2_brising"; areawarp "que_god02",15,125,185,131,"geffen",120,100; @@ -3056,7 +3056,7 @@ OnTimer550500: } -que_god02,1,1,1 script #brisinsummon -1,{ +que_god02,1,1,1 script #brisinsummon FAKE_NPC,{ OnInit: hideonnpc "#doppelganger1"; diff --git a/npc/quests/seals/god_weapon_creation.txt b/npc/quests/seals/god_weapon_creation.txt index a60c6a225..70bb2c881 100644 --- a/npc/quests/seals/god_weapon_creation.txt +++ b/npc/quests/seals/god_weapon_creation.txt @@ -817,7 +817,7 @@ OnTimer615000: end; } -que_god01,169,82,0 script god_wep_warpmaster -1,{ +que_god01,169,82,0 script god_wep_warpmaster FAKE_NPC,{ OnEnable: for(.@i = 1; .@i<=6; ++.@i) enablenpc "god_failwarp#"+.@i; @@ -828,7 +828,7 @@ OnDisable: end; } -que_god01,154,67,0 script god_failwarp#1 -1,4,7,{ +que_god01,154,67,0 script god_failwarp#1 FAKE_NPC,4,7,{ OnInit: disablenpc strnpcinfo(0); end; @@ -836,11 +836,11 @@ OnTouch: warp "prontera",156,324; end; } -que_god01,154,82,0 duplicate(god_failwarp#1) god_failwarp#2 -1,4,7 -que_god01,145,99,0 duplicate(god_failwarp#1) god_failwarp#3 -1,9,9 -que_god01,164,99,0 duplicate(god_failwarp#1) god_failwarp#4 -1,9,9 -que_god01,145,118,0 duplicate(god_failwarp#1) god_failwarp#5 -1,9,9 -que_god01,164,118,0 duplicate(god_failwarp#1) god_failwarp#6 -1,9,9 +que_god01,154,82,0 duplicate(god_failwarp#1) god_failwarp#2 FAKE_NPC,4,7 +que_god01,145,99,0 duplicate(god_failwarp#1) god_failwarp#3 FAKE_NPC,9,9 +que_god01,164,99,0 duplicate(god_failwarp#1) god_failwarp#4 FAKE_NPC,9,9 +que_god01,145,118,0 duplicate(god_failwarp#1) god_failwarp#5 FAKE_NPC,9,9 +que_god01,164,118,0 duplicate(god_failwarp#1) god_failwarp#6 FAKE_NPC,9,9 // Original name: "Godly Item Quests Related#god" que_god01,293,3,0 script Godly Item Quests#god 4_F_01,{ diff --git a/npc/quests/skills/assassin_skills.txt b/npc/quests/skills/assassin_skills.txt index 7f3312a07..ecea1c3d1 100644 --- a/npc/quests/skills/assassin_skills.txt +++ b/npc/quests/skills/assassin_skills.txt @@ -763,7 +763,7 @@ in_moc_16,23,27,5 script Assassin#realgirl 4_F_ACROSS,{ } } -in_sphinx2,259,213,0 script Old Coffin#qsk_as -1,7,8,{ +in_sphinx2,259,213,0 script Old Coffin#qsk_as FAKE_NPC,7,8,{ OnTouch: if (ASSN_SK == 2) { mes "^3355FFIt's an ancient coffin"; @@ -827,7 +827,7 @@ OnTouch: } } -in_sphinx2,212,267,0 script Old Coffin#qsk_as2 -1,5,6,{ +in_sphinx2,212,267,0 script Old Coffin#qsk_as2 FAKE_NPC,5,6,{ OnTouch: if (ASSN_SK == 2) { mes "^3355FFIt's an ancient coffin"; @@ -910,7 +910,7 @@ OnTouch: } } -in_sphinx2,13,163,0 script Stone Statue#qsk_as -1,7,7,{ +in_sphinx2,13,163,0 script Stone Statue#qsk_as FAKE_NPC,7,7,{ OnTouch: if (ASSN_SK == 3) { specialeffect EF_CONE; @@ -945,7 +945,7 @@ OnTouch: } } -in_sphinx2,13,146,0 script Stone Statue#qsk_as2 -1,7,7,{ +in_sphinx2,13,146,0 script Stone Statue#qsk_as2 FAKE_NPC,7,7,{ OnTouch: if (ASSN_SK == 3) { specialeffect EF_CONE; @@ -981,7 +981,7 @@ OnTouch: // FIXME[Haru]: Why do we have a Korean name here? Can anyone translate it? // Google translate says ¡¡ (jingjing) = Whining, but it doesn't make much sense to me. -moc_pryd04,85,96,0 script ¡¡#crypt -1,3,3,{ +moc_pryd04,85,96,0 script ¡¡#crypt FAKE_NPC,3,3,{ OnTouch: if (ASSN_SK == 4) { specialeffect EF_CONE; diff --git a/npc/quests/skills/merchant_skills.txt b/npc/quests/skills/merchant_skills.txt index 3a4575899..f2aa46bb6 100644 --- a/npc/quests/skills/merchant_skills.txt +++ b/npc/quests/skills/merchant_skills.txt @@ -356,7 +356,7 @@ alberta,119,221,6 script Charlron 1_M_PAY_ELDER,{ close; } -- script ::Gershaun_alberta -1,{ +- script ::Gershaun_alberta FAKE_NPC,{ if (BaseClass == Job_Merchant) { if (getskilllv("MC_CARTREVOLUTION") == 1) { mes "[Gershaun]"; diff --git a/npc/quests/skills/rogue_skills.txt b/npc/quests/skills/rogue_skills.txt index e1444a8b3..b51895e47 100644 --- a/npc/quests/skills/rogue_skills.txt +++ b/npc/quests/skills/rogue_skills.txt @@ -37,7 +37,7 @@ //= 1.8 //========================================================================= -in_rogue,359,177,0 script #killershow01 -1,{ +in_rogue,359,177,0 script #killershow01 FAKE_NPC,{ OnInit: disablenpc "#killershow01"; end; @@ -1053,7 +1053,7 @@ in_rogue,181,114,3 script Jay Greg#rogueguild 4_M_03,{ close; } -prt_are01,150,150,0 script #1strecog -1,10,10,{ +prt_are01,150,150,0 script #1strecog FAKE_NPC,10,10,{ OnTouch: donpcevent "#1st5min::OnEnable"; donpcevent "#1stmove::OnEnable"; @@ -1061,7 +1061,7 @@ OnTouch: end; } -prt_are01,135,135,0 script #1st5min -1,{ +prt_are01,135,135,0 script #1st5min FAKE_NPC,{ OnInit: disablenpc "#1st5min"; end; @@ -1106,7 +1106,7 @@ OnTimer315000: end; } -prt_are01,135,135,0 script #1stmove -1,{ +prt_are01,135,135,0 script #1stmove FAKE_NPC,{ OnInit: disablenpc "#1stmove"; end; diff --git a/npc/quests/thana_quest.txt b/npc/quests/thana_quest.txt index b33afe9b0..49cb0c5c7 100644 --- a/npc/quests/thana_quest.txt +++ b/npc/quests/thana_quest.txt @@ -2235,7 +2235,7 @@ OnDisable: end; } -thana_boss,141,218,0 script #sommon_thanatos -1,{ +thana_boss,141,218,0 script #sommon_thanatos FAKE_NPC,{ OnEnable: specialeffect EF_MAPPILLAR2,AREA,"#sommon_thanatos"; specialeffect EF_SEISMICWEAPON,AREA,"#sommon_thanatos"; diff --git a/npc/quests/the_sign_quest.txt b/npc/quests/the_sign_quest.txt index 6aad35d67..a431a4318 100644 --- a/npc/quests/the_sign_quest.txt +++ b/npc/quests/the_sign_quest.txt @@ -3086,7 +3086,7 @@ prt_maze02,57,151,1 script Pleur#warp 4_F_02,{ end; } -prt_maze02,58,150,0 script #movesign -1,5,5,{ +prt_maze02,58,150,0 script #movesign FAKE_NPC,5,5,{ OnTouch: mes "^3355FFYou catch a glimpse"; mes "of a girl heading directly"; @@ -3101,19 +3101,19 @@ OnTouch: end; } -prt_maze02,18,126,0 script #mazewarp -1,3,3,{ +prt_maze02,18,126,0 script #mazewarp FAKE_NPC,3,3,{ OnTouch: warp "prt_maze02",90,170; end; } -prt_maze02,25,161,0 script #music -1,7,7,{ +prt_maze02,25,161,0 script #music FAKE_NPC,7,7,{ OnTouch: soundeffect "effect\\¼®¾çÀÇ ¾î½Ø½Å.wav",1; end; } -prt_maze02,132,132,0 script #skill -1,{ +prt_maze02,132,132,0 script #skill FAKE_NPC,{ OnEnable: monster "prt_maze02",14,177,"Flora",1118,1,"#skill::OnMyMobDead"; monster "prt_maze02",17,171,"Flora",1118,1,"#skill::OnMyMobDead"; @@ -5044,7 +5044,7 @@ OnReset: end; } -cmd_in01,1,1,0 script s_dance_timer -1,{ +cmd_in01,1,1,0 script s_dance_timer FAKE_NPC,{ OnEnable: initnpctimer; end; @@ -5481,7 +5481,7 @@ OnTouch: end; } -cmd_in01,14,14,0 script Examiner#sd -1,6,6,{ +cmd_in01,14,14,0 script Examiner#sd FAKE_NPC,6,6,{ OnInit: disablenpc "Examiner#sd"; end; @@ -10438,7 +10438,7 @@ que_sign01,122,141,4 script Witch#s 4_F_NFDEADMGCIAN,{ } } -nif_in,186,168,1 script #witch -1,1,1,{ +nif_in,186,168,1 script #witch FAKE_NPC,1,1,{ OnTouch: callfunc "F_UpdateSignVars"; if (sign_q == 83) { @@ -11662,7 +11662,7 @@ niflheim,102,54,4 script Mad Man#s 8_DOPPEL,{ } } -niflheim,348,257,1 script #Cursed Soul -1,1,1,{ +niflheim,348,257,1 script #Cursed Soul FAKE_NPC,1,1,{ OnTouch: callfunc "F_UpdateSignVars"; if ((sign_q == 83) || (sign_q == 90)) { @@ -11777,7 +11777,7 @@ OnMyMobDead: end; } -nif_in,102,81,1 script #Crayu -1,1,1,{ +nif_in,102,81,1 script #Crayu FAKE_NPC,1,1,{ OnTouch: callfunc "F_UpdateSignVars"; if (sign_q < 75) end; @@ -11869,7 +11869,7 @@ OnTouch: end; } -nif_in,156,91,1 script #kidniff -1,1,1,{ +nif_in,156,91,1 script #kidniff FAKE_NPC,1,1,{ OnTouch: callfunc "F_UpdateSignVars"; if (sign_q == 83) { @@ -12313,7 +12313,7 @@ geffen,119,48,0 script Fountain#s HIDDEN_NPC,{ } } -que_sign01,196,44,0 script Starter#serin -1,32,32,{ +que_sign01,196,44,0 script Starter#serin FAKE_NPC,32,32,{ OnTouch: donpcevent "Timer#serin::OnStart"; disablenpc "Starter#serin"; @@ -12324,7 +12324,7 @@ OnEnable: end; } -que_sign01,196,44,0 script Warp#serin -1,35,35,{ +que_sign01,196,44,0 script Warp#serin FAKE_NPC,35,35,{ OnDisable: OnInit: disablenpc "Warp#serin"; @@ -12339,7 +12339,7 @@ OnEnable: end; } -que_sign01,1,0,0 script Timer#serin -1,{ +que_sign01,1,0,0 script Timer#serin FAKE_NPC,{ OnStart: initnpctimer; end; @@ -12360,7 +12360,7 @@ OnTimer620000: end; } -que_sign01,50,1,0 script CallMonster#serin -1,{ +que_sign01,50,1,0 script CallMonster#serin FAKE_NPC,{ OnCall: monster "que_sign01",196,44,"Dark Lord Incarnation",1605,1,"CallMonster#serin::OnMyMobDead"; end; @@ -12374,7 +12374,7 @@ OnReset: killmonster "que_sign01","CallMonster#serin::OnMyMobDead"; } -que_sign01,197,195,0 script Starter#witch -1,32,32,{ +que_sign01,197,195,0 script Starter#witch FAKE_NPC,32,32,{ OnTouch: donpcevent "Timer#witch::OnStart"; disablenpc "Starter#witch"; @@ -12385,7 +12385,7 @@ OnEnable: end; } -que_sign01,1,1,0 script Timer#witch -1,{ +que_sign01,1,1,0 script Timer#witch FAKE_NPC,{ OnStart: initnpctimer; end; @@ -12404,7 +12404,7 @@ OnTimer620000: end; } -que_sign01,197,195,0 script Warp#witch -1,35,35,{ +que_sign01,197,195,0 script Warp#witch FAKE_NPC,35,35,{ OnDisable: OnInit: disablenpc "Warp#witch"; @@ -12419,7 +12419,7 @@ OnTouch: end; } -que_sign01,1,2,0 script CallMonster#witch -1,{ +que_sign01,1,2,0 script CallMonster#witch FAKE_NPC,{ OnCall: monster "que_sign01",196,195,"Dark Lord Incarnation",1605,1,"CallMonster#witch::OnMyMobDead"; monster "que_sign01",180,180,"Ancient Mummy",1522,1,"CallMonster#witch::OnMyMobDead"; diff --git a/npc/re/battleground/bg_common.txt b/npc/re/battleground/bg_common.txt new file mode 100644 index 000000000..2c47f8ed1 --- /dev/null +++ b/npc/re/battleground/bg_common.txt @@ -0,0 +1,36 @@ +//================= Hercules Script ======================================= +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2012-2016 Hercules Dev Team +//= Copyright (C) Frost +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +// BattleGround System - Common NPCs +//================= Description =========================================== +//= Battleground NPC: +//= - Battleground Warper +//================= Current Version ======================================= +//= 1.0 +//========================================================================= + +morocc,145,82,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit8 4_F_JOB_KNIGHT
\ No newline at end of file diff --git a/npc/re/cities/izlude.txt b/npc/re/cities/izlude.txt index accae753c..29a1a9a72 100644 --- a/npc/re/cities/izlude.txt +++ b/npc/re/cities/izlude.txt @@ -88,7 +88,7 @@ izlude_b,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_b 8W_SOLDIER izlude_c,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_c 8W_SOLDIER izlude_d,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_d 8W_SOLDIER -- script ::Guard_izlude -1,{ +- script ::Guard_izlude FAKE_NPC,{ mes "[Izlude Guard]"; mes "Welcome to Izlude."; close; diff --git a/npc/re/cities/malangdo.txt b/npc/re/cities/malangdo.txt index 98d0efd95..43e07d7f1 100644 --- a/npc/re/cities/malangdo.txt +++ b/npc/re/cities/malangdo.txt @@ -34,7 +34,7 @@ //========================================================================= //== Malangdo Transportation :: malangdo_go ================ -- script Dolangmal -1,{ +- script Dolangmal FAKE_NPC,{ if (!questprogress(5091)) { mes "[Dolangmal]"; mes "Hey~! Hi human~ This is Mr. Dolangmal. kakaka~"; @@ -173,7 +173,7 @@ rachel,121,126,4 duplicate(Dolangmal) Dolangmal#7 4_CAT_DOWN lighthalzen,254,83,5 duplicate(Dolangmal) Dolangmal#8 4_CAT_DOWN mora,57,150,4 duplicate(Dolangmal) Dolangmal#9 4_CAT_DOWN -- script ::Odgnalam -1,{ +- script ::Odgnalam FAKE_NPC,{ mes "This cat is sleeping in the warm "+((strnpcinfo(2) == "albe")?"Alberta":"Izlude")+" sun."; next; if(select("Let him sleep:Talk to him") == 1) close; diff --git a/npc/re/cities/malaya.txt b/npc/re/cities/malaya.txt index 1577a7245..0c937607a 100644 --- a/npc/re/cities/malaya.txt +++ b/npc/re/cities/malaya.txt @@ -150,7 +150,7 @@ ma_in01,30,94,4 script Inn Keeper#ma 4_F_MALAYA,{ } } -- script Unidentified Creature#i -1,{ +- script Unidentified Creature#i FAKE_NPC,{ end; OnInit: switch(atoi(strnpcinfo(2))) { @@ -208,7 +208,7 @@ ma_fild01,74,367,6 duplicate(Unidentified Creature#i) Unidentified Creature#01 4 ma_fild02,282,41,4 duplicate(Unidentified Creature#i) Unidentified Creature#05 4_MAL_BUDIDAI,2,2 ma_scene01,195,92,4 duplicate(Unidentified Creature#i) Unidentified Creature#09 4_MAL_BUDIDAI,2,2 -- script Unidentified Creature#j -1,{ +- script Unidentified Creature#j FAKE_NPC,{ end; OnEnable: enablenpc strnpcinfo(0); diff --git a/npc/re/cities/mora.txt b/npc/re/cities/mora.txt index 1c9049795..acfc02c13 100644 --- a/npc/re/cities/mora.txt +++ b/npc/re/cities/mora.txt @@ -922,7 +922,7 @@ mora,140,186,3 script Raffle Philosopher 4_M_RAFLE_OLD,{ close; } -- script #mora_traveler -1,{ +- script #mora_traveler FAKE_NPC,{ mes "[Upset Traveler]"; mes "You... you dare play a game with me?"; emotion e_ag,0,"Traveler#ep14_1_1"; diff --git a/npc/re/guides/guides_izlude.txt b/npc/re/guides/guides_izlude.txt index fb2cb31cd..e625235bf 100644 --- a/npc/re/guides/guides_izlude.txt +++ b/npc/re/guides/guides_izlude.txt @@ -34,7 +34,7 @@ //= 1.4 //========================================================================= -- script ::GuideIzlude -1,{ +- script ::GuideIzlude FAKE_NPC,{ cutin "prt_soldier",2; mes "[Izlude Guide]"; mes "Welcome to ^8B4513Izlude^000000,"; diff --git a/npc/re/instances/BuwayaCave.txt b/npc/re/instances/BuwayaCave.txt index 008529551..139d3acc3 100644 --- a/npc/re/instances/BuwayaCave.txt +++ b/npc/re/instances/BuwayaCave.txt @@ -459,7 +459,7 @@ OnTouch: close; } -1@ma_c,1,1,0 script #buwaya_spawn_mobs -1,{ +1@ma_c,1,1,0 script #buwaya_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("1@ma_c"); areamonster .@map$,73,81,93,101,"Seaweed",2331,18; diff --git a/npc/re/instances/MalangdoCulvert.txt b/npc/re/instances/MalangdoCulvert.txt index bdf5c6776..e72833640 100644 --- a/npc/re/instances/MalangdoCulvert.txt +++ b/npc/re/instances/MalangdoCulvert.txt @@ -707,7 +707,7 @@ OnTimer520000: end; } -1@pump,1,1,4 script Monster Hole#n -1,{ +1@pump,1,1,4 script Monster Hole#n FAKE_NPC,{ end; OnSpawn: .@i$ = charat(strnpcinfo(2),0); @@ -789,7 +789,7 @@ OnTouch: 1@pump,75,80,4 duplicate(#Culvert_n1) #Culvert_n5 CLEAR_NPC,14,14 1@pump,58,101,4 duplicate(#Culvert_n1) #Culvert_n6 CLEAR_NPC,14,14 -1@pump,1,1,4 script Boss Creation#n -1,{ +1@pump,1,1,4 script Boss Creation#n FAKE_NPC,{ end; OnInstanceInit: disablenpc instance_npcname(strnpcinfo(0)); @@ -909,7 +909,7 @@ OnTouch: } //MD_Putmob "1@pump" 0 0 0 0 20 HYDRA 0 0 2 -1@pump,1,1,4 script Hydra#n -1,{ +1@pump,1,1,4 script Hydra#n FAKE_NPC,{ OnInstanceInit: monster strnpcinfo(4),0,0,"Hydra",1068,20; end; @@ -1054,10 +1054,10 @@ OnTouch: 2@pump,100,74,4 duplicate(#Culvert_h1) #Culvert_h9 CLEAR_NPC,14,14 2@pump,115,50,4 duplicate(#Culvert_h1) #Culvert_h10 CLEAR_NPC,14,14 -2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h -1 -2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h -1 +2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h FAKE_NPC +2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h FAKE_NPC 2@pump,39,88,4 duplicate(Missing, the Cleaner#no) Missing, the Cleaner#ho 4_CAT_SAILOR2 2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h WARPNPC,3,3 //MD_Putmob "2@pump" 0 0 0 0 20 HYDRA 0 0 2 -2@pump,1,1,4 duplicate(Hydra#n) Hydra#h -1 +2@pump,1,1,4 duplicate(Hydra#n) Hydra#h FAKE_NPC diff --git a/npc/re/instances/OctopusCave.txt b/npc/re/instances/OctopusCave.txt index 61f3e408d..da0df4ac6 100644 --- a/npc/re/instances/OctopusCave.txt +++ b/npc/re/instances/OctopusCave.txt @@ -189,7 +189,7 @@ OnTouch: end; } -1@cash,1,1,0 script oct_enter_broad -1,{ +1@cash,1,1,0 script oct_enter_broad FAKE_NPC,{ end; OnInstanceInit: donpcevent instance_npcname("oct_enter_broad")+"::OnDisable"; @@ -216,7 +216,7 @@ OnTimer7000: end; } -1@cash,3,3,0 script oct_foot_4 -1,{ +1@cash,3,3,0 script oct_foot_4 FAKE_NPC,{ end; OnInstanceInit: donpcevent instance_npcname("oct_foot_4")+"::OnDisable"; @@ -389,7 +389,7 @@ OnTouch: 1@cash,312,214,0 duplicate(oct_foot_exit1) oct_foot_exit3 WARPNPC,2,2 1@cash,370,139,0 duplicate(oct_foot_exit1) oct_foot_exit4 WARPNPC,2,2 -1@cash,15,15,0 script oct_mob_con -1,{ +1@cash,15,15,0 script oct_mob_con FAKE_NPC,{ end; OnInstanceInit: donpcevent instance_npcname("oct_mob_con")+"::OnDisable"; @@ -579,7 +579,7 @@ OnEnable: end; } -1@cash,2,2,0 script oct_boss_con -1,{ +1@cash,2,2,0 script oct_boss_con FAKE_NPC,{ end; OnInstanceInit: donpcevent instance_npcname("oct_boss_con")+"::OnDisable"; @@ -654,7 +654,7 @@ OnMyMobDead: end; } -1@cash,4,4,0 script oct_boss_foot -1,{ +1@cash,4,4,0 script oct_boss_foot FAKE_NPC,{ end; OnInstanceInit: donpcevent instance_npcname("oct_boss_foot")+"::OnDisable"; diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt index b59d6ca36..1807efa4c 100644 --- a/npc/re/instances/OldGlastHeim.txt +++ b/npc/re/instances/OldGlastHeim.txt @@ -455,7 +455,7 @@ OnTalk8: } //== Control Timer ========================================= -1@gl_k,0,0,0 script #talkinstance1 -1,{ +1@gl_k,0,0,0 script #talkinstance1 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#talkinstance1"); @@ -817,7 +817,7 @@ OnTouch: //== Sector 1 Mobs ========================================= -1@gl_k,0,0,0 script #ghmemorialmob01 -1,{ +1@gl_k,0,0,0 script #ghmemorialmob01 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob01"); @@ -948,7 +948,7 @@ OnEnable: end; } -1@gl_k,0,0,0 script #ghmemorialmob02 -1,{ +1@gl_k,0,0,0 script #ghmemorialmob02 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob02"); @@ -1036,7 +1036,7 @@ OnDisable: 2@gl_k,173,258,3 duplicate(Breathless Man#GHtramp1) Breathless Man#GHtramp32 4_M_DIEMAN,4,4 //== Sector 3 Mobs ========================================= -1@gl_k,0,0,0 script #ghmemorialmob03 -1,{ +1@gl_k,0,0,0 script #ghmemorialmob03 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob03"); @@ -1074,7 +1074,7 @@ OnMyMobDead: } //== 1st MVP =============================================== -1@gl_k,0,0,0 script #ghmemorialmob04 -1,{ +1@gl_k,0,0,0 script #ghmemorialmob04 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob04"); @@ -1118,7 +1118,7 @@ OnTimer2000: end; } -1@gl_k,0,0,0 script #controlGH3 -1,{ +1@gl_k,0,0,0 script #controlGH3 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#controlGH3"); @@ -1385,7 +1385,7 @@ OnEnable: end; } -2@gl_k,0,0,0 script #controlGH4 -1,{ +2@gl_k,0,0,0 script #controlGH4 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#controlGH4"); @@ -1476,7 +1476,7 @@ OnTimer70000: end; } -2@gl_k,0,0,0 script #ghmemorialmob05 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob05 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob05"); @@ -1523,7 +1523,7 @@ OnMyMobDead: end; } -2@gl_k,0,0,0 script #ghmemorialmob06 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob06 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob06"); @@ -1564,7 +1564,7 @@ OnTimer92000: end; } -2@gl_k,0,0,0 script #ghmemorialmob07 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob07 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob07"); @@ -1585,7 +1585,7 @@ OnMyMobDead: end; } -2@gl_k,0,0,0 script #ghmemorialmob08 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob08 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob08"); @@ -1631,7 +1631,7 @@ OnMyMobDead: end; } -2@gl_k,0,0,0 script #ghmemorialmob09 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob09 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob09"); @@ -1652,7 +1652,7 @@ OnMyMobDead: end; } -2@gl_k,0,0,0 script #ghmemorialmob10 -1,{ +2@gl_k,0,0,0 script #ghmemorialmob10 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#ghmemorialmob10"); @@ -1835,7 +1835,7 @@ OnEffect5: end; } -2@gl_k,0,0,0 script #controlGH5 -1,{ +2@gl_k,0,0,0 script #controlGH5 FAKE_NPC,{ OnInstanceInit: OnDisable: disablenpc instance_npcname("#controlGH5"); diff --git a/npc/re/instances/WolfchevLaboratory.txt b/npc/re/instances/WolfchevLaboratory.txt index 7adc07995..e9ae1c0af 100644 --- a/npc/re/instances/WolfchevLaboratory.txt +++ b/npc/re/instances/WolfchevLaboratory.txt @@ -1372,7 +1372,7 @@ lhz_dun03,239,78,1 script lhz_dun03_lhz_dun04 WARPNPC,1,1,{ lhz_dun04,244,61,1 warp lhz_dun04_lhz_dun03 1,1,lhz_dun03,240,75 //== Inside the Lab ======================================== -que_lhz,242,50,0 script #01Startpoint -1,3,3,{ +que_lhz,242,50,0 script #01Startpoint FAKE_NPC,3,3,{ end; OnInit: @@ -1582,7 +1582,7 @@ que_lhz,147,224,4 script Researcher#04 4_LGTSCIENCE,{ } //== Warp to lhz_dun04 from Wolfchev's Lab ================= -que_lhz,148,251,0 script #Move2lab -1,12,0,{ +que_lhz,148,251,0 script #Move2lab FAKE_NPC,12,0,{ end; OnTouch: @@ -1598,7 +1598,7 @@ que_lhz,148,251,0 script #Move2lab -1,12,0,{ } //== Event Controller ====================================== -que_lhz,1,1,0 script #Eventctrl -1,{ +que_lhz,1,1,0 script #Eventctrl FAKE_NPC,{ end; OnEnable: @@ -1662,14 +1662,14 @@ que_lhz,1,1,0 script #Eventctrl -1,{ killmonster "que_lhz", "#Eventctrl::OnMyMobDead"; } -que_lhz,139,232,0 script #01 -1,{ end; } -que_lhz,147,232,0 script #02 -1,{ end; } -que_lhz,156,232,0 script #03 -1,{ end; } -que_lhz,156,224,0 script #04 -1,{ end; } -que_lhz,156,215,0 script #05 -1,{ end; } -que_lhz,147,215,0 script #06 -1,{ end; } -que_lhz,139,215,0 script #07 -1,{ end; } -que_lhz,139,224,0 script #08 -1,{ end; } +que_lhz,139,232,0 script #01 FAKE_NPC,{ end; } +que_lhz,147,232,0 script #02 FAKE_NPC,{ end; } +que_lhz,156,232,0 script #03 FAKE_NPC,{ end; } +que_lhz,156,224,0 script #04 FAKE_NPC,{ end; } +que_lhz,156,215,0 script #05 FAKE_NPC,{ end; } +que_lhz,147,215,0 script #06 FAKE_NPC,{ end; } +que_lhz,139,215,0 script #07 FAKE_NPC,{ end; } +que_lhz,139,224,0 script #08 FAKE_NPC,{ end; } //== Human Guinea pigs ===================================== que_lhz,140,231,1 script Human Guinea pig#01 CHEN,{ @@ -2260,7 +2260,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ } //== The Lab No.2 ========================================== -1@lhz,151,29,0 script #2_0 -1,1,1,{ +1@lhz,151,29,0 script #2_0 FAKE_NPC,1,1,{ end; OnEnable: @@ -2465,7 +2465,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ } //== The Lab No.2 2_3 System =============================== -1@lhz,151,48,0 script #2_3 -1,20,20,{ +1@lhz,151,48,0 script #2_3 FAKE_NPC,20,20,{ end; OnInstanceInit: @@ -2568,7 +2568,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ } //== The Lab No.2 Valves =================================== -- script bio4FLab2Valve -1,{ +- script bio4FLab2Valve FAKE_NPC,{ if (getpartyleader(getcharid(1),2) == getcharid(0)) { progressbar "0xffff00", 20; stopnpctimer; @@ -2626,7 +2626,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ } //== The Lab No.3 ========================================== -1@lhz,84,28,0 script #3_0 -1,1,1,{ +1@lhz,84,28,0 script #3_0 FAKE_NPC,1,1,{ end; OnEnable: @@ -2824,7 +2824,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ } //== The Lab No.4 ========================================== -1@lhz,137,100,0 script #4_0 -1,1,1,{ +1@lhz,137,100,0 script #4_0 FAKE_NPC,1,1,{ end; OnEnable: @@ -2989,7 +2989,7 @@ lhz_dun04,147,279,0 script Laboratory Entrance#memo CLEAR_NPC,{ 1@lhz,148,156,3 script Type_**Dree#boss16 4_M_DWARF,{ end; } //== Bosses ================================================ -- script bio4FBoss -1,{ +- script bio4FBoss FAKE_NPC,{ end; OnEnable: diff --git a/npc/re/jobs/2e/kagerou_oboro.txt b/npc/re/jobs/2e/kagerou_oboro.txt index 42b9b628a..f8b7803e5 100644 --- a/npc/re/jobs/2e/kagerou_oboro.txt +++ b/npc/re/jobs/2e/kagerou_oboro.txt @@ -1139,7 +1139,7 @@ function script F_KO_Survival_rps { } //- Templates - -- script Sight#ko_trap -1,{ +- script Sight#ko_trap FAKE_NPC,{ callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4)); end; OnTouch: @@ -1160,7 +1160,7 @@ OnTouch: end; } -- script Sight#ko_trap2 -1,{ +- script Sight#ko_trap2 FAKE_NPC,{ callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4)); end; OnTouch: @@ -1205,7 +1205,7 @@ OnTouch: end; } -- script Sight#ko_heal -1,{ +- script Sight#ko_heal FAKE_NPC,{ callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4)); end; OnTouch: @@ -1223,7 +1223,7 @@ OnTouch: end; } -- script Sight#ko_curse -1,{ +- script Sight#ko_curse FAKE_NPC,{ callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4)); end; OnTouch: @@ -1268,7 +1268,7 @@ OnTouch: } } -- script Sight#ko_gravity -1,{ +- script Sight#ko_gravity FAKE_NPC,{ callfunc "F_KO_Survival_mes", atoi(substr(strnpcinfo(2),3,4)); end; OnTouch: diff --git a/npc/re/jobs/3-1/archbishop.txt b/npc/re/jobs/3-1/archbishop.txt index f803d99f8..ee8a3872f 100644 --- a/npc/re/jobs/3-1/archbishop.txt +++ b/npc/re/jobs/3-1/archbishop.txt @@ -1001,7 +1001,7 @@ OnTouch: end; } -- script #arch_1_01_0::archbjcq -1,{ +- script #arch_1_01_0::archbjcq FAKE_NPC,{ OnTouch: if (countitem(ValkyrieA_Scroll)) { delitem ValkyrieA_Scroll,1; @@ -1048,7 +1048,7 @@ OnTouch: end; } -- script #arch_redcell -1,{ +- script #arch_redcell FAKE_NPC,{ OnInit: setcell "job3_arch02",276,290,280,294,cell_walkable,0; setcell "job3_arch02",276,290,280,294,cell_shootable,0; @@ -1350,7 +1350,7 @@ OnTouch: end; } -- script #arch_2_02_0::archbjcq2 -1,{ +- script #arch_2_02_0::archbjcq2 FAKE_NPC,{ OnTouch: if (countitem(ValkyrieB_Scroll)) { delitem ValkyrieB_Scroll,1; diff --git a/npc/re/jobs/3-1/guillotine_cross.txt b/npc/re/jobs/3-1/guillotine_cross.txt index 88d7b9f9f..a780093f1 100644 --- a/npc/re/jobs/3-1/guillotine_cross.txt +++ b/npc/re/jobs/3-1/guillotine_cross.txt @@ -3056,7 +3056,7 @@ OnTimer5000: end; } -- script #3rdgc_guard00 -1,{ +- script #3rdgc_guard00 FAKE_NPC,{ end; OnInit: OnDisable: diff --git a/npc/re/jobs/3-1/ranger.txt b/npc/re/jobs/3-1/ranger.txt index dd26786d2..e7c9981a2 100644 --- a/npc/re/jobs/3-1/ranger.txt +++ b/npc/re/jobs/3-1/ranger.txt @@ -1582,7 +1582,7 @@ OnTimer133000: end; } -- script Egg Bomb#0 -1,{ +- script Egg Bomb#0 FAKE_NPC,{ OnInit: disablenpc strnpcinfo(0); end; diff --git a/npc/re/jobs/3-1/warlock.txt b/npc/re/jobs/3-1/warlock.txt index 981503f84..e068a963a 100644 --- a/npc/re/jobs/3-1/warlock.txt +++ b/npc/re/jobs/3-1/warlock.txt @@ -36,7 +36,7 @@ //= 1.4 //========================================================================= -- script #distorted_space_ -1,{ +- script #distorted_space_ FAKE_NPC,{ OnTouch: if (job_wl > 1) { mes " - There is a strange distortion here - "; @@ -799,7 +799,7 @@ OnDisable: end; } -- script The chamber of magic#2 -1,{ +- script The chamber of magic#2 FAKE_NPC,{ OnInit: disablenpc strnpcinfo(0); end; @@ -877,9 +877,9 @@ OnTimer305000: stopnpctimer; end; } -- duplicate(The chamber of magic#2) The chamber of magic#3 -1 +- duplicate(The chamber of magic#2) The chamber of magic#3 FAKE_NPC -- script The chamber of magic#4 -1,{ +- script The chamber of magic#4 FAKE_NPC,{ OnInit: disablenpc "The chamber of magic#4"; end; @@ -944,7 +944,7 @@ OnTimer65000: end; } -- script Hollow Stone#Warlock -1,{ +- script Hollow Stone#Warlock FAKE_NPC,{ OnInit: disablenpc "Hollow Stone#Warlock"; end; @@ -1024,7 +1024,7 @@ OnTimer607000: end; } -- script Ebein#E1 -1,{ +- script Ebein#E1 FAKE_NPC,{ OnInit: disablenpc "Ebein#E1"; end; @@ -1047,7 +1047,7 @@ OnTimer6000: end; } -- script Ebein#E2 -1,{ +- script Ebein#E2 FAKE_NPC,{ OnInit: disablenpc "Ebein#E2"; end; diff --git a/npc/re/jobs/3-2/genetic.txt b/npc/re/jobs/3-2/genetic.txt index f74bcd31a..61d59c54a 100644 --- a/npc/re/jobs/3-2/genetic.txt +++ b/npc/re/jobs/3-2/genetic.txt @@ -963,7 +963,7 @@ job3_gen01,91,48,3 script Demi Calberine#gen 4_F_SCIENCE,{ } } -- script Scattered Stuff#gen -1,{ +- script Scattered Stuff#gen FAKE_NPC,{ if (job_gen > 62 && job_gen < 74) { mes "- There are so many scattered things on the floor that the lab is in chaos. -"; next; diff --git a/npc/re/jobs/3-2/sorcerer.txt b/npc/re/jobs/3-2/sorcerer.txt index ba278fbd7..0c12d82f0 100644 --- a/npc/re/jobs/3-2/sorcerer.txt +++ b/npc/re/jobs/3-2/sorcerer.txt @@ -390,7 +390,7 @@ gef_tower,113,161,5 script Karacas 4_M_SAGE_A,{ close; } } -- script Spirit Detecting Staff#0 -1,{ +- script Spirit Detecting Staff#0 FAKE_NPC,{ if (strnpcinfo(4) == "thor_v01") setarray .@id[0],990,994,6276,6278; else if (strnpcinfo(4) == "ice_dun01") setarray .@id[0],991,995,6278,6276; diff --git a/npc/re/jobs/3-2/wanderer.txt b/npc/re/jobs/3-2/wanderer.txt index 24c06ed2e..105a43fd0 100644 --- a/npc/re/jobs/3-2/wanderer.txt +++ b/npc/re/jobs/3-2/wanderer.txt @@ -862,7 +862,7 @@ hu_fild05,342,130,5 script Dancer Kim#fild 4_F_CAPEGIRL,{ close; } -- script #fildshout00::wandererjcq -1,{ +- script #fildshout00::wandererjcq FAKE_NPC,{ OnTouch: if (job_wan == 7) { switch(rand(3)) { @@ -1041,7 +1041,7 @@ OnInit: end; } -- script #wander_xmas -1,{ +- script #wander_xmas FAKE_NPC,{ end; OnInit: disablenpc strnpcinfo(0); diff --git a/npc/re/jobs/novice/academy.txt b/npc/re/jobs/novice/academy.txt index 280547487..f98363fee 100644 --- a/npc/re/jobs/novice/academy.txt +++ b/npc/re/jobs/novice/academy.txt @@ -5630,7 +5630,7 @@ izlude_c,97,138,5 duplicate(Romantic Female#iz) Romantic Female#iz_c 4_F_SITDOWN izlude_d,97,138,5 duplicate(Romantic Female#iz) Romantic Female#iz_d 4_F_SITDOWN //- Manufacturing Maniac - -izlude,93,143,3 script Manufacturing Maniac#0 -1,{ +izlude,93,143,3 script Manufacturing Maniac#0 FAKE_NPC,{ mes "[Manufacturing Maniac]"; mes "Hi~! I am an Alchemist."; mes "It's one of the second jobs after Merchant."; @@ -6424,7 +6424,7 @@ pay_fild08,153,83,1 script Lady Harvesting Herbs#2 1_F_ORIENT_02,{ } //- Signs - -- script ::ac_board -1,{ +- script ::ac_board FAKE_NPC,{ end; } @@ -12620,7 +12620,7 @@ izlude_c,153,126,1 duplicate(Refinery Owner Han#iz) Refinery Owner Han#iz_c 4_M_ izlude_d,153,126,1 duplicate(Refinery Owner Han#iz) Refinery Owner Han#iz_d 4_M_02 //- Refining Machine Wagjak - -- script ::izludeWagjak -1,{ +- script ::izludeWagjak FAKE_NPC,{ disable_items; mes "[Refining Machine Wagjak]"; mes "-Ddarritt!-"; diff --git a/npc/re/jobs/novice/novice.txt b/npc/re/jobs/novice/novice.txt index 4d8ff77f4..e98fff417 100644 --- a/npc/re/jobs/novice/novice.txt +++ b/npc/re/jobs/novice/novice.txt @@ -36,7 +36,7 @@ //========================================================================= //== Main NPCs ============================================= -- script Sprakki#newbe01::NvSprakkiA -1,{ +- script Sprakki#newbe01::NvSprakkiA FAKE_NPC,{ if (job_novice_q == 0) { mes "[Sprakki]"; mes "Hello there! Welcome to the World of Ragnarok Online. My name is Sprakki and I'm in charge of giving you basic gameplay tips."; @@ -98,7 +98,7 @@ new_3-1,53,114,3 duplicate(NvSprakkiA) Sprakki#nv3a 4_F_01 new_4-1,53,114,3 duplicate(NvSprakkiA) Sprakki#nv4a 4_F_01 new_5-1,53,114,3 duplicate(NvSprakkiA) Sprakki#nv5a 4_F_01 -- script Sprakki#newbe05::NvSprakkiB -1,{ +- script Sprakki#newbe05::NvSprakkiB FAKE_NPC,{ if (job_novice_q == 0) { mes "[Sprakki]"; mes "Hello there! Welcome to the World of Ragnarok Online."; @@ -229,7 +229,7 @@ new_3-2,100,29,4 duplicate(NvSprakkiB) Sprakki#nv3b 4_F_01 new_4-2,100,29,4 duplicate(NvSprakkiB) Sprakki#nv4b 4_F_01 new_5-2,100,29,4 duplicate(NvSprakkiB) Sprakki#nv5b 4_F_01 -- script Brade#newbe02::NvBradeA -1,{ +- script Brade#newbe02::NvBradeA FAKE_NPC,{ if (job_novice_q < 2) { mes "[Instructor Brade]"; mes "Hello there! Welcome to the World of Ragnarok Online."; @@ -499,7 +499,7 @@ new_3-2,100,105,3 duplicate(NvBradeA) Brade#nv3a 4_M_JOB_KNIGHT1 new_4-2,100,105,3 duplicate(NvBradeA) Brade#nv4a 4_M_JOB_KNIGHT1 new_5-2,100,105,3 duplicate(NvBradeA) Brade#nv5a 4_M_JOB_KNIGHT1 -- script Jinha#newbe03::NvJinha -1,{ +- script Jinha#newbe03::NvJinha FAKE_NPC,{ if (job_novice_q < 5) { mes "[Jinha]"; mes "What can I help you with?"; @@ -595,7 +595,7 @@ new_4-2,115,120,3 duplicate(NvJinha) Jinha#nv4 1_M_ORIENT01 new_5-2,115,120,3 duplicate(NvJinha) Jinha#nv5 1_M_ORIENT01 //== People/Services in Ragnarok =========================== -- script Chocolat#newbe06::NvChocolat -1,{ +- script Chocolat#newbe06::NvChocolat FAKE_NPC,{ if (job_novice_q < 7) { mes "[Chocolat]"; mes "Hmm? Strange."; @@ -777,7 +777,7 @@ new_3-2,33,172,4 duplicate(NvChocolat) Chocolat#nv3 4W_KID new_4-2,33,172,4 duplicate(NvChocolat) Chocolat#nv4 4W_KID new_5-2,33,172,4 duplicate(NvChocolat) Chocolat#nv5 4W_KID -- script Kafra Employee#newbe07::NvKafra -1,{ +- script Kafra Employee#newbe07::NvKafra FAKE_NPC,{ if (job_novice_q < 8) { mes "[Kafra Employee]"; mes "Hello."; @@ -1021,7 +1021,7 @@ new_3-2,30,176,4 duplicate(NvKafra) Kafra Employee#nv3 4_F_KAFRA1 new_4-2,30,176,4 duplicate(NvKafra) Kafra Employee#nv4 4_F_KAFRA1 new_5-2,30,176,4 duplicate(NvKafra) Kafra Employee#nv5 4_F_KAFRA1 -- script Cool Event Corp. Staff::NvCool -1,{ +- script Cool Event Corp. Staff::NvCool FAKE_NPC,{ if (job_novice_q < 9) { mes "[Cool Event Corp. Staff]"; mes "This is not my turn."; @@ -1061,7 +1061,7 @@ new_3-2,33,176,4 duplicate(NvCool) Cool Event Corp. Staff::NvCool3 4_M_ZONDAMAN new_4-2,33,176,4 duplicate(NvCool) Cool Event Corp. Staff::NvCool4 4_M_ZONDAMAN new_5-2,33,176,4 duplicate(NvCool) Cool Event Corp. Staff::NvCool5 4_M_ZONDAMAN -- script Guide::NvGuide -1,{ +- script Guide::NvGuide FAKE_NPC,{ if (job_novice_q < 10) { mes "[Guide]"; mes "It ain't my turn yet."; @@ -1116,7 +1116,7 @@ new_4-2,36,176,4 duplicate(NvGuide) Guide#nv4 8W_SOLDIER new_5-2,36,176,4 duplicate(NvGuide) Guide#nv5 8W_SOLDIER //== Real Combat Training ================================== -- script Brade#newbe04::NvBradeB -1,{ +- script Brade#newbe04::NvBradeB FAKE_NPC,{ if (job_novice_q < 12) { if (job_novice_q < 2) { mes "[Brade]"; @@ -1328,7 +1328,7 @@ new_3-3,96,30,4 duplicate(NvBradeB) Brade#nv3b 4_M_JOB_KNIGHT1 new_4-3,96,30,4 duplicate(NvBradeB) Brade#nv4b 4_M_JOB_KNIGHT1 new_5-3,96,30,4 duplicate(NvBradeB) Brade#nv5b 4_M_JOB_KNIGHT1 -- script Swordman Guide#newbe10::NvSwordman -1,{ +- script Swordman Guide#newbe10::NvSwordman FAKE_NPC,{ if (job_novice_q < 15) { mes "[Swordman Guildsman]"; mes "I won't help you until you finish Brade's instructions."; @@ -1488,7 +1488,7 @@ new_3-3,97,41,3 duplicate(NvSwordman) Swordman Guide#nv3 4_F_JOB_KNIGHT new_4-3,97,41,3 duplicate(NvSwordman) Swordman Guide#nv4 4_F_JOB_KNIGHT new_5-3,97,41,3 duplicate(NvSwordman) Swordman Guide#nv5 4_F_JOB_KNIGHT -- script Acolyte Guide#newbe10::NvAcolyte -1,{ +- script Acolyte Guide#newbe10::NvAcolyte FAKE_NPC,{ if (job_novice_q < 15) { mes "[Prontera Acolyte]"; mes "You look like you are not done with Instructor Brade's lessons."; @@ -1578,7 +1578,7 @@ new_3-3,101,41,3 duplicate(NvAcolyte) Acolyte Guide#nv3 4_F_SISTER new_4-3,101,41,3 duplicate(NvAcolyte) Acolyte Guide#nv4 4_F_SISTER new_5-3,101,41,3 duplicate(NvAcolyte) Acolyte Guide#nv5 4_F_SISTER -- script Thief Guide#newbe10::NvThief -1,{ +- script Thief Guide#newbe10::NvThief FAKE_NPC,{ if (job_novice_q < 15) { mes "[Thief Guild Member]"; mes "You look like you are not done with Instructor Brade's lessons."; @@ -1715,7 +1715,7 @@ new_3-3,105,41,3 duplicate(NvThief) Thief Guide#nv3 2_M_THIEFMASTER new_4-3,105,41,3 duplicate(NvThief) Thief Guide#nv4 2_M_THIEFMASTER new_5-3,105,41,3 duplicate(NvThief) Thief Guide#nv5 2_M_THIEFMASTER -- script Merchant Guide#newbe10::NvMerchant -1,{ +- script Merchant Guide#newbe10::NvMerchant FAKE_NPC,{ if (job_novice_q < 15) { mes "[Merchant Guildsman]"; mes "You are still in the process of training with sir Brad."; @@ -1871,7 +1871,7 @@ new_3-3,109,41,3 duplicate(NvMerchant) Merchant Guide#nv3 4W_M_01 new_4-3,109,41,3 duplicate(NvMerchant) Merchant Guide#nv4 4W_M_01 new_5-3,109,41,3 duplicate(NvMerchant) Merchant Guide#nv5 4W_M_01 -- script Archer Guide#newbe10::NvArcher -1,{ +- script Archer Guide#newbe10::NvArcher FAKE_NPC,{ if (job_novice_q < 15) { mes "[Archer Guildsman]"; mes "You are still in the process of training with sir Brade."; @@ -1968,7 +1968,7 @@ new_3-3,113,41,3 duplicate(NvArcher) Archer Guide#nv3 4_F_JOB_HUNTER new_4-3,113,41,3 duplicate(NvArcher) Archer Guide#nv4 4_F_JOB_HUNTER new_5-3,113,41,3 duplicate(NvArcher) Archer Guide#nv5 4_F_JOB_HUNTER -- script Mage Guide#newbe10::NvMage -1,{ +- script Mage Guide#newbe10::NvMage FAKE_NPC,{ if (job_novice_q < 15) { mes "[Mage Guild Member]"; mes "You are still in the process of training with Instructor Brade."; @@ -2118,7 +2118,7 @@ new_3-3,117,41,3 duplicate(NvMage) Mage Guide#nv3 2_F_MAGICMASTER new_4-3,117,41,3 duplicate(NvMage) Mage Guide#nv4 2_F_MAGICMASTER new_5-3,117,41,3 duplicate(NvMage) Mage Guide#nv5 2_F_MAGICMASTER -- script Bruce#nv::NvBruce -1,{ +- script Bruce#nv::NvBruce FAKE_NPC,{ mes "[Bruce]"; mes "Hello?"; mes "I'm here to guide you about extra jobs and special classes."; @@ -2183,7 +2183,7 @@ new_5-3,121,41,3 duplicate(NvBruce) Bruce#nv5 1_M_LIBRARYMASTER //== Eden Group Officer (iRO only) ========================= /* -- script Eden Group Officer::NvEden -1,{ +- script Eden Group Officer::NvEden FAKE_NPC,{ if (BaseLevel < 10) { mes "[Eden Group Officer]"; mes "Hello, I am a representative of the Eden Group."; @@ -2292,7 +2292,7 @@ new_5-3,97,50,4 duplicate(NvEden) Eden Group Officer#nv5 4_F_NOVICE,5,5 */ //== Trainer =============================================== -- script ::NvBrutus -1,{ +- script ::NvBrutus FAKE_NPC,{ mes "[Trainer Brutus]"; mes "These monsters are all weak and easy to kill. But be careful, a lot of them are aggressive and out for blood!"; next; @@ -2389,7 +2389,7 @@ new_4-3,100,50,3 duplicate(NvPotato) Potato Merchant#nv4 4_F_04 new_5-3,100,50,3 duplicate(NvPotato) Potato Merchant#nv5 4_F_04 //== Random Stuff ========================================== -- script Bulletin Board::NvBulletin -1,{ +- script Bulletin Board::NvBulletin FAKE_NPC,{ mes "^FF0000================================="; mes " ^E40CAA[Welcome] ^CC0000to^FF9000Novice^7FFF00 Training^00FF00 Grounds^E40CAA [Welcome] "; mes "^FF0000=================================^000000"; @@ -2401,7 +2401,7 @@ new_3-1,66,114,4 duplicate(NvBulletin) Bulletin Board#nv3 HIDDEN_NPC new_4-1,66,114,4 duplicate(NvBulletin) Bulletin Board#nv4 HIDDEN_NPC new_5-1,66,114,4 duplicate(NvBulletin) Bulletin Board#nv5 HIDDEN_NPC -- script Guard::NvGuardA -1,{ +- script Guard::NvGuardA FAKE_NPC,{ mes "[Training Grounds Guard]"; mes "Welcome to the Training Grounds."; mes "You are now in the outer court yard. Please go inside the castle to begin your training."; @@ -2413,7 +2413,7 @@ new_3-1,144,116,2 duplicate(NvGuardA) Guard#nv3a 8W_SOLDIER new_4-1,144,116,2 duplicate(NvGuardA) Guard#nv4a 8W_SOLDIER new_5-1,144,116,2 duplicate(NvGuardA) Guard#nv5a 8W_SOLDIER -- script Guard::NvGuardB -1,{ +- script Guard::NvGuardB FAKE_NPC,{ mes "[Training Grounds Guard]"; if (rand(2)) { mes "Come in! I would like to welcome you to the Training Grounds!"; @@ -2430,7 +2430,7 @@ new_3-1,144,107,2 duplicate(NvGuardB) Guard#nv3b 8W_SOLDIER new_4-1,144,107,2 duplicate(NvGuardB) Guard#nv4b 8W_SOLDIER new_5-1,144,107,2 duplicate(NvGuardB) Guard#nv5b 8W_SOLDIER -- script Instructor#Edwin::NvEdwin -1,{ +- script Instructor#Edwin::NvEdwin FAKE_NPC,{ mes "[Edwin]"; mes "Eh? Why are you still here?"; mes "There are no more courses that you need to take."; @@ -2468,7 +2468,7 @@ function script F_NvErase { } //== Pre-Renewal Backwards Compatibility =================== -- script Final Tester::NvHanson -1,{ +- script Final Tester::NvHanson FAKE_NPC,{ if (nov_3_swordman < 40) { mes "[Hanson]"; mes "Eh? Weird?"; @@ -2667,7 +2667,7 @@ new_4-4,100,29,1 duplicate(NvHanson) Final Tester#nv4 1_ETC_01 new_5-4,100,29,1 duplicate(NvHanson) Final Tester#nv5 1_ETC_01 //== Job Test ============================================== -- script Job Guide Lark::NvLark -1,{ +- script Job Guide Lark::NvLark FAKE_NPC,{ mes "[Lark]"; mes "Have you decided what job you're going to choose?"; next; diff --git a/npc/re/jobs/repair.txt b/npc/re/jobs/repair.txt index 200fbf760..fc212aef3 100644 --- a/npc/re/jobs/repair.txt +++ b/npc/re/jobs/repair.txt @@ -225,7 +225,7 @@ L_Third: return; } -- script Valerie#sign -1,{ +- script Valerie#sign FAKE_NPC,{ mes "^ff00ffI couldn't pay the office rent so I am temporarily relocating to the building across from the Prontera Refinery.^000000"; mes " "; mes "^ff00ffValerie^000000"; diff --git a/npc/re/merchants/3rd_trader.txt b/npc/re/merchants/3rd_trader.txt index 83c73ad5b..a0a3bb033 100644 --- a/npc/re/merchants/3rd_trader.txt +++ b/npc/re/merchants/3rd_trader.txt @@ -32,11 +32,11 @@ //= Sells some 3rd Job related items: //= - Poison Herbs, Rune Stones, Rare Herbs, Points //================= Current Version ======================================= -//= 1.5 +//= 1.6 //========================================================================= //== Poison Herb Merchants (Guillotine Cross) ============== -- script ::phs -1,{ +- script ::phs FAKE_NPC,{ if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "- Wait a minute !! -"; mes "- Currently you're carrying -"; @@ -97,11 +97,11 @@ close; } job3_guil01,79,96,3 duplicate(phs) Poison Herb Merchant 4_F_YUNYANG -morocc,191,94,4 duplicate(phs) Poison Herb Merchant#moc 4_F_YUNYANG //Official: (190,96) -> in a wall +morocc,193,100,4 duplicate(phs) Poison Herb Merchant#moc 4_F_YUNYANG lhz_in02,16,205,4 duplicate(phs) Poison Herb Merchant#lhz 4_F_YUNYANG //== Rune Stone Merchants (Rune Knight) ==================== -- script ::runesale -1,{ +- script ::runesale FAKE_NPC,{ if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "- Wait a minute !! -"; mes "- Currently you're carrying -"; @@ -230,7 +230,7 @@ job3_guil01,91,93,3 script Rare Herb Collector 1_M_03,{ } //== Point Merchants (Sorcerer) ============================ -- script ::pss -1,{ +- script ::pss FAKE_NPC,{ if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "- Wait a minute !! -"; mes "- Currently you're carrying -"; diff --git a/npc/re/merchants/blessed_refiner.txt b/npc/re/merchants/blessed_refiner.txt index 3f609f5e7..33005dca9 100644 --- a/npc/re/merchants/blessed_refiner.txt +++ b/npc/re/merchants/blessed_refiner.txt @@ -37,7 +37,7 @@ //= 1.0 //========================================================================= -- script ::BlacksmithDister -1,{ +- script ::BlacksmithDister FAKE_NPC,{ disable_items; mes "[Blacksmith Dister]"; mes "In this highly competitive society, we must be different in order to survive!"; diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt index ecd4f1fdd..0bf72f884 100644 --- a/npc/re/merchants/card_separation.txt +++ b/npc/re/merchants/card_separation.txt @@ -33,7 +33,7 @@ //= 1.1 //========================================================================= -- script ::CardSeparation_mal -1,{ +- script ::CardSeparation_mal FAKE_NPC,{ disable_items; if (checkweight(Knife,1) == 0) { mes "You have too many kinds of objects. Let's try to continue after reducing those objects."; diff --git a/npc/re/merchants/flute.txt b/npc/re/merchants/flute.txt index 9a2736fb1..0824515f1 100644 --- a/npc/re/merchants/flute.txt +++ b/npc/re/merchants/flute.txt @@ -35,7 +35,7 @@ //= 1.2a //========================================================================= -- script Falcon Flute Trader::fflute -1,{ +- script Falcon Flute Trader::fflute FAKE_NPC,{ mes "[Falcon Flute Trader]"; if (BaseJob == Job_Hunter) { mes "Do you need a Falcon?"; diff --git a/npc/re/merchants/hd_refiner.txt b/npc/re/merchants/hd_refiner.txt index e1a7a8b70..261093136 100644 --- a/npc/re/merchants/hd_refiner.txt +++ b/npc/re/merchants/hd_refiner.txt @@ -38,7 +38,7 @@ //========================================================================= //== Blacksmith Mighty Hammer (+7~9) ======================= -- script ::MightyHammer -1,{ +- script ::MightyHammer FAKE_NPC,{ disable_items; mes "[Blacksmith Mighty Hammer]"; mes "Unlike others, I am a blacksmith who refines a very limited number of items."; @@ -173,7 +173,7 @@ lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 4_M_DWARF //payon,174,133,4 duplicate(MightyHammer) Mighty Hammer#im 4_M_DWARF //== Basta (+10 and up) ==================================== -- script ::Basta -1,{ +- script ::Basta FAKE_NPC,{ disable_items; mes "[Basta]"; mes "I'm the best Blacksmith in the whole world, Basta."; diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt index db42f01cf..6014d2a85 100644 --- a/npc/re/merchants/refine.txt +++ b/npc/re/merchants/refine.txt @@ -348,7 +348,7 @@ function script refinenew { } //== Ori/Elu to Carnium/Bradium Refiners =================== -- script Austri#ref -1,{ +- script Austri#ref FAKE_NPC,{ if (checkweight(Knife,1) == 0) { mes "- Wait a minute !! -"; mes "- Currently you're carrying -"; diff --git a/npc/re/merchants/renters.txt b/npc/re/merchants/renters.txt index f0d308f1e..a8df22079 100644 --- a/npc/re/merchants/renters.txt +++ b/npc/re/merchants/renters.txt @@ -167,7 +167,7 @@ prontera,125,208,5 script Peco Peco Remover 8W_SOLDIER,{ } //== Magic Gear Renter ===================================== -- script ::mgm -1,{ +- script ::mgm FAKE_NPC,{ mes "[Magic Gear Master]"; if (Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic) { mes "Welcome, Mechanic."; diff --git a/npc/re/merchants/shops.txt b/npc/re/merchants/shops.txt index 83ae07d3e..773fddef8 100644 --- a/npc/re/merchants/shops.txt +++ b/npc/re/merchants/shops.txt @@ -36,7 +36,7 @@ //================= Description =========================================== //= Renewal-specific town shop NPCs. //================= Current Version ======================================= -//= 1.9 +//= 2.1 //========================================================================= //== Comodo ================================================ @@ -410,6 +410,44 @@ OnInit: } */ +prt_in,126,76,0 trader Tool Dealer#prt1 1_M_INNKEEPER,{ +OnInit: + sellitem Spectacles; + sellitem Arrow; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +prt_in,117,79,5 trader Toy Supplier#prt 4_M_PIERROT,{ +OnInit: + sellitem One_Eyed_Glass; + sellitem Sunglasses; + sellitem Spinning_Eyes; + sellitem Eye_Bandage; + sellitem Luxury_Sunglasses; + sellitem Granpa_Beard; +} + +prt_fild05,290,221,2 trader Tool Dealer#prt 4_M_01,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Center_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; +} + prt_in,109,68,4 trader Trap Specialist#prt 1_F_01,{ OnInit: sellitem Special_Alloy_Trap; @@ -471,6 +509,241 @@ OnInit: sellitem Charm_Earth; } +prontera,218,211,4 trader Pet Groomer#prt 4_M_TELEPORTER,{ +OnInit: + sellitem Pet_Food; + sellitem Pet_Incubator; + sellitem Backpack; + sellitem Rocker_Glasses; + sellitem Vital_Flower_; + sellitem Flame_Gemstone; + sellitem Bun_; + sellitem Vital_Flower; + sellitem Damp_Darkness; + sellitem Small_Snow_Flower; + sellitem Fresh_Plant; + sellitem Big_Cell; + sellitem Apple_Pudding; + sellitem Mystic_Stone; + sellitem Flavored_Alcohol; + sellitem Spirit_Liquor; + sellitem Pumpkin_Pie_; + sellitem Sunset_On_The_Rock; + sellitem Morning_Dew; + sellitem Grilled_Rice_Cake; +} + +prontera,92,209,4 trader Rebellion Weapon Vending 2_VENDING_MACHINE1,{ +OnInit: + sellitem Heaven's_Feather_and_Hell's_Fire; + sellitem Altea_and_Ares; + sellitem Color_Scope; + sellitem RAG203; + sellitem Death_Fire; + sellitem Rolling_Thunder; + sellitem Peace_Breaker; + sellitem Mini_Mei; + sellitem Tempest; + sellitem End_Of_The_Horizon; + sellitem South_Cross; +} + +prontera,96,209,4 trader Rebellion Prop Vending 2_VENDING_MACHINE1,{ +OnInit: + sellitem Slug_Ammunition_L; + sellitem Slug_Ammunition_M; + sellitem Slug_Ammunition_H; + sellitem Full_Metal_Jacket; + sellitem Projection_Landmines; + sellitem Dragon_Tail_Missile; + sellitem Special_Alloy_Trap; + sellitem Bullet; + sellitem Silver_Bullet_; + sellitem Shell_Of_Blood_; + sellitem Armor_Piercing_Bullet; + sellitem Blazing_Bullet; + sellitem Freezing_Bullet; + sellitem Lightning_Bullet; + sellitem Magic_Stone_Bullet; + sellitem Purifying_Bullet; + sellitem Incendiary_Grenade; + sellitem Lightning_Grenade; + sellitem Poison_Grenade; + sellitem Flash_Grenade; + sellitem Cyro_Grenade; +} + +//== Morroc =============================================== +morocc,156,76,4 trader Butcher#moc1 1_M_MERCHANT,{ +OnInit: + sellitem Meat; +} + +moc_ruins,91,128,4 trader Tool Dealer#moc1 4_F_04,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +moc_ruins,114,63,6 trader Tool Dealer#moc2 4W_M_03,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +morocc,147,103,6 trader Tool Dealer#moc3 4W_M_03,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +morocc,151,241,4 trader Tool Dealer#moc4 4_F_04,{ +OnInit: + sellitem Arrow; + sellitem Spectacles; + sellitem Red_Potion; + sellitem Orange_Potion; + sellitem Yellow_Potion; + sellitem White_Potion; + sellitem Center_Potion; + sellitem Awakening_Potion; + sellitem Empty_Bottle; + sellitem Wing_Of_Fly; + sellitem Wing_Of_Butterfly; + sellitem Booby_Trap; +} + +moc_ruins,118,170,4 trader Pet Groomer#moc 4_M_TELEPORTER,{ +OnInit: + sellitem Pet_Food; + sellitem Pet_Incubator; + sellitem Backpack; + sellitem Rocker_Glasses; + sellitem Vital_Flower_; + sellitem Flame_Gemstone; + sellitem Bun_; + sellitem Vital_Flower; + sellitem Damp_Darkness; + sellitem Small_Snow_Flower; + sellitem Fresh_Plant; + sellitem Big_Cell; + sellitem Apple_Pudding; + sellitem Mystic_Stone; + sellitem Flavored_Alcohol; + sellitem Spirit_Liquor; + sellitem Pumpkin_Pie_; + sellitem Sunset_On_The_Rock; + sellitem Morning_Dew; + sellitem Grilled_Rice_Cake; +} + +morocc,203,87,4 trader Pet Groomer#moc1 4_M_TELEPORTER,{ +OnInit: + sellitem Pet_Food; + sellitem Pet_Incubator; + sellitem Backpack; + sellitem Rocker_Glasses; + sellitem Vital_Flower_; + sellitem Flame_Gemstone; + sellitem Bun_; + sellitem Vital_Flower; + sellitem Damp_Darkness; + sellitem Small_Snow_Flower; + sellitem Fresh_Plant; + sellitem Big_Cell; + sellitem Apple_Pudding; + sellitem Mystic_Stone; + sellitem Flavored_Alcohol; + sellitem Spirit_Liquor; + sellitem Pumpkin_Pie_; + sellitem Sunset_On_The_Rock; + sellitem Morning_Dew; + sellitem Grilled_Rice_Cake; +} + +morocc,154,55,6 trader Jeweler#moc3 4W_M_03,{ +OnInit: + sellitem Crystal_Jewel; + sellitem Diamond_Ring; +} + +morocc,171,103,4 trader Item Collector#moc3 4_M_03,{ +OnInit: + sellitem Scell; + sellitem Monster's_Feed; + sellitem Animal's_Skin; + sellitem Bill_Of_Birds; +} + +morocc,205,247,2 trader Item Collector#moc4 4_M_03,{ +OnInit: + sellitem Scell; + sellitem Monster's_Feed; + sellitem Animal's_Skin; + sellitem Bill_Of_Birds; +} + +morocc,140,90,6 trader Trader#moc6 4W_M_03,{ +OnInit: + sellitem Banana; +} + +morocc,166,54,2 trader Jeweler#moc4 8_F,{ +OnInit: + sellitem Azure_Jewel; + sellitem Cardinal_Jewel; + sellitem Blue_Jewel; + sellitem Golden_Jewel; + sellitem Bluish_Green_Jewel; +} + +morocc,34,68,0 trader Trader#moc7 4_F_04,{ +OnInit: + sellitem Witherless_Rose; +} + +morocc,269,193,4 trader Trader#moc8 4_M_ORIENT02,{ +OnInit: + sellitem Skul_Ring; + sellitem Sword_Mace; + sellitem Stunner; +} + +morocc,256,191,5 trader Trader#moc9 4_F_04,{ +OnInit: + sellitem Flower_Ring; +} + //== Rachel ================================================ ra_in01,263,281,4 trader Trap Specialist#ra 1_F_01,{ OnInit: @@ -509,3 +782,47 @@ OnInit: sellitem Surface_Paint; sellitem Face_Paint; } + +//== Cooking Addition ====================================== +prontera,156,212,1 trader Chef Assistant#prt 8_F_GIRL,{ +OnInit: + sellitem Combination_Kit; + sellitem Mushroom; + sellitem Pot; + sellitem Bread; + sellitem Grain; + sellitem Cooking_Oil; + sellitem Plain_Sauce; + sellitem Hot_Sauce; + sellitem Sweet_Sauce; + sellitem Red_Spice; + sellitem Yellow_Spice; + sellitem Delicious_Fish; + sellitem Outdoor_Cooking_Kits; + sellitem Indoor_Cooking_Kits; + sellitem High_end_Cooking_Kits; + sellitem Cookbook01; + sellitem Cookbook02; + sellitem Cookbook03; + sellitem Cookbook04; + sellitem Cookbook05; +} + +moc_ruins,115,123,5 trader Chef Assistant#moc 4_M_04,{ +OnInit: + sellitem Combination_Kit; + sellitem Mushroom; + sellitem Pot; + sellitem Bread; + sellitem Grain; + sellitem Cooking_Oil; + sellitem Plain_Sauce; + sellitem Hot_Sauce; + sellitem Sweet_Sauce; + sellitem Red_Spice; + sellitem Yellow_Spice; + sellitem Delicious_Fish; + sellitem Outdoor_Cooking_Kits; + sellitem Indoor_Cooking_Kits; + sellitem High_end_Cooking_Kits; +} diff --git a/npc/re/mobs/dungeons/lhz_dun.txt b/npc/re/mobs/dungeons/lhz_dun.txt index 0594f1030..7ec6e6c49 100644 --- a/npc/re/mobs/dungeons/lhz_dun.txt +++ b/npc/re/mobs/dungeons/lhz_dun.txt @@ -79,7 +79,7 @@ lhz_dun03,139,117,20,11 monster Sniper Cecil 1644,1,2700000,2500000,1 lhz_dun03,163,138,12,16 monster Whitesmith Howard 1642,1,3000000,2700000,1 lhz_dun03,138,138,36,34 monster High Priest Margaretha 1643,1,3300000,3000000,1 -lhz_dun03,0,0,0 script mvp_lhz_dun03 -1,{ +lhz_dun03,0,0,0 script mvp_lhz_dun03 FAKE_NPC,{ OnTimer6000000: // delay1 = 6000000 ms (100 min) stopnpctimer; sleep rand(0,30)*60000; // 0 to 30 minutes @@ -132,7 +132,7 @@ lhz_dun04,0,0,0,0 monster Stalker Gertie 2232,1,3300000,3000000,1 lhz_dun04,0,0,0,0 monster Clown Alphoccio 2233,1,3300000,3000000,1 lhz_dun04,0,0,0,0 monster Gypsy Trentini 2234,1,3300000,3000000,1 -lhz_dun04,0,0,0 script mvp_lhz_dun04 -1,{ +lhz_dun04,0,0,0 script mvp_lhz_dun04 FAKE_NPC,{ OnTimer6000000: // delay1 = 6000000 ms (100 min) stopnpctimer; sleep rand(0,30)*60000; // 0 to 30 minutes diff --git a/npc/re/mobs/fields/niflheim.txt b/npc/re/mobs/fields/niflheim.txt index bca2b94c1..d47248a8c 100644 --- a/npc/re/mobs/fields/niflheim.txt +++ b/npc/re/mobs/fields/niflheim.txt @@ -60,7 +60,7 @@ nif_fild02,0,0,0,0 monster Dullahan 1504,10,5000,0,0 nif_fild02,0,0,0,0 monster Lude 1509,10,5000,0,0 nif_fild02,0,0,0,0 monster Heirozoist 1510,10,5000,0,0 -niflheim,0,0,0 script mvp_niflheim -1,{ +niflheim,0,0,0 script mvp_niflheim FAKE_NPC,{ OnTimer7980000: // delay1 = 7980000 ms (133 min) stopnpctimer; OnInit: diff --git a/npc/re/mobs/towns.txt b/npc/re/mobs/towns.txt index efd37c492..5d341fece 100644 --- a/npc/re/mobs/towns.txt +++ b/npc/re/mobs/towns.txt @@ -42,9 +42,9 @@ brasilis,96,50,8,8 monster Strange Hydra 2081,5,5000,0,0 alb_ship,0,0,0,0 monster Strange Mouse 2057,25,0,0,0 //== Prontera, Training Dummy Area ========================= -prontera,251,77,0,0 monster Dummy Lv50 2409,1,5000,0,0 -prontera,259,77,0,0 monster Dummy Lv50 2409,1,5000,0,0 -prontera,251,66,0,0 monster Dummy Lv100 2410,1,5000,0,0 -prontera,259,66,0,0 monster Dummy Lv100 2410,1,5000,0,0 -prontera,251,55,0,0 monster Dummy Lv150 2411,1,5000,0,0 -prontera,259,55,0,0 monster Dummy Lv150 2411,1,5000,0,0 +prontera,251,77,0,0 monster Lv 50 2409,1,5000,0,0 +prontera,259,77,0,0 monster Lv 50 2409,1,5000,0,0 +prontera,251,66,0,0 monster Lv 100 2410,1,5000,0,0 +prontera,259,66,0,0 monster Lv 100 2410,1,5000,0,0 +prontera,251,55,0,0 monster Lv 150 2411,1,5000,0,0 +prontera,259,55,0,0 monster Lv 150 2411,1,5000,0,0 diff --git a/npc/re/other/bulletin_boards.txt b/npc/re/other/bulletin_boards.txt index eba89e06a..78f887e8f 100644 --- a/npc/re/other/bulletin_boards.txt +++ b/npc/re/other/bulletin_boards.txt @@ -33,7 +33,7 @@ //========================================================================= /* -- script ::BulletinBoard_iz -1,{ +- script ::BulletinBoard_iz FAKE_NPC,{ mes "[Izlude: The Satellite City]"; mes "Welcome to Izlude, the satellite of Prontera. Izlude was built to support Prontera's defense and to accomodate its burgeoning population."; next; diff --git a/npc/re/quests/eden/11-25.txt b/npc/re/quests/eden/11-25.txt index a4d376650..2f641b770 100644 --- a/npc/re/quests/eden/11-25.txt +++ b/npc/re/quests/eden/11-25.txt @@ -42,7 +42,8 @@ moc_para01,36,38,3 script Mission [11 - 25]#Tuto 4_BOARD3,{ close; } for(.@i = 11124; .@i<11134; ++.@i) - if (questprogress(.@i,PLAYTIME) == 2) erasequest .@i; + if (questprogress(.@i,PLAYTIME) == 2) + erasequest .@i; for(.@i = 11114; .@i<11123; ++.@i) { .@state = questprogress(.@i,HUNTING); if (.@state == 2) { @@ -93,7 +94,7 @@ moc_para01,36,38,3 script Mission [11 - 25]#Tuto 4_BOARD3,{ } end; L_Quest: - if (questprogress(getarg(0),PLAYTIME) == 1) { + if (questprogress(getarg(0)+10,PLAYTIME) == 1) { mes " - Mission ^4d4dff"+getarg(1)+"^000000 - "; mes " - is already finished for today. - "; mes " "; diff --git a/npc/re/quests/eden/121-130.txt b/npc/re/quests/eden/121-130.txt index 1e98a5130..77b7c26b2 100644 --- a/npc/re/quests/eden/121-130.txt +++ b/npc/re/quests/eden/121-130.txt @@ -778,7 +778,7 @@ S_Erasequest2: return; } -- script Trace of an adventurer -1,{ +- script Trace of an adventurer FAKE_NPC,{ .@quest = 13106 + atoi(strnpcinfo(2)); .@delay = 13110 + atoi(strnpcinfo(2)); if (questprogress(.@quest) == 1) { diff --git a/npc/re/quests/eden/eden_common.txt b/npc/re/quests/eden/eden_common.txt index da3974cd7..14649eea6 100644 --- a/npc/re/quests/eden/eden_common.txt +++ b/npc/re/quests/eden/eden_common.txt @@ -203,7 +203,7 @@ moc_para01,27,35,5 script Secretary Lime Evenor 4_F_EDEN_OFFICER,{ close; } -- script Eden Teleport Officer#0::eto -1,{ +- script Eden Teleport Officer#0::eto FAKE_NPC,{ mes "[Eden Teleport Officer]"; mes "Those who are wandering around this strange world with aimless eyes listen up and come to me!"; mes "Eden group is here to help you and will show you the great future."; diff --git a/npc/re/quests/eden/eden_iro.txt b/npc/re/quests/eden/eden_iro.txt index 062c05d9c..d54b0631b 100644 --- a/npc/re/quests/eden/eden_iro.txt +++ b/npc/re/quests/eden/eden_iro.txt @@ -830,7 +830,7 @@ moc_para01,26,185,4 duplicate(Suhnbi#cash) Suhnmi#eden 4_M_03 moc_para01,38,185,4 duplicate(MightyHammer) Mighty Hammer#ed 4_M_DWARF //- Refiner Effect - -- script #eden_refine_effect -1,{ +- script #eden_refine_effect FAKE_NPC,{ OnInit: initnpctimer; end; diff --git a/npc/re/quests/eden/eden_quests.txt b/npc/re/quests/eden/eden_quests.txt index 2d44fe685..4172f0949 100644 --- a/npc/re/quests/eden/eden_quests.txt +++ b/npc/re/quests/eden/eden_quests.txt @@ -1820,10 +1820,10 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{ mes "A total of 4 supplies, that's all."; para_suv01 = 12; para_suv02 = 1; - getitem Para_Team_Hat,1; //Para_Team_Hat1 - getitem Para_Team_Manteau,1; //Para_Team_Manteau1 - getitem Para_Team_Boots1,1; //Para_Team_Boots1 - getitem Para_Team_Uniform1,1; //Para_Team_Uniform1 + getitem Para_Team_Hat,1; + getitem Para_Team_Manteau,1; + getitem Para_Team_Boots1,1; + getitem Para_Team_Uniform1,1; next; mes "[Michael]"; mes "Is that correct?"; @@ -1857,34 +1857,34 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{ mes "[Michael]"; if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader) { callsub S_Select,"We have one and Two-handed swords", - P_Slayer1,"Eden Slayer I","Two-handed sword","Attack 162","",//P_Slayer1 - P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for.";//P_Sabre1 + P_Slayer1,"Eden Slayer I","Two-handed sword","Attack 162","", + P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for."; } if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Ninja || Class == Job_Novice || Class == Job_Novice_High) { callsub S_Select,"", - P_Dagger1,"Eden Dagger I","Dagger","MATK+60, attack 124","This is what we strive for.";//P_Dagger1 + P_Dagger1,"Eden Dagger I","Dagger","MATK+60, attack 124","This is what we strive for."; } if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) { callsub S_Select,"We have a mace and a One-handed sword", - P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for.",// P_Sabre1 - P_Mace1,"Eden Mace I","Mace","Attack 142","";// P_Mace1 + P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for.", + P_Mace1,"Eden Mace I","Mace","Attack 142",""; } if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) { callsub S_Select,"", - P_Bow1,"Eden Bow I","Bow","Attack 82","";//P_Bow1 + P_Bow1,"Eden Bow I","Bow","Attack 82",""; } if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) { callsub S_Select,"We have a mace and a staff", - P_Mace1,"Eden Mace I","Mace","Attack 142","", //P_Mace1 - P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60",""; //P_Staff1 + P_Mace1,"Eden Mace I","Mace","Attack 142","", + P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60",""; } if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) { callsub S_Select,"", - P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60","";//P_Staff1 + P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60",""; } if (Class == Job_Gunslinger) { callsub S_Select,"", - P_Revolver1,"Eden Revolver I","Revolver","HIT-5, attack 44","";//P_Revolver1 + P_Revolver1,"Eden Revolver I","Revolver","HIT-5, attack 44",""; } mes "Let me see... you will receive.."; @@ -1892,15 +1892,15 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{ next; mes "[Michael]"; para_suv01 = 23; - getitem P_Dagger1,1; //P_Dagger1 - getitem Para_Team_Boots2,1; //Para_Team_Boots2 - getitem Para_Team_Uniform2,1; //Para_Team_Uniform2 + getitem P_Dagger1,1; + getitem Para_Team_Boots2,1; + getitem Para_Team_Uniform2,1; if (para_suv02 == 0) { mes "I don't know what weapon will suit you so, you'll get a Dagger."; mes "You don't have a record of receiving any supplies"; mes "so, you'll receive the Eden Group Hat and Manteau aswell."; - getitem Para_Team_Hat,1; //Para_Team_Hat - getitem Para_Team_Manteau,1; //Para_Team_Manteau + getitem Para_Team_Hat,1; + getitem Para_Team_Manteau,1; para_suv02 = 2; next; mes "[Michael]"; @@ -1935,48 +1935,48 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{ mes "[Michael]"; if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader) { callsub S_Select,"We have one and Two-handed swords", - P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","",///P_Sabre2 - P_Slayer2,"Eden Slayer II","Two-handed sword","Attack 185","";//P_Slayer2 + P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","", + P_Slayer2,"Eden Slayer II","Two-handed sword","Attack 185",""; } if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Novice || Class == Job_Novice_High || Class == Job_SuperNovice || Class == Job_Soul_Linker || Class == Job_Ninja) { callsub S_Select,"", - P_Dagger2,"Eden Dagger II","Dagger","MATK+70, attack 158","";//P_Dagger2 + P_Dagger2,"Eden Dagger II","Dagger","MATK+70, attack 158",""; } if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) { callsub S_Select,"We have a mace and a staff", - P_Mace2,"Eden Mace II","Mace","Attack 163","", //P_Mace2 - P_Staff2,"Eden Staff II","Staff","INT+3, MATK+150, attack 60",""; //P_Staff2 + P_Mace2,"Eden Mace II","Mace","Attack 163","", + P_Staff2,"Eden Staff II","Staff","INT+3, MATK+150, attack 60",""; } if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) { callsub S_Select,"", - P_Bow2,"Eden Bow II","Bow","Attack 82","";//P_Bow2 + P_Bow2,"Eden Bow II","Bow","Attack 82",""; } if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) { callsub S_Select,"", - P_Staff2,"Eden Staff II","Staff","INT+3, MATK+155, attack 60","";//P_Staff2 + P_Staff2,"Eden Staff II","Staff","INT+3, MATK+155, attack 60",""; } if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) { callsub S_Select,"We have a mace and a One-handed sword", - P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","",//P_Sabre2 - P_Mace2,"Eden Mace II","Mace","Attack 163","";// P_Mace2 + P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","", + P_Mace2,"Eden Mace II","Mace","Attack 163",""; } if (Class == Job_Gunslinger) { callsub S_Select,"", - P_Revolver2,"Eden Revolver II","Revolver","HIT-5, attack 60","";//P_Revolver2 + P_Revolver2,"Eden Revolver II","Revolver","HIT-5, attack 60",""; } mes "Let me see... you will receive.."; mes "the Eden Group Boots III and Uniform III."; next; para_suv01 = 38; - getitem Para_Team_Boots3,1; //Para_Team_Boots3 - getitem Para_Team_Uniform3,1; //Para_Team_Uniform3 + getitem Para_Team_Boots3,1; + getitem Para_Team_Uniform3,1; mes "[Michael]"; if (para_suv02 == 0) { mes "You don't have a record of receiving any supplies"; mes "so, you'll receive the Eden Group Hat and Manteau aswell."; para_suv02 = 3; - getitem Para_Team_Hat,1; //Para_Team_Hat - getitem Para_Team_Manteau,1; //Para_Team_Manteau + getitem Para_Team_Hat,1; + getitem Para_Team_Manteau,1; next; mes "[Michael]"; mes "Check your supplies again and look after it."; @@ -2122,15 +2122,15 @@ S_Select: if (para_suv01 == 22) { mes "Additionally you'll receive the Eden Group Boots II and Uniform II."; next; - getitem Para_Team_Boots2,1; // Para_Team_Boots2 - getitem Para_Team_Uniform2,1;// Para_Team_Uniform2 + getitem Para_Team_Boots2,1; + getitem Para_Team_Uniform2,1; para_suv01 = 23; } else { mes "Additionally you'll receive the Eden Group Boots III and Uniform III."; next; - getitem Para_Team_Boots3,1;// Para_Team_Boots3 - getitem Para_Team_Uniform3,1;// Para_Team_Uniform3 + getitem Para_Team_Boots3,1; + getitem Para_Team_Uniform3,1; para_suv01 = 38; } getitem getarg(.@i),1; @@ -2138,8 +2138,8 @@ S_Select: if (para_suv02 == 0) { mes "You don't have a record of receiving any supplies"; mes "so, you'll receive the Eden Group Hat and Manteau aswell."; - getitem Para_Team_Hat2,1;// Para_Team_Hat2 - getitem Para_Team_Manteau2,1; // Para_Team_Manteau2 + getitem Para_Team_Hat,1; + getitem Para_Team_Manteau,1; if (para_suv01 == 22) para_suv02 = 2; else @@ -2469,7 +2469,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "[Instructor Ur]"; - if (countitem(Para_Team_Mark) < 1) {// Para_Team_Mark + if (countitem(Para_Team_Mark) < 1) { mes "Hey there!"; mes "I see you're not one of our agents?"; mes "Are you interested in joining us?"; @@ -2543,7 +2543,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "Go there are get the mission from him."; mes "Well, then come back here alive when you're done!"; para_2nd01 = 1; - setquest 7214;// Advanced Training at Comodo + setquest 7214; // Advanced Training at Comodo } else if (BaseLevel < 80) { mes "Let's see..."; @@ -2560,7 +2560,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "[Instructor Ur]"; mes "Please, come back alive."; para_2nd01 = 7; - setquest 7219;// Advanced Training at Glast Heim + setquest 7219; // Advanced Training at Glast Heim } else if (BaseLevel < 90) { mes "Ah, ok so for you..."; @@ -2573,7 +2573,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ next; mes "[Instructor Ur]"; mes "Anyways, go to Einbroch and find the Dispatched Instructor there. He should be in the field south of the main city."; - setquest 7223;// Advanced Training in Einbroch + setquest 7223; // Advanced Training in Einbroch para_2nd01 = 12; } else @@ -2597,7 +2597,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "Don't forget, I'll be waiting for you."; para_2nd01 = 6; para_2nd02 = 1; - erasequest 7218;// Report to Instructor Ur + erasequest 7218; // Report to Instructor Ur } else if (para_2nd01 == 6) { if (BaseLevel > 69) { @@ -2633,7 +2633,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "[Instructor Ur]"; mes "Please come back alive."; para_2nd01 = 7; - setquest 7219;// Advanced Training at Glast Heim + setquest 7219; // Advanced Training at Glast Heim } else if (BaseLevel < 90) callsub S_Quest7990; @@ -2668,7 +2668,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "Go out through the blue door, to the end of the hallway."; mes "BK is a great blacksmith, he'll make your weapon stronger."; mes "What are you waiting for?"; - para_2nd01 = 11;// Report to Instructor Ur + para_2nd01 = 11; // Report to Instructor Ur erasequest 7222; } else if (para_2nd01 == 11) { @@ -2716,7 +2716,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "Go out through the blue door, to the end of the hallway."; mes "BK is a great blacksmith, he'll make your weapon stronger."; mes "What are you waiting for?"; - erasequest 7228;// Report to Instructor Ur + erasequest 7228; // Report to Instructor Ur para_2nd01 = 16; } else if (para_2nd01 == 16) { @@ -2753,7 +2753,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "[Instructor Ur]"; mes "Good job!"; para_2nd01 = 30; - erasequest 7232;//Report to Instructor Ur + erasequest 7232; //Report to Instructor Ur } else if (para_2nd01 == 29) { mes "Congratulations on completing all training stages!"; @@ -2774,7 +2774,7 @@ moc_para01,23,35,5 script Instructor Ur#2nd01 4_M_KNIGHT_BLACK,{ mes "Go talk to him, he's at the weapon storage as well."; mes "Go ahead."; para_2nd01 = 30; - erasequest 7237;// Report to Instructor Ur + erasequest 7237; // Report to Instructor Ur } else if (para_2nd01 == 30) { mes "Good job."; @@ -2835,7 +2835,7 @@ S_Quest7990: mes "But the surrounding fields are relatively clean..."; mes "This should be pretty easy for you."; para_2nd01 = 12; - setquest 7223;// Advanced Training in Einbroch + setquest 7223; // Advanced Training in Einbroch return; S_Quest89100: @@ -2848,7 +2848,7 @@ S_Quest89100: mes "North of the city of Rachel is a cave filled with ice."; mes "Find the Dispatched Instructor there."; para_2nd01 = 17; - setquest 7229;// Advanced Training in Ice Dungeon + setquest 7229; // Advanced Training in Ice Dungeon } else { mes "Well, well..."; @@ -2880,7 +2880,7 @@ S_Quest89100: mes "Isn't this the easiest mission you've ever had?"; mes "Don't forget my present when you come back~!"; para_2nd01 = 22; - setquest 7233;// Advanced Training at Ash Vacuum + setquest 7233; // Advanced Training at Ash Vacuum } return; } @@ -2956,8 +2956,8 @@ comodo,173,354,5 script Dispatched Instructor#02 1_M_JOBTESTER,{ mes "I'll be waiting outside."; para_2nd01 = 3; getexp 10000,10000; - erasequest 7215;// Stalactic Golem Hunt - setquest 7216;// More Golem Hunting + erasequest 7215; // Stalactic Golem Hunt + setquest 7216; // More Golem Hunting } else { mes "As a test of the difficulty of this cave"; @@ -3015,8 +3015,8 @@ um_fild01,34,280,5 script Instructor Romeo#2nd02 1_M_JOBTESTER,{ mes "This is the last test."; mes "Good luck."; para_2nd01 = 4; - erasequest 7216;// More Golem Hunting - setquest 7217;// Field drops + erasequest 7216; // More Golem Hunting + setquest 7217; // Field drops getexp 10000,10000; } else { @@ -3031,7 +3031,7 @@ um_fild01,34,280,5 script Instructor Romeo#2nd02 1_M_JOBTESTER,{ } } else if (para_2nd01 == 4) { - if (countitem(Shoulder_Protection) > 4 && countitem(Sharp_Leaf) > 6) {// Shoulder_Protection, Sharp_Leaf + if (countitem(Shoulder_Protection) > 4 && countitem(Sharp_Leaf) > 6) { mes "You really got these by defeating the monsters?"; mes "I believe you. I want to get out of here anyways."; next; @@ -3041,8 +3041,8 @@ um_fild01,34,280,5 script Instructor Romeo#2nd02 1_M_JOBTESTER,{ delitem Shoulder_Protection,5; delitem Sharp_Leaf,7; para_2nd01 = 5; - erasequest 7217;// Field drops - setquest 7218;// Report to Instructor Ur + erasequest 7217; // Field drops + setquest 7218; // Report to Instructor Ur getexp 10000,10000; } else { @@ -3115,8 +3115,8 @@ glast_01,195,131,5 script Dispatched Instructor#03 4_F_SISTER,{ mes "Defeat 20 Wraiths."; mes "I'll assist you from here!"; para_2nd01 = 8; - erasequest 7219;// Advanced Training at Glast Heim - setquest 7220;// Wraith Hunt + erasequest 7219; // Advanced Training at Glast Heim + setquest 7220; // Wraith Hunt } else if (para_2nd01 == 8) { if (questprogress(7220,HUNTING) == 2) { @@ -3135,8 +3135,8 @@ glast_01,195,131,5 script Dispatched Instructor#03 4_F_SISTER,{ mes "You can do it right?"; mes "I believe in you!"; para_2nd01 = 9; - erasequest 7220;// Wraith Hunt - setquest 7221;// Evil Druid hunt + erasequest 7220; // Wraith Hunt + setquest 7221; // Evil Druid hunt getexp 20000,20000; } else { @@ -3167,8 +3167,8 @@ glast_01,195,131,5 script Dispatched Instructor#03 4_F_SISTER,{ mes "You can go back to Eden now"; mes "I'll stay and clean up the rest, hehe"; para_2nd01 = 10; - erasequest 7221;// Evil Druid hunt - setquest 7222;// Report to Instructor Ur + erasequest 7221; // Evil Druid hunt + setquest 7222; // Report to Instructor Ur getexp 20000,20000; } else { @@ -3230,11 +3230,11 @@ ein_fild08,172,359,3 script Dispatched Instructor#04 4_M_4THPRIN1,{ mes "I'm not holding a grudge just because they ate my lunch."; mes "I'll be resting here until you're done."; para_2nd01 = 13; - erasequest 7223;// Advanced Training in Einbroch - setquest 7224;// Porcellio hunting + erasequest 7223; // Advanced Training in Einbroch + setquest 7224; // Porcellio hunting } else if (para_2nd01 == 13) { - if (questprogress(7224,HUNTING) == 2) {// Porcellio hunting + if (questprogress(7224,HUNTING) == 2) { // Porcellio hunting mes "What, You're done already?"; mes "I was just about to fall asleep... Oh well.."; mes "It can't be helped, I guess. Let's go to a different spot.."; @@ -3267,9 +3267,9 @@ ein_fild08,172,359,3 script Dispatched Instructor#04 4_M_4THPRIN1,{ mes "Okay then, be safe."; mes "I'm going to take a nap."; para_2nd01 = 14; - erasequest 7224;// Porcellio hunting - setquest 7226;// Venomous hunting - setquest 7227;// Teddy Bear hunting + erasequest 7224; // Porcellio hunting + setquest 7226; // Venomous hunting + setquest 7227; // Teddy Bear hunting getexp 30000,30000; } else { @@ -3297,9 +3297,9 @@ ein_fild08,172,359,3 script Dispatched Instructor#04 4_M_4THPRIN1,{ mes "I have some things to report to Instructor Ur."; mes "I've been watching you closely and you've done well. Go back to Ur and deliver this report."; para_2nd01 = 15; - erasequest 7226;// Venomous hunting - erasequest 7227;// Teddy Bear hunting - setquest 7228;// Report to Instructor Ur + erasequest 7226; // Venomous hunting + erasequest 7227; // Teddy Bear hunting + setquest 7228; // Report to Instructor Ur getexp 30000,30000; } else { @@ -3374,8 +3374,8 @@ ice_dun01,154,13,5 script Dispatched Instructor#05 4_F_JOB_BLACKSMITH,{ mes "You be careful in there."; mes "Well, good luck~!"; para_2nd01 = 18; - erasequest 7229;// Advanced Training in Ice Dungeon - setquest 7230;// Siroma hunting + erasequest 7229; // Advanced Training in Ice Dungeon + setquest 7230; // Siroma hunting } else if (para_2nd01 == 18) { if (questprogress(7230,HUNTING) == 2) { @@ -3414,8 +3414,8 @@ ice_dun01,154,13,5 script Dispatched Instructor#05 4_F_JOB_BLACKSMITH,{ mes "Go now!"; mes "Those Siromas are going to just get rowdier by the minute."; para_2nd01 = 19; - erasequest 7230;// Siroma hunting - setquest 7231;// Hunting and Gathering + erasequest 7230; // Siroma hunting + setquest 7231; // Hunting and Gathering getexp 40000,40000; npcskill "AL_HEAL",10,99,60; percentheal 0,100; @@ -3431,7 +3431,7 @@ ice_dun01,154,13,5 script Dispatched Instructor#05 4_F_JOB_BLACKSMITH,{ } } else if (para_2nd01 == 19) { - if (questprogress(7231,HUNTING) == 2 && countitem(Ice_Piece) > 29 && countitem(Sweet_Sauce) > 0 && countitem(Milk) > 0) {// Ice_Piece, Sweet_Sauce, Milk + if (questprogress(7231,HUNTING) == 2 && countitem(Ice_Piece) > 29 && countitem(Sweet_Sauce) > 0 && countitem(Milk) > 0) { mes "Ohh!"; mes "You've brought everything."; mes "Okay, so just one last thing...!"; @@ -3458,8 +3458,8 @@ ice_dun01,154,13,5 script Dispatched Instructor#05 4_F_JOB_BLACKSMITH,{ delitem Sweet_Sauce,1; delitem Milk,1; para_2nd01 = 20; - erasequest 7231;// Hunting and Gathering - setquest 7232;// Report to Instructor Ur + erasequest 7231; // Hunting and Gathering + setquest 7232; // Report to Instructor Ur getexp 40000,40000; } else { @@ -3522,8 +3522,8 @@ mid_camp,212,229,3 script Dispatched Instructor#06 4_F_HUWOMAN,{ mes "[Margaret]"; mes "Find him and figure out what the heck he's up to please."; para_2nd01 = 23; - erasequest 7233;// Advanced Training at Ash Vacuum - setquest 7234;// Margaret's favor + erasequest 7233; // Advanced Training at Ash Vacuum + setquest 7234; // Margaret's favor } else if (para_2nd01 < 27) { mes "Can you find those two brothers?"; @@ -3545,8 +3545,8 @@ mid_camp,212,229,3 script Dispatched Instructor#06 4_F_HUWOMAN,{ mes "[Margaret]"; mes "Your training is done so go back and talk to Instructor Ur."; para_2nd01 = 29; - erasequest 7234;// Margaret's favor - setquest 7237;// Report to Instructor Ur + erasequest 7234; // Margaret's favor + setquest 7237; // Report to Instructor Ur } else if (para_2nd01 == 29) { mes "Well, whatever the Nepenthes and Pinguicula proof has been collected."; @@ -3613,7 +3613,7 @@ man_fild01,43,234,3 script Dispatched Instructor#07 4_DST_SOLDIER,{ mes "[Meeru]"; mes "It's really not that difficult to hunt 1 so just go to the field East of here and kill one of them."; para_2nd01 = 24; - setquest 7235;// Nepenthes Hunt + setquest 7235; // Nepenthes Hunt } else if (para_2nd01 == 24) { if (questprogress(7235,HUNTING) == 2) { @@ -3629,7 +3629,7 @@ man_fild01,43,234,3 script Dispatched Instructor#07 4_DST_SOLDIER,{ mes "[Meeru]"; mes "I'll just be here making sure other people hunt the Nepenthes. I might ask them to hunt more than 1 who knows."; para_2nd01 = 25; - erasequest 7235;// Nepenthes Hunt + erasequest 7235; // Nepenthes Hunt getexp 50000,50000;; } else { @@ -3699,7 +3699,7 @@ spl_fild02,377,149,3 script Dispatched Instructor#08 4_M_DST_MASTER,{ mes "I promise you I'll give you something good."; mes "Thanks."; para_2nd01 = 26; - setquest 7236;// Pinguicula Hunt + setquest 7236; // Pinguicula Hunt } else if (para_2nd01 == 26) { if (questprogress(7236,HUNTING) == 2) { @@ -3712,7 +3712,7 @@ spl_fild02,377,149,3 script Dispatched Instructor#08 4_M_DST_MASTER,{ mes "[Mine]"; mes "Oh don't worry she won't mind. I'll just go back to doing what I was doing. Here's your reward."; para_2nd01 = 27; - erasequest 7236;// Pinguicula Hunt + erasequest 7236; // Pinguicula Hunt getexp 50000,50000;; } else { @@ -3740,7 +3740,7 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ close; } mes "[Thorn]"; - if (countitem(Para_Team_Mark) < 1) {// Para_Team_Mark + if (countitem(Para_Team_Mark) < 1) { mes "Hmm, are you a member of Eden Group?"; mes "You need to be one of our members to use my services."; close; @@ -3770,9 +3770,9 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ mes "So what equipment do you want to enhance?"; next; switch( select( "Eden Group Manteau II", "Eden Group Armor IV", "Eden Group Boots IV" ) ) { - case 1: callsub S_Enchant,Para_Team_Manteau2,"Manteau";// Para_Team_Manteau2 - case 2: callsub S_Enchant,Para_Team_Armor,"Armor";// Para_Team_Armor - case 3: callsub S_Enchant,Para_Team_Boots4,"Boots";// Para_Team_Boots4 + case 1: callsub S_Enchant,Para_Team_Manteau2,"Manteau"; + case 2: callsub S_Enchant,Para_Team_Armor,"Armor"; + case 3: callsub S_Enchant,Para_Team_Boots4,"Boots"; } } else { @@ -3816,7 +3816,7 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ mes "I appreciate it."; mes "So take your time and I'll be waiting."; para_2nd04 = 1 + .@add; - setquest (7238 + .@add);// Errands for Thorn (easy/hard) + setquest (7238 + .@add); // Errands for Thorn (easy/hard) close; case 2: mes "Eh...?"; @@ -3826,7 +3826,7 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ } else if (para_2nd04 == 1 || para_2nd04 == 2) { if (para_2nd04 == 1) { - setarray .@item[0],Iron_Ore,Iron;// Iron_Ore, Iron + setarray .@item[0],Iron_Ore,Iron; setarray .@amount[0],20,10; setarray .@countitem[0],countitem(Iron_Ore),countitem(Iron); .@string$ = "I asked you to get 20 Iron Ore, and 10 Iron."; @@ -3879,7 +3879,7 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ mes "Uh-huh..."; mes "What are we going to... oh don't worry."; mes "Come to me later."; - erasequest 7241;// Errands for Thorn timer + erasequest 7241; // Errands for Thorn timer para_2nd04 = 0; } } @@ -3915,57 +3915,57 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ P_Katar1,"Eden Group Katar I","Katar, ATK 155"; } else if (BaseJob == Job_Rogue || BaseClass == Job_Novice) - getitem P_Dagger3,1;// P.Dagger III + getitem P_Dagger3,1; else if (BaseJob == Job_Alchemist || BaseJob == Job_Blacksmith) { callsub L_Select,"Your options are Mace, Saber and Axe.", - P_Mace3,"Eden Group Mace III","Mace, Attack 172",// P_Mace3 - P_Saber3,"Eden Group Saber III","Sword, Attack 185",//P.Saber III - P_Two_Handed_Axe1,"Eden Group Axe I","Axe, Attack 195"; //P.Two-Handed Axe I + P_Mace3,"Eden Group Mace III","Mace, Attack 172", + P_Saber3,"Eden Group Saber III","Sword, Attack 185", + P_Two_Handed_Axe1,"Eden Group Axe I","Axe, Attack 195"; } else if (BaseJob == Job_Wizard) - getitem P_Staff3,1;// P.Staff III + getitem P_Staff3,1; else if (BaseJob == Job_Sage) { callsub L_Select,"", - P_Staff3,"Eden Group Staff III","Staff, MATK + 170, INT +4, Attack 60", //P.Staff III - P_Dic1,"Eden Group Dictionary I","Book, MATK +100, Attack 135"; //P.Book I + P_Staff3,"Eden Group Staff III","Staff, MATK + 170, INT +4, Attack 60", + P_Dic1,"Eden Group Dictionary I","Book, MATK +100, Attack 135"; } else if (BaseJob == Job_Priest) { callsub L_Select,"", - P_Staff3,"Eden Group Staff III","Staff, MATK + 170, INT +4, Attack 60", //P.Staff III - P_Dic1,"Eden Group Dictionary I","Book, MATK +100, Attack 135", //P.Book I - P_Mace3,"Eden Group Mace III","Mace, Attack 172"; //P.Mace III + P_Staff3,"Eden Group Staff III","Staff, MATK + 170, INT +4, Attack 60", + P_Dic1,"Eden Group Dictionary I","Book, MATK +100, Attack 135", + P_Mace3,"Eden Group Mace III","Mace, Attack 172"; } else if (BaseJob == Job_Monk) { callsub L_Select,"", - P_Knuckle1,"Eden Group Knuckles I","Knuckle, Attack 120", //P.Knuckle I - P_Mace3,"Eden Group Mace III","Mace, Attack 172"; //P.Mace III + P_Knuckle1,"Eden Group Knuckles I","Knuckle, Attack 120", + P_Mace3,"Eden Group Mace III","Mace, Attack 172"; } else if (BaseJob == Job_Hunter) - getitem P_Bow3,1;// P.Bow III + getitem P_Bow3,1; else if (BaseJob == Job_Bard) { callsub L_Select,"", - P_Bow3,"Eden Group Bow III","Bow, Attack 140", //P.Bow III - P_String_Inst1,"Eden Group Guitar I","Guitar, Attack 125"; //P.Guitar I + P_Bow3,"Eden Group Bow III","Bow, Attack 140", + P_String_Inst1,"Eden Group Guitar I","Guitar, Attack 125"; } else if (BaseJob == Job_Dancer) { callsub L_Select,"", - P_Bow3,"Eden Group Bow III","Bow, Attack 140", //P.Bow III - P_Tail1,"Eden Group Whip I","Whip, Attack 125"; //P.Tail I + P_Bow3,"Eden Group Bow III","Bow, Attack 140", + P_Tail1,"Eden Group Whip I","Whip, Attack 125"; } else if (Class == Job_Ninja) { callsub L_Select,"", - P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165", //P.Dagger III - P_Huuma_Shuriken1,"Eden Group Huuma Shuriken I","Huuma Suriken, MATK +50, ATK 170"; //P.Huuma Suriken I + P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165", + P_Huuma_Shuriken1,"Eden Group Huuma Shuriken I","Huuma Suriken, MATK +50, ATK 170"; } else if (Class == Job_Star_Gladiator) - getitem P_Dic1,1; //P.Book I + getitem P_Dic1,1; else if (Class == Job_Soul_Linker) { callsub L_Select,"", - P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165", //P.Dagger III - P_Staff3,"Eden Group Staff III","Staff, MATK +170, INT +4, ATK 60"; //P.Staff III + P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165", + P_Staff3,"Eden Group Staff III","Staff, MATK +170, INT +4, ATK 60"; } else if (Class == Job_Gunslinger) - getitem P_Revolver3,1; //P.Revolver III + getitem P_Revolver3,1; else { mes "Hmm, you are eligible to receive equipment."; mes "Yeah I understand that."; @@ -3975,10 +3975,10 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{ close; } para_2nd02 = 2; - getitem Para_Team_Hat2,1;// Paradise Hat II - getitem Para_Team_Manteau2,1;// Paradise Mantle II - getitem Para_Team_Boots4,1;// Paradise Boots IV - getitem Para_Team_Armor,1;// Paradise Uniform IV + getitem Para_Team_Hat2,1; + getitem Para_Team_Manteau2,1; + getitem Para_Team_Boots4,1; + getitem Para_Team_Armor,1; mes "Here's your equipment."; mes "I'll also give you the other gear that comes along with this set."; } @@ -4016,18 +4016,18 @@ S_Enchant: mes "[Thorn]"; if (countitem(getarg(0)) > 0) { setarray .@bonus[1], - Luck2,// Luck2 - Mdef4,// Mdef4 - Def3,// Def3 - Strength2,// Strength2 - Mdef6,// Mdef6 - Def6,// Def6 - Agility2,// Agility2 - Mdef8,// Mdef8 - Def9,// Def9 - Dexterity2,// Dexterity2 - Inteligence2,// Inteligence2 - Vitality2;// Vitality2 + Luck2, + Mdef4, + Def3, + Strength2, + Mdef6, + Def6, + Agility2, + Mdef8, + Def9, + Dexterity2, + Inteligence2, + Vitality2; .@1st = .@bonus[ rand(1,12) ]; .@2nd = .@bonus[ rand(1,12) ]; mes "Eden Group "+ getarg(1) +"?"; @@ -4064,21 +4064,21 @@ S_Enchant: moc_para01,112,79,3 script Weapons Expert BK#2nd11 4_M_REPAIR,{ setarray .@wplist[0], - P_Slayer3, // P_Slayer3 - P_Saber3, // P_Saber3 - P_Dagger3, // P_Dagger3 - P_Katar1, // P_Katar1 - P_Two_Handed_Axe1, // P_Two_Handed_Axe1 - P_Sphere1, // P_Spear I - P_Staff3, // P_Staff3 - P_Mace3, // P_Mace3 - P_Bow3, // P_Bow3 - P_Dic1, // P.Book I - P_String_Inst1, // P_Guitar I - P_Tail1, // P_Tail1 - P_Revolver3, // P_Revolver3 - P_Knuckle1, // P_Knuckle1 - P_Huuma_Shuriken1; // P_Huuma_Shuriken1 + P_Slayer3, + P_Saber3, + P_Dagger3, + P_Katar1, + P_Two_Handed_Axe1, + P_Sphere1, + P_Staff3, + P_Mace3, + P_Bow3, + P_Dic1, + P_String_Inst1, + P_Tail1, + P_Revolver3, + P_Knuckle1, + P_Huuma_Shuriken1; .@menu$ = "Eden Group Slayer III:" + "Eden Group Saber III:" + "Eden Group Dagger III:" + @@ -4192,27 +4192,27 @@ moc_para01,112,79,3 script Weapons Expert BK#2nd11 4_M_REPAIR,{ next; switch( select( "Brute Type", "Plant Type", "Insect Type", "Fish Type", "Dragon Type", "Increased Heal" ) ) { case 1: - setarray .@arg[0],Goblin_Card,Bradium_Goram_Card,111;// Goblin_Card, Bradium_Goram_Card + setarray .@arg[0],Goblin_Card,Bradium_Goram_Card,111; .@type$ = "Brute"; break; case 2: - setarray .@arg[0],Scorpion_Card,Nepenthes_Card,121;// Scorpion_Card, Nepenthes_Card + setarray .@arg[0],Scorpion_Card,Nepenthes_Card,121; .@type$ = "Plant"; break; case 3: - setarray .@arg[0],Caramel_Card,Pinguicula_Card,131;// Caramel_Card, Pinguicula_Card + setarray .@arg[0],Caramel_Card,Pinguicula_Card,131; .@type$ = "Insect"; break; case 4: - setarray .@arg[0],Flora_Card,Naga_Card,141;// Flora_Card, Naga_Card + setarray .@arg[0],Flora_Card,Naga_Card,141; .@type$ = "Fish"; break; case 5: - setarray .@arg[0],Petit_Card,Egg_Of_Draco_Card,151;// Petit_Card, Egg_Of_Draco_Card + setarray .@arg[0],Petit_Card,Egg_Of_Draco_Card,151; .@type$ = "Dragon"; break; case 6: - setarray .@arg[0],Heal_Amount2,Heal_Amount2,161;// Heal_Amount2 + setarray .@arg[0],Heal_Amount2,Heal_Amount2,161; } mes "[BK]"; for ( .@i = 0; .@i < 15; .@i++ ) { @@ -4273,29 +4273,29 @@ moc_para01,112,79,3 script Weapons Expert BK#2nd11 4_M_REPAIR,{ delitem .@wplist[.@s],1; para_2nd02 = 5; if (para_2nd03 == 111) - getitem2 .@wplist[.@s],1,1,0,0,0,Goblin_Card,Goblin_Card,Atk3;// Goblin_Card, Goblin_Card, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Goblin_Card,Goblin_Card,Atk3; else if (para_2nd03 == 121) - getitem2 .@wplist[.@s],1,1,0,0,0,Scorpion_Card,Scorpion_Card,Atk3;// Scorpion_Card, Scorpion_Card, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Scorpion_Card,Scorpion_Card,Atk3; else if (para_2nd03 == 131) - getitem2 .@wplist[.@s],1,1,0,0,0,Caramel_Card,Caramel_Card,Atk3;// Caramel_Card, Caramel_Card, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Caramel_Card,Caramel_Card,Atk3; else if (para_2nd03 == 141) - getitem2 .@wplist[.@s],1,1,0,0,0,Flora_Card,Flora_Card,Atk3;// Flora_Card, Flora_Card, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Flora_Card,Flora_Card,Atk3; else if (para_2nd03 == 151) - getitem2 .@wplist[.@s],1,1,0,0,0,Petit_Card,Petit_Card,Atk3;// Petit_Card, Petit_Card, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Petit_Card,Petit_Card,Atk3; else if (para_2nd03 == 161) - getitem2 .@wplist[.@s],1,1,0,0,0,Heal_Amount2,Heal_Amount2,Atk3;// Heal_Amount2, Heal_Amount2, Atk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Heal_Amount2,Heal_Amount2,Atk3; else if (para_2nd03 == 211) - getitem2 .@wplist[.@s],1,1,0,0,0,Bradium_Goram_Card,Bradium_Goram_Card,Matk3;// Bradium_Goram_Card, Bradium_Goram_Card, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Bradium_Goram_Card,Bradium_Goram_Card,Matk3; else if (para_2nd03 == 221) - getitem2 .@wplist[.@s],1,1,0,0,0,Nepenthes_Card,Nepenthes_Card,Matk3;// Nepenthes_Card, Nepenthes_Card, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Nepenthes_Card,Nepenthes_Card,Matk3; else if (para_2nd03 == 231) - getitem2 .@wplist[.@s],1,1,0,0,0,Pinguicula_Card,Pinguicula_Card,Matk3;// Pinguicula_Card, Pinguicula_Card, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Pinguicula_Card,Pinguicula_Card,Matk3; else if (para_2nd03 == 241) - getitem2 .@wplist[.@s],1,1,0,0,0,Naga_Card,Naga_Card,Matk3;// Naga_Card, Naga_Card, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Naga_Card,Naga_Card,Matk3; else if (para_2nd03 == 251) - getitem2 .@wplist[.@s],1,1,0,0,0,Egg_Of_Draco_Card,Egg_Of_Draco_Card,Matk3;// Egg_Of_Draco_Card, Egg_Of_Draco_Card, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Egg_Of_Draco_Card,Egg_Of_Draco_Card,Matk3; else if (para_2nd03 == 261) - getitem2 .@wplist[.@s],1,1,0,0,0,Heal_Amount2,Heal_Amount2,Matk3;// Heal_Amount2, Heal_Amount2, Matk3 + getitem2 .@wplist[.@s],1,1,0,0,0,Heal_Amount2,Heal_Amount2,Matk3; mes "[BK]"; mes "Isn't it magnificent?"; mes "I know, I know, I'm pretty amazing!"; diff --git a/npc/re/quests/eden/eden_service.txt b/npc/re/quests/eden/eden_service.txt index a4b1a8439..c6f6c4a41 100644 --- a/npc/re/quests/eden/eden_service.txt +++ b/npc/re/quests/eden/eden_service.txt @@ -33,7 +33,7 @@ //= 1.1 //========================================================================= -- script Goods Cabinet#00::pggc -1,{ +- script Goods Cabinet#00::pggc FAKE_NPC,{ mes "It is a Goods Storage Cabinet."; mes "A message is written on a piece of paper."; next; diff --git a/npc/re/quests/mrsmile.txt b/npc/re/quests/mrsmile.txt index 7cb093753..a98ac8b0e 100644 --- a/npc/re/quests/mrsmile.txt +++ b/npc/re/quests/mrsmile.txt @@ -31,11 +31,15 @@ //================= Description =========================================== //= Trade Clover, Fluff and Jellopy for a Mr. Smile mask. //================= Current Version ======================================= -//= 1.1 +//= 1.2 //========================================================================= +//== Izlude ================================================ izlude,125,175,4 duplicate(SmileHelper) Smile Assistance#iz 4_F_03 izlude_a,125,175,4 duplicate(SmileHelper) Smile Assistance#iz_a 4_F_03 izlude_b,125,175,4 duplicate(SmileHelper) Smile Assistance#iz_b 4_F_03 izlude_c,125,175,4 duplicate(SmileHelper) Smile Assistance#iz_c 4_F_03 izlude_d,125,175,4 duplicate(SmileHelper) Smile Assistance#iz_d 4_F_03 + +//== Morroc ================================================ +morocc,159,107,4 duplicate(SmileHelper) Smile Assistance#moc1 4_F_03 diff --git a/npc/re/quests/quests_brasilis.txt b/npc/re/quests/quests_brasilis.txt index a8f576741..bed124f0c 100644 --- a/npc/re/quests/quests_brasilis.txt +++ b/npc/re/quests/quests_brasilis.txt @@ -105,7 +105,7 @@ OnGo: end; } -- script Puppy#bra -1,{ +- script Puppy#bra FAKE_NPC,{ if (questprogress(9030) == 1) { if (brazil_kid < 3) { mes "[Puppy]"; diff --git a/npc/re/quests/quests_dewata.txt b/npc/re/quests/quests_dewata.txt index d29a7dffa..5ec38165d 100644 --- a/npc/re/quests/quests_dewata.txt +++ b/npc/re/quests/quests_dewata.txt @@ -1514,7 +1514,7 @@ dew_fild01,259,48,4 script Poby#dew_drink 4_M_DEWBOY,{ close; } -- script ::DewataPalm -1,{ +- script ::DewataPalm FAKE_NPC,{ if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 5000) { mes "You are carrying too much."; close; diff --git a/npc/re/quests/quests_dicastes.txt b/npc/re/quests/quests_dicastes.txt index 1e8811752..3c348aff0 100644 --- a/npc/re/quests/quests_dicastes.txt +++ b/npc/re/quests/quests_dicastes.txt @@ -203,7 +203,7 @@ sec_in02,16,43,5 script Scaraba Dungeon Entrance 4_MAN_BENKUNI,{ } //== Vigilantes ============================================ -- script Vigilante#main -1,{ +- script Vigilante#main FAKE_NPC,{ if (compare(strnpcinfo(0),"ep133_26")) { if (!isequipped(2782)) { mes "[Vigilante]"; @@ -1020,7 +1020,7 @@ dic_in01,40,193,1 script Papyrus#0001 4_MAN_NITT,{ } //== Document Packages ===================================== -- script Document Package#main -1,{ +- script Document Package#main FAKE_NPC,{ function eldicastes_dp; if (isequipped(2782) < 1) { mes "You can't make sense of the writing."; @@ -4792,7 +4792,7 @@ dic_fild01,231,174,5 script BK#ep133_18 4_M_MERCAT2,{ close; } -- script ep133_crack#main -1,{ +- script ep133_crack#main FAKE_NPC,{ // if ((GetInventoryRemainCount 1301 3 == 2) || (GetInventoryRemainCount 1301 3 == 3)) { if ((MaxWeight - Weight) < 1000) { mes "- You can too many items to proceed with the quest. -"; @@ -6102,7 +6102,7 @@ dic_in01,349,129,5 script Bouy#13_3 4_MAN_BENKUNI,{ } //== Sapha's Visit ========================================= -- script Expedition#ep133_is -1,{ +- script Expedition#ep133_is FAKE_NPC,{ if (ep13_3_invite) { if (compare(strnpcinfo(1),"Maha")) { mes "[Maha]"; @@ -6949,7 +6949,7 @@ dic_in01,42,264,3 script Adventurer Clerk#ep133 4_MAN_NITT,{ } } //== Enchantment NPCs ====================================== -- script dic_enc#main -1,{ +- script dic_enc#main FAKE_NPC,{ .@re$ = strnpcinfo(1); .@n$ = "["+.@re$+"]"; if (!checkweight (1201,1)) { diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt index 54883bed7..bd6af0bdd 100644 --- a/npc/re/quests/quests_malangdo.txt +++ b/npc/re/quests/quests_malangdo.txt @@ -1321,7 +1321,7 @@ mal_in02,140,94,0 script Bob#mal 4_CAT_DOWN,{ close; } -- script Crack#mal0 -1,{ +- script Crack#mal0 FAKE_NPC,{ if (.off) end; // Official script uses a 1-second timer to disable cracks. Added to prevent abuse. if (ma_tomas == 15 || questprogress(11241)) { if (countitem(Fix_Kit) < 1) { @@ -1416,7 +1416,7 @@ malangdo,221,155,0 duplicate(Crack#mal0) Crack#mal8 4_CRACK malangdo,217,109,0 duplicate(Crack#mal0) Crack#mal9 4_CRACK malangdo,162,183,0 duplicate(Crack#mal0) Crack#mal10 4_CRACK -- script Crackt0#mal -1,{ +- script Crackt0#mal FAKE_NPC,{ end; OnInit: disablenpc strnpcinfo(0); @@ -1437,16 +1437,16 @@ OnTimer30000: donpcevent strnpcinfo(0)+"::OnDisable"; end; } -- duplicate(Crackt0#mal) Crackt1#mal -1 -- duplicate(Crackt0#mal) Crackt2#mal -1 -- duplicate(Crackt0#mal) Crackt3#mal -1 -- duplicate(Crackt0#mal) Crackt4#mal -1 -- duplicate(Crackt0#mal) Crackt5#mal -1 -- duplicate(Crackt0#mal) Crackt6#mal -1 -- duplicate(Crackt0#mal) Crackt7#mal -1 -- duplicate(Crackt0#mal) Crackt8#mal -1 -- duplicate(Crackt0#mal) Crackt9#mal -1 -- duplicate(Crackt0#mal) Crackt10#mal -1 +- duplicate(Crackt0#mal) Crackt1#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt2#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt3#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt4#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt5#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt6#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt7#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt8#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt9#mal FAKE_NPC +- duplicate(Crackt0#mal) Crackt10#mal FAKE_NPC mal_in02,181,55,3 script Brie#mal 4_CAT_SAILOR2,{ if (ma_tomas < 6) { @@ -1906,7 +1906,7 @@ mal_in01,116,168,0 script Dry Machine#mal 2_SLOT_MACHINE,{ close; } -- script Suspicious Sand Pile#0 -1,{ +- script Suspicious Sand Pile#0 FAKE_NPC,{ if (.off) end; // Official script uses a 1-second timer to disable sand piles. Added to prevent abuse. if (MaxWeight - Weight < 1000) { mes "Your inventory is too heavy to proceed. Come back after lightening your load."; @@ -1954,7 +1954,7 @@ malangdo,136,122,0 duplicate(Suspicious Sand Pile#0) Suspicious Sand Pile#8 4_SO malangdo,152,143,0 duplicate(Suspicious Sand Pile#0) Suspicious Sand Pile#9 4_SOIL malangdo,242,175,0 duplicate(Suspicious Sand Pile#0) Suspicious Sand Pile#10 4_SOIL -- script Water Sand0#mal -1,{ +- script Water Sand0#mal FAKE_NPC,{ OnInit: disablenpc strnpcinfo(0); end; @@ -1974,16 +1974,16 @@ OnTimer30000: donpcevent strnpcinfo(0)+"::OnDisable"; end; } -- duplicate(Water Sand0#mal) Water Sand1#mal -1 -- duplicate(Water Sand0#mal) Water Sand2#mal -1 -- duplicate(Water Sand0#mal) Water Sand3#mal -1 -- duplicate(Water Sand0#mal) Water Sand4#mal -1 -- duplicate(Water Sand0#mal) Water Sand5#mal -1 -- duplicate(Water Sand0#mal) Water Sand6#mal -1 -- duplicate(Water Sand0#mal) Water Sand7#mal -1 -- duplicate(Water Sand0#mal) Water Sand8#mal -1 -- duplicate(Water Sand0#mal) Water Sand9#mal -1 -- duplicate(Water Sand0#mal) Water Sand10#mal -1 +- duplicate(Water Sand0#mal) Water Sand1#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand2#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand3#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand4#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand5#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand6#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand7#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand8#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand9#mal FAKE_NPC +- duplicate(Water Sand0#mal) Water Sand10#mal FAKE_NPC mal_dun01,136,120,6 script Linguist Devore#mald 4_CAT_MERMASTER,{ end; @@ -2602,7 +2602,7 @@ mal_dun01,133,125,5 script Star Candy#mal 4_F_STARFISHGIRL,{ close; } -- script #skin_mal -1,{ +- script #skin_mal FAKE_NPC,{ .@index = atoi(strnpcinfo(2)); switch(.@index) { case 29: .@str$ = "dry"; break; @@ -3172,7 +3172,7 @@ malangdo,197,120,5 script A Foolish Cat#ml 4_CAT_SAILOR3,{ close; } -malangdo,196,120,0 script #ml1 -1,2,2,{ +malangdo,196,120,0 script #ml1 FAKE_NPC,2,2,{ OnTouch: if (malang_bad_guys == 1 || malang_bad_guys == 2) { mes "You hear a conversation between the Suspious Dealers."; @@ -3231,7 +3231,7 @@ OnTouch: end; } -malangdo,155,179,0 script #ml2 -1,2,2,{ +malangdo,155,179,0 script #ml2 FAKE_NPC,2,2,{ OnTouch: if (malang_bad_guys == 2 || malang_bad_guys == 3) { mes "There's a memo."; @@ -3388,7 +3388,7 @@ mal_in02,184,72,3 script Gozangee#ml 4_CAT_SAILOR4,{ close; } -mal_in02,184,77,0 script #ml3 -1,2,2,{ +mal_in02,184,77,0 script #ml3 FAKE_NPC,2,2,{ OnTouch: if (checkweight(Knife,1) == 0) { mes "- You have too many items. -"; @@ -5481,7 +5481,7 @@ L_Viewpoint: return; } -- script #malangdo_compass -1,{ +- script #malangdo_compass FAKE_NPC,{ if (countitem(Bravery_Card_A) == 0) { mes "There is a strange machine."; mes "This is the Duruduru compass from the Meow Bravery Team."; diff --git a/npc/re/quests/quests_malaya.txt b/npc/re/quests/quests_malaya.txt index b125b4e3a..57c0eb8be 100644 --- a/npc/re/quests/quests_malaya.txt +++ b/npc/re/quests/quests_malaya.txt @@ -4529,7 +4529,7 @@ OnInit: end; } -- script Unknown Trace#buwaya -1,{ +- script Unknown Trace#buwaya FAKE_NPC,{ if (checkweight(Knife,1) == 0 || MaxWeight - Weight < 2000) { mes "- Wait!! -"; mes "- You have too many items on you. -"; @@ -5881,7 +5881,7 @@ malaya,283,265,4 script Village Chief#bako2 4_BARYO_CHIEF,{ } } -ma_fild01,1,1,0 script malaya_ma_fild01_mon -1,{ +ma_fild01,1,1,0 script malaya_ma_fild01_mon FAKE_NPC,{ OnInit: enablenpc "malaya_ma_fild01_mon"; donpcevent "malaya_ma_fild01_mon::OnEnable"; @@ -7915,7 +7915,7 @@ malaya,53,68,4 script Bushes#ma CLEAR_NPC,{ } } -- script Suspicious Wooden Stick::MalayaStick -1,{ +- script Suspicious Wooden Stick::MalayaStick FAKE_NPC,{ if (checkweight(Knife,1) == 0) { mes "- Wait !! -"; mes "- You have too many items. -"; @@ -7986,7 +7986,7 @@ malaya,48,79,4 duplicate(MalayaStick) Suspicious Wooden Stick::MalayaStick8 4_BU malaya,50,46,4 duplicate(MalayaStick) Suspicious Wooden Stick::MalayaStick9 4_BULLETIN_BOARD2 malaya,59,84,4 duplicate(MalayaStick) Suspicious Wooden Stick::MalayaStick10 4_BULLETIN_BOARD2 -- script Tent#ma -1,{ //557 +- script Tent#ma FAKE_NPC,{ //557 end; OnInit: disablenpc strnpcinfo(0); @@ -8007,16 +8007,16 @@ OnTimer30000: donpcevent strnpcinfo(0)+"::OnDisable"; end; } -- duplicate(Tent#ma) Tent1#ma -1 -- duplicate(Tent#ma) Tent2#ma -1 -- duplicate(Tent#ma) Tent3#ma -1 -- duplicate(Tent#ma) Tent4#ma -1 -- duplicate(Tent#ma) Tent5#ma -1 -- duplicate(Tent#ma) Tent6#ma -1 -- duplicate(Tent#ma) Tent7#ma -1 -- duplicate(Tent#ma) Tent8#ma -1 -- duplicate(Tent#ma) Tent9#ma -1 -- duplicate(Tent#ma) Tent10#ma -1 +- duplicate(Tent#ma) Tent1#ma FAKE_NPC +- duplicate(Tent#ma) Tent2#ma FAKE_NPC +- duplicate(Tent#ma) Tent3#ma FAKE_NPC +- duplicate(Tent#ma) Tent4#ma FAKE_NPC +- duplicate(Tent#ma) Tent5#ma FAKE_NPC +- duplicate(Tent#ma) Tent6#ma FAKE_NPC +- duplicate(Tent#ma) Tent7#ma FAKE_NPC +- duplicate(Tent#ma) Tent8#ma FAKE_NPC +- duplicate(Tent#ma) Tent9#ma FAKE_NPC +- duplicate(Tent#ma) Tent10#ma FAKE_NPC malaya,114,183,3 script Bent Old Lady#ma 4_F_BARYO_OLD,{ if (malaya_bang == 16) { diff --git a/npc/re/quests/quests_mora.txt b/npc/re/quests/quests_mora.txt index d89333583..cdd405363 100644 --- a/npc/re/quests/quests_mora.txt +++ b/npc/re/quests/quests_mora.txt @@ -377,7 +377,7 @@ OnTouch: end; } -- script #mora_bush -1,{ +- script #mora_bush FAKE_NPC,{ if (ep14_1_bs != 3 || rand(5)) { mes "- It's just an ordinary bush. -"; close; @@ -409,7 +409,7 @@ OnDisable: end; } -- script #mora_pouch -1,{ +- script #mora_pouch FAKE_NPC,{ end; OnTouch: .@i = atoi(charat(strnpcinfo(2),9)); @@ -449,7 +449,7 @@ OnTouch: end; } -- script #mora_fairy -1,{ +- script #mora_fairy FAKE_NPC,{ end; OnInit: disablenpc strnpcinfo(0); @@ -504,7 +504,7 @@ spl_fild02,186,260,6 duplicate(#mora_fairy) Fairy#cmd61 4_F_FAIRYKID5 spl_fild02,186,260,6 duplicate(#mora_fairy) Fairy#cmd62 4_M_FAIRYKID4 spl_fild02,186,260,6 duplicate(#mora_fairy) Fairy#cmd63 4_F_FAIRYKID4 -- script #mora_bush_timer -1,{ +- script #mora_bush_timer FAKE_NPC,{ end; OnInit: disablenpc strnpcinfo(0); @@ -4094,7 +4094,7 @@ OnFullon: end; } -- script ???#mora -1,{ +- script ???#mora FAKE_NPC,{ if (questprogress(5019)) { mes "You find an area emitting a distinct aura."; mes "You may be able to collect bath water samples."; @@ -4236,7 +4236,7 @@ mora,113,84,0 duplicate(???#mora) ???#ep14_muk03 CLEAR_NPC,2,2 mora,116,81,0 duplicate(???#mora) ???#ep14_muk04 CLEAR_NPC,2,2 mora,118,86,0 duplicate(???#mora) ???#ep14_muk05 CLEAR_NPC,2,2 -- script #mora_puddle -1,{ +- script #mora_puddle FAKE_NPC,{ .@i = atoi(charat(strnpcinfo(2),9)); // This script has a lot of checks, diff --git a/npc/re/quests/quests_morocc.txt b/npc/re/quests/quests_morocc.txt index 1ca46c5d9..eb5b8f27c 100644 --- a/npc/re/quests/quests_morocc.txt +++ b/npc/re/quests/quests_morocc.txt @@ -33,7 +33,7 @@ //========================================================================= //== Resurrection of Satan Morroc ========================== -- script Continental Guard#man -1,{ +- script Continental Guard#man FAKE_NPC,{ mes "[Continental Guard]"; mes "We've received orders from Headquarters to block access to this area since an unusual space-time phenomenon has been detected."; next; diff --git a/npc/re/scripts.conf b/npc/re/scripts.conf index 706c4bb85..b03ebe46a 100644 --- a/npc/re/scripts.conf +++ b/npc/re/scripts.conf @@ -31,6 +31,9 @@ //================= Airport =============================================== npc: npc/re/airports/izlude.txt +//================ Battlegrounds ========================================== +npc: npc/re/battleground/bg_common.txt + //================= Cities ================================================ npc: npc/re/cities/alberta.txt npc: npc/re/cities/brasilis.txt diff --git a/npc/re/warps/cities/dicastes.txt b/npc/re/warps/cities/dicastes.txt index 5d0388b1c..0d8922e51 100644 --- a/npc/re/warps/cities/dicastes.txt +++ b/npc/re/warps/cities/dicastes.txt @@ -65,7 +65,7 @@ dic_in01,242,182,0 script #eldicastes0016 CLEAR_NPC,{ } // Elevators -- script Elevator#main -1,{ +- script Elevator#main FAKE_NPC,{ .@n = atoi(strnpcinfo(2)); .@eq = (isequipped(2782))?1:0; if (.@n <= 4) { diff --git a/npc/re/warps/fields/bif_fild.txt b/npc/re/warps/fields/bif_fild.txt index ccf245994..581cceb62 100644 --- a/npc/re/warps/fields/bif_fild.txt +++ b/npc/re/warps/fields/bif_fild.txt @@ -39,7 +39,7 @@ mora,182,74,0 warp bifrost_field0003 1,1,bif_fild02,286,327 mora,20,159,0 warp bifrost_field0004 1,1,bif_fild02,99,308 mora,56,25,0 warp bifrost_field0005 1,1,bif_fild02,176,162 -- script bifrost_field0000 -1,{ +- script bifrost_field0000 FAKE_NPC,{ mes "At the end of the small path through the bright flower garden"; mes "is an entrance to something that looks like a small hill."; next; diff --git a/npc/re/woe-fe/invest_main.txt b/npc/re/woe-fe/invest_main.txt index ed02b7d9a..534c3ddef 100644 --- a/npc/re/woe-fe/invest_main.txt +++ b/npc/re/woe-fe/invest_main.txt @@ -74,7 +74,7 @@ //== Investment Functions & Controller ===================== // Note: The times in this section are almost entirely custom. -- script #invest_timer -1,{ +- script #invest_timer FAKE_NPC,{ OnClock0000: // Open investments on Wed (1 hour after WoE) if (gettime(GETTIME_WEEKDAY) == WEDNESDAY && !agitcheck()) { $2011_agit_invest = 1; @@ -705,7 +705,7 @@ OnAgitInvest: */ //== Realms - Merchant Guilds, Gate Managers, Status Boards = -- script Cat Paw Merchant Guild -1,{ +- script Cat Paw Merchant Guild FAKE_NPC,{ if (compare(strnpcinfo(4),"alde")) { .@npc$ = "alde"; @@ -947,7 +947,7 @@ OnAgitInvest: } } -- script Gate Manager#realm -1,{ +- script Gate Manager#realm FAKE_NPC,{ if (compare(strnpcinfo(4),"alde")) { .@npc$ = "alde"; @@ -1028,7 +1028,7 @@ OnAgitInvest: end; } -- script Investment Status Board -1,{ +- script Investment Status Board FAKE_NPC,{ .@invest_status = callfunc("F_Invest_Status"); if (.@invest_status == 1) { if (compare(strnpcinfo(4),"alde")) { @@ -1096,7 +1096,7 @@ OnAgitInvest: } //== Inside Castles - Gate Managers ======================== -- script Gate Manager#castle -1,{ +- script Gate Manager#castle FAKE_NPC,{ .@id = atoi(charat(strnpcinfo(2),getstrlen(strnpcinfo(2))-1)); if (compare(strnpcinfo(2),"alde")) { diff --git a/npc/woe-fe/agit_controller.txt b/npc/woe-fe/agit_controller.txt index 8572a268a..be7e07d14 100644 --- a/npc/woe-fe/agit_controller.txt +++ b/npc/woe-fe/agit_controller.txt @@ -43,7 +43,7 @@ //========================================================================= //== WoE Start/Stop times ================================== -- script Agit_Event -1,{ +- script Agit_Event FAKE_NPC,{ end; OnClock2100: //start time for Tues(2), Thurs(4) diff --git a/npc/woe-fe/agit_main.txt b/npc/woe-fe/agit_main.txt index f7144b9b3..06a80cde3 100644 --- a/npc/woe-fe/agit_main.txt +++ b/npc/woe-fe/agit_main.txt @@ -58,7 +58,7 @@ //========================================================================= //== WoE : Main Functions ================================== -- script Gld_Agit_Manager::Gld_Agit_Manager -1,{ +- script Gld_Agit_Manager::Gld_Agit_Manager FAKE_NPC,{ end; // War of Emperium has started. @@ -316,7 +316,7 @@ OnRecvCastle: } //== WoE : Guild Kafras ==================================== -- script Kafra Staff#woe::guildkafra -1,{ +- script Kafra Staff#woe::guildkafra FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(2),1); @@ -464,7 +464,7 @@ OnRecvCastle: } //== WoE : Castle Managers ================================= -- script Castle Manager#cm::cm -1,{ +- script Castle Manager#cm::cm FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(2),1); @@ -915,7 +915,7 @@ OnRecvCastle: } //== WoE : Guild Dungeon Entrances ========================= -- script Lever#gd::gdlever -1,{ +- script Lever#gd::gdlever FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(2),1); @@ -982,7 +982,7 @@ OnRecvCastle: } //== Guardian Spawner Template ============================= -- script Gld_Guard_Template::Gld_Guard_Template -1,{ +- script Gld_Guard_Template::Gld_Guard_Template FAKE_NPC,{ // Spawn Guardians in castles // When adding new castles, ensure that the coordinates coincide with the // coordinates defined in the Guild Steward template. @@ -1122,7 +1122,7 @@ OnGuardianDied: } //== Treasure Room Spawn Template ========================== -- script Gld_Trea_Spawn::Gld_Trea_Spawn -1,{ +- script Gld_Trea_Spawn::Gld_Trea_Spawn FAKE_NPC,{ end; OnClock0001: diff --git a/npc/woe-fe/aldeg_cas01.txt b/npc/woe-fe/aldeg_cas01.txt index 8b9c5c5aa..c87cd3580 100644 --- a/npc/woe-fe/aldeg_cas01.txt +++ b/npc/woe-fe/aldeg_cas01.txt @@ -144,10 +144,10 @@ aldeg_cas01,123,223,0 script #lever_A01 HIDDEN_NPC,{ aldeg_cas01,211,181,0 duplicate(gdlever) #aldeg_cas01 HIDDEN_NPC //== Guild Treasure Spawns ================================= -aldeg_cas01,118,223,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas01 -1 +aldeg_cas01,118,223,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas01 FAKE_NPC //== AGIT Manager ========================================== -aldeg_cas01,216,24,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas01 -1 +aldeg_cas01,216,24,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas01 FAKE_NPC //== Guardians ============================================= -aldeg_cas01,218,175,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas01 -1 +aldeg_cas01,218,175,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas01 FAKE_NPC diff --git a/npc/woe-fe/aldeg_cas02.txt b/npc/woe-fe/aldeg_cas02.txt index decdc4e9a..ac475a085 100644 --- a/npc/woe-fe/aldeg_cas02.txt +++ b/npc/woe-fe/aldeg_cas02.txt @@ -138,10 +138,10 @@ aldeg_cas02,139,234,0 script #lever_A02 HIDDEN_NPC,{ aldeg_cas02,194,136,0 duplicate(gdlever) #aldeg_cas02 HIDDEN_NPC //== Guild Treasure Spawns ================================= -aldeg_cas02,135,230,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas02 -1 +aldeg_cas02,135,230,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas02 FAKE_NPC //== AGIT Manager ========================================== -aldeg_cas02,214,24,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas02 -1 +aldeg_cas02,214,24,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas02 FAKE_NPC //== Guardians ============================================= -aldeg_cas02,78,74,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas02 -1 +aldeg_cas02,78,74,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas02 FAKE_NPC diff --git a/npc/woe-fe/aldeg_cas03.txt b/npc/woe-fe/aldeg_cas03.txt index d421efccd..1d76b5b26 100644 --- a/npc/woe-fe/aldeg_cas03.txt +++ b/npc/woe-fe/aldeg_cas03.txt @@ -141,10 +141,10 @@ aldeg_cas03,229,267,0 script #lever_A03 HIDDEN_NPC,{ aldeg_cas03,200,177,0 duplicate(gdlever) #aldeg_cas03 HIDDEN_NPC //== Guild Treasure Spawns ================================= -aldeg_cas03,225,269,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas03 -1 +aldeg_cas03,225,269,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas03 FAKE_NPC //== AGIT Manager ========================================== -aldeg_cas03,206,32,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas03 -1 +aldeg_cas03,206,32,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas03 FAKE_NPC //== Guardians ============================================= -aldeg_cas03,110,118,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas03 -1 +aldeg_cas03,110,118,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas03 FAKE_NPC diff --git a/npc/woe-fe/aldeg_cas04.txt b/npc/woe-fe/aldeg_cas04.txt index 8c84e24fd..3485889be 100644 --- a/npc/woe-fe/aldeg_cas04.txt +++ b/npc/woe-fe/aldeg_cas04.txt @@ -141,10 +141,10 @@ aldeg_cas04,83,17,0 script #lever_A04 HIDDEN_NPC,{ aldeg_cas04,76,64,0 duplicate(gdlever) #aldeg_cas04 HIDDEN_NPC //== Guild Treasure Spawns ================================= -aldeg_cas04,84,13,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas04 -1 +aldeg_cas04,84,13,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas04 FAKE_NPC //== AGIT Manager ========================================== -aldeg_cas04,36,218,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas04 -1 +aldeg_cas04,36,218,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas04 FAKE_NPC //== Guardians ============================================= -aldeg_cas04,67,116,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas04 -1 +aldeg_cas04,67,116,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas04 FAKE_NPC diff --git a/npc/woe-fe/aldeg_cas05.txt b/npc/woe-fe/aldeg_cas05.txt index 29f5b39fa..11e8dfb03 100644 --- a/npc/woe-fe/aldeg_cas05.txt +++ b/npc/woe-fe/aldeg_cas05.txt @@ -140,10 +140,10 @@ aldeg_cas05,64,8,0 script #lever_A05 HIDDEN_NPC,{ aldeg_cas05,22,205,0 duplicate(gdlever) #aldeg_cas05 HIDDEN_NPC //== Guild Treasure Spawns ================================= -aldeg_cas05,62,12,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas05 -1 +aldeg_cas05,62,12,0 duplicate(Gld_Trea_Spawn) Treasure#aldeg_cas05 FAKE_NPC //== AGIT Manager ========================================== -aldeg_cas05,28,102,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas05 -1 +aldeg_cas05,28,102,0 duplicate(Gld_Agit_Manager) Agit#aldeg_cas05 FAKE_NPC //== Guardians ============================================= -aldeg_cas05,52,179,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas05 -1 +aldeg_cas05,52,179,0 duplicate(Gld_Guard_Template) Guardian#aldeg_cas05 FAKE_NPC diff --git a/npc/woe-fe/gefg_cas01.txt b/npc/woe-fe/gefg_cas01.txt index 9676f7288..a9f4cf64d 100644 --- a/npc/woe-fe/gefg_cas01.txt +++ b/npc/woe-fe/gefg_cas01.txt @@ -132,10 +132,10 @@ gefg_cas01,152,117,0 script #lever_G01 HIDDEN_NPC,{ gefg_cas01,78,84,0 duplicate(gdlever) #gefg_cas01 HIDDEN_NPC //== Guild Treasure Spawns ================================= -gefg_cas01,154,112,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas01 -1 +gefg_cas01,154,112,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas01 FAKE_NPC //== AGIT Manager ========================================== -gefg_cas01,198,182,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas01 -1 +gefg_cas01,198,182,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas01 FAKE_NPC //== Guardians ============================================= -gefg_cas01,40,48,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas01 -1 +gefg_cas01,40,48,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas01 FAKE_NPC diff --git a/npc/woe-fe/gefg_cas02.txt b/npc/woe-fe/gefg_cas02.txt index 13ce42a8c..906a4f100 100644 --- a/npc/woe-fe/gefg_cas02.txt +++ b/npc/woe-fe/gefg_cas02.txt @@ -133,10 +133,10 @@ gefg_cas02,145,114,0 script #lever_G02 HIDDEN_NPC,{ gefg_cas02,167,40,0 duplicate(gdlever) #gefg_cas02 HIDDEN_NPC //== Guild Treasure Spawns ================================= -gefg_cas02,140,116,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas02 -1 +gefg_cas02,140,116,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas02 FAKE_NPC //== AGIT Manager ========================================== -gefg_cas02,176,178,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas02 -1 +gefg_cas02,176,178,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas02 FAKE_NPC //== Guardians ============================================= -gefg_cas02,12,66,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas02 -1 +gefg_cas02,12,66,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas02 FAKE_NPC diff --git a/npc/woe-fe/gefg_cas03.txt b/npc/woe-fe/gefg_cas03.txt index 027253778..d4fd86d87 100644 --- a/npc/woe-fe/gefg_cas03.txt +++ b/npc/woe-fe/gefg_cas03.txt @@ -136,10 +136,10 @@ gefg_cas03,275,289,0 script #lever_G03 HIDDEN_NPC,{ gefg_cas03,221,43,0 duplicate(gdlever) #gefg_cas03 HIDDEN_NPC //== Guild Treasure Spawns ================================= -gefg_cas03,271,290,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas03 -1 +gefg_cas03,271,290,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas03 FAKE_NPC //== AGIT Manager ========================================== -gefg_cas03,245,167,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas03 -1 +gefg_cas03,245,167,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas03 FAKE_NPC //== Guardians ============================================= -gefg_cas03,106,23,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas03 -1 +gefg_cas03,106,23,5 duplicate(Gld_Guard_Template) Guardian#gefg_cas03 FAKE_NPC diff --git a/npc/woe-fe/gefg_cas04.txt b/npc/woe-fe/gefg_cas04.txt index 04717cace..0206f2a24 100644 --- a/npc/woe-fe/gefg_cas04.txt +++ b/npc/woe-fe/gefg_cas04.txt @@ -132,10 +132,10 @@ gefg_cas04,116,123,0 script #lever_G04 HIDDEN_NPC,{ gefg_cas04,58,75,0 duplicate(gdlever) #gefg_cas04 HIDDEN_NPC //== Guild Treasure Spawns ================================= -gefg_cas04,116,119,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas04 -1 +gefg_cas04,116,119,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas04 FAKE_NPC //== AGIT Manager ========================================== -gefg_cas04,174,178,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas04 -1 +gefg_cas04,174,178,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas04 FAKE_NPC //== Guardians ============================================= -gefg_cas04,73,46,3 duplicate(Gld_Guard_Template) Guardian#gefg_cas04 -1 +gefg_cas04,73,46,3 duplicate(Gld_Guard_Template) Guardian#gefg_cas04 FAKE_NPC diff --git a/npc/woe-fe/gefg_cas05.txt b/npc/woe-fe/gefg_cas05.txt index 540fca802..78162b6d3 100644 --- a/npc/woe-fe/gefg_cas05.txt +++ b/npc/woe-fe/gefg_cas05.txt @@ -132,10 +132,10 @@ gefg_cas05,149,107,0 script #lever_G05 HIDDEN_NPC,{ gefg_cas05,65,22,0 duplicate(gdlever) #gefg_cas05 HIDDEN_NPC //== Guild Treasure Spawns ================================= -gefg_cas05,144,110,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas05 -1 +gefg_cas05,144,110,0 duplicate(Gld_Trea_Spawn) Treasure#gefg_cas05 FAKE_NPC //== AGIT Manager ========================================== -gefg_cas05,194,184,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas05 -1 +gefg_cas05,194,184,0 duplicate(Gld_Agit_Manager) Agit#gefg_cas05 FAKE_NPC //== Guardians ============================================= -gefg_cas05,70,52,3 duplicate(Gld_Guard_Template) Guardian#gefg_cas05 -1 +gefg_cas05,70,52,3 duplicate(Gld_Guard_Template) Guardian#gefg_cas05 FAKE_NPC diff --git a/npc/woe-fe/payg_cas01.txt b/npc/woe-fe/payg_cas01.txt index 4ad4fba91..fa3640ea9 100644 --- a/npc/woe-fe/payg_cas01.txt +++ b/npc/woe-fe/payg_cas01.txt @@ -133,10 +133,10 @@ payg_cas01,295,8,0 script #lever_PA01 HIDDEN_NPC,{ payg_cas01,101,25,0 duplicate(gdlever) #payg_cas01 HIDDEN_NPC //== Guild Treasure Spawns ================================= -payg_cas01,291,8,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas01 -1 +payg_cas01,291,8,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas01 FAKE_NPC //== AGIT Manager ========================================== -payg_cas01,139,139,0 duplicate(Gld_Agit_Manager) Agit#payg_cas01 -1 +payg_cas01,139,139,0 duplicate(Gld_Agit_Manager) Agit#payg_cas01 FAKE_NPC //== Guardians ============================================= -payg_cas01,120,58,4 duplicate(Gld_Guard_Template) Guardian#payg_cas01 -1 +payg_cas01,120,58,4 duplicate(Gld_Guard_Template) Guardian#payg_cas01 FAKE_NPC diff --git a/npc/woe-fe/payg_cas02.txt b/npc/woe-fe/payg_cas02.txt index fddb1e540..c60325303 100644 --- a/npc/woe-fe/payg_cas02.txt +++ b/npc/woe-fe/payg_cas02.txt @@ -134,10 +134,10 @@ payg_cas02,149,149,0 script #lever_PA02 HIDDEN_NPC,{ payg_cas02,278,247,0 duplicate(gdlever) #payg_cas02 HIDDEN_NPC //== Guild Treasure Spawns ================================= -payg_cas02,145,144,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas02 -1 +payg_cas02,145,144,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas02 FAKE_NPC //== AGIT Manager ========================================== -payg_cas02,39,25,0 duplicate(Gld_Agit_Manager) Agit#payg_cas02 -1 +payg_cas02,39,25,0 duplicate(Gld_Agit_Manager) Agit#payg_cas02 FAKE_NPC //== Guardians ============================================= -payg_cas02,22,260,7 duplicate(Gld_Guard_Template) Guardian#payg_cas02 -1 +payg_cas02,22,260,7 duplicate(Gld_Guard_Template) Guardian#payg_cas02 FAKE_NPC diff --git a/npc/woe-fe/payg_cas03.txt b/npc/woe-fe/payg_cas03.txt index e4c31541f..ae4344eb8 100644 --- a/npc/woe-fe/payg_cas03.txt +++ b/npc/woe-fe/payg_cas03.txt @@ -133,10 +133,10 @@ payg_cas03,163,167,0 script #lever_PA03 HIDDEN_NPC,{ payg_cas03,38,42,0 duplicate(gdlever) #payg_cas03 HIDDEN_NPC //== Guild Treasure Spawns ================================= -payg_cas03,159,168,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas03 -1 +payg_cas03,159,168,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas03 FAKE_NPC //== AGIT Manager ========================================== -payg_cas03,269,265,0 duplicate(Gld_Agit_Manager) Agit#payg_cas03 -1 +payg_cas03,269,265,0 duplicate(Gld_Agit_Manager) Agit#payg_cas03 FAKE_NPC //== Guardians ============================================= -payg_cas03,10,277,0 duplicate(Gld_Guard_Template) Guardian#payg_cas03 -1 +payg_cas03,10,277,0 duplicate(Gld_Guard_Template) Guardian#payg_cas03 FAKE_NPC diff --git a/npc/woe-fe/payg_cas04.txt b/npc/woe-fe/payg_cas04.txt index cc2080fe0..a6d0d3dbe 100644 --- a/npc/woe-fe/payg_cas04.txt +++ b/npc/woe-fe/payg_cas04.txt @@ -134,10 +134,10 @@ payg_cas04,151,47,0 script #lever_PA04 HIDDEN_NPC,{ payg_cas04,52,48,0 duplicate(gdlever) #payg_cas04 HIDDEN_NPC //== Guild Treasure Spawns ================================= -payg_cas04,147,48,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas04 -1 +payg_cas04,147,48,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas04 FAKE_NPC //== AGIT Manager ========================================== -payg_cas04,271,29,0 duplicate(Gld_Agit_Manager) Agit#payg_cas04 -1 +payg_cas04,271,29,0 duplicate(Gld_Agit_Manager) Agit#payg_cas04 FAKE_NPC //== Guardians ============================================= -payg_cas04,38,284,3 duplicate(Gld_Guard_Template) Guardian#payg_cas04 -1 +payg_cas04,38,284,3 duplicate(Gld_Guard_Template) Guardian#payg_cas04 FAKE_NPC diff --git a/npc/woe-fe/payg_cas05.txt b/npc/woe-fe/payg_cas05.txt index 15f7d883a..849b2115b 100644 --- a/npc/woe-fe/payg_cas05.txt +++ b/npc/woe-fe/payg_cas05.txt @@ -133,10 +133,10 @@ payg_cas05,161,136,0 script #lever_PA05 HIDDEN_NPC,{ payg_cas05,249,15,0 duplicate(gdlever) #payg_cas05 HIDDEN_NPC //== Guild Treasure Spawns ================================= -payg_cas05,157,132,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas05 -1 +payg_cas05,157,132,0 duplicate(Gld_Trea_Spawn) Treasure#payg_cas05 FAKE_NPC //== AGIT Manager ========================================== -payg_cas05,30,30,0 duplicate(Gld_Agit_Manager) Agit#payg_cas05 -1 +payg_cas05,30,30,0 duplicate(Gld_Agit_Manager) Agit#payg_cas05 FAKE_NPC //== Guardians ============================================= -payg_cas05,277,249,3 duplicate(Gld_Guard_Template) Guardian#payg_cas05 -1 +payg_cas05,277,249,3 duplicate(Gld_Guard_Template) Guardian#payg_cas05 FAKE_NPC diff --git a/npc/woe-fe/prtg_cas01.txt b/npc/woe-fe/prtg_cas01.txt index d17f94bad..b3cf8e641 100644 --- a/npc/woe-fe/prtg_cas01.txt +++ b/npc/woe-fe/prtg_cas01.txt @@ -136,10 +136,10 @@ prtg_cas01,15,208,0 script #Lever_PR01 HIDDEN_NPC,{ prtg_cas01,94,200,0 duplicate(gdlever) #prtg_cas01 HIDDEN_NPC //== Guild Treasure Spawns ================================= -prtg_cas01,11,208,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas01 -1 +prtg_cas01,11,208,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas01 FAKE_NPC //== AGIT Manager ========================================== -prtg_cas01,197,197,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas01 -1 +prtg_cas01,197,197,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas01 FAKE_NPC //== Guardians ============================================= -prtg_cas01,112,181,0 duplicate(Gld_Guard_Template) Guardian#prtg_cas01 -1 +prtg_cas01,112,181,0 duplicate(Gld_Guard_Template) Guardian#prtg_cas01 FAKE_NPC diff --git a/npc/woe-fe/prtg_cas02.txt b/npc/woe-fe/prtg_cas02.txt index 9187461f2..798393039 100644 --- a/npc/woe-fe/prtg_cas02.txt +++ b/npc/woe-fe/prtg_cas02.txt @@ -138,10 +138,10 @@ prtg_cas02,207,228,0 script #Lever_PR02 HIDDEN_NPC,{ prtg_cas02,84,72,0 duplicate(gdlever) #prtg_cas02 HIDDEN_NPC //== Guild Treasure Spawns ================================= -prtg_cas02,202,228,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas02 -1 +prtg_cas02,202,228,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas02 FAKE_NPC //== AGIT Manager ========================================== -prtg_cas02,158,174,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas02 -1 +prtg_cas02,158,174,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas02 FAKE_NPC //== Guardians ============================================= -prtg_cas02,94,61,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas02 -1 +prtg_cas02,94,61,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas02 FAKE_NPC diff --git a/npc/woe-fe/prtg_cas03.txt b/npc/woe-fe/prtg_cas03.txt index 6ff0e7841..a92edea60 100644 --- a/npc/woe-fe/prtg_cas03.txt +++ b/npc/woe-fe/prtg_cas03.txt @@ -136,10 +136,10 @@ prtg_cas03,193,130,0 script #Lever_PR03 HIDDEN_NPC,{ prtg_cas03,5,70,0 duplicate(gdlever) #prtg_cas03 HIDDEN_NPC //== Guild Treasure Spawns ================================= -prtg_cas03,189,132,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas03 -1 +prtg_cas03,189,132,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas03 FAKE_NPC //== AGIT Manager ========================================== -prtg_cas03,17,221,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas03 -1 +prtg_cas03,17,221,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas03 FAKE_NPC //== Guardians ============================================= -prtg_cas03,51,100,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas03 -1 +prtg_cas03,51,100,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas03 FAKE_NPC diff --git a/npc/woe-fe/prtg_cas04.txt b/npc/woe-fe/prtg_cas04.txt index cc429db95..e9137911f 100644 --- a/npc/woe-fe/prtg_cas04.txt +++ b/npc/woe-fe/prtg_cas04.txt @@ -136,10 +136,10 @@ prtg_cas04,275,160,0 script #Lever_PR04 HIDDEN_NPC,{ prtg_cas04,56,283,0 duplicate(gdlever) #prtg_cas04 HIDDEN_NPC //== Guild Treasure Spawns ================================= -prtg_cas04,271,162,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas04 -1 +prtg_cas04,271,162,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas04 FAKE_NPC //== AGIT Manager ========================================== -prtg_cas04,292,14,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas04 -1 +prtg_cas04,292,14,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas04 FAKE_NPC //== Guardians ============================================= -prtg_cas04,259,265,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas04 -1 +prtg_cas04,259,265,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas04 FAKE_NPC diff --git a/npc/woe-fe/prtg_cas05.txt b/npc/woe-fe/prtg_cas05.txt index 0c7caa200..40eb559ae 100644 --- a/npc/woe-fe/prtg_cas05.txt +++ b/npc/woe-fe/prtg_cas05.txt @@ -134,10 +134,10 @@ prtg_cas05,281,176,0 script #Lever_PR05 HIDDEN_NPC,{ prtg_cas05,212,95,0 duplicate(gdlever) #prtg_cas05 HIDDEN_NPC //== Guild Treasure Spawns ================================= -prtg_cas05,276,178,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas05 -1 +prtg_cas05,276,178,0 duplicate(Gld_Trea_Spawn) Treasure#prtg_cas05 FAKE_NPC //== AGIT Manager ========================================== -prtg_cas05,266,266,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas05 -1 +prtg_cas05,266,266,0 duplicate(Gld_Agit_Manager) Agit#prtg_cas05 FAKE_NPC //== Guardians ============================================= -prtg_cas05,36,37,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas05 -1 +prtg_cas05,36,37,4 duplicate(Gld_Guard_Template) Guardian#prtg_cas05 FAKE_NPC diff --git a/npc/woe-fe/trs_rp.txt b/npc/woe-fe/trs_rp.txt index 9b74429d0..2083ec035 100644 --- a/npc/woe-fe/trs_rp.txt +++ b/npc/woe-fe/trs_rp.txt @@ -33,7 +33,7 @@ //= 1.1 //========================================================================= -- script Gld_Trea_Protect::Gld_Trea_Protect -1,{ +- script Gld_Trea_Protect::Gld_Trea_Protect FAKE_NPC,{ end; OnTouch: @@ -52,26 +52,26 @@ OnTouch: end; } -prtg_cas01,11,208,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas01 -1,6,6 -prtg_cas02,202,228,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas02 -1,6,6 -prtg_cas03,189,132,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas03 -1,6,6 -prtg_cas04,271,162,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas04 -1,6,6 -prtg_cas05,276,178,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas05 -1,6,6 +prtg_cas01,11,208,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas01 FAKE_NPC,6,6 +prtg_cas02,202,228,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas02 FAKE_NPC,6,6 +prtg_cas03,189,132,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas03 FAKE_NPC,6,6 +prtg_cas04,271,162,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas04 FAKE_NPC,6,6 +prtg_cas05,276,178,0 duplicate(Gld_Trea_Protect) ban_warp#prtg_cas05 FAKE_NPC,6,6 -payg_cas01,291,8,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas01 -1,6,6 -payg_cas02,145,144,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas02 -1,6,6 -payg_cas03,159,168,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas03 -1,6,6 -payg_cas04,147,48,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas04 -1,6,6 -payg_cas05,157,132,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas05 -1,6,6 +payg_cas01,291,8,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas01 FAKE_NPC,6,6 +payg_cas02,145,144,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas02 FAKE_NPC,6,6 +payg_cas03,159,168,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas03 FAKE_NPC,6,6 +payg_cas04,147,48,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas04 FAKE_NPC,6,6 +payg_cas05,157,132,0 duplicate(Gld_Trea_Protect) ban_warp#payg_cas05 FAKE_NPC,6,6 -aldeg_cas01,118,223,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas01 -1,8,8 -aldeg_cas02,135,230,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas02 -1,8,8 -aldeg_cas03,225,269,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas03 -1,8,8 -aldeg_cas04,84,13,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas04 -1,8,8 -aldeg_cas05,62,12,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas05 -1,8,8 +aldeg_cas01,118,223,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas01 FAKE_NPC,8,8 +aldeg_cas02,135,230,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas02 FAKE_NPC,8,8 +aldeg_cas03,225,269,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas03 FAKE_NPC,8,8 +aldeg_cas04,84,13,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas04 FAKE_NPC,8,8 +aldeg_cas05,62,12,0 duplicate(Gld_Trea_Protect) ban_warp#aldeg_cas05 FAKE_NPC,8,8 -gefg_cas01,154,112,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas01 -1,6,6 -gefg_cas02,140,116,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas02 -1,6,6 -gefg_cas03,271,290,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas03 -1,6,6 -gefg_cas04,116,119,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas04 -1,6,6 -gefg_cas05,144,110,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas05 -1,6,6 +gefg_cas01,154,112,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas01 FAKE_NPC,6,6 +gefg_cas02,140,116,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas02 FAKE_NPC,6,6 +gefg_cas03,271,290,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas03 FAKE_NPC,6,6 +gefg_cas04,116,119,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas04 FAKE_NPC,6,6 +gefg_cas05,144,110,0 duplicate(Gld_Trea_Protect) ban_warp#gefg_cas05 FAKE_NPC,6,6 diff --git a/npc/woe-se/agit_main_se.txt b/npc/woe-se/agit_main_se.txt index 2c796355e..eb777f441 100644 --- a/npc/woe-se/agit_main_se.txt +++ b/npc/woe-se/agit_main_se.txt @@ -37,7 +37,7 @@ //========================================================================= //== Core, triggers all other events ======================= -- script Manager#template -1,{ +- script Manager#template FAKE_NPC,{ OnAgitInit2: OnRecvCastle2: if (strnpcinfo(2) == "template") end; @@ -219,7 +219,7 @@ OnTreasureDied: } //== Guild Manager ========================================= -- script Steward#template -1,{ +- script Steward#template FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(4),1); if (!.@GID) { mes "[ Steward ]"; @@ -652,7 +652,7 @@ OnStartArena: } //== Castle Guardians ====================================== -- script Guardian#template -1,{ +- script Guardian#template FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(4),1); .@n$ = "["+strnpcinfo(1)+"]"; if (!.@GID) { @@ -851,7 +851,7 @@ OnInit: } //== Guild Kafras ========================================== -- script Kafra#template -1,{ +- script Kafra#template FAKE_NPC,{ cutin "kafra_01",2; .@GID = getcastledata(strnpcinfo(4),1); if (getcharid(2) == .@GID && getgdskilllv(.@GID,10001)) { @@ -963,7 +963,7 @@ OnInit: } //== Guardian Stones (2) =================================== -- script Guardian Stone#template -1,{ +- script Guardian Stone#template FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(4),1); .@num = atoi(charat(strnpcinfo(1),0)); .@var$ = "$agit_"+strnpcinfo(2); @@ -1116,7 +1116,7 @@ OnEnable: } //== Control Devices (3) =================================== -- script Control#template -1,{ +- script Control#template FAKE_NPC,{ .@GID = getcastledata(strnpcinfo(4),1); .@num = atoi(charat(strnpcinfo(1),15)); .@var$ = "$agit_"+strnpcinfo(2); @@ -1358,7 +1358,7 @@ OnEnable: } //== Guardian Summoners (2) ================================ -- script gard#template -1,{ +- script gard#template FAKE_NPC,{ OnEnable: // .@x[i],.@y[i]: Normal coordinates, #0-21. // .@w[x],.@w[y]: Special coordinates if 'defence' is under 11. @@ -1479,7 +1479,7 @@ OnReset: } //== Guardian Stone Summoners (2) ========================== -- script df#template -1,{ +- script df#template FAKE_NPC,{ OnEnable: if (compare(strnpcinfo(2),"arug")) { if (strnpcinfo(2) == "arug_cas01") setarray .@i[0],210,234,308,189; @@ -1531,7 +1531,7 @@ OnTimer300000: } //== Barrier Summoners (4) ================================= -- script RL#template -1,{ +- script RL#template FAKE_NPC,{ OnEnable: .@num = atoi(charat(strnpcinfo(1),2)); if (.@num == 0) { @@ -1792,7 +1792,7 @@ function script ReturnFlag { } //== Treasure Room Switches ================================ -- script Switch#template -1,{ +- script Switch#template FAKE_NPC,{ mes " "; mes "^3355FFWill you pull"; mes "this small lever?^000000"; @@ -1813,7 +1813,7 @@ function script ReturnFlag { } //== Guild Dungeon Warps =================================== -- script Sunflower#template -1,{ +- script Sunflower#template FAKE_NPC,{ if (getcharid(2) == getcastledata(strnpcinfo(4),1)) { mes "- It's an amazingly huge sunflower; as big as a human! ... You feel something mysterious emanating from the flower. -"; next; diff --git a/npc/woe-se/agit_start_se.txt b/npc/woe-se/agit_start_se.txt index 006d85baa..e8d5da481 100644 --- a/npc/woe-se/agit_start_se.txt +++ b/npc/woe-se/agit_start_se.txt @@ -35,7 +35,7 @@ //========================================================================= //== WoE Start/Stop times ================================== -- script Agit2_Event -1,{ +- script Agit2_Event FAKE_NPC,{ end; OnClock1800: //start time for Tues(2), Thurs(4) diff --git a/npc/woe-se/arug_cas01.txt b/npc/woe-se/arug_cas01.txt index c4a0cdc43..39615cb52 100644 --- a/npc/woe-se/arug_cas01.txt +++ b/npc/woe-se/arug_cas01.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#arug_cas01 -1 -- duplicate(gard#template) gard1#arug_cas01 -1 -- duplicate(gard#template) gard2#arug_cas01 -1 -- duplicate(df#template) df1#arug_cas01 -1 -- duplicate(df#template) df2#arug_cas01 -1 -- duplicate(RL#template) RL0#arug_cas01 -1 -- duplicate(RL#template) RL1#arug_cas01 -1 -- duplicate(RL#template) RL2#arug_cas01 -1 -- duplicate(RL#template) RL3#arug_cas01 -1 +- duplicate(Manager#template) Manager#arug_cas01 FAKE_NPC +- duplicate(gard#template) gard1#arug_cas01 FAKE_NPC +- duplicate(gard#template) gard2#arug_cas01 FAKE_NPC +- duplicate(df#template) df1#arug_cas01 FAKE_NPC +- duplicate(df#template) df2#arug_cas01 FAKE_NPC +- duplicate(RL#template) RL0#arug_cas01 FAKE_NPC +- duplicate(RL#template) RL1#arug_cas01 FAKE_NPC +- duplicate(RL#template) RL2#arug_cas01 FAKE_NPC +- duplicate(RL#template) RL3#arug_cas01 FAKE_NPC arug_cas01,92,380,3 duplicate(Steward#template) Steward#ar01 1_M_JOBTESTER arug_cas01,112,193,1 duplicate(Guardian#template) Brace#ar01 4_M_LGTGUARD diff --git a/npc/woe-se/arug_cas02.txt b/npc/woe-se/arug_cas02.txt index e7c24bd1d..6e2de4438 100644 --- a/npc/woe-se/arug_cas02.txt +++ b/npc/woe-se/arug_cas02.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#arug_cas02 -1 -- duplicate(gard#template) gard1#arug_cas02 -1 -- duplicate(gard#template) gard2#arug_cas02 -1 -- duplicate(df#template) df1#arug_cas02 -1 -- duplicate(df#template) df2#arug_cas02 -1 -- duplicate(RL#template) RL0#arug_cas02 -1 -- duplicate(RL#template) RL1#arug_cas02 -1 -- duplicate(RL#template) RL2#arug_cas02 -1 -- duplicate(RL#template) RL3#arug_cas02 -1 +- duplicate(Manager#template) Manager#arug_cas02 FAKE_NPC +- duplicate(gard#template) gard1#arug_cas02 FAKE_NPC +- duplicate(gard#template) gard2#arug_cas02 FAKE_NPC +- duplicate(df#template) df1#arug_cas02 FAKE_NPC +- duplicate(df#template) df2#arug_cas02 FAKE_NPC +- duplicate(RL#template) RL0#arug_cas02 FAKE_NPC +- duplicate(RL#template) RL1#arug_cas02 FAKE_NPC +- duplicate(RL#template) RL2#arug_cas02 FAKE_NPC +- duplicate(RL#template) RL3#arug_cas02 FAKE_NPC arug_cas02,303,341,3 duplicate(Steward#template) Steward#ar02 1_M_JOBTESTER arug_cas02,38,259,5 duplicate(Guardian#template) Yumenes#ar02 4_M_LGTGUARD diff --git a/npc/woe-se/arug_cas03.txt b/npc/woe-se/arug_cas03.txt index 4df1f46cf..3ab4d87f3 100644 --- a/npc/woe-se/arug_cas03.txt +++ b/npc/woe-se/arug_cas03.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#arug_cas03 -1 -- duplicate(gard#template) gard1#arug_cas03 -1 -- duplicate(gard#template) gard2#arug_cas03 -1 -- duplicate(df#template) df1#arug_cas03 -1 -- duplicate(df#template) df2#arug_cas03 -1 -- duplicate(RL#template) RL0#arug_cas03 -1 -- duplicate(RL#template) RL1#arug_cas03 -1 -- duplicate(RL#template) RL2#arug_cas03 -1 -- duplicate(RL#template) RL3#arug_cas03 -1 +- duplicate(Manager#template) Manager#arug_cas03 FAKE_NPC +- duplicate(gard#template) gard1#arug_cas03 FAKE_NPC +- duplicate(gard#template) gard2#arug_cas03 FAKE_NPC +- duplicate(df#template) df1#arug_cas03 FAKE_NPC +- duplicate(df#template) df2#arug_cas03 FAKE_NPC +- duplicate(RL#template) RL0#arug_cas03 FAKE_NPC +- duplicate(RL#template) RL1#arug_cas03 FAKE_NPC +- duplicate(RL#template) RL2#arug_cas03 FAKE_NPC +- duplicate(RL#template) RL3#arug_cas03 FAKE_NPC arug_cas03,328,98,3 duplicate(Steward#template) Steward#ar03 1_M_JOBTESTER arug_cas03,146,315,3 duplicate(Guardian#template) Yehsus#ar03 4_M_LGTGUARD diff --git a/npc/woe-se/arug_cas04.txt b/npc/woe-se/arug_cas04.txt index 0e5e6d127..ae3398e06 100644 --- a/npc/woe-se/arug_cas04.txt +++ b/npc/woe-se/arug_cas04.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#arug_cas04 -1 -- duplicate(gard#template) gard1#arug_cas04 -1 -- duplicate(gard#template) gard2#arug_cas04 -1 -- duplicate(df#template) df1#arug_cas04 -1 -- duplicate(df#template) df2#arug_cas04 -1 -- duplicate(RL#template) RL0#arug_cas04 -1 -- duplicate(RL#template) RL1#arug_cas04 -1 -- duplicate(RL#template) RL2#arug_cas04 -1 -- duplicate(RL#template) RL3#arug_cas04 -1 +- duplicate(Manager#template) Manager#arug_cas04 FAKE_NPC +- duplicate(gard#template) gard1#arug_cas04 FAKE_NPC +- duplicate(gard#template) gard2#arug_cas04 FAKE_NPC +- duplicate(df#template) df1#arug_cas04 FAKE_NPC +- duplicate(df#template) df2#arug_cas04 FAKE_NPC +- duplicate(RL#template) RL0#arug_cas04 FAKE_NPC +- duplicate(RL#template) RL1#arug_cas04 FAKE_NPC +- duplicate(RL#template) RL2#arug_cas04 FAKE_NPC +- duplicate(RL#template) RL3#arug_cas04 FAKE_NPC arug_cas04,328,98,3 duplicate(Steward#template) Steward#ar04 1_M_JOBTESTER arug_cas04,146,315,3 duplicate(Guardian#template) Nios#ar04 4_M_LGTGUARD diff --git a/npc/woe-se/arug_cas05.txt b/npc/woe-se/arug_cas05.txt index 0f3908923..d1cf1bdc4 100644 --- a/npc/woe-se/arug_cas05.txt +++ b/npc/woe-se/arug_cas05.txt @@ -32,15 +32,15 @@ //= 1.4 //========================================================================= -- duplicate(Manager#template) Manager#arug_cas05 -1 -- duplicate(gard#template) gard1#arug_cas05 -1 -- duplicate(gard#template) gard2#arug_cas05 -1 -- duplicate(df#template) df1#arug_cas05 -1 -- duplicate(df#template) df2#arug_cas05 -1 -- duplicate(RL#template) RL0#arug_cas05 -1 -- duplicate(RL#template) RL1#arug_cas05 -1 -- duplicate(RL#template) RL2#arug_cas05 -1 -- duplicate(RL#template) RL3#arug_cas05 -1 +- duplicate(Manager#template) Manager#arug_cas05 FAKE_NPC +- duplicate(gard#template) gard1#arug_cas05 FAKE_NPC +- duplicate(gard#template) gard2#arug_cas05 FAKE_NPC +- duplicate(df#template) df1#arug_cas05 FAKE_NPC +- duplicate(df#template) df2#arug_cas05 FAKE_NPC +- duplicate(RL#template) RL0#arug_cas05 FAKE_NPC +- duplicate(RL#template) RL1#arug_cas05 FAKE_NPC +- duplicate(RL#template) RL2#arug_cas05 FAKE_NPC +- duplicate(RL#template) RL3#arug_cas05 FAKE_NPC arug_cas05,328,98,3 duplicate(Steward#template) Steward#ar05 1_M_JOBTESTER arug_cas05,146,315,3 duplicate(Guardian#template) Eeos#ar05 4_M_LGTGUARD diff --git a/npc/woe-se/schg_cas01.txt b/npc/woe-se/schg_cas01.txt index b1894dc70..0c5e54386 100644 --- a/npc/woe-se/schg_cas01.txt +++ b/npc/woe-se/schg_cas01.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#schg_cas01 -1 -- duplicate(gard#template) gard1#schg_cas01 -1 -- duplicate(gard#template) gard2#schg_cas01 -1 -- duplicate(df#template) df1#schg_cas01 -1 -- duplicate(df#template) df2#schg_cas01 -1 -- duplicate(RL#template) RL0#schg_cas01 -1 -- duplicate(RL#template) RL1#schg_cas01 -1 -- duplicate(RL#template) RL2#schg_cas01 -1 -- duplicate(RL#template) RL3#schg_cas01 -1 +- duplicate(Manager#template) Manager#schg_cas01 FAKE_NPC +- duplicate(gard#template) gard1#schg_cas01 FAKE_NPC +- duplicate(gard#template) gard2#schg_cas01 FAKE_NPC +- duplicate(df#template) df1#schg_cas01 FAKE_NPC +- duplicate(df#template) df2#schg_cas01 FAKE_NPC +- duplicate(RL#template) RL0#schg_cas01 FAKE_NPC +- duplicate(RL#template) RL1#schg_cas01 FAKE_NPC +- duplicate(RL#template) RL2#schg_cas01 FAKE_NPC +- duplicate(RL#template) RL3#schg_cas01 FAKE_NPC schg_cas01,247,305,3 duplicate(Steward#template) Steward#sc01 1_M_JOBTESTER schg_cas01,123,306,3 duplicate(Guardian#template) Ef#sc01 4_M_LGTGUARD diff --git a/npc/woe-se/schg_cas02.txt b/npc/woe-se/schg_cas02.txt index d48cee374..c3bb89d38 100644 --- a/npc/woe-se/schg_cas02.txt +++ b/npc/woe-se/schg_cas02.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#schg_cas02 -1 -- duplicate(gard#template) gard1#schg_cas02 -1 -- duplicate(gard#template) gard2#schg_cas02 -1 -- duplicate(df#template) df1#schg_cas02 -1 -- duplicate(df#template) df2#schg_cas02 -1 -- duplicate(RL#template) RL0#schg_cas02 -1 -- duplicate(RL#template) RL1#schg_cas02 -1 -- duplicate(RL#template) RL2#schg_cas02 -1 -- duplicate(RL#template) RL3#schg_cas02 -1 +- duplicate(Manager#template) Manager#schg_cas02 FAKE_NPC +- duplicate(gard#template) gard1#schg_cas02 FAKE_NPC +- duplicate(gard#template) gard2#schg_cas02 FAKE_NPC +- duplicate(df#template) df1#schg_cas02 FAKE_NPC +- duplicate(df#template) df2#schg_cas02 FAKE_NPC +- duplicate(RL#template) RL0#schg_cas02 FAKE_NPC +- duplicate(RL#template) RL1#schg_cas02 FAKE_NPC +- duplicate(RL#template) RL2#schg_cas02 FAKE_NPC +- duplicate(RL#template) RL3#schg_cas02 FAKE_NPC schg_cas02,105,378,3 duplicate(Steward#template) Steward#sc02 1_M_JOBTESTER schg_cas02,140,184,3 duplicate(Guardian#template) Endeef#sc02 4_M_LGTGUARD diff --git a/npc/woe-se/schg_cas03.txt b/npc/woe-se/schg_cas03.txt index cd638b946..3bb760547 100644 --- a/npc/woe-se/schg_cas03.txt +++ b/npc/woe-se/schg_cas03.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#schg_cas03 -1 -- duplicate(gard#template) gard1#schg_cas03 -1 -- duplicate(gard#template) gard2#schg_cas03 -1 -- duplicate(df#template) df1#schg_cas03 -1 -- duplicate(df#template) df2#schg_cas03 -1 -- duplicate(RL#template) RL0#schg_cas03 -1 -- duplicate(RL#template) RL1#schg_cas03 -1 -- duplicate(RL#template) RL2#schg_cas03 -1 -- duplicate(RL#template) RL3#schg_cas03 -1 +- duplicate(Manager#template) Manager#schg_cas03 FAKE_NPC +- duplicate(gard#template) gard1#schg_cas03 FAKE_NPC +- duplicate(gard#template) gard2#schg_cas03 FAKE_NPC +- duplicate(df#template) df1#schg_cas03 FAKE_NPC +- duplicate(df#template) df2#schg_cas03 FAKE_NPC +- duplicate(RL#template) RL0#schg_cas03 FAKE_NPC +- duplicate(RL#template) RL1#schg_cas03 FAKE_NPC +- duplicate(RL#template) RL2#schg_cas03 FAKE_NPC +- duplicate(RL#template) RL3#schg_cas03 FAKE_NPC schg_cas03,88,90,3 duplicate(Steward#template) Steward#sc03 1_M_JOBTESTER schg_cas03,287,226,5 duplicate(Guardian#template) Elzee#sc03 4_M_LGTGUARD diff --git a/npc/woe-se/schg_cas04.txt b/npc/woe-se/schg_cas04.txt index 3ddcbf147..57744b4b7 100644 --- a/npc/woe-se/schg_cas04.txt +++ b/npc/woe-se/schg_cas04.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#schg_cas04 -1 -- duplicate(gard#template) gard1#schg_cas04 -1 -- duplicate(gard#template) gard2#schg_cas04 -1 -- duplicate(df#template) df1#schg_cas04 -1 -- duplicate(df#template) df2#schg_cas04 -1 -- duplicate(RL#template) RL0#schg_cas04 -1 -- duplicate(RL#template) RL1#schg_cas04 -1 -- duplicate(RL#template) RL2#schg_cas04 -1 -- duplicate(RL#template) RL3#schg_cas04 -1 +- duplicate(Manager#template) Manager#schg_cas04 FAKE_NPC +- duplicate(gard#template) gard1#schg_cas04 FAKE_NPC +- duplicate(gard#template) gard2#schg_cas04 FAKE_NPC +- duplicate(df#template) df1#schg_cas04 FAKE_NPC +- duplicate(df#template) df2#schg_cas04 FAKE_NPC +- duplicate(RL#template) RL0#schg_cas04 FAKE_NPC +- duplicate(RL#template) RL1#schg_cas04 FAKE_NPC +- duplicate(RL#template) RL2#schg_cas04 FAKE_NPC +- duplicate(RL#template) RL3#schg_cas04 FAKE_NPC schg_cas04,247,305,3 duplicate(Steward#template) Steward#sc04 1_M_JOBTESTER schg_cas04,123,306,3 duplicate(Guardian#template) Ef#sc04 4_M_LGTGUARD diff --git a/npc/woe-se/schg_cas05.txt b/npc/woe-se/schg_cas05.txt index e4ff1aa77..3cb096dc7 100644 --- a/npc/woe-se/schg_cas05.txt +++ b/npc/woe-se/schg_cas05.txt @@ -32,15 +32,15 @@ //= 1.0 //========================================================================= -- duplicate(Manager#template) Manager#schg_cas05 -1 -- duplicate(gard#template) gard1#schg_cas05 -1 -- duplicate(gard#template) gard2#schg_cas05 -1 -- duplicate(df#template) df1#schg_cas05 -1 -- duplicate(df#template) df2#schg_cas05 -1 -- duplicate(RL#template) RL0#schg_cas05 -1 -- duplicate(RL#template) RL1#schg_cas05 -1 -- duplicate(RL#template) RL2#schg_cas05 -1 -- duplicate(RL#template) RL3#schg_cas05 -1 +- duplicate(Manager#template) Manager#schg_cas05 FAKE_NPC +- duplicate(gard#template) gard1#schg_cas05 FAKE_NPC +- duplicate(gard#template) gard2#schg_cas05 FAKE_NPC +- duplicate(df#template) df1#schg_cas05 FAKE_NPC +- duplicate(df#template) df2#schg_cas05 FAKE_NPC +- duplicate(RL#template) RL0#schg_cas05 FAKE_NPC +- duplicate(RL#template) RL1#schg_cas05 FAKE_NPC +- duplicate(RL#template) RL2#schg_cas05 FAKE_NPC +- duplicate(RL#template) RL3#schg_cas05 FAKE_NPC schg_cas05,247,305,3 duplicate(Steward#template) Steward#sc05 1_M_JOBTESTER schg_cas05,123,306,3 duplicate(Guardian#template) Ef#sc05 4_M_LGTGUARD diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index 0b900a271..5d9bc2c80 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2015 Hercules Dev Team +-- Copyright (C) 2013-2016 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -964,7 +964,7 @@ REPLACE INTO `item_db` VALUES ('1730','Burning_Bow','Burning Bow','4','20','10', REPLACE INTO `item_db` VALUES ('1731','Frozen_Bow','Frozen Bow','4','20','10','1400','100','0','0','5','1','657416','63','2','34','3','55',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Freeze,1000;','',''); REPLACE INTO `item_db` VALUES ('1732','Earth_Bow','Earth Bow','4','20','10','1400','105','0','0','5','1','657416','63','2','34','3','55',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('1733','Gust_Bow','Gust Bow','4','20','10','1400','95','0','0','5','1','657416','63','2','34','3','55',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('1734','Orc_Archer_Bow','Orc Archer Bow','4','20','10','1600','120','0','0','5','0','657416','63','2','34','4','65',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddMonsterDropItem,1753,200;','',''); +REPLACE INTO `item_db` VALUES ('1734','Orc_Archer_Bow','Orc Archer Bow','4','20','10','1600','120','0','0','5','0','657416','63','2','34','3','65',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddMonsterDropItem,1753,200;','',''); REPLACE INTO `item_db` VALUES ('1735','Kkakkung','Kkakkung','4','20','10','0','120','0','0','5','0','657480','63','2','34','1','1',NULL,'0','11','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace, RC_All, 50;','',''); REPLACE INTO `item_db` VALUES ('1736','Double_Bound','Double Bound','4','20','10','900','70','0','0','5','3','2048','2','2','34','3','70',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAutoSpell,AC_DOUBLE,getskilllv(AC_DOUBLE),10;','',''); REPLACE INTO `item_db` VALUES ('1737','Ixion_Wing','Ixion Wings','4','20','10','300','135','0','0','5','1','2048','2','2','34','4','70',NULL,'1','11','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ bonus bAspdRate,7; }\",10+(getrefine()*2),7000,BF_WEAPON,\"{ specialeffect2 EF_HASTEUP; }\"; bonus2 bAddSkillBlow,AC_CHARGEARROW,3;','',''); @@ -2070,7 +2070,7 @@ REPLACE INTO `item_db` VALUES ('4436','Ragged_Zombie_Card','Ragged Zombie Card', REPLACE INTO `item_db` VALUES ('4437','Hell_Poodle_Card','Hell Poodle Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT;','',''); REPLACE INTO `item_db` VALUES ('4438','Banshee_Card','Banshee Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','769','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(BaseClass==Job_Mage) { bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,MG_NAPALMBEAT,20; bonus2 bSkillAtk,MG_SOULSTRIKE,20; bonus2 bSkillAtk,HW_NAPALMVULCAN,20; }','',''); REPLACE INTO `item_db` VALUES ('4439','Flame_Skull_Card','Flame Skull Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500;','',''); -REPLACE INTO `item_db` VALUES ('4440','Necromancer_Card','Necromancer Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus bIgnoreMdefRate,2; }','',''); +REPLACE INTO `item_db` VALUES ('4440','Necromancer_Card','Necromancer Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','.@i = getiteminfo(getequipid(EQI_HAND_R),11); if (.@i == 10 || .@i == 23) { bonus bInt,1; bonus bIgnoreMdefRate,2; }','',''); REPLACE INTO `item_db` VALUES ('4441','Fallen_Bishop_Card','Fallen Bishop Hibram Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','64','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiPlayer,50;','',''); REPLACE INTO `item_db` VALUES ('4442','Tatacho_Card','Tatacho Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5;','',''); REPLACE INTO `item_db` VALUES ('4443','Aqua_Elemental_Card','Aqua Elemental Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5;','',''); @@ -2083,92 +2083,92 @@ REPLACE INTO `item_db` VALUES ('4450','Banshee_Master_Card','Banshee Master Card REPLACE INTO `item_db` VALUES ('4451','Entweihen_Card','Entweihen Crothen Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,100;','',''); REPLACE INTO `item_db` VALUES ('4452','Centipede_Larva_Card','Centipede Larva Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1; bonus bMatk,3;','',''); REPLACE INTO `item_db` VALUES ('4453','Hilsrion_Card','Hillsrion Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,25;','',''); -REPLACE INTO `item_db` VALUES ('4700','Strength1','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); -REPLACE INTO `item_db` VALUES ('4701','Strength2','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); -REPLACE INTO `item_db` VALUES ('4702','Strength3','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); -REPLACE INTO `item_db` VALUES ('4703','Strength4','STR+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,4;','',''); -REPLACE INTO `item_db` VALUES ('4704','Strength5','STR+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,5;','',''); -REPLACE INTO `item_db` VALUES ('4705','Strength6','STR+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,6;','',''); -REPLACE INTO `item_db` VALUES ('4706','Strength7','STR+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,7;','',''); -REPLACE INTO `item_db` VALUES ('4707','Strength8','STR+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,8;','',''); -REPLACE INTO `item_db` VALUES ('4708','Strength9','STR+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,9;','',''); -REPLACE INTO `item_db` VALUES ('4709','Strength10','STR+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,10;','',''); -REPLACE INTO `item_db` VALUES ('4710','Inteligence1','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); -REPLACE INTO `item_db` VALUES ('4711','Inteligence2','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); -REPLACE INTO `item_db` VALUES ('4712','Inteligence3','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); -REPLACE INTO `item_db` VALUES ('4713','Inteligence4','INT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,4;','',''); -REPLACE INTO `item_db` VALUES ('4714','Inteligence5','INT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,5;','',''); -REPLACE INTO `item_db` VALUES ('4715','Inteligence6','INT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6;','',''); -REPLACE INTO `item_db` VALUES ('4716','Inteligence7','INT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,7;','',''); -REPLACE INTO `item_db` VALUES ('4717','Inteligence8','INT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,8;','',''); -REPLACE INTO `item_db` VALUES ('4718','Inteligence9','INT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,9;','',''); -REPLACE INTO `item_db` VALUES ('4719','Inteligence10','INT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,10;','',''); -REPLACE INTO `item_db` VALUES ('4720','Dexterity1','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); -REPLACE INTO `item_db` VALUES ('4721','Dexterity2','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); -REPLACE INTO `item_db` VALUES ('4722','Dexterity3','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); -REPLACE INTO `item_db` VALUES ('4723','Dexterity4','DEX+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,4;','',''); -REPLACE INTO `item_db` VALUES ('4724','Dexterity5','DEX+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,5;','',''); -REPLACE INTO `item_db` VALUES ('4725','Dexterity6','DEX+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6;','',''); -REPLACE INTO `item_db` VALUES ('4726','Dexterity7','DEX+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,7;','',''); -REPLACE INTO `item_db` VALUES ('4727','Dexterity8','DEX+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,8;','',''); -REPLACE INTO `item_db` VALUES ('4728','Dexterity9','DEX+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,9;','',''); -REPLACE INTO `item_db` VALUES ('4729','Dexterity10','DEX+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,10;','',''); -REPLACE INTO `item_db` VALUES ('4730','Agility1','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); -REPLACE INTO `item_db` VALUES ('4731','Agility2','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); -REPLACE INTO `item_db` VALUES ('4732','Agility3','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); -REPLACE INTO `item_db` VALUES ('4733','Agility4','AGI+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,4;','',''); -REPLACE INTO `item_db` VALUES ('4734','Agility5','AGI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,5;','',''); -REPLACE INTO `item_db` VALUES ('4735','Agility6','AGI+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,6;','',''); -REPLACE INTO `item_db` VALUES ('4736','Agility7','AGI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,7;','',''); -REPLACE INTO `item_db` VALUES ('4737','Agility8','AGI+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,8;','',''); -REPLACE INTO `item_db` VALUES ('4738','Agility9','AGI+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,9;','',''); -REPLACE INTO `item_db` VALUES ('4739','Agility10','AGI+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,10;','',''); -REPLACE INTO `item_db` VALUES ('4740','Vitality1','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); -REPLACE INTO `item_db` VALUES ('4741','Vitality2','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); -REPLACE INTO `item_db` VALUES ('4742','Vitality3','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); -REPLACE INTO `item_db` VALUES ('4743','Vitality4','VIT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,4;','',''); -REPLACE INTO `item_db` VALUES ('4744','Vitality5','VIT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,5;','',''); -REPLACE INTO `item_db` VALUES ('4745','Vitality6','VIT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,6;','',''); -REPLACE INTO `item_db` VALUES ('4746','Vitality7','VIT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,7;','',''); -REPLACE INTO `item_db` VALUES ('4747','Vitality8','VIT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,8;','',''); -REPLACE INTO `item_db` VALUES ('4748','Vitality9','VIT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,9;','',''); -REPLACE INTO `item_db` VALUES ('4749','Vitality10','VIT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,10;','',''); -REPLACE INTO `item_db` VALUES ('4750','Luck1','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); -REPLACE INTO `item_db` VALUES ('4751','Luck2','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); -REPLACE INTO `item_db` VALUES ('4752','Luck3','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); -REPLACE INTO `item_db` VALUES ('4753','Luck4','LUK+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,4;','',''); -REPLACE INTO `item_db` VALUES ('4754','Luck5','LUK+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,5;','',''); -REPLACE INTO `item_db` VALUES ('4755','Luck6','LUK+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,6;','',''); -REPLACE INTO `item_db` VALUES ('4756','Luck7','LUK+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,7;','',''); -REPLACE INTO `item_db` VALUES ('4757','Luck8','LUK+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,8;','',''); -REPLACE INTO `item_db` VALUES ('4758','Luck9','LUK+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,9;','',''); -REPLACE INTO `item_db` VALUES ('4759','Luck10','LUK+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,10;','',''); -REPLACE INTO `item_db` VALUES ('4760','Matk1','MATK+1%','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,1;','',''); -REPLACE INTO `item_db` VALUES ('4761','Matk2','MATK+2%','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,2;','',''); -REPLACE INTO `item_db` VALUES ('4762','Evasion6','FLEE+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,6;','',''); -REPLACE INTO `item_db` VALUES ('4763','Evasion12','FLEE+12','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,12;','',''); -REPLACE INTO `item_db` VALUES ('4764','Critical5','CRI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,5;','',''); -REPLACE INTO `item_db` VALUES ('4765','Critical7','CRI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,7;','',''); -REPLACE INTO `item_db` VALUES ('4766','Atk2','ATK+2%','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace, RC_All, 2;','',''); -REPLACE INTO `item_db` VALUES ('4767','Atk3','ATK+3%','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace, RC_All, 3;','',''); -REPLACE INTO `item_db` VALUES ('4768','Str1_J','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4769','Str2_J','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4770','Str3_J','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4771','Int1_J','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4772','Int2_J','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4773','Int3_J','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4774','Vit1_J','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4775','Vit2_J','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4776','Vit3_J','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4777','Agi1_J','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4778','Agi2_J','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4779','Agi3_J','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4780','Dex1_J','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4781','Dex2_J','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4782','Dex3_J','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4783','Luk1_J','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4784','Luk2_J','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4785','Luk3_J','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4700','Strength1','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); +REPLACE INTO `item_db` VALUES ('4701','Strength2','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); +REPLACE INTO `item_db` VALUES ('4702','Strength3','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); +REPLACE INTO `item_db` VALUES ('4703','Strength4','STR+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,4;','',''); +REPLACE INTO `item_db` VALUES ('4704','Strength5','STR+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,5;','',''); +REPLACE INTO `item_db` VALUES ('4705','Strength6','STR+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,6;','',''); +REPLACE INTO `item_db` VALUES ('4706','Strength7','STR+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,7;','',''); +REPLACE INTO `item_db` VALUES ('4707','Strength8','STR+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,8;','',''); +REPLACE INTO `item_db` VALUES ('4708','Strength9','STR+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,9;','',''); +REPLACE INTO `item_db` VALUES ('4709','Strength10','STR+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,10;','',''); +REPLACE INTO `item_db` VALUES ('4710','Inteligence1','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); +REPLACE INTO `item_db` VALUES ('4711','Inteligence2','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); +REPLACE INTO `item_db` VALUES ('4712','Inteligence3','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); +REPLACE INTO `item_db` VALUES ('4713','Inteligence4','INT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,4;','',''); +REPLACE INTO `item_db` VALUES ('4714','Inteligence5','INT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,5;','',''); +REPLACE INTO `item_db` VALUES ('4715','Inteligence6','INT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6;','',''); +REPLACE INTO `item_db` VALUES ('4716','Inteligence7','INT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,7;','',''); +REPLACE INTO `item_db` VALUES ('4717','Inteligence8','INT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,8;','',''); +REPLACE INTO `item_db` VALUES ('4718','Inteligence9','INT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,9;','',''); +REPLACE INTO `item_db` VALUES ('4719','Inteligence10','INT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,10;','',''); +REPLACE INTO `item_db` VALUES ('4720','Dexterity1','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); +REPLACE INTO `item_db` VALUES ('4721','Dexterity2','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); +REPLACE INTO `item_db` VALUES ('4722','Dexterity3','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); +REPLACE INTO `item_db` VALUES ('4723','Dexterity4','DEX+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,4;','',''); +REPLACE INTO `item_db` VALUES ('4724','Dexterity5','DEX+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,5;','',''); +REPLACE INTO `item_db` VALUES ('4725','Dexterity6','DEX+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6;','',''); +REPLACE INTO `item_db` VALUES ('4726','Dexterity7','DEX+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,7;','',''); +REPLACE INTO `item_db` VALUES ('4727','Dexterity8','DEX+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,8;','',''); +REPLACE INTO `item_db` VALUES ('4728','Dexterity9','DEX+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,9;','',''); +REPLACE INTO `item_db` VALUES ('4729','Dexterity10','DEX+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,10;','',''); +REPLACE INTO `item_db` VALUES ('4730','Agility1','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); +REPLACE INTO `item_db` VALUES ('4731','Agility2','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); +REPLACE INTO `item_db` VALUES ('4732','Agility3','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); +REPLACE INTO `item_db` VALUES ('4733','Agility4','AGI+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,4;','',''); +REPLACE INTO `item_db` VALUES ('4734','Agility5','AGI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,5;','',''); +REPLACE INTO `item_db` VALUES ('4735','Agility6','AGI+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,6;','',''); +REPLACE INTO `item_db` VALUES ('4736','Agility7','AGI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,7;','',''); +REPLACE INTO `item_db` VALUES ('4737','Agility8','AGI+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,8;','',''); +REPLACE INTO `item_db` VALUES ('4738','Agility9','AGI+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,9;','',''); +REPLACE INTO `item_db` VALUES ('4739','Agility10','AGI+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,10;','',''); +REPLACE INTO `item_db` VALUES ('4740','Vitality1','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); +REPLACE INTO `item_db` VALUES ('4741','Vitality2','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); +REPLACE INTO `item_db` VALUES ('4742','Vitality3','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); +REPLACE INTO `item_db` VALUES ('4743','Vitality4','VIT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,4;','',''); +REPLACE INTO `item_db` VALUES ('4744','Vitality5','VIT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,5;','',''); +REPLACE INTO `item_db` VALUES ('4745','Vitality6','VIT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,6;','',''); +REPLACE INTO `item_db` VALUES ('4746','Vitality7','VIT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,7;','',''); +REPLACE INTO `item_db` VALUES ('4747','Vitality8','VIT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,8;','',''); +REPLACE INTO `item_db` VALUES ('4748','Vitality9','VIT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,9;','',''); +REPLACE INTO `item_db` VALUES ('4749','Vitality10','VIT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,10;','',''); +REPLACE INTO `item_db` VALUES ('4750','Luck1','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); +REPLACE INTO `item_db` VALUES ('4751','Luck2','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); +REPLACE INTO `item_db` VALUES ('4752','Luck3','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); +REPLACE INTO `item_db` VALUES ('4753','Luck4','LUK+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,4;','',''); +REPLACE INTO `item_db` VALUES ('4754','Luck5','LUK+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,5;','',''); +REPLACE INTO `item_db` VALUES ('4755','Luck6','LUK+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,6;','',''); +REPLACE INTO `item_db` VALUES ('4756','Luck7','LUK+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,7;','',''); +REPLACE INTO `item_db` VALUES ('4757','Luck8','LUK+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,8;','',''); +REPLACE INTO `item_db` VALUES ('4758','Luck9','LUK+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,9;','',''); +REPLACE INTO `item_db` VALUES ('4759','Luck10','LUK+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,10;','',''); +REPLACE INTO `item_db` VALUES ('4760','Matk1','MATK+1%','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,1;','',''); +REPLACE INTO `item_db` VALUES ('4761','Matk2','MATK+2%','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,2;','',''); +REPLACE INTO `item_db` VALUES ('4762','Evasion6','FLEE+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,6;','',''); +REPLACE INTO `item_db` VALUES ('4763','Evasion12','FLEE+12','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,12;','',''); +REPLACE INTO `item_db` VALUES ('4764','Critical5','CRI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,5;','',''); +REPLACE INTO `item_db` VALUES ('4765','Critical7','CRI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,7;','',''); +REPLACE INTO `item_db` VALUES ('4766','Atk2','ATK+2%','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace, RC_All, 2;','',''); +REPLACE INTO `item_db` VALUES ('4767','Atk3','ATK+3%','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace, RC_All, 3;','',''); +REPLACE INTO `item_db` VALUES ('4768','Str1_J','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4769','Str2_J','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4770','Str3_J','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4771','Int1_J','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4772','Int2_J','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4773','Int3_J','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4774','Vit1_J','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4775','Vit2_J','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4776','Vit3_J','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4777','Agi1_J','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4778','Agi2_J','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4779','Agi3_J','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4780','Dex1_J','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4781','Dex2_J','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4782','Dex3_J','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4783','Luk1_J','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4784','Luk2_J','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4785','Luk3_J','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('5001','Headset','Headset','5','20','10','200','0','0','3','0','0','2147483646','63','2','256','0','1',NULL,'1','87','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Curse,1000;','',''); REPLACE INTO `item_db` VALUES ('5002','Gemmed_Crown','Jewel Crown','5','20','10','600','0','0','4','0','0','414946','63','2','256','0','60',NULL,'1','88','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2; bonus bLuk,1; bonus bMdef,3;','',''); REPLACE INTO `item_db` VALUES ('5003','Joker_Jester','Joker Jester','5','20','10','100','0','0','1','0','0','2147483646','63','2','256','0','0',NULL,'1','89','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2; bonus bMdef,5;','',''); @@ -5172,9 +5172,9 @@ REPLACE INTO `item_db` VALUES ('13176','Krieger_Rifle1','Glorious Rifle','4','0' REPLACE INTO `item_db` VALUES ('13177','Krieger_Gatling1','Glorious Gatling Gun','4','0','0','0','90','0','0','9','0','16777216','63','2','34','4','80',NULL,'1','19','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_DemiPlayer,35; bonus2 bIgnoreDefRate,RC_DemiPlayer,20; bonus2 bSkillAtk,GS_TRIPLEACTION,30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiPlayer,5; } if (getrefine() > 8) { bonus2 bAddRace, RC_All, getrefine(); }','',''); REPLACE INTO `item_db` VALUES ('13178','Krieger_Shotgun1','Glorious Shotgun','4','0','0','0','110','0','0','9','0','16777216','63','2','34','4','80',NULL,'1','20','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_DemiPlayer,55; bonus2 bIgnoreDefRate,RC_DemiPlayer,20; bonus bSplashRange,1; bonus2 bSkillAtk,GS_TRIPLEACTION,30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiPlayer,5; } if(getrefine()>8) { bonus2 bSkillAtk,GS_SPREADATTACK,getrefine() * 2; bonus3 bAddEffOnSkill,GS_SPREADATTACK,Eff_Stun,2000; }','',''); REPLACE INTO `item_db` VALUES ('13179','Krieger_Launcher1','Glorious Grenade Launcher','4','0','0','0','330','0','0','9','0','16777216','63','2','34','4','80',NULL,'1','21','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_DemiPlayer,35; bonus2 bIgnoreDefRate,RC_DemiPlayer,20; bonus2 bSkillAtk,GS_TRIPLEACTION,30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiPlayer,5; } if(getrefine()>8) { bonus2 bSkillAtk,GS_GROUNDDRIFT,getrefine() * 2; bonus3 bAddEffOnSkill,GS_SPREADATTACK,Eff_Stun,2000; autobonus \"{ bonus bAspdRate,20; }\",200,20000,BF_WEAPON,\"{ specialeffect2 EF_POTION_BERSERK; }\"; }','',''); -REPLACE INTO `item_db` VALUES ('13200','Bullet','Bullet','10','1','0','2','10','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('13200','Bullet','Bullet','10','1','0','2','10','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); REPLACE INTO `item_db` VALUES ('13201','Silver_Bullet','Silver Bullet','10','15','7','2','15','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Holy;','',''); -REPLACE INTO `item_db` VALUES ('13202','Shell_Of_Blood','Bloody Shell','10','30','15','2','30','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Bleeding,100;','',''); +REPLACE INTO `item_db` VALUES ('13202','Shell_Of_Blood','Bloody Shell','10','30','15','2','30','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral; bonus2 bAddEff, Eff_Bleeding, 100;','',''); REPLACE INTO `item_db` VALUES ('13203','Flare_Sphere','Flare Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Fire;','',''); REPLACE INTO `item_db` VALUES ('13204','Lighting_Sphere','Lightning Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Wind;','',''); REPLACE INTO `item_db` VALUES ('13205','Poison_Sphere','Poison Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','1',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500;','',''); diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql index f6dcc53f4..3819d0fdf 100644 --- a/sql-files/item_db2.sql +++ b/sql-files/item_db2.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2015 Hercules Dev Team +-- Copyright (C) 2013-2016 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 31d9059ac..f7d056e95 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2015 Hercules Dev Team +-- Copyright (C) 2013-2016 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -2530,7 +2530,7 @@ REPLACE INTO `item_db` VALUES ('4436','Ragged_Zombie_Card','Ragged Zombie Card', REPLACE INTO `item_db` VALUES ('4437','Hell_Poodle_Card','Hell Poodle Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT;','',''); REPLACE INTO `item_db` VALUES ('4438','Banshee_Card','Banshee Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','769','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(BaseClass==Job_Mage) { bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,MG_NAPALMBEAT,20; bonus2 bSkillAtk,MG_SOULSTRIKE,20; bonus2 bSkillAtk,HW_NAPALMVULCAN,20; }','',''); REPLACE INTO `item_db` VALUES ('4439','Flame_Skull_Card','Flame Skull Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500;','',''); -REPLACE INTO `item_db` VALUES ('4440','Necromancer_Card','Necromancer Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus bIgnoreMdefRate,2; }','',''); +REPLACE INTO `item_db` VALUES ('4440','Necromancer_Card','Necromancer Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','.@i = getiteminfo(getequipid(EQI_HAND_R),11); if (.@i == 10 || .@i == 23) { bonus bInt,1; bonus bIgnoreMdefRate,2; }','',''); REPLACE INTO `item_db` VALUES ('4441','Fallen_Bishop_Card','Fallen Bishop Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','64','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiPlayer,50;','',''); REPLACE INTO `item_db` VALUES ('4442','Tatacho_Card','Tatacho Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5;','',''); REPLACE INTO `item_db` VALUES ('4443','Aqua_Elemental_Card','Aqua Elemental Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5;','',''); @@ -2773,173 +2773,304 @@ REPLACE INTO `item_db` VALUES ('4693','True_Chen_Liu_Card','True Chen Liu Card', REPLACE INTO `item_db` VALUES ('4694','True_Gertie_Card','True Gertie Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillAtk,SC_FEINTBOMB,50; if (getequipweaponlv(EQI_HAND_R) == 4) bonus2 bSkillAtk,SC_FEINTBOMB,50; if (getrefine() >= 10) bonus2 bSkillAtk,SC_FEINTBOMB,50;','',''); REPLACE INTO `item_db` VALUES ('4695','True_Trentini_Card','True Trentini Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillAtk,WM_METALICSOUND,50; if (getequipweaponlv(EQI_HAND_R) == 4) bonus2 bSkillAtk,WM_METALICSOUND,50; if (getrefine() >= 10) bonus2 bSkillAtk,WM_METALICSOUND,50;','',''); REPLACE INTO `item_db` VALUES ('4696','True_Alphoccio_Card','True Alphoccio Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillAtk,WM_REVERBERATION,50; if (getequipweaponlv(EQI_HAND_R) == 4) bonus2 bSkillAtk,WM_REVERBERATION,50; if (getrefine() >= 10) bonus2 bSkillAtk,WM_REVERBERATION,50;','',''); -REPLACE INTO `item_db` VALUES ('4700','Strength1','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); -REPLACE INTO `item_db` VALUES ('4701','Strength2','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); -REPLACE INTO `item_db` VALUES ('4702','Strength3','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); -REPLACE INTO `item_db` VALUES ('4703','Strength4','STR+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,4;','',''); -REPLACE INTO `item_db` VALUES ('4704','Strength5','STR+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,5;','',''); -REPLACE INTO `item_db` VALUES ('4705','Strength6','STR+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,6;','',''); -REPLACE INTO `item_db` VALUES ('4706','Strength7','STR+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,7;','',''); -REPLACE INTO `item_db` VALUES ('4707','Strength8','STR+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,8;','',''); -REPLACE INTO `item_db` VALUES ('4708','Strength9','STR+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,9;','',''); -REPLACE INTO `item_db` VALUES ('4709','Strength10','STR+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,10;','',''); -REPLACE INTO `item_db` VALUES ('4710','Inteligence1','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); -REPLACE INTO `item_db` VALUES ('4711','Inteligence2','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); -REPLACE INTO `item_db` VALUES ('4712','Inteligence3','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); -REPLACE INTO `item_db` VALUES ('4713','Inteligence4','INT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,4;','',''); -REPLACE INTO `item_db` VALUES ('4714','Inteligence5','INT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,5;','',''); -REPLACE INTO `item_db` VALUES ('4715','Inteligence6','INT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6;','',''); -REPLACE INTO `item_db` VALUES ('4716','Inteligence7','INT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,7;','',''); -REPLACE INTO `item_db` VALUES ('4717','Inteligence8','INT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,8;','',''); -REPLACE INTO `item_db` VALUES ('4718','Inteligence9','INT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,9;','',''); -REPLACE INTO `item_db` VALUES ('4719','Inteligence10','INT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,10;','',''); -REPLACE INTO `item_db` VALUES ('4720','Dexterity1','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); -REPLACE INTO `item_db` VALUES ('4721','Dexterity2','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); -REPLACE INTO `item_db` VALUES ('4722','Dexterity3','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); -REPLACE INTO `item_db` VALUES ('4723','Dexterity4','DEX+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,4;','',''); -REPLACE INTO `item_db` VALUES ('4724','Dexterity5','DEX+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,5;','',''); -REPLACE INTO `item_db` VALUES ('4725','Dexterity6','DEX+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6;','',''); -REPLACE INTO `item_db` VALUES ('4726','Dexterity7','DEX+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,7;','',''); -REPLACE INTO `item_db` VALUES ('4727','Dexterity8','DEX+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,8;','',''); -REPLACE INTO `item_db` VALUES ('4728','Dexterity9','DEX+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,9;','',''); -REPLACE INTO `item_db` VALUES ('4729','Dexterity10','DEX+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,10;','',''); -REPLACE INTO `item_db` VALUES ('4730','Agility1','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); -REPLACE INTO `item_db` VALUES ('4731','Agility2','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); -REPLACE INTO `item_db` VALUES ('4732','Agility3','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); -REPLACE INTO `item_db` VALUES ('4733','Agility4','AGI+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,4;','',''); -REPLACE INTO `item_db` VALUES ('4734','Agility5','AGI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,5;','',''); -REPLACE INTO `item_db` VALUES ('4735','Agility6','AGI+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,6;','',''); -REPLACE INTO `item_db` VALUES ('4736','Agility7','AGI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,7;','',''); -REPLACE INTO `item_db` VALUES ('4737','Agility8','AGI+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,8;','',''); -REPLACE INTO `item_db` VALUES ('4738','Agility9','AGI+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,9;','',''); -REPLACE INTO `item_db` VALUES ('4739','Agility10','AGI+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,10;','',''); -REPLACE INTO `item_db` VALUES ('4740','Vitality1','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); -REPLACE INTO `item_db` VALUES ('4741','Vitality2','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); -REPLACE INTO `item_db` VALUES ('4742','Vitality3','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); -REPLACE INTO `item_db` VALUES ('4743','Vitality4','VIT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,4;','',''); -REPLACE INTO `item_db` VALUES ('4744','Vitality5','VIT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,5;','',''); -REPLACE INTO `item_db` VALUES ('4745','Vitality6','VIT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,6;','',''); -REPLACE INTO `item_db` VALUES ('4746','Vitality7','VIT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,7;','',''); -REPLACE INTO `item_db` VALUES ('4747','Vitality8','VIT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,8;','',''); -REPLACE INTO `item_db` VALUES ('4748','Vitality9','VIT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,9;','',''); -REPLACE INTO `item_db` VALUES ('4749','Vitality10','VIT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,10;','',''); -REPLACE INTO `item_db` VALUES ('4750','Luck1','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); -REPLACE INTO `item_db` VALUES ('4751','Luck2','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); -REPLACE INTO `item_db` VALUES ('4752','Luck3','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); -REPLACE INTO `item_db` VALUES ('4753','Luck4','LUK+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,4;','',''); -REPLACE INTO `item_db` VALUES ('4754','Luck5','LUK+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,5;','',''); -REPLACE INTO `item_db` VALUES ('4755','Luck6','LUK+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,6;','',''); -REPLACE INTO `item_db` VALUES ('4756','Luck7','LUK+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,7;','',''); -REPLACE INTO `item_db` VALUES ('4757','Luck8','LUK+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,8;','',''); -REPLACE INTO `item_db` VALUES ('4758','Luck9','LUK+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,9;','',''); -REPLACE INTO `item_db` VALUES ('4759','Luck10','LUK+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,10;','',''); -REPLACE INTO `item_db` VALUES ('4760','Matk1','MATK+1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,1; bonus bFixedCastrate,-1;','',''); -REPLACE INTO `item_db` VALUES ('4761','Matk2','MATK+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,2; bonus bFixedCastrate,-1;','',''); -REPLACE INTO `item_db` VALUES ('4762','Evasion6','FLEE+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,6;','',''); -REPLACE INTO `item_db` VALUES ('4763','Evasion12','FLEE+12','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,12;','',''); -REPLACE INTO `item_db` VALUES ('4764','Critical5','CRI+5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,5;','',''); -REPLACE INTO `item_db` VALUES ('4765','Critical7','CRI+7','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,7;','',''); -REPLACE INTO `item_db` VALUES ('4766','Atk2','ATK+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,2;','',''); -REPLACE INTO `item_db` VALUES ('4767','Atk3','ATK+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,3;','',''); -REPLACE INTO `item_db` VALUES ('4768','Str1_J','Str1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); -REPLACE INTO `item_db` VALUES ('4769','Str2_J','Str2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); -REPLACE INTO `item_db` VALUES ('4770','Str3_J','Str3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); -REPLACE INTO `item_db` VALUES ('4771','Int1_J','Int1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); -REPLACE INTO `item_db` VALUES ('4772','Int2_J','Int2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); -REPLACE INTO `item_db` VALUES ('4773','Int3_J','Int3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); -REPLACE INTO `item_db` VALUES ('4774','Vit1_J','Vit1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); -REPLACE INTO `item_db` VALUES ('4775','Vit2_J','Vit2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); -REPLACE INTO `item_db` VALUES ('4776','Vit3_J','Vit3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); -REPLACE INTO `item_db` VALUES ('4777','Agi1_J','Agi1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); -REPLACE INTO `item_db` VALUES ('4778','Agi2_J','Agi2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); -REPLACE INTO `item_db` VALUES ('4779','Agi3_J','Agi3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); -REPLACE INTO `item_db` VALUES ('4780','Dex1_J','Dex1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); -REPLACE INTO `item_db` VALUES ('4781','Dex2_J','Dex2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); -REPLACE INTO `item_db` VALUES ('4782','Dex3_J','Dex3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); -REPLACE INTO `item_db` VALUES ('4783','Luk1_J','Luk1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); -REPLACE INTO `item_db` VALUES ('4784','Luk2_J','Luk2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); -REPLACE INTO `item_db` VALUES ('4785','Luk3_J','Luk3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); -REPLACE INTO `item_db` VALUES ('4786','Mdef2','MDEF+2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,2;','',''); -REPLACE INTO `item_db` VALUES ('4787','Mdef4','MDEF+4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,4;','',''); -REPLACE INTO `item_db` VALUES ('4788','Mdef6','MDEF+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,6;','',''); -REPLACE INTO `item_db` VALUES ('4789','Mdef8','MDEF+8','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,8;','',''); -REPLACE INTO `item_db` VALUES ('4790','Mdef10','MDEF+10','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10;','',''); -REPLACE INTO `item_db` VALUES ('4791','Def3','DEF+3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,3;','',''); -REPLACE INTO `item_db` VALUES ('4792','Def6','DEF+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,6;','',''); -REPLACE INTO `item_db` VALUES ('4793','Def9','DEF+9','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,9;','',''); -REPLACE INTO `item_db` VALUES ('4794','Def12','DEF+12','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,12;','',''); -REPLACE INTO `item_db` VALUES ('4795','HP100','HP+100','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100;','',''); -REPLACE INTO `item_db` VALUES ('4796','HP200','HP+200','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,200;','',''); -REPLACE INTO `item_db` VALUES ('4797','HP300','HP+300','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300;','',''); -REPLACE INTO `item_db` VALUES ('4798','HP400','HP+400','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,400;','',''); -REPLACE INTO `item_db` VALUES ('4799','HP500','HP+500','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,500;','',''); -REPLACE INTO `item_db` VALUES ('4800','SP50','SP+50','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,50;','',''); -REPLACE INTO `item_db` VALUES ('4801','SP100','SP+100','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,100;','',''); -REPLACE INTO `item_db` VALUES ('4802','SP150','SP+150','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,150;','',''); -REPLACE INTO `item_db` VALUES ('4803','Highness_Heal_3sec','Cure1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillCooldown,AB_HIGHNESSHEAL,-3000;','',''); -REPLACE INTO `item_db` VALUES ('4804','Coluceo_Heal30','Catholic1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillUseSP,AB_CHEAL,30;','',''); -REPLACE INTO `item_db` VALUES ('4805','Heal_Amount2','Archbishop1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,3;','',''); -REPLACE INTO `item_db` VALUES ('4806','Matk3','MATK+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,3; bonus bFixedCastrate,-1;','',''); -REPLACE INTO `item_db` VALUES ('4807','Atk_Speed1','Atk Speed1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,1;','',''); -REPLACE INTO `item_db` VALUES ('4808','Fighting_Spirit4','Fighting Spirit4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,15; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4809','Fighting_Spirit3','Fighting Spirit3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,12; bonus bHit,4;','',''); -REPLACE INTO `item_db` VALUES ('4810','Fighting_Spirit2','Fighting Spirit2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,9; bonus bHit,3;','',''); -REPLACE INTO `item_db` VALUES ('4811','Fighting_Spirit1','Fighting Spirit1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,6; bonus bHit,2;','',''); -REPLACE INTO `item_db` VALUES ('4812','Spell4','Spell4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,15; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4813','Spell3','Spell3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,12; bonus bVariableCastrate,-8;','',''); -REPLACE INTO `item_db` VALUES ('4814','Spell2','Spell2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,9; bonus bVariableCastrate,-6;','',''); -REPLACE INTO `item_db` VALUES ('4815','Spell1','Spell1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,6; bonus bVariableCastrate,-4;','',''); -REPLACE INTO `item_db` VALUES ('4816','Sharp3','Sharp3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,12; bonus bHit,4;','',''); -REPLACE INTO `item_db` VALUES ('4817','Sharp2','Sharp2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,9; bonus bHit,3;','',''); -REPLACE INTO `item_db` VALUES ('4818','Sharp1','Sharp1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,6; bonus bHit,2;','',''); -REPLACE INTO `item_db` VALUES ('4819','Atk1','Atk1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,1;','',''); -REPLACE INTO `item_db` VALUES ('4820','Fighting_Spirit5','Fighting Spirit5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,18; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4821','Fighting_Spirit6','Fighting Spirit6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,21; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4822','Fighting_Spirit7','Fighting Spirit7','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,24; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4823','Fighting_Spirit8','Fighting Spirit8','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,27; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4824','Fighting_Spirit9','Fighting Spirit9','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,30; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4825','Fighting_Spirit10','Fighting Spirit10','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,50; bonus bHit,15;','',''); -REPLACE INTO `item_db` VALUES ('4826','Spell5','Spell5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,18; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4827','Spell6','Spell6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,21; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4828','Spell7','Spell7','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,24; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4829','Spell8','Spell8','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,27; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4830','Spell9','Spell9','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,30; bonus bVariableCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('4831','Spell10','Spell10','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,50; bonus bVariableCastrate,-20;','',''); -REPLACE INTO `item_db` VALUES ('4832','Expert_Archer1','Expert Archer1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,2;','',''); -REPLACE INTO `item_db` VALUES ('4833','Expert_Archer2','Expert Archer2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,4;','',''); -REPLACE INTO `item_db` VALUES ('4834','Expert_Archer3','Expert Archer3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,6;','',''); -REPLACE INTO `item_db` VALUES ('4835','Expert_Archer4','Expert Archer4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,8;','',''); -REPLACE INTO `item_db` VALUES ('4836','Expert_Archer5','Expert Archer5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,10;','',''); -REPLACE INTO `item_db` VALUES ('4837','Expert_Archer6','Expert Archer6','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,12;','',''); -REPLACE INTO `item_db` VALUES ('4838','Expert_Archer7','Expert Archer7','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,14;','',''); -REPLACE INTO `item_db` VALUES ('4839','Expert_Archer8','Expert Archer8','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,16;','',''); -REPLACE INTO `item_db` VALUES ('4840','Expert_Archer9','Expert Archer9','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,18;','',''); -REPLACE INTO `item_db` VALUES ('4841','Expert_Archer10','Expert Archer10','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,20; bonus bAspd,1;','',''); -REPLACE INTO `item_db` VALUES ('4842','Atk_Speed2','Atk Speed2','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,2;','',''); -REPLACE INTO `item_db` VALUES ('4843','Sharp4','Sharp4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,14; bonus bHit,5;','',''); -REPLACE INTO `item_db` VALUES ('4844','Sharp5','Sharp5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,15; bonus bHit,6;','',''); -REPLACE INTO `item_db` VALUES ('4845','Sea_Energy','Strength Of Ocean','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('4846','2011Valentin_Angel','Fully Loved Stone','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10; bonus bMatk,10;','',''); -REPLACE INTO `item_db` VALUES ('4847','2011Valentin_Devil','Spelled Stone','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10; bonus bMatk,10;','',''); -REPLACE INTO `item_db` VALUES ('4848','Immuned1','Immune Level 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Neutral,5;','',''); -REPLACE INTO `item_db` VALUES ('4849','Cranial1','Cranial Level 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRaceTolerance,RC_DemiPlayer,5;','',''); -REPLACE INTO `item_db` VALUES ('4850','Heal_Amount3','Heal Amount3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,6; bonus bUseSPrate,5;','',''); -REPLACE INTO `item_db` VALUES ('4851','Heal_Amount4','Heal Amount4','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,12; bonus bUseSPrate,10;','',''); -REPLACE INTO `item_db` VALUES ('4852','Heal_Amount5','Heal Amount5','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,20; bonus bUseSPrate,15;','',''); -REPLACE INTO `item_db` VALUES ('4853','S_Str','Special Str','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; if(getrefine()>7) { bonus bStr,3; } if (getrefine() > 8) { bonus2 bAddRace, RC_All, 1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4854','S_Agi','Special Agi','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1; if(getrefine()>7) { bonus bAgi,3; } if (getrefine() > 8) { bonus2 bAddRace, RC_All, 1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4855','S_Vital','Special Vit','2','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1; if(getrefine()>7) { bonus bVit,3; } if(getrefine()>8) { bonus bMaxSPrate,1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4856','S_Int','Special Int','2','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1; if(getrefine()>7) { bonus bInt,3; } if(getrefine()>8) { bonus bMatkRate,1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4857','S_Dex','Special Dex','2','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1; if(getrefine()>7) { bonus bDex,3; } if(getrefine()>8) { bonus bMatkRate,1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4858','S_Luck','Special Luk','2','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1; if(getrefine()>7) { bonus bLuk,3; } if(getrefine()>8) { bonus bMaxHPrate,1; } if(getrefine()>11) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); -REPLACE INTO `item_db` VALUES ('4859','Evasion1','Evasion1','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,1;','',''); -REPLACE INTO `item_db` VALUES ('4860','Evasion3','Evasion3','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,3;','',''); -REPLACE INTO `item_db` VALUES ('4861','MHP1','MHP+1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,1;','',''); -REPLACE INTO `item_db` VALUES ('4862','MHP2','MHP+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,2;','',''); -REPLACE INTO `item_db` VALUES ('4867','MHP3','MHP+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,3;','',''); -REPLACE INTO `item_db` VALUES ('4868','MHP4','MHP+4%','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,4;','',''); -REPLACE INTO `item_db` VALUES ('4870','SP25','SP+25','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,25;','',''); -REPLACE INTO `item_db` VALUES ('4871','SP75','SP+75','6','0','0','0','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,75;','',''); +REPLACE INTO `item_db` VALUES ('4700','Strength1','STR+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); +REPLACE INTO `item_db` VALUES ('4701','Strength2','STR+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); +REPLACE INTO `item_db` VALUES ('4702','Strength3','STR+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); +REPLACE INTO `item_db` VALUES ('4703','Strength4','STR+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,4;','',''); +REPLACE INTO `item_db` VALUES ('4704','Strength5','STR+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,5;','',''); +REPLACE INTO `item_db` VALUES ('4705','Strength6','STR+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,6;','',''); +REPLACE INTO `item_db` VALUES ('4706','Strength7','STR+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,7;','',''); +REPLACE INTO `item_db` VALUES ('4707','Strength8','STR+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,8;','',''); +REPLACE INTO `item_db` VALUES ('4708','Strength9','STR+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,9;','',''); +REPLACE INTO `item_db` VALUES ('4709','Strength10','STR+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,10;','',''); +REPLACE INTO `item_db` VALUES ('4710','Inteligence1','INT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); +REPLACE INTO `item_db` VALUES ('4711','Inteligence2','INT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); +REPLACE INTO `item_db` VALUES ('4712','Inteligence3','INT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); +REPLACE INTO `item_db` VALUES ('4713','Inteligence4','INT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,4;','',''); +REPLACE INTO `item_db` VALUES ('4714','Inteligence5','INT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,5;','',''); +REPLACE INTO `item_db` VALUES ('4715','Inteligence6','INT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6;','',''); +REPLACE INTO `item_db` VALUES ('4716','Inteligence7','INT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,7;','',''); +REPLACE INTO `item_db` VALUES ('4717','Inteligence8','INT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,8;','',''); +REPLACE INTO `item_db` VALUES ('4718','Inteligence9','INT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,9;','',''); +REPLACE INTO `item_db` VALUES ('4719','Inteligence10','INT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,10;','',''); +REPLACE INTO `item_db` VALUES ('4720','Dexterity1','DEX+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); +REPLACE INTO `item_db` VALUES ('4721','Dexterity2','DEX+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); +REPLACE INTO `item_db` VALUES ('4722','Dexterity3','DEX+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); +REPLACE INTO `item_db` VALUES ('4723','Dexterity4','DEX+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,4;','',''); +REPLACE INTO `item_db` VALUES ('4724','Dexterity5','DEX+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,5;','',''); +REPLACE INTO `item_db` VALUES ('4725','Dexterity6','DEX+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6;','',''); +REPLACE INTO `item_db` VALUES ('4726','Dexterity7','DEX+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,7;','',''); +REPLACE INTO `item_db` VALUES ('4727','Dexterity8','DEX+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,8;','',''); +REPLACE INTO `item_db` VALUES ('4728','Dexterity9','DEX+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,9;','',''); +REPLACE INTO `item_db` VALUES ('4729','Dexterity10','DEX+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,10;','',''); +REPLACE INTO `item_db` VALUES ('4730','Agility1','AGI+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); +REPLACE INTO `item_db` VALUES ('4731','Agility2','AGI+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); +REPLACE INTO `item_db` VALUES ('4732','Agility3','AGI+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); +REPLACE INTO `item_db` VALUES ('4733','Agility4','AGI+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,4;','',''); +REPLACE INTO `item_db` VALUES ('4734','Agility5','AGI+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,5;','',''); +REPLACE INTO `item_db` VALUES ('4735','Agility6','AGI+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,6;','',''); +REPLACE INTO `item_db` VALUES ('4736','Agility7','AGI+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,7;','',''); +REPLACE INTO `item_db` VALUES ('4737','Agility8','AGI+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,8;','',''); +REPLACE INTO `item_db` VALUES ('4738','Agility9','AGI+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,9;','',''); +REPLACE INTO `item_db` VALUES ('4739','Agility10','AGI+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,10;','',''); +REPLACE INTO `item_db` VALUES ('4740','Vitality1','VIT+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); +REPLACE INTO `item_db` VALUES ('4741','Vitality2','VIT+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); +REPLACE INTO `item_db` VALUES ('4742','Vitality3','VIT+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); +REPLACE INTO `item_db` VALUES ('4743','Vitality4','VIT+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,4;','',''); +REPLACE INTO `item_db` VALUES ('4744','Vitality5','VIT+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,5;','',''); +REPLACE INTO `item_db` VALUES ('4745','Vitality6','VIT+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,6;','',''); +REPLACE INTO `item_db` VALUES ('4746','Vitality7','VIT+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,7;','',''); +REPLACE INTO `item_db` VALUES ('4747','Vitality8','VIT+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,8;','',''); +REPLACE INTO `item_db` VALUES ('4748','Vitality9','VIT+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,9;','',''); +REPLACE INTO `item_db` VALUES ('4749','Vitality10','VIT+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,10;','',''); +REPLACE INTO `item_db` VALUES ('4750','Luck1','LUK+1','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); +REPLACE INTO `item_db` VALUES ('4751','Luck2','LUK+2','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); +REPLACE INTO `item_db` VALUES ('4752','Luck3','LUK+3','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); +REPLACE INTO `item_db` VALUES ('4753','Luck4','LUK+4','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,4;','',''); +REPLACE INTO `item_db` VALUES ('4754','Luck5','LUK+5','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,5;','',''); +REPLACE INTO `item_db` VALUES ('4755','Luck6','LUK+6','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,6;','',''); +REPLACE INTO `item_db` VALUES ('4756','Luck7','LUK+7','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,7;','',''); +REPLACE INTO `item_db` VALUES ('4757','Luck8','LUK+8','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,8;','',''); +REPLACE INTO `item_db` VALUES ('4758','Luck9','LUK+9','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,9;','',''); +REPLACE INTO `item_db` VALUES ('4759','Luck10','LUK+10','6','20','10','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,10;','',''); +REPLACE INTO `item_db` VALUES ('4760','Matk1','MATK+1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,1; bonus bFixedCastrate,-1;','',''); +REPLACE INTO `item_db` VALUES ('4761','Matk2','MATK+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,2; bonus bFixedCastrate,-1;','',''); +REPLACE INTO `item_db` VALUES ('4762','Evasion6','FLEE+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,6;','',''); +REPLACE INTO `item_db` VALUES ('4763','Evasion12','FLEE+12','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,12;','',''); +REPLACE INTO `item_db` VALUES ('4764','Critical5','CRI+5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,5;','',''); +REPLACE INTO `item_db` VALUES ('4765','Critical7','CRI+7','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,7;','',''); +REPLACE INTO `item_db` VALUES ('4766','Atk2','ATK+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,2;','',''); +REPLACE INTO `item_db` VALUES ('4767','Atk3','ATK+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,3;','',''); +REPLACE INTO `item_db` VALUES ('4768','Str1_J','Str1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1;','',''); +REPLACE INTO `item_db` VALUES ('4769','Str2_J','Str2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); +REPLACE INTO `item_db` VALUES ('4770','Str3_J','Str3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3;','',''); +REPLACE INTO `item_db` VALUES ('4771','Int1_J','Int1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1;','',''); +REPLACE INTO `item_db` VALUES ('4772','Int2_J','Int2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2;','',''); +REPLACE INTO `item_db` VALUES ('4773','Int3_J','Int3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,3;','',''); +REPLACE INTO `item_db` VALUES ('4774','Vit1_J','Vit1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1;','',''); +REPLACE INTO `item_db` VALUES ('4775','Vit2_J','Vit2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2;','',''); +REPLACE INTO `item_db` VALUES ('4776','Vit3_J','Vit3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3;','',''); +REPLACE INTO `item_db` VALUES ('4777','Agi1_J','Agi1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1;','',''); +REPLACE INTO `item_db` VALUES ('4778','Agi2_J','Agi2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,2;','',''); +REPLACE INTO `item_db` VALUES ('4779','Agi3_J','Agi3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3;','',''); +REPLACE INTO `item_db` VALUES ('4780','Dex1_J','Dex1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); +REPLACE INTO `item_db` VALUES ('4781','Dex2_J','Dex2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2;','',''); +REPLACE INTO `item_db` VALUES ('4782','Dex3_J','Dex3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3;','',''); +REPLACE INTO `item_db` VALUES ('4783','Luk1_J','Luk1 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1;','',''); +REPLACE INTO `item_db` VALUES ('4784','Luk2_J','Luk2 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2;','',''); +REPLACE INTO `item_db` VALUES ('4785','Luk3_J','Luk3 J','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3;','',''); +REPLACE INTO `item_db` VALUES ('4786','Mdef2','MDEF+2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,2;','',''); +REPLACE INTO `item_db` VALUES ('4787','Mdef4','MDEF+4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,4;','',''); +REPLACE INTO `item_db` VALUES ('4788','Mdef6','MDEF+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,6;','',''); +REPLACE INTO `item_db` VALUES ('4789','Mdef8','MDEF+8','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,8;','',''); +REPLACE INTO `item_db` VALUES ('4790','Mdef10','MDEF+10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,10;','',''); +REPLACE INTO `item_db` VALUES ('4791','Def3','DEF+3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,3;','',''); +REPLACE INTO `item_db` VALUES ('4792','Def6','DEF+6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,6;','',''); +REPLACE INTO `item_db` VALUES ('4793','Def9','DEF+9','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,9;','',''); +REPLACE INTO `item_db` VALUES ('4794','Def12','DEF+12','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef,12;','',''); +REPLACE INTO `item_db` VALUES ('4795','HP100','HP+100','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,100;','',''); +REPLACE INTO `item_db` VALUES ('4796','HP200','HP+200','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,200;','',''); +REPLACE INTO `item_db` VALUES ('4797','HP300','HP+300','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,300;','',''); +REPLACE INTO `item_db` VALUES ('4798','HP400','HP+400','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,400;','',''); +REPLACE INTO `item_db` VALUES ('4799','HP500','HP+500','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,500;','',''); +REPLACE INTO `item_db` VALUES ('4800','SP50','SP+50','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,50;','',''); +REPLACE INTO `item_db` VALUES ('4801','SP100','SP+100','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,100;','',''); +REPLACE INTO `item_db` VALUES ('4802','SP150','SP+150','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,150;','',''); +REPLACE INTO `item_db` VALUES ('4803','Highness_Heal_3sec','Cure1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillCooldown,AB_HIGHNESSHEAL,-3000;','',''); +REPLACE INTO `item_db` VALUES ('4804','Coluceo_Heal30','Catholic1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillUseSP,AB_CHEAL,30;','',''); +REPLACE INTO `item_db` VALUES ('4805','Heal_Amount2','Archbishop1Lv.','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,3;','',''); +REPLACE INTO `item_db` VALUES ('4806','Matk3','MATK+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,3; bonus bFixedCastrate,-1;','',''); +REPLACE INTO `item_db` VALUES ('4807','Atk_Speed1','Atk Speed1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,1;','',''); +REPLACE INTO `item_db` VALUES ('4808','Fighting_Spirit4','Fighting Spirit4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,15; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4809','Fighting_Spirit3','Fighting Spirit3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,12; bonus bHit,4;','',''); +REPLACE INTO `item_db` VALUES ('4810','Fighting_Spirit2','Fighting Spirit2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,9; bonus bHit,3;','',''); +REPLACE INTO `item_db` VALUES ('4811','Fighting_Spirit1','Fighting Spirit1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,6; bonus bHit,2;','',''); +REPLACE INTO `item_db` VALUES ('4812','Spell4','Spell4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,15; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4813','Spell3','Spell3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,12; bonus bVariableCastrate,-8;','',''); +REPLACE INTO `item_db` VALUES ('4814','Spell2','Spell2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,9; bonus bVariableCastrate,-6;','',''); +REPLACE INTO `item_db` VALUES ('4815','Spell1','Spell1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,6; bonus bVariableCastrate,-4;','',''); +REPLACE INTO `item_db` VALUES ('4816','Sharp3','Sharp3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,12; bonus bHit,4;','',''); +REPLACE INTO `item_db` VALUES ('4817','Sharp2','Sharp2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,9; bonus bHit,3;','',''); +REPLACE INTO `item_db` VALUES ('4818','Sharp1','Sharp1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,6; bonus bHit,2;','',''); +REPLACE INTO `item_db` VALUES ('4819','Atk1','Atk1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,1;','',''); +REPLACE INTO `item_db` VALUES ('4820','Fighting_Spirit5','Fighting Spirit5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,18; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4821','Fighting_Spirit6','Fighting Spirit6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,21; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4822','Fighting_Spirit7','Fighting Spirit7','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,24; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4823','Fighting_Spirit8','Fighting Spirit8','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,27; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4824','Fighting_Spirit9','Fighting Spirit9','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,30; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4825','Fighting_Spirit10','Fighting Spirit10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,50; bonus bHit,15;','',''); +REPLACE INTO `item_db` VALUES ('4826','Spell5','Spell5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,18; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4827','Spell6','Spell6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,21; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4828','Spell7','Spell7','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,24; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4829','Spell8','Spell8','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,27; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4830','Spell9','Spell9','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,30; bonus bVariableCastrate,-10;','',''); +REPLACE INTO `item_db` VALUES ('4831','Spell10','Spell10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk,50; bonus bVariableCastrate,-20;','',''); +REPLACE INTO `item_db` VALUES ('4832','Expert_Archer1','Expert Archer1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,2;','',''); +REPLACE INTO `item_db` VALUES ('4833','Expert_Archer2','Expert Archer2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,4;','',''); +REPLACE INTO `item_db` VALUES ('4834','Expert_Archer3','Expert Archer3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,6;','',''); +REPLACE INTO `item_db` VALUES ('4835','Expert_Archer4','Expert Archer4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,8;','',''); +REPLACE INTO `item_db` VALUES ('4836','Expert_Archer5','Expert Archer5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,10;','',''); +REPLACE INTO `item_db` VALUES ('4837','Expert_Archer6','Expert Archer6','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,12;','',''); +REPLACE INTO `item_db` VALUES ('4838','Expert_Archer7','Expert Archer7','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,14;','',''); +REPLACE INTO `item_db` VALUES ('4839','Expert_Archer8','Expert Archer8','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,16;','',''); +REPLACE INTO `item_db` VALUES ('4840','Expert_Archer9','Expert Archer9','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,18;','',''); +REPLACE INTO `item_db` VALUES ('4841','Expert_Archer10','Expert Archer10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate,20; bonus bAspd,1;','',''); +REPLACE INTO `item_db` VALUES ('4842','Atk_Speed2','Atk Speed2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,2;','',''); +REPLACE INTO `item_db` VALUES ('4843','Sharp4','Sharp4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,14; bonus bHit,5;','',''); +REPLACE INTO `item_db` VALUES ('4844','Sharp5','Sharp5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical,15; bonus bHit,6;','',''); +REPLACE INTO `item_db` VALUES ('4845','Sea_Energy','Strength Of Ocean','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4846','2011Valentin_Angel','Fully Loved Stone','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10; bonus bMatk,10;','',''); +REPLACE INTO `item_db` VALUES ('4847','2011Valentin_Devil','Spelled Stone','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,10; bonus bMatk,10;','',''); +REPLACE INTO `item_db` VALUES ('4848','Immuned1','Immune Level 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle,Ele_Neutral,5;','',''); +REPLACE INTO `item_db` VALUES ('4849','Cranial1','Cranial Level 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRaceTolerance,RC_DemiPlayer,5;','',''); +REPLACE INTO `item_db` VALUES ('4850','Heal_Amount3','Heal Amount3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,6; bonus bUseSPrate,5;','',''); +REPLACE INTO `item_db` VALUES ('4851','Heal_Amount4','Heal Amount4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,12; bonus bUseSPrate,10;','',''); +REPLACE INTO `item_db` VALUES ('4852','Heal_Amount5','Heal Amount5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower,20; bonus bUseSPrate,15;','',''); +REPLACE INTO `item_db` VALUES ('4853','S_Str','Special Str','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; if (getrefine() >= 8) { bonus bStr,3; } if (getrefine() >= 9) { bonus2 bAddRace, RC_All, 1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4854','S_Agi','Special Agi','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,1; if (getrefine() >= 8) { bonus bAgi,3; } if (getrefine() >= 9) { bonus2 bAddRace, RC_All, 1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4855','S_Vital','Special Vit','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1; if (getrefine() >= 8) { bonus bVit,3; } if (getrefine() >= 9) { bonus bMaxSPrate,1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4856','S_Int','Special Int','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1; if (getrefine() >= 8) { bonus bInt,3; } if (getrefine() >= 9) { bonus bMatkRate,1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4857','S_Dex','Special Dex','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1; if (getrefine() >= 8) { bonus bDex,3; } if (getrefine() >= 9) { bonus bMatkRate,1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4858','S_Luck','Special Luk','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,1; if (getrefine() >= 8) { bonus bLuk,3; } if (getrefine() >= 9) { bonus bMaxHPrate,1; } if (getrefine() >= 12) { bonus bAspd,1; bonus bFixedCastrate,-7; }','',''); +REPLACE INTO `item_db` VALUES ('4859','Evasion1','Evasion1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,1;','',''); +REPLACE INTO `item_db` VALUES ('4860','Evasion3','Evasion3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,3;','',''); +REPLACE INTO `item_db` VALUES ('4861','MHP1','MHP+1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,1;','',''); +REPLACE INTO `item_db` VALUES ('4862','MHP2','MHP+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,2;','',''); +REPLACE INTO `item_db` VALUES ('4863','Fatal1','Fatal1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCriAtkRate, 4; bonus bCritical, 1;','',''); +REPLACE INTO `item_db` VALUES ('4864','Fatal2','Fatal2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCriAtkRate, 6; bonus bCritical, 2;','',''); +REPLACE INTO `item_db` VALUES ('4865','Fatal3','Fatal3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCriAtkRate, 8; bonus bCritical, 3;','',''); +REPLACE INTO `item_db` VALUES ('4866','Fatal4','Fatal4Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCriAtkRate, 10; bonus bCritical, 4;','',''); +REPLACE INTO `item_db` VALUES ('4867','MHP3','MHP+3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,3;','',''); +REPLACE INTO `item_db` VALUES ('4868','MHP4','MHP+4%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate,4;','',''); +REPLACE INTO `item_db` VALUES ('4869','Attack_Delay_1','DelayafterAttack1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate, 4;','',''); +REPLACE INTO `item_db` VALUES ('4870','SP25','SP+25','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,25;','',''); +REPLACE INTO `item_db` VALUES ('4871','SP75','SP+75','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP,75;','',''); +REPLACE INTO `item_db` VALUES ('4872','Attack_Delay_2','DelayafterAttack2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate, 6;','',''); +REPLACE INTO `item_db` VALUES ('4873','Attack_Delay_3','DelayafterAttack3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate, 8;','',''); +REPLACE INTO `item_db` VALUES ('4875','Bear\'s_Power','Strength of Bear','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus2 \"{ bonus bStr, 200; bonus2 bHPLossRate, 500, 1000; montransform BIGFOOT, 5000; }\", 20, 5000, BF_WEAPON, \"{ specialeffect2 EF_POTION_BERSERK; showscript \\\"?!!!!\\\"; }\";','','heal 0, -300;'); +REPLACE INTO `item_db` VALUES ('4876','Runaway_Magic','Runaway Magic','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ bonus bInt, 200; bonus2 bSPLossRate, 200, 1000; }\", 15, 10000, BF_MAGIC, \"{ specialeffect2 EF_POTION_BERSERK; showscript \\\"YOooooooo!!!!!\\\"; }\";','','heal 0, -2000;'); +REPLACE INTO `item_db` VALUES ('4877','Speed_Of_Light','Speed Of Light','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ bonus bAspdRate, 100; bonus bFlee2, 100; bonus2 bHPLossRate, 400, 1000; bonus2 bSPLossRate, 40, 1000; }\", 10, 5000, BF_WEAPON, \"{ specialeffect2 EF_FLASHER; }\";','','heal 0, -300;'); +REPLACE INTO `item_db` VALUES ('4878','Muscle_Fool','Muscle Fool','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus2 \"{ bonus bDef, 1000; bonus bMatkRate, -50; bonus bAtkRate, -50; }\", 20, 5000, BF_WEAPON, \"{ specialeffect2 EF_MAGNUMBREAK; }\";','','heal 0, -300;'); +REPLACE INTO `item_db` VALUES ('4879','Hawkeye','Hawkeye','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ bonus bDex, 200; bonus2 bSPLossRate, 50, 1000; }\", 30, 5000, BF_WEAPON, \"{ specialeffect2 EF_FLASHER; }\";','','heal 0, -300;'); +REPLACE INTO `item_db` VALUES ('4880','Lucky_Day','Lucky Day','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','autobonus \"{ bonus2 bAddMonsterDropItem, Treasure_Box, 10; bonus bLuk, 200; }\", 15, 5000, BF_WEAPON | BF_MAGIC, \"{ specialeffect2 EF_MVP; }\"; autobonus2 \"{ bonus2 bAddMonsterDropItem, Treasure_Box, 1; bonus bLuk, 200; }\", 1, 5000, BF_WEAPON | BF_MAGIC, \"{ specialeffect2 EF_MVP; }\";','','heal 0, -300;'); +REPLACE INTO `item_db` VALUES ('4881','Attack_Delay_4','DelayafterAttack4Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate, 10;','',''); +REPLACE INTO `item_db` VALUES ('4882','ATK_1','ATK + 1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 1;','',''); +REPLACE INTO `item_db` VALUES ('4883','MATK_1','MATK + 1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 1;','',''); +REPLACE INTO `item_db` VALUES ('4884','HIT_1','HIT + 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit, 1;','',''); +REPLACE INTO `item_db` VALUES ('4885','Spell_1','Spell 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 5; bonus bVariableCastrate, -3;','',''); +REPLACE INTO `item_db` VALUES ('4886','Spell_2','Spell 2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 10; bonus bVariableCastrate, -3;','',''); +REPLACE INTO `item_db` VALUES ('4887','Spell_3','Spell 3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 15; bonus bVariableCastrate, -3;','',''); +REPLACE INTO `item_db` VALUES ('4888','Spell_4','Spell 4','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 20; bonus bVariableCastrate, -3;','',''); +REPLACE INTO `item_db` VALUES ('4889','Spell_5','Spell 5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 30; bonus bVariableCastrate, -5;','',''); +REPLACE INTO `item_db` VALUES ('4890','MDEF_1','MDEF+1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef, 1;','',''); +REPLACE INTO `item_db` VALUES ('4891','MDEF_3','MDEF+3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef, 3;','',''); +REPLACE INTO `item_db` VALUES ('4892','MDEF_5','MDEF+5','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef, 5;','',''); +REPLACE INTO `item_db` VALUES ('4893','DEF_15','DEF+15','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef, 15;','',''); +REPLACE INTO `item_db` VALUES ('4894','ATK_4','ATK + 4%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 4;','',''); +REPLACE INTO `item_db` VALUES ('4895','ATK_5','ATK + 5%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 5;','',''); +REPLACE INTO `item_db` VALUES ('4896','MATK_2','MATK + 2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 2;','',''); +REPLACE INTO `item_db` VALUES ('4897','MATK_3','MATK + 3%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 3;','',''); +REPLACE INTO `item_db` VALUES ('4898','MATK_4','MATK + 4%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 4;','',''); +REPLACE INTO `item_db` VALUES ('4899','MATK_5','MATK + 5%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 5;','',''); +REPLACE INTO `item_db` VALUES ('4900','MHP_5','MHP+5%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate, 5;','',''); +REPLACE INTO `item_db` VALUES ('4902','DEF_18','DEF+18','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef, 18;','',''); +REPLACE INTO `item_db` VALUES ('4903','DEF_21','DEF+21','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef, 21;','',''); +REPLACE INTO `item_db` VALUES ('4904','ATK_6','ATK+6%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 6;','',''); +REPLACE INTO `item_db` VALUES ('4905','ATK_7','ATK+7%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 7;','',''); +REPLACE INTO `item_db` VALUES ('4906','MATK_6','MATK+6%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 6;','',''); +REPLACE INTO `item_db` VALUES ('4907','MATK_7','MATK+7%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 7;','',''); +REPLACE INTO `item_db` VALUES ('4908','Essence_Of_Evil_Str1','Essence Of Evil STR 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr, 1; bonus bBaseAtk, 3; bonus bInt, -1;','',''); +REPLACE INTO `item_db` VALUES ('4909','Essence_Of_Evil_Str2','Essence Of Evil STR 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr, 2; bonus bBaseAtk, 6; bonus bInt, -2;','',''); +REPLACE INTO `item_db` VALUES ('4910','Essence_Of_Evil_Str3','Essence Of Evil STR 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr, 4; bonus bBaseAtk, 12; bonus bInt, -4;','',''); +REPLACE INTO `item_db` VALUES ('4911','Essence_Of_Evil_Int1','Essence Of Evil INT 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt, 1; bonus bMatk, 3; bonus bStr, -1;','',''); +REPLACE INTO `item_db` VALUES ('4912','Essence_Of_Evil_Int2','Essence Of Evil INT 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt, 2; bonus bMatk, 6; bonus bStr, -2;','',''); +REPLACE INTO `item_db` VALUES ('4913','Essence_Of_Evil_Int3','Essence Of Evil INT 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt, 4; bonus bMatk, 12; bonus bStr, -4;','',''); +REPLACE INTO `item_db` VALUES ('4914','Essence_Of_Evil_Agi1','Essence Of Evil AGI 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi, 1; bonus bFlee, 2; bonus bVit, -1;','',''); +REPLACE INTO `item_db` VALUES ('4915','Essence_Of_Evil_Agi2','Essence Of Evil AGI 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi, 2; bonus bFlee, 4; bonus bVit, -2;','',''); +REPLACE INTO `item_db` VALUES ('4916','Essence_Of_Evil_Agi3','Essence Of Evil AGI 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi, 4; bonus bFlee, 8; bonus bVit, -4;','',''); +REPLACE INTO `item_db` VALUES ('4917','Essence_Of_Evil_Vit1','Essence Of Evil VIT 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit, 1; bonus bDef, 3; bonus bMdef, 2; bonus bAgi, -1;','',''); +REPLACE INTO `item_db` VALUES ('4918','Essence_Of_Evil_Vit2','Essence Of Evil VIT 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit, 2; bonus bDef, 6; bonus bMdef, 4; bonus bAgi, -2;','',''); +REPLACE INTO `item_db` VALUES ('4919','Essence_Of_Evil_Vit3','Essence Of Evil VIT 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit, 4; bonus bDef, 12; bonus bMdef, 8; bonus bAgi, -4;','',''); +REPLACE INTO `item_db` VALUES ('4920','Essence_Of_Evil_Dex1','Essence Of Evil DEX 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex, 1; bonus bHit, 2; bonus bLuk, -1;','',''); +REPLACE INTO `item_db` VALUES ('4921','Essence_Of_Evil_Dex2','Essence Of Evil DEX 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex, 2; bonus bHit, 4; bonus bLuk, -2;','',''); +REPLACE INTO `item_db` VALUES ('4922','Essence_Of_Evil_Dex3','Essence Of Evil DEX 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex, 4; bonus bHit, 8; bonus bLuk, -4;','',''); +REPLACE INTO `item_db` VALUES ('4923','Essence_Of_Evil_Luk1','Essence Of Evil LUK 1','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk, 1; bonus bCritical, 1; bonus bDex, -1;','',''); +REPLACE INTO `item_db` VALUES ('4924','Essence_Of_Evil_Luk2','Essence Of Evil LUK 2','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk, 2; bonus bCritical, 2; bonus bDex, -2;','',''); +REPLACE INTO `item_db` VALUES ('4925','Essence_Of_Evil_Luk3','Essence Of Evil LUK 3','6','0','0','10','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk, 4; bonus bCritical, 4; bonus bDex, -4;','',''); +REPLACE INTO `item_db` VALUES ('4926','Critical1','Critical1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical, 1;','',''); +REPLACE INTO `item_db` VALUES ('4927','HP50','HP+50','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP, 50;','',''); +REPLACE INTO `item_db` VALUES ('4928','SP10','SP+10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSP, 10;','',''); +REPLACE INTO `item_db` VALUES ('4929','MSP_1','MSP+1%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSPrate, 1;','',''); +REPLACE INTO `item_db` VALUES ('4930','Inc_Recovery','Increase Recovery','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHPrecovRate, 2;','',''); +REPLACE INTO `item_db` VALUES ('4931','Healing_10','Healing 10','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bHPRegenRate, 10, 10000;','',''); +REPLACE INTO `item_db` VALUES ('4932','SP_Recovery_1','SP Recovery 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bSPGainValue, 1;','',''); +REPLACE INTO `item_db` VALUES ('4933','Neutral1','Neutral Properties Lv1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Neutral, 1;','',''); +REPLACE INTO `item_db` VALUES ('4934','Neutral2','Neutral Properties Lv2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Neutral, 2;','',''); +REPLACE INTO `item_db` VALUES ('4935','Neutral3','Neutral Properties Lv3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Neutral, 3;','',''); +REPLACE INTO `item_db` VALUES ('4936','L_Atk1','Large Attack 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddSize, Size_Large, 1;','',''); +REPLACE INTO `item_db` VALUES ('4937','M_Atk1','Medium Attack 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddSize, Size_Medium, 1;','',''); +REPLACE INTO `item_db` VALUES ('4938','S_Atk1','Small Attack 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddSize, Size_Small, 1;','',''); +REPLACE INTO `item_db` VALUES ('4939','Critical2','Critical2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical, 2;','',''); +REPLACE INTO `item_db` VALUES ('4940','Critical3','Critical3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical, 4;','',''); +REPLACE INTO `item_db` VALUES ('4941','Critical4','Critical4Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical, 6;','',''); +REPLACE INTO `item_db` VALUES ('4942','Critical_1','Critical Lv1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCritical, 3;','',''); +REPLACE INTO `item_db` VALUES ('4943','Shedding2','Shedding2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee2, 4;','',''); +REPLACE INTO `item_db` VALUES ('4944','Shedding3','Shedding3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee2, 5;','',''); +REPLACE INTO `item_db` VALUES ('4945','Saving1','Saving Lv1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate, -2;','',''); +REPLACE INTO `item_db` VALUES ('4946','Saving2','Saving Lv2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate, -4;','',''); +REPLACE INTO `item_db` VALUES ('4947','Saving3','Saving Lv3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate, -6;','',''); +REPLACE INTO `item_db` VALUES ('4948','Delay1','Delay After Skill Lv1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDelayrate, -2;','',''); +REPLACE INTO `item_db` VALUES ('4949','Delay2','Delay After Skill Lv2','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDelayrate, -4;','',''); +REPLACE INTO `item_db` VALUES ('4950','Delay3','Delay After Skill Lv3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDelayrate, -6;','',''); +REPLACE INTO `item_db` VALUES ('4951','Darkness_Drop','Darkness Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAddEle, Ele_Dark, 2, BF_WEAPON | BF_MAGIC; bonus2 bSubEle, Ele_Dark, 1;','',''); +REPLACE INTO `item_db` VALUES ('4952','Fire_Drop','Fire Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAddEle, Ele_Fire, 2, BF_WEAPON | BF_MAGIC; bonus2 bSubEle, Ele_Fire, 1;','',''); +REPLACE INTO `item_db` VALUES ('4953','Water_Drop','Water Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAddEle, Ele_Water, 2, BF_WEAPON | BF_MAGIC; bonus2 bSubEle, Ele_Water, 1;','',''); +REPLACE INTO `item_db` VALUES ('4954','Earth_Drop','Earth Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAddEle, Ele_Earth, 2, BF_WEAPON | BF_MAGIC; bonus2 bSubEle, Ele_Earth, 1;','',''); +REPLACE INTO `item_db` VALUES ('4955','Light_Drop','Light Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bAddEle, Ele_Holy, 2, BF_WEAPON | BF_MAGIC; bonus2 bSubEle, Ele_Holy, 1;','',''); +REPLACE INTO `item_db` VALUES ('4956','Recovery_Drop','Recovery Drop','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillHeal, AL_HEAL, 2; bonus2 bSkillHeal, PR_SANCTUARY, 2; bonus2 bSkillHeal, AM_POTIONPITCHER, 2; bonus2 bSkillHeal, AB_HIGHNESS_HEAL, 2; bonus2 bSkillHeal, AB_CHEAL, 2; bonus2 bSkillHeal2, AL_HEAL, 2; bonus2 bSkillHeal2, PR_SANCTUARY, 2; bonus2 bSkillHeal2, AM_POTIONPITCHER, 2; bonus2 bSkillHeal2, AB_HIGHNESS_HEAL, 2; bonus2 bSkillHeal2, AB_CHEAL, 2; bonus bAddItemHealRate, 2;','',''); +REPLACE INTO `item_db` VALUES ('4957','The_Power_Of_Famitsu','The Power Of Famitsu','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP, 832;','',''); +REPLACE INTO `item_db` VALUES ('4958','Double_Pediatric_Palace','Double Pediatric Palace','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDelayrate, -1;','',''); +REPLACE INTO `item_db` VALUES ('4959','Sagittarius','Sagittarius','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLongAtkRate, 1;','',''); +REPLACE INTO `item_db` VALUES ('4960','Aquarius','Aquarius','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate, -2;','',''); +REPLACE INTO `item_db` VALUES ('4961','Aries','Aries','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 10;','',''); +REPLACE INTO `item_db` VALUES ('4962','Cancer','Cancer','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, 3;','',''); +REPLACE INTO `item_db` VALUES ('4963','Taurus','Taurus','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, 3; bonus bHit, 1;','',''); +REPLACE INTO `item_db` VALUES ('4964','Capricorn','Capricorn','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate, 3;','',''); +REPLACE INTO `item_db` VALUES ('4965','Pisces','Pisces','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVariableCastrate, -2;','',''); +REPLACE INTO `item_db` VALUES ('4966','Scorpio','Scorpio','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('4967','Leo','Leo','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate, 3;','',''); +REPLACE INTO `item_db` VALUES ('4968','Virgo','Virgo','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillHeal, AL_HEAL, 1; bonus2 bSkillHeal, PR_SANCTUARY, 1; bonus2 bSkillHeal, AM_POTIONPITCHER, 1; bonus2 bSkillHeal, AB_HIGHNESS_HEAL, 1; bonus2 bSkillHeal, AB_CHEAL, 1;','',''); +REPLACE INTO `item_db` VALUES ('4969','Libra','Libra','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSkillHeal2, AL_HEAL, 1; bonus2 bSkillHeal2, PR_SANCTUARY, 1; bonus2 bSkillHeal2, AM_POTIONPITCHER, 1; bonus2 bSkillHeal2, AB_HIGHNESS_HEAL, 1; bonus2 bSkillHeal2, AB_CHEAL, 1; bonus bAddItemHealRate, 1;','',''); +REPLACE INTO `item_db` VALUES ('4970','Fire_Property_Reactor','Fire Property Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDefEle, Ele_Fire;','',''); +REPLACE INTO `item_db` VALUES ('4971','Water_Property_Reactor','Water Property Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDefEle, Ele_Water;','',''); +REPLACE INTO `item_db` VALUES ('4972','Earth_Property_Reactor','Earth Property Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDefEle, Ele_Earth;','',''); +REPLACE INTO `item_db` VALUES ('4973','Wind_Property_Reactor','Wind Property Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDefEle, Ele_Wind;','',''); +REPLACE INTO `item_db` VALUES ('4974','Fire_Resistance_Reactor','Fire Resistance Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Fire, 25; bonus2 bSubEle, Ele_Water, -25;','',''); +REPLACE INTO `item_db` VALUES ('4975','Water_Resistance_Reactor','Water Resistance Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Water, 25; bonus2 bSubEle, Ele_Wind, -25;','',''); +REPLACE INTO `item_db` VALUES ('4976','Earth_Resistance_Reactor','Earth Resistance Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Earth, 25; bonus2 bSubEle, Ele_Fire, -25;','',''); +REPLACE INTO `item_db` VALUES ('4977','Wind_Resistance_Reactor','Wind Resistance Reactor','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubEle, Ele_Wind, 25; bonus2 bSubEle, Ele_Earth, -25;','',''); +REPLACE INTO `item_db` VALUES ('4978','Restoration_Reactor_101','Restoration Reactor 101','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bHPRegenRate, (getrefine() >= 7) ? 100 : 50, 5000;','',''); +REPLACE INTO `item_db` VALUES ('4979','Restoration_Reactor_102','Restoration Reactor 102','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSPRegenRate, (getrefine() >= 7) ? 5 : 3, 500;','',''); +REPLACE INTO `item_db` VALUES ('4980','Restoration_Reactor_201','Restoration Reactor 201','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHPrecovRate, (getrefine() >= 7) ? 100 : 50;','',''); +REPLACE INTO `item_db` VALUES ('4981','Restoration_Reactor_202','Restoration Reactor 202','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bSPrecovRate, (getrefine() >= 7) ? 100 : 50;','',''); +REPLACE INTO `item_db` VALUES ('4982','Auxiliary_Reactor_STR','Auxiliary Reactor STR','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (readparam(bStr) >= 10) bonus bBaseAtk, 5; if (getrefine() >= 7) bonus bBaseAtk, 10;','',''); +REPLACE INTO `item_db` VALUES ('4983','Auxiliary_Reactor_INT','Auxiliary Reactor INT','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (readparam(bInt) >= 10) bonus bMatk, 5; if (getrefine() >= 7) bonus bMatk, 10;','',''); +REPLACE INTO `item_db` VALUES ('4984','Auxiliary_Reactor_DEF','Auxiliary Reactor DEF','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef, 100;','',''); +REPLACE INTO `item_db` VALUES ('4985','Auxiliary_Reactor_Perfect','Auxiliary Reactor Perfect','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee2, 3;','',''); +REPLACE INTO `item_db` VALUES ('4986','Auxiliary_Reactor_Attack','Auxiliary Reactor Attack','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, 20;','',''); +REPLACE INTO `item_db` VALUES ('4987','Auxiliary_Reactor_Magic','Auxiliary Reactor Magic','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMatk, 20;','',''); +REPLACE INTO `item_db` VALUES ('4988','Auxiliary_Reactor_MaxHP','Auxiliary Reactor MaxHP','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate, 5;','',''); +REPLACE INTO `item_db` VALUES ('4989','Auxiliary_Reactor_MaxSP','Auxiliary_Reactor_MaxHP','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxSPrate, 3;','',''); +REPLACE INTO `item_db` VALUES ('4990','Auxiliary_Reactor_Frozen','Auxiliary Reactor Frozen','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff, Eff_Freeze, 10000;','',''); +REPLACE INTO `item_db` VALUES ('4991','Auxiliary_Reactor_ASPD','Auxiliary Reactor ASPD','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd, 1;','',''); +REPLACE INTO `item_db` VALUES ('4992','HPAbsorb1','HP Absorb 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bHPDrainRate, 1, 1;','',''); +REPLACE INTO `item_db` VALUES ('4993','SPAbsorb1','SP Absorb 1','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSPDrainRate, 1, 1;','',''); +REPLACE INTO `item_db` VALUES ('4994','Rune_Of_Might1','Rune Of Might 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bStr, 5; if (getrefine() >= 10) bonus bAtkRate, 10;','',''); +REPLACE INTO `item_db` VALUES ('4995','Rune_Of_Might2','Rune Of Might 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bStr, 6; if (getrefine() >= 11) { bonus bStr, 1; bonus bAtkRate, 7; }','',''); +REPLACE INTO `item_db` VALUES ('4996','Rune_Of_Might3','Rune Of Might 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bStr, 7; if (getrefine() >= 12) { bonus bStr, 1; bonus bAtkRate, 8; } if (getrefine() >= 13) { bonus bStr, 1; bonus bAtkRate, 2; }','',''); +REPLACE INTO `item_db` VALUES ('4997','Rune_Of_Agility1','Rune Of Agility 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bAgi, 5; if (getrefine() >= 10) bonus bFlee2, 5;','',''); +REPLACE INTO `item_db` VALUES ('4998','Rune_Of_Agility2','Rune Of Agility 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bAgi, 6; if (getrefine() >= 11) { bonus bAgi, 1; bonus bFlee2, 7; }','',''); +REPLACE INTO `item_db` VALUES ('4999','Rune_Of_Agility3','Rune Of Agility 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bAgi, 7; if (getrefine() >= 12) { bonus bAgi, 1; bonus bFlee2, 5; } if (getrefine() >= 13) { bonus bAgi, 1; bonus bFlee2, 5; }','',''); REPLACE INTO `item_db` VALUES ('5001','Headset','Headset','5','20','10','200','0','0','6','0','0','2147483646','63','2','256','0','0',NULL,'1','87','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Curse,1000;','',''); REPLACE INTO `item_db` VALUES ('5002','Gemmed_Crown','Jewel Crown','5','20','10','600','0','0','9','0','0','414946','63','2','256','0','60',NULL,'1','88','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,2; bonus bLuk,1; bonus bMdef,3;','',''); REPLACE INTO `item_db` VALUES ('5003','Joker_Jester','Joker Jester','5','20','10','100','0','0','3','0','0','2147483646','63','2','256','0','0',NULL,'1','89','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,2; bonus bMdef,5;','',''); @@ -4961,7 +5092,7 @@ REPLACE INTO `item_db` VALUES ('7520','Chinese_Scroll','Please Be Rich','3','0', REPLACE INTO `item_db` VALUES ('7521','Flame_Stone','Flame Stone','3','112','56','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('7522','Ice_Stone','Ice Stone','3','112','56','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('7523','Wind_Stone','Wind Stone','3','112','56','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('7524','Shadow_Orb','Shadow Orb','3','225','112','20','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('7524','Shadow_Orb','Shadow Orb','3','300','150','20','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('7525','Summer_Feast_Ticket','Summer Festival Ticket','3','10','5','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('7526','Manuscript_Paper','Manuscript Paper','3','2','1','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('7527','Life_Book','Book About True Life','3','0','0','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','506',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -5601,10 +5732,10 @@ REPLACE INTO `item_db` VALUES ('11553','Casual_Stew','Anything Casserole','0','0 REPLACE INTO `item_db` VALUES ('11554','Golden_Roasted_Apple','92 Golden Apple','0','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','itemheal rand(20,30),0;','',''); REPLACE INTO `item_db` VALUES ('11557','TE_White_Potion','TE White Potion','0','200','100','300','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(325,405),0;','',''); REPLACE INTO `item_db` VALUES ('11558','TE_White_Slim_Potion','TE White Slim Potion','0','275','137','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(325,405),0;','',''); -REPLACE INTO `item_db` VALUES ('11592','Trance_Candy_R','Red Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65), 0; montransform BLOODY_MURDERER, 600000, SC_MTF_MHP, 1000;','',''); -REPLACE INTO `item_db` VALUES ('11593','Trance_Candy_B','Blue Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65), 0; montransform BATHORY, 600000, SC_MTF_MSP, 100;','',''); -REPLACE INTO `item_db` VALUES ('11594','Trance_Candy_Y','Yellow Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; montransform JAKK, 600000, SC_MTF_PUMPKIN, 2000;','',''); -REPLACE INTO `item_db` VALUES ('11595','Trance_Candy_G','Green Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; montransform QUVE, 600000, SC_MTF_HITFLEE, 10, 20;','',''); +REPLACE INTO `item_db` VALUES ('11592','Trance_Candy_R','Red Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65), 0; specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Bloody Murderer Fo-rm!!\"; montransform BLOODY_MURDERER, 600000, SC_MTF_MHP, 1000;','',''); +REPLACE INTO `item_db` VALUES ('11593','Trance_Candy_B','Blue Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65), 0; specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!!! Bathory Fo-rm!!\"; montransform BATHORY, 600000, SC_MTF_MSP, 100;','',''); +REPLACE INTO `item_db` VALUES ('11594','Trance_Candy_Y','Yellow Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Jack Fo-rm!!\"; montransform JAKK, 600000, SC_MTF_PUMPKIN, 2000;','',''); +REPLACE INTO `item_db` VALUES ('11595','Trance_Candy_G','Green Transform Candy','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(45,65),0; specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Cube Fo-rm!!\"; montransform QUVE, 600000, SC_MTF_HITFLEE, 10, 20;','',''); REPLACE INTO `item_db` VALUES ('11701','Girl_Bunch_Of_Flower','Girl\'s Bouquet','0','20','10','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal rand(105,145),0;','',''); REPLACE INTO `item_db` VALUES ('11702','Moon_Cookie','Moon Cookie','0','0','0','300','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'1',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('11703','Mysterious_Blood','Mystery Blood','0','0','0','30','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemheal 0,rand(25,35);','',''); @@ -5767,14 +5898,14 @@ REPLACE INTO `item_db` VALUES ('12140','4th_Stage_Prize','Fourth Stage Prize','2 REPLACE INTO `item_db` VALUES ('12141','5th_Stage_Prize','Fifth Stage Prize','2','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('12142','Magic_Book','Book of Magic','2','0','0','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','506',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_AGI,1800000,10;','',''); REPLACE INTO `item_db` VALUES ('12143','Red_Can','Red Can','2','50000','25000','300','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('12144','Sphere_Case_Wind','Lightning Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13204,500;','',''); -REPLACE INTO `item_db` VALUES ('12145','Sphere_Case_Darkness','Blind Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13206,500;','',''); -REPLACE INTO `item_db` VALUES ('12146','Sphere_Case_Poison','Poison Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13205,500;','',''); -REPLACE INTO `item_db` VALUES ('12147','Sphere_Case_Water','Freezing Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13207,500;','',''); -REPLACE INTO `item_db` VALUES ('12148','Sphere_Case_Fire','Flare Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13203,500;','',''); -REPLACE INTO `item_db` VALUES ('12149','Bullet_Case','Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13200,500;','',''); -REPLACE INTO `item_db` VALUES ('12150','Bullet_Case_Blood','Blood Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13202,500;','',''); -REPLACE INTO `item_db` VALUES ('12151','Bullet_Case_Silver','Silver Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem 13201,500;','',''); +REPLACE INTO `item_db` VALUES ('12144','Sphere_Case_Wind','Lightning Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Lighting_Sphere, 500;','',''); +REPLACE INTO `item_db` VALUES ('12145','Sphere_Case_Darkness','Blind Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Blind_Sphere, 500;','',''); +REPLACE INTO `item_db` VALUES ('12146','Sphere_Case_Poison','Poison Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Poison_Sphere, 500;','',''); +REPLACE INTO `item_db` VALUES ('12147','Sphere_Case_Water','Freezing Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Freezing_Sphere, 500;','',''); +REPLACE INTO `item_db` VALUES ('12148','Sphere_Case_Fire','Flare Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Flare_Sphere, 500;','',''); +REPLACE INTO `item_db` VALUES ('12149','Bullet_Case','Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('12150','Bullet_Case_Blood','Blood Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Shell_Of_Blood, 500;','',''); +REPLACE INTO `item_db` VALUES ('12151','Bullet_Case_Silver','Silver Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Silver_Bullet, 500;','',''); REPLACE INTO `item_db` VALUES ('12152','Special_Box','Special Present','2','0','0','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','packageitem();','',''); REPLACE INTO `item_db` VALUES ('12153','Bow_Mercenary_Scroll1','Bowman Scroll 1','2','2','1','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','mercenary_create MER_ARCHER01, 1800000;','',''); REPLACE INTO `item_db` VALUES ('12154','Bow_Mercenary_Scroll2','Bowman Scroll 2','2','2','1','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','499',NULL,'0',NULL,'0',NULL,'0','mercenary_create MER_ARCHER02, 1800000;','',''); @@ -6269,13 +6400,13 @@ REPLACE INTO `item_db` VALUES ('12654','Lucky_Egg_C9','Recruit\'s Mount Gift','2 REPLACE INTO `item_db` VALUES ('12655','Brain_Powder','Brain Powder','11','2000','1000','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('12656','Magical_Powder','Magical Powder','11','3000','1500','200','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('12657','Madness_Powder','Madness Powder','11','4000','2000','300','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('12658','Trans_Scroll_Devi','Transformation Scroll(Deviruchi)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform DEVIRUCHI, 1200000, SC_MTF_ASPD, 10, 5;','',''); -REPLACE INTO `item_db` VALUES ('12659','Trans_Scroll_Ray_Arch','Transformation Scroll(Raydric)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform RAYDRIC_ARCHER, 1200000, SC_MTF_RANGEATK, 25;','',''); -REPLACE INTO `item_db` VALUES ('12660','Trans_Scroll_Mavka','Transformation Scroll(Mavka)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform MAVKA, 1200000, SC_MTF_RANGEATK, 25;','',''); -REPLACE INTO `item_db` VALUES ('12661','Trans_Scroll_Marduk','Transformation Scroll(Marduk)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform MARDUK, 1200000, SC_MTF_MATK, 25;','',''); -REPLACE INTO `item_db` VALUES ('12662','Trans_Scroll_Banshee','Transformation Scroll(Banshee)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform BANSHEE, 1200000, SC_MTF_MATK, 25;','',''); -REPLACE INTO `item_db` VALUES ('12663','Trans_Scroll_Poring','Transformation Scroll(Poring)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform PORING, 1200000, SC_MTF_CRIDAMAGE, 5;','',''); -REPLACE INTO `item_db` VALUES ('12664','Trans_Scroll_Golem','Transformation Scroll(Golem)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; montransform GOLEM, 1200000, SC_MTF_MLEATKED, 2;','',''); +REPLACE INTO `item_db` VALUES ('12658','Trans_Scroll_Devi','Transformation Scroll(Deviruchi)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Deviling Fo-rm!!\"; montransform DEVIRUCHI, 1200000, SC_MTF_ASPD, 10, 5;','',''); +REPLACE INTO `item_db` VALUES ('12659','Trans_Scroll_Ray_Arch','Transformation Scroll(Raydric)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Raydric Archer Fo-rm!!\"; montransform RAYDRIC_ARCHER, 1200000, SC_MTF_RANGEATK, 25;','',''); +REPLACE INTO `item_db` VALUES ('12660','Trans_Scroll_Mavka','Transformation Scroll(Mavka)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Mavka Fo-rm!!\"; montransform MAVKA, 1200000, SC_MTF_RANGEATK, 25;','',''); +REPLACE INTO `item_db` VALUES ('12661','Trans_Scroll_Marduk','Transformation Scroll(Marduk)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Marduk Fo-rm!!\"; montransform MARDUK, 1200000, SC_MTF_MATK, 25;','',''); +REPLACE INTO `item_db` VALUES ('12662','Trans_Scroll_Banshee','Transformation Scroll(Banshee)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Banshee Fo-rm!!\"; montransform BANSHEE, 1200000, SC_MTF_MATK, 25;','',''); +REPLACE INTO `item_db` VALUES ('12663','Trans_Scroll_Poring','Transformation Scroll(Poring)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Poring Fo-rm!!\"; montransform PORING, 1200000, SC_MTF_CRIDAMAGE, 5;','',''); +REPLACE INTO `item_db` VALUES ('12664','Trans_Scroll_Golem','Transformation Scroll(Golem)','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','specialeffect2 EF_CLOAKING; showscript \"Trans-Form-!! Golem Fo-rm!!\"; montransform GOLEM, 1200000, SC_MTF_MLEATKED, 2;','',''); REPLACE INTO `item_db` VALUES ('12665','Grovel_Buff','Grovel Buff','2','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('12666','Thai_Perfume_MATK','Thai Perfume(MATK)','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('12667','Thai_Perfume_ATK','Thai Perfume(ATK)','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -6707,22 +6838,35 @@ REPLACE INTO `item_db` VALUES ('13194','Peace_Breaker','Peace Breaker','5','1950 REPLACE INTO `item_db` VALUES ('13195','RAG203_','RAG203','5','1800000','900000','1300','260','0','0','9','0','1073741824','63','2','34','3','140',NULL,'1','18','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,10; bonus bCriticalRate,15; bonus4 bAutoSpell,AL_DECAGI,1,10,0;','',''); REPLACE INTO `item_db` VALUES ('13196','Peace_Breaker_','Peace Breaker','5','1950000','975000','1400','250','0','0','9','1','1090519040','63','2','34','3','120',NULL,'1','20','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-25; bonus bAspdRate,25;','',''); REPLACE INTO `item_db` VALUES ('13197','Mini_Mei','Mini Mei','5','1600000','800000','2500','220','0','0','9','2','1090519040','63','2','34','2','106',NULL,'1','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('13198','Tempest_','Tempest','5','2200000','1100000','2500','250','0','0','9','0','1090519040','63','2','34','2','140',NULL,'1','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-25; bonus bCritical,10; bonus bLongAtkRate,20;','',''); -REPLACE INTO `item_db` VALUES ('13199','Tempest','Tempest','5','2200000','1100000','2500','250','0','0','9','1','1090519040','63','2','34','2','140',NULL,'1','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-25; bonus bCritical,10; bonus bLongAtkRate,20;','',''); -REPLACE INTO `item_db` VALUES ('13200','Bullet','Bullet','10','1','0','2','10','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('13198','Tempest','Tempest','5','2200000','1100000','2500','250','0','0','9','0','1090519040','63','2','34','2','140',NULL,'1','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-25; bonus bCritical,10; bonus bLongAtkRate,20;','',''); +REPLACE INTO `item_db` VALUES ('13199','Tempest_','Tempest','5','2200000','1100000','2500','250','0','0','9','1','1090519040','63','2','34','2','140',NULL,'1','19','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHit,-25; bonus bCritical,10; bonus bLongAtkRate,20;','',''); +REPLACE INTO `item_db` VALUES ('13200','Bullet','Bullet','10','1','0','2','10','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); REPLACE INTO `item_db` VALUES ('13201','Silver_Bullet','Silver Bullet','10','15','7','2','15','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Holy;','',''); -REPLACE INTO `item_db` VALUES ('13202','Shell_Of_Blood','Bloody Shell','10','30','15','2','30','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Bleeding,100;','',''); +REPLACE INTO `item_db` VALUES ('13202','Shell_Of_Blood','Bloody Shell','10','30','15','2','30','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral; bonus2 bAddEff, Eff_Bleeding, 100;','',''); REPLACE INTO `item_db` VALUES ('13203','Flare_Sphere','Flare Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Fire;','',''); REPLACE INTO `item_db` VALUES ('13204','Lighting_Sphere','Lightning Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Wind;','',''); REPLACE INTO `item_db` VALUES ('13205','Poison_Sphere','Poison Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500;','',''); REPLACE INTO `item_db` VALUES ('13206','Blind_Sphere','Blind Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500;','',''); REPLACE INTO `item_db` VALUES ('13207','Freezing_Sphere','Freezing Sphere','10','80','40','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','5','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle,Ele_Water;','',''); REPLACE INTO `item_db` VALUES ('13208','Gong_Bug','GongBug','10','0','0','20','50','0','0','0','0','16777216','63','2','32768','0','50',NULL,'0','3','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEff,Eff_Stun,1000;','',''); -REPLACE INTO `item_db` VALUES ('13210','Slug_Ammunition_L','Slug Ammunition L','10','250','125','500','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('13211','Slug_Ammunition_M','Slug Ammunition M','10','500','250','500','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('13212','Slug_Ammunition_H','Slug Ammunition H','10','750','375','750','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('13213','Slug_Ammunition_SH','Slug Ammunition SH','10','1','0','1000','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('13214','Slug_Ammunition_XH','Slug Ammunition XH','10','1','0','1200','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('13210','Slug_Ammunition_L','Slug Ammunition L','10','250','125','500','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13211','Slug_Ammunition_M','Slug Ammunition M','10','500','250','500','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13212','Slug_Ammunition_H','Slug Ammunition H','10','750','375','750','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13213','Slug_Ammunition_SH','Slug Ammunition SH','10','1','0','1000','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13214','Slug_Ammunition_XH','Slug Ammunition XH','10','1','0','1200','30','0','0','0','0','1090519040','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13215','Armor_Piercing_Bullet','Armor-Piercing Bullet','10','15','7','2','50','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral;','',''); +REPLACE INTO `item_db` VALUES ('13216','Blazing_Bullet','Blazing Bullet','10','10','5','2','40','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Fire;','',''); +REPLACE INTO `item_db` VALUES ('13217','Freezing_Bullet','Freezing Bullet','10','10','5','2','40','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Water;','',''); +REPLACE INTO `item_db` VALUES ('13218','Lightning_Bullet','Lightning Bullet','10','10','5','2','40','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Wind;','',''); +REPLACE INTO `item_db` VALUES ('13219','Magic_Stone_Bullet','Magic Stone Bullet','10','10','5','2','40','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Earth;','',''); +REPLACE INTO `item_db` VALUES ('13220','Purifying_Bullet','Purifying Bullet','10','10','5','2','40','0','0','0','0','1090519040','63','2','32768','0','100',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Holy;','',''); +REPLACE INTO `item_db` VALUES ('13221','Silver_Bullet_','Silver Bullet','10','5','2','2','15','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Holy;','',''); +REPLACE INTO `item_db` VALUES ('13222','Shell_Of_Blood_','Bloody Shell','10','10','5','2','30','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Neutral; bonus2 bAddEff, Eff_Bleeding, 100;','',''); +REPLACE INTO `item_db` VALUES ('13223','Incendiary_Grenade','Incendiary Grenade','10','15','7','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Fire;','',''); +REPLACE INTO `item_db` VALUES ('13224','Lightning_Grenade','Lightning Grenade','10','15','7','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Wind;','',''); +REPLACE INTO `item_db` VALUES ('13225','Poison_Grenade','Poison Grenade','10','15','7','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Poison; bonus2 bAddEff, Eff_Poison, 500;','',''); +REPLACE INTO `item_db` VALUES ('13226','Flash_Grenade','Flash Grenade','10','15','7','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Dark; bonus2 bAddEff, Eff_Blind, 500;','',''); +REPLACE INTO `item_db` VALUES ('13227','Cyro_Grenade','Cyro Grenade','10','15','7','5','50','0','0','0','0','16777216','63','2','32768','0','0',NULL,'0','3','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkEle, Ele_Water;','',''); REPLACE INTO `item_db` VALUES ('13250','Shuriken','Shuriken','10','4','2','5','10','0','0','0','0','33554432','63','2','32768','0','0',NULL,'0','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('13251','Nimbus_Shuriken','Nimbus Shuriken','10','10','5','5','30','0','0','0','0','33554432','63','2','32768','0','20',NULL,'0','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('13252','Flash_Shuriken','Flash Shuriken','10','20','10','5','45','0','0','0','0','33554432','63','2','32768','0','40',NULL,'0','6','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -7903,6 +8047,9 @@ REPLACE INTO `item_db` VALUES ('16025','TE_Woe_Mace','TE Woe Mace','4','0','0',' REPLACE INTO `item_db` VALUES ('16026','RWC_Memory_Mace','RWC Memory Mace','4','20','10','800','100','0','0','1','1','312754','63','2','2','3','0',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0;','',''); REPLACE INTO `item_db` VALUES ('16027','Evil_Slayer_Destroyer_Hammer','Evil Slayer Destroyer Hammer','4','20','10','1350','120','0','0','1','1','312754','56','2','2','3','100',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; if(getrefine()>=9) { bonus bAtkRate,5; } if(getrefine()>=12) { bonus bAtkRate,7; }','',''); REPLACE INTO `item_db` VALUES ('16028','Thanatos_Hammer','Thanatos Hammer','4','20','10','3000','180','120','0','1','1','312754','56','2','2','4','120',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bSPDrainRate,10,5; bonus2 bHPDrainRate,10,5; bonus2 bHPLossRate,100,10000;','','heal -1000,0;'); +REPLACE INTO `item_db` VALUES ('16030','Pilebunker_S','Pile Bunker S','4','0','0','3000','400','0','0','1','1','1024','56','2','2','4','130',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate, (getrefine() / 2);','',''); +REPLACE INTO `item_db` VALUES ('16031','Pilebunker_P','Pile Bunker P','4','0','0','4000','450','0','0','1','0','1024','56','2','2','4','130',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, (getrefine() * 5);','',''); +REPLACE INTO `item_db` VALUES ('16032','Pilebunker_T','Pile Bunker T','4','0','0','3500','400','0','0','1','1','1024','56','2','2','4','130',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUseSPrate, - getrefine();','',''); REPLACE INTO `item_db` VALUES ('16039','Spoon','Spoon','4','20','10','100','80','0','0','1','1','312755','63','2','2','3','40',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,10; bonus2 bAddEff,Eff_Curse,1000;','',''); REPLACE INTO `item_db` VALUES ('16040','Crimson_Mace','Crimson Mace','4','20','10','800','80','0','0','1','2','312755','63','2','2','3','70',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableWeapon,0; bonus bAtk,pow(min(getrefine(),15),2); if(BaseLevel>70) { bonus bAtk,(((BaseLevel-70)/10)*5); }','',''); REPLACE INTO `item_db` VALUES ('16041','Mace_of_Vicious_Mind','Mace of Vicious Mind','4','20','10','1300','130','0','0','1','1','312755','63','2','2','4','160',NULL,'1','8','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,0;','',''); @@ -9590,6 +9737,19 @@ REPLACE INTO `item_db` VALUES ('22676','Hangul_Day_Event_Box','Hangul Day Event REPLACE INTO `item_db` VALUES ('22679','Death_Bin','Death Bin','18','10','5','0','0','0','0','0','0','4294967295','63','2','0','0','170',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('22685','Solo_Christmas_Gift','Single Union Christmas Gift','2','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','467',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('22686','Solo_Cookie','Single Cookie','0','0','0','50','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','percentheal 5,5;','',''); +REPLACE INTO `item_db` VALUES ('22737','Bloody_Cartrige','Bloody Bullet Case','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Shell_Of_Blood_, 500;','',''); +REPLACE INTO `item_db` VALUES ('22738','Silver_Cartrige','Silver Bullet Case','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Silver_Bullet_, 500;','',''); +REPLACE INTO `item_db` VALUES ('22739','Lightning_Sphere_Pack','Lightning Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Lightning_Grenade, 500;','',''); +REPLACE INTO `item_db` VALUES ('22740','Blind_Sphere_Pack','Blind Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Flash_Grenade, 500;','',''); +REPLACE INTO `item_db` VALUES ('22741','Poison_Sphere_Pack','Poison Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Poison_Grenade, 500;','',''); +REPLACE INTO `item_db` VALUES ('22742','Freezing_Sphere_Pack','Freezing Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Cyro_Grenade, 500;','',''); +REPLACE INTO `item_db` VALUES ('22743','Flare_Sphere_Pack','Flare Sphere Pack','2','2','1','350','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Incendiary_Grenade, 500;','',''); +REPLACE INTO `item_db` VALUES ('22744','Armor_Piercing_Cartrige','Armor-Piercing Cartrige','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Armor_Piercing_Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('22745','Incandescence_Shot_Cartridge','Incandescence Shot Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Blazing_Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('22746','Glaciation_Shot_Cartridge','Glaciation Shot Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Freezing_Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('22747','Dengeki_Shot_Cartridge','Dengeki Shot Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Lightning_Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('22748','Hearthstone_Shot_Cartridge','Hearthstone Shot Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Magic_Stone_Bullet, 500;','',''); +REPLACE INTO `item_db` VALUES ('22749','Purification_Shot_Cartridge','Purification Shot Cartridge','2','2','1','250','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getitem Purifying_Bullet, 500;','',''); REPLACE INTO `item_db` VALUES ('22777','Buff_Gift_Set','Buff Gift Set','2','20','10','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','getitem 14534,5; getitem 12215,5; getitem 12216,5;','',''); REPLACE INTO `item_db` VALUES ('22837','Integer_Time','Integer Time','2','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','50',NULL,'0','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','TmpRouletteBronze += 1;','',''); REPLACE INTO `item_db` VALUES ('22838','Pumpkin_Candy_Holder','Pumpkin Candy Holder','2','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getrandgroupitem 22838,1;','',''); @@ -9879,3 +10039,30 @@ REPLACE INTO `item_db` VALUES ('28706','Dagger_of_Vicious_Mind','Dagger of Vicio REPLACE INTO `item_db` VALUES ('28900','Praetorian_Shield','Praetorian Shield','5','20','10','3000','0','0','30','0','1','4294967295','63','2','32','0','100',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','skill LG_SHIELDSPELL,1; bonus3 bAutoSpellWhenHit,HP_ASSUMPTIO,3,20+(getrefine()); bonus bDef,getrefine()*10; bonus bMdef,getrefine();','',''); REPLACE INTO `item_db` VALUES ('28901','Cursed_Mad_Bunny','Cursed Mad Bunny','5','0','0','100','0','0','0','0','0','4294967295','63','2','32','0','0',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspd,3; bonus bAtkRate,5; bonus bMatkRate,5; bonus bShortWeaponDamageReturn,10; autobonus \"{ bonus bMagicDamageReturn,60; }\",100,2000,BF_MAGIC,\"{ specialeffect2 EF_NONE; }\"; if(getrefine()>6) { bonus bAtk,5; bonus bMatk,5; } if(getrefine()>8) { bonus bAtk,10; bonus bMatk,10; } if(getrefine()>11) { bonus bNoCastCancel,0; bonus bCritical,10; }','',''); REPLACE INTO `item_db` VALUES ('28902','Mad_Bunny_','Mad Bunny','5','0','0','100','0','0','0','0','1','4294967295','63','2','32','0','0',NULL,'1','1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAtkRate,5; bonus bMatkRate,5; bonus bShortWeaponDamageReturn,10; autobonus \"{ bonus bMagicDamageReturn,60; }\",100,2000,BF_MAGIC,\"{ specialeffect2 EF_NONE; }\"; if(getrefine()>6) { bonus bAtk,5; bonus bMatk,5; } if(getrefine()>8) { bonus bAtk,10; bonus bMatk,10; } if(getrefine()>11) { bonus bNoCastCancel,0; bonus bCritical,10; }','',''); +REPLACE INTO `item_db` VALUES ('29000','Rune_Of_Magic1','Rune Of Magic Power 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bInt, 5; if (getrefine() >= 10) bonus bMatkRate, 5;','',''); +REPLACE INTO `item_db` VALUES ('29001','Rune_Of_Magic2','Rune Of Magic Power 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bInt, 6; if (getrefine() >= 11) { bonus bInt, 1; bonus bMatkRate, 7; }','',''); +REPLACE INTO `item_db` VALUES ('29002','Rune_Of_Magic3','Rune Of Magic Power 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bInt, 7; if (getrefine() >= 12) { bonus bInt, 1; bonus bMatkRate, 8; } if (getrefine() >= 13) { bonus bInt, 1; bonus bMatkRate, 2; }','',''); +REPLACE INTO `item_db` VALUES ('29003','Rune_Of_Dexterity1','Rune Of Dexterity 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bDex, 5; if (getrefine() >= 10) bonus bLongAtkRate, 5;','',''); +REPLACE INTO `item_db` VALUES ('29004','Rune_Of_Dexterity2','Rune Of Dexterity 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bDex, 6; if (getrefine() >= 11) { bonus bDex, 1; bonus bLongAtkRate, 7; }','',''); +REPLACE INTO `item_db` VALUES ('29005','Rune_Of_Dexterity3','Rune Of Dexterity 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bDex, 7; if (getrefine() >= 12) { bonus bDex, 1; bonus bLongAtkRate, 8; } if (getrefine() >= 13) { bonus bDex, 1; bonus bLongAtkRate, 2; }','',''); +REPLACE INTO `item_db` VALUES ('29006','Rune_Of_Fortune1','Rune Of Fortune 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bLuk, 5; if (getrefine() >= 10) bonus bCritAtkRate, 5;','',''); +REPLACE INTO `item_db` VALUES ('29007','Rune_Of_Fortune2','Rune Of Fortune 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bLuk, 6; if (getrefine() >= 11) { bonus bLuk, 1; bonus bCritAtkRate, 7; }','',''); +REPLACE INTO `item_db` VALUES ('29008','Rune_Of_Fortune3','Rune Of Fortune 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bLuk, 7; if (getrefine() >= 12) { bonus bLuk, 1; bonus bCritAtkRate, 8; } if (getrefine() >= 13) { bonus bLuk, 1; bonus bCritAtkRate, 6; }','',''); +REPLACE INTO `item_db` VALUES ('29009','Rune_Of_Stamina1','Rune Of Stamina 1Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bVit, 5; if (getrefine() >= 10) bonus bMaxHPrate, 5;','',''); +REPLACE INTO `item_db` VALUES ('29010','Rune_Of_Stamina2','Rune Of Stamina 2Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bVit, 6; if (getrefine() >= 11) { bonus bVit, 1; bonus bMaxHPrate, 7; }','',''); +REPLACE INTO `item_db` VALUES ('29011','Rune_Of_Stamina3','Rune Of Stamina 3Lv','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if (getrefine() >= 7) bonus bVit, 7; if (getrefine() >= 12) { bonus bVit, 1; bonus bMaxHPrate, 8; } if (getrefine() >= 13) { bonus bVit, 1; bonus bMaxHPrate, 2; }','',''); +REPLACE INTO `item_db` VALUES ('29013','HPAbsorb3','HP Absorb 3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bHPDrainRate, 1, 3;','',''); +REPLACE INTO `item_db` VALUES ('29014','STR3_INT3','STR+3 INT-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr, 3; bonus bInt, -3;','',''); +REPLACE INTO `item_db` VALUES ('29015','STR3_DEX3','STR+3 DEX-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr, 3; bonus bDex, -3;','',''); +REPLACE INTO `item_db` VALUES ('29016','INT3_DEX3','INT+3 DEX-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt, 3; bonus bDex, -3;','',''); +REPLACE INTO `item_db` VALUES ('29017','INT3_VIT3','INT+3 VIT-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt, 3; bonus bVit, -3;','',''); +REPLACE INTO `item_db` VALUES ('29018','DEX3_VIT3','DEX+3 VIT-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex, 3; bonus bVit, -3;','',''); +REPLACE INTO `item_db` VALUES ('29019','DEX3_AGI3','DEX+3 AGI-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex, 3; bonus bAgi, -3;','',''); +REPLACE INTO `item_db` VALUES ('29020','VIT3_AGI3','VIT+3 AGI-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit, 3; bonus bAgi, -3;','',''); +REPLACE INTO `item_db` VALUES ('29021','VIT3_LUK3','VIT+3 LUK-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit, 3; bonus bLuk, -3;','',''); +REPLACE INTO `item_db` VALUES ('29022','AGI3_LUK3','AGI+3 LUK-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi, 3; bonus bLuk, -3;','',''); +REPLACE INTO `item_db` VALUES ('29023','AGI3_STR3','AGI+3 STR-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi, 3; bonus bStr, -3;','',''); +REPLACE INTO `item_db` VALUES ('29024','LUK3_STR3','LUK+3 STR-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk, 3; bonus bStr, -3;','',''); +REPLACE INTO `item_db` VALUES ('29025','LUK3_INT3','LUK+3 INT-3','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk, 3; bonus bInt, -3;','',''); +REPLACE INTO `item_db` VALUES ('29026','DEF20','DEF+20','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDef, 20;','',''); +REPLACE INTO `item_db` VALUES ('29027','EXP2','EXP+2%','6','0','0','0','0','0','0','0','0','4294967295','63','2','1023','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace, RC_All, 2;','',''); diff --git a/sql-files/main.sql b/sql-files/main.sql index 864b86865..1ed751d15 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2012-2015 Hercules Dev Team +-- Copyright (C) 2012-2016 Hercules Dev Team -- Copyright (C) Athena Dev Teams -- -- Hercules is free software: you can redistribute it and/or modify @@ -149,13 +149,13 @@ CREATE TABLE IF NOT EXISTS `char` ( `str` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', `agi` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', `vit` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', - `INT` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', + `int` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', `dex` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', `luk` SMALLINT(4) UNSIGNED NOT NULL DEFAULT '0', - `max_hp` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', - `hp` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', - `max_sp` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0', - `sp` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT '0', + `max_hp` INT(9) UNSIGNED NOT NULL DEFAULT '0', + `hp` INT(9) UNSIGNED NOT NULL DEFAULT '0', + `max_sp` INT(9) UNSIGNED NOT NULL DEFAULT '0', + `sp` INT(9) UNSIGNED NOT NULL DEFAULT '0', `status_point` INT(11) UNSIGNED NOT NULL DEFAULT '0', `skill_point` INT(11) UNSIGNED NOT NULL DEFAULT '0', `option` INT(11) NOT NULL DEFAULT '0', @@ -169,6 +169,7 @@ CREATE TABLE IF NOT EXISTS `char` ( `hair` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0', `hair_color` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0', `clothes_color` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0', + `body` SMALLINT(5) unsigned NOT NULL default '0', `weapon` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0', `shield` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0', `head_top` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0', @@ -821,6 +822,8 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1414975503); -- 2014-11-0 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1435860840); -- 2015-07-02--18-14.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1436360978); -- 2015-07-08--13-08.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1440688342); -- 2015-08-27--20-42.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1450241859); -- 2015-12-16--12-57.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1450367880); -- 2015-12-17--15-58.sql -- -- Table structure for table `storage` diff --git a/sql-files/upgrades/2015-12-16--12-57.sql b/sql-files/upgrades/2015-12-16--12-57.sql new file mode 100644 index 000000000..cc9ce799e --- /dev/null +++ b/sql-files/upgrades/2015-12-16--12-57.sql @@ -0,0 +1,26 @@ +#1450241859 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2015-2016 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +ALTER TABLE `char` MODIFY COLUMN `max_hp` INT(9) NOT NULL DEFAULT '0'; +ALTER TABLE `char` MODIFY COLUMN `max_sp` INT(9) NOT NULL DEFAULT '0'; +ALTER TABLE `char` MODIFY COLUMN `hp` INT(9) NOT NULL DEFAULT '0'; +ALTER TABLE `char` MODIFY COLUMN `sp` INT(9) NOT NULL DEFAULT '0'; + +INSERT INTO `sql_updates` (`timestamp`) VALUES (1450241859); diff --git a/sql-files/upgrades/2015-12-17--15-58.sql b/sql-files/upgrades/2015-12-17--15-58.sql new file mode 100644 index 000000000..8d3dc51a3 --- /dev/null +++ b/sql-files/upgrades/2015-12-17--15-58.sql @@ -0,0 +1,22 @@ +#1450367880 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2015 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +ALTER TABLE `char` ADD `body` smallint(5) unsigned NOT NULL default '0' AFTER `clothes_color`; +INSERT INTO `sql_updates` (`timestamp`) VALUES (1450367880); diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index 5f6aed963..e73a8659d 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -27,4 +27,5 @@ 2014-11-03--00-45.sql 2015-07-02--18-14.sql 2015-07-08--13-08.sql -2015-08-27--20-42.sql
\ No newline at end of file +2015-08-27--20-42.sql +2015-12-17--15-58.sql diff --git a/src/char/char.c b/src/char/char.c index e991aafcc..09f74034c 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -508,7 +508,8 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) //Values that will seldom change (to speed up saving) if ( - (p->hair != cp->hair) || (p->hair_color != cp->hair_color) || (p->clothes_color != cp->clothes_color) || + (p->hair != cp->hair) || (p->hair_color != cp->hair_color) || + (p->clothes_color != cp->clothes_color) || (p->body != cp->body) || (p->class_ != cp->class_) || (p->partner_id != cp->partner_id) || (p->father != cp->father) || (p->mother != cp->mother) || (p->child != cp->child) || @@ -517,12 +518,12 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) ) { if( SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `class`='%d'," - "`hair`='%d',`hair_color`='%d',`clothes_color`='%d'," + "`hair`='%d', `hair_color`='%d', `clothes_color`='%d', `body`='%d'," "`partner_id`='%d', `father`='%d', `mother`='%d', `child`='%d'," - "`karma`='%d',`manner`='%d', `fame`='%d'" + "`karma`='%d', `manner`='%d', `fame`='%d'" " WHERE `account_id`='%d' AND `char_id` = '%d'", char_db, p->class_, - p->hair, p->hair_color, p->clothes_color, + p->hair, p->hair_color, p->clothes_color, p->body, p->partner_id, p->father, p->mother, p->child, p->karma, p->manner, p->fame, p->account_id, p->char_id) ) @@ -1070,7 +1071,7 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) "`char_id`,`char_num`,`name`,`class`,`base_level`,`job_level`,`base_exp`,`job_exp`,`zeny`," "`str`,`agi`,`vit`,`int`,`dex`,`luk`,`max_hp`,`hp`,`max_sp`,`sp`," "`status_point`,`skill_point`,`option`,`karma`,`manner`,`hair`,`hair_color`," - "`clothes_color`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`rename`,`delete_date`," + "`clothes_color`,`body`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`rename`,`delete_date`," "`robe`,`slotchange`,`unban_time`,`sex`" " FROM `%s` WHERE `account_id`='%d' AND `char_num` < '%d'", char_db, sd->account_id, MAX_CHARS) || SQL_ERROR == SQL->StmtExecute(stmt) @@ -1101,18 +1102,19 @@ int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) || SQL_ERROR == SQL->StmtBindColumn(stmt, 24, SQLDT_SHORT, &p.hair, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 25, SQLDT_SHORT, &p.hair_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 26, SQLDT_SHORT, &p.clothes_color, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.weapon, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.shield, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.head_top, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.head_mid, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.head_bottom, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_USHORT, &p.rename, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_UINT32, &p.delete_date, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p.robe, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_USHORT, &p.slotchange, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_LONG, &unban_time, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 27, SQLDT_SHORT, &p.body, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 28, SQLDT_SHORT, &p.weapon, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 29, SQLDT_SHORT, &p.shield, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p.head_top, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p.head_mid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p.head_bottom, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_USHORT, &p.rename, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_UINT32, &p.delete_date, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p.robe, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_USHORT, &p.slotchange, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_LONG, &unban_time, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL) ) { SqlStmt_ShowDebug(stmt); SQL->StmtFree(stmt); @@ -1176,7 +1178,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every "`char_id`,`account_id`,`char_num`,`name`,`class`,`base_level`,`job_level`,`base_exp`,`job_exp`,`zeny`," "`str`,`agi`,`vit`,`int`,`dex`,`luk`,`max_hp`,`hp`,`max_sp`,`sp`," "`status_point`,`skill_point`,`option`,`karma`,`manner`,`party_id`,`guild_id`,`pet_id`,`homun_id`,`elemental_id`,`hair`," - "`hair_color`,`clothes_color`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`last_x`,`last_y`," + "`hair_color`,`clothes_color`,`body`,`weapon`,`shield`,`head_top`,`head_mid`,`head_bottom`,`last_map`,`last_x`,`last_y`," "`save_map`,`save_x`,`save_y`,`partner_id`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`robe`,`slotchange`," "`char_opt`,`font`,`uniqueitem_counter`,`sex`,`hotkey_rowshift`" " FROM `%s` WHERE `char_id`=? LIMIT 1", char_db) @@ -1215,31 +1217,32 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every || SQL_ERROR == SQL->StmtBindColumn(stmt, 30, SQLDT_SHORT, &p->hair, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, 0, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->weapon, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->shield, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->head_top, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->head_mid, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->head_bottom, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_SHORT, &p->last_point.x, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_SHORT, &p->last_point.y, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_STRING, &save_map, sizeof(save_map), NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 42, SQLDT_SHORT, &p->save_point.x, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 43, SQLDT_SHORT, &p->save_point.y, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 44, SQLDT_INT, &p->partner_id, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 45, SQLDT_INT, &p->father, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 46, SQLDT_INT, &p->mother, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 47, SQLDT_INT, &p->child, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 48, SQLDT_INT, &p->fame, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_USHORT, &p->rename, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_UINT32, &p->delete_date, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_SHORT, &p->robe, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_USHORT, &p->slotchange, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_UINT, &opt, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UCHAR, &p->font, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UINT, &p->uniqueitem_counter, 0, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 56, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 57, SQLDT_UCHAR, &p->hotkey_rowshift, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 33, SQLDT_SHORT, &p->body, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 34, SQLDT_SHORT, &p->weapon, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 35, SQLDT_SHORT, &p->shield, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 36, SQLDT_SHORT, &p->head_top, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 37, SQLDT_SHORT, &p->head_mid, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 38, SQLDT_SHORT, &p->head_bottom, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 39, SQLDT_STRING, &last_map, sizeof(last_map), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 40, SQLDT_SHORT, &p->last_point.x, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 41, SQLDT_SHORT, &p->last_point.y, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 42, SQLDT_STRING, &save_map, sizeof(save_map), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 43, SQLDT_SHORT, &p->save_point.x, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 44, SQLDT_SHORT, &p->save_point.y, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 45, SQLDT_INT, &p->partner_id, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 46, SQLDT_INT, &p->father, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 47, SQLDT_INT, &p->mother, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 48, SQLDT_INT, &p->child, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 49, SQLDT_INT, &p->fame, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 50, SQLDT_USHORT, &p->rename, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 51, SQLDT_UINT32, &p->delete_date, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 52, SQLDT_SHORT, &p->robe, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 53, SQLDT_USHORT, &p->slotchange, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 54, SQLDT_UINT, &opt, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 55, SQLDT_UCHAR, &p->font, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 56, SQLDT_UINT, &p->uniqueitem_counter, 0, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 57, SQLDT_ENUM, &sex, sizeof(sex), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 58, SQLDT_UCHAR, &p->hotkey_rowshift, 0, NULL, NULL) ) { SqlStmt_ShowDebug(stmt); SQL->StmtFree(stmt); @@ -1998,12 +2001,11 @@ int char_mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) { WBUFW(buf,48) = min(p->max_sp, INT16_MAX); WBUFW(buf,50) = DEFAULT_WALK_SPEED; // p->speed; WBUFW(buf,52) = p->class_; + WBUFW(buf,54) = p->hair; #if PACKETVER >= 20141022 - WBUFL(buf,54) = p->hair; + WBUFW(buf,56) = p->body; offset+=2; buf = WBUFP(buffer,offset); -#else - WBUFW(buf,54) = p->hair; #endif //When the weapon is sent and your option is riding, the client crashes on login!? diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index e849e6620..666d306db 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2014-2015 Hercules Dev Team + * Copyright (C) 2014-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -587,6 +587,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "s_autospell", sizeof(struct s_autospell), SERVER_TYPE_MAP }, { "sg_data", sizeof(struct sg_data), SERVER_TYPE_MAP }, { "skill_tree_entry", sizeof(struct skill_tree_entry), SERVER_TYPE_MAP }, + { "skill_tree_requirement", sizeof(struct skill_tree_requirement), SERVER_TYPE_MAP }, { "weapon_data", sizeof(struct weapon_data), SERVER_TYPE_MAP }, #else #define MAP_PC_H diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h index db9108774..b06c43bf8 100644 --- a/src/common/HPMSymbols.inc.h +++ b/src/common/HPMSymbols.inc.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2015-2015 Hercules Dev Team + * Copyright (C) 2015-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/mmo.h b/src/common/mmo.h index 3c556636c..eb1d7cc8e 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -501,7 +501,7 @@ struct mmo_charstatus { unsigned int option; short manner; // Defines how many minutes a char will be muted, each negative point is equivalent to a minute. unsigned char karma; - short hair,hair_color,clothes_color; + short hair,hair_color,clothes_color,body; int party_id,guild_id,pet_id,hom_id,mer_id,ele_id; int fame; diff --git a/src/map/atcommand.c b/src/map/atcommand.c index c26daee54..9d03dd057 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -609,7 +609,7 @@ ACMD(jump) * various info. *------------------------------------------*/ ACMD(who) { - struct map_session_data *pl_sd = NULL; + const struct map_session_data *pl_sd = NULL; struct s_mapiterator *iter = NULL; char player_name[NAME_LENGTH] = ""; int count = 0; @@ -640,7 +640,7 @@ ACMD(who) { StrBuf->Init(&buf); iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { if (!((pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) || pc_isinvisible(pl_sd)) && pc_get_group_level(pl_sd) > level)) { // you can look only lower or same level if (stristr(pl_sd->status.name, player_name) == NULL // search with no case sensitive || (map_id >= 0 && pl_sd->bl.m != map_id)) @@ -709,7 +709,7 @@ ACMD(who) { *------------------------------------------*/ ACMD(whogm) { - struct map_session_data* pl_sd; + const struct map_session_data *pl_sd; struct s_mapiterator* iter; int j, count; int level; @@ -731,7 +731,7 @@ ACMD(whogm) level = pc_get_group_level(sd); iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { int pl_level = pc_get_group_level(pl_sd); if (!pl_level) continue; @@ -1315,12 +1315,11 @@ ACMD(item2) } if (item_data->type == IT_PETARMOR) refine = 0; - if (refine > MAX_REFINE) - refine = MAX_REFINE; } else { identify = 1; refine = attr = 0; } + refine = cap_value(refine, 0, MAX_REFINE); for (i = 0; i < loop; i++) { memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = item_id; @@ -1564,8 +1563,11 @@ int atcommand_stopattack(struct block_list *bl,va_list ap) *------------------------------------------*/ int atcommand_pvpoff_sub(struct block_list *bl,va_list ap) { - TBL_PC* sd = (TBL_PC*)bl; + struct map_session_data *sd = NULL; nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + clif->pvpset(sd, 0, 0, 2); if (sd->pvp_timer != INVALID_TIMER) { timer->delete(sd->pvp_timer, pc->calc_pvprank_timer); @@ -1599,8 +1601,11 @@ ACMD(pvpoff) *------------------------------------------*/ int atcommand_pvpon_sub(struct block_list *bl,va_list ap) { - TBL_PC* sd = (TBL_PC*)bl; + struct map_session_data *sd = NULL; nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + if (sd->pvp_timer == INVALID_TIMER) { sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; @@ -1704,6 +1709,32 @@ ACMD(model) } /*========================================== + * @bodystyle [Rytech] + *------------------------------------------*/ +ACMD(bodystyle) +{ + int body_style = 0; + + memset(atcmd_output, '\0', sizeof(atcmd_output)); + + if (!*message || sscanf(message, "%d", &body_style) < 1) { + sprintf(atcmd_output, "Please, enter a body style (usage: @bodystyle <body ID: %d-%d>).", MIN_BODY_STYLE, MAX_BODY_STYLE); + clif->message(fd, atcmd_output); + return false; + } + + if (body_style >= MIN_BODY_STYLE && body_style <= MAX_BODY_STYLE) { + pc->changelook(sd, LOOK_BODY2, body_style); + clif->message(fd, msg_txt(36)); // Appearence changed. + } else { + clif->message(fd, msg_txt(37)); // An invalid number was specified. + return false; + } + + return true; +} + +/*========================================== * @dye && @ccolor *------------------------------------------*/ ACMD(dye) @@ -2016,10 +2047,12 @@ ACMD(monster) *------------------------------------------*/ int atkillmonster_sub(struct block_list *bl, va_list ap) { - struct mob_data *md = (struct mob_data *)bl; + struct mob_data *md = NULL; int flag = va_arg(ap, int); - nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); + if (md->guardian_data) return 0; //Do not touch WoE mobs! @@ -2934,10 +2967,8 @@ ACMD(doom) struct s_mapiterator* iter; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) - { - if (pl_sd->fd != fd && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) - { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { + if (pl_sd->fd != fd && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment. @@ -2959,10 +2990,8 @@ ACMD(doommap) struct s_mapiterator* iter; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) - { - if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) - { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { + if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment. @@ -2996,7 +3025,7 @@ ACMD(raise) struct s_mapiterator* iter; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) if( pc_isdead(pl_sd) ) atcommand->raise_sub(pl_sd); mapit->free(iter); @@ -3015,7 +3044,7 @@ ACMD(raisemap) struct s_mapiterator* iter; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) if (sd->bl.m == pl_sd->bl.m && pc_isdead(pl_sd) ) atcommand->raise_sub(pl_sd); mapit->free(iter); @@ -3064,8 +3093,7 @@ ACMD(kickall) struct s_mapiterator* iter; iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) - { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { // you can kick only lower or same gm level if (sd->status.account_id != pl_sd->status.account_id) clif->GM_kick(NULL, pl_sd); @@ -3399,7 +3427,7 @@ ACMD(recallall) count = 0; iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (sd->status.account_id != pl_sd->status.account_id && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) continue; // Don't waste time warping the character to the same place. @@ -3459,8 +3487,7 @@ ACMD(guildrecall) count = 0; iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) - { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.guild_id == g->guild_id) { if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) continue; // Skip GMs greater than you... or chars already on the cell @@ -3516,7 +3543,7 @@ ACMD(partyrecall) count = 0; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.party_id == p->party.party_id) { if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) continue; // Skip GMs greater than you... or chars already on the cell @@ -3679,7 +3706,7 @@ ACMD(reloadscript) { //atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" ); iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (pl_sd->npc_id || pl_sd->npc_shopid) { if (pl_sd->state.using_fake_npc) { clif->clearunit_single(pl_sd->npc_id, CLR_OUTSIGHT, pl_sd->fd); @@ -3717,10 +3744,11 @@ ACMD(reloadscript) { * 3 = Shows the chats in that map TODO# add the missing mapflags e.g. adjust_skill_damage to display *------------------------------------------*/ -ACMD(mapinfo) { - struct map_session_data* pl_sd; +ACMD(mapinfo) +{ + const struct map_session_data *pl_sd; struct s_mapiterator* iter; - struct chat_data *cd = NULL; + const struct chat_data *cd = NULL; char direction[12]; int i, m_id, chat_num = 0, list = 0, vend_num = 0; unsigned short m_index; @@ -3755,11 +3783,11 @@ ACMD(mapinfo) { // count chats (for initial message) chat_num = 0; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { if( pl_sd->mapindex == m_index ) { if( pl_sd->state.vending ) vend_num++; - else if( (cd = (struct chat_data*)map->id2bl(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd ) + else if ((cd = map->id2cd(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd) chat_num++; } } @@ -3900,8 +3928,7 @@ ACMD(mapinfo) { case 1: clif->message(fd, msg_fd(fd,1098)); // ----- Players in Map ----- iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) - { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { if (pl_sd->mapindex == m_index) { safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1099), // Player '%s' (session #%d) | Location: %d,%d pl_sd->status.name, pl_sd->fd, pl_sd->bl.x, pl_sd->bl.y); @@ -3938,12 +3965,8 @@ ACMD(mapinfo) { case 3: clif->message(fd, msg_fd(fd,1113)); // ----- Chats in Map ----- iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) - { - if ((cd = (struct chat_data*)map->id2bl(pl_sd->chatID)) != NULL && - pl_sd->mapindex == m_index && - cd->usersd[0] == pl_sd) - { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { + if ((cd = map->id2cd(pl_sd->chatID)) != NULL && pl_sd->mapindex == m_index && cd->usersd[0] == pl_sd) { safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1114), // Chat: %s | Player: %s | Location: %d %d cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y); clif->message(fd, atcmd_output); @@ -4724,7 +4747,7 @@ ACMD(disguiseall) } iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) pc->disguise(pl_sd, mob_id); mapit->free(iter); @@ -4804,7 +4827,7 @@ ACMD(undisguiseall) { struct s_mapiterator* iter; iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) if( pl_sd->disguise != -1 ) pc->disguise(pl_sd, -1); mapit->free(iter); @@ -5364,12 +5387,13 @@ ACMD(displayskill) { * @skilltree by [MouseJstr] * prints the skill tree for a player required to get to a skill *------------------------------------------*/ -ACMD(skilltree) { +ACMD(skilltree) +{ struct map_session_data *pl_sd = NULL; uint16 skill_id; int meets, j, c=0; char target[NAME_LENGTH]; - struct skill_tree_entry *ent; + struct skill_tree_entry *entry; if(!*message || sscanf(message, "%5hu %23[^\r\n]", &skill_id, target) != 2) { clif->message(fd, msg_fd(fd,1167)); // Usage: @skilltree <skill ID> <target> @@ -5387,21 +5411,19 @@ ACMD(skilltree) { safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1168), pc->job_name(c), pc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points). clif->message(fd, atcmd_output); - ARR_FIND( 0, MAX_SKILL_TREE, j, pc->skill_tree[c][j].id == 0 || pc->skill_tree[c][j].id == skill_id ); - if( j == MAX_SKILL_TREE || pc->skill_tree[c][j].id == 0 ) - { + ARR_FIND(0, MAX_SKILL_TREE, j, pc->skill_tree[c][j].id == 0 || pc->skill_tree[c][j].id == skill_id); + if (j == MAX_SKILL_TREE || pc->skill_tree[c][j].id == 0) { clif->message(fd, msg_fd(fd,1169)); // The player cannot use that skill. return false; } - ent = &pc->skill_tree[c][j]; + entry = &pc->skill_tree[c][j]; meets = 1; - for(j=0;j<MAX_PC_SKILL_REQUIRE;j++) - { - if( ent->need[j].id && pc->checkskill(sd,ent->need[j].id) < ent->need[j].lv) - { - safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1170), ent->need[j].lv, skill->dbs->db[ent->need[j].id].desc); // Player requires level %d of skill %s. + for (j = 0; j < VECTOR_LENGTH(entry->need); j++) { + struct skill_tree_requirement *req = &VECTOR_INDEX(entry->need, j); + if (pc->checkskill(sd, req->id) < req->lv) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1170), req->lv, skill->dbs->db[req->id].desc); // Player requires level %d of skill %s. clif->message(fd, atcmd_output); meets = 0; } @@ -5486,7 +5508,7 @@ ACMD(divorce) ACMD(changelook) { int i, j = 0, k = 0; - int pos[7] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE }; + int pos[8] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE,LOOK_BODY2 }; if((i = sscanf(message, "%12d %12d", &j, &k)) < 1) { clif->message(fd, msg_fd(fd,1177)); // Usage: @changelook {<position>} <view id> @@ -6041,7 +6063,8 @@ ACMD(mobsearch) char mob_name[100]; int mob_id; int number = 0; - struct s_mapiterator* it; + struct s_mapiterator *it; + const struct mob_data *md = NULL; if (!*message || sscanf(message, "%99[^\n]", mob_name) < 1) { clif->message(fd, msg_fd(fd,1218)); // Please enter a monster name (usage: @mobsearch <monster name>). @@ -6063,12 +6086,7 @@ ACMD(mobsearch) clif->message(fd, atcmd_output); it = mapit_geteachmob(); - for(;;) - { - TBL_MOB* md = (TBL_MOB*)mapit->next(it); - if( md == NULL ) - break;// no more mobs - + for (md = BL_UCCAST(BL_MOB, mapit->first(it)); mapit->exists(it); md = BL_UCCAST(BL_MOB, mapit->next(it))) { if( md->bl.m != sd->bl.m ) continue; if( mob_id != -1 && md->class_ != mob_id ) @@ -6226,24 +6244,22 @@ ACMD(users) char buf[CHAT_SIZE_MAX]; int users[MAX_MAPINDEX]; int users_all; - struct s_mapiterator* iter; + struct s_mapiterator *iter; + const struct map_session_data *pl_sd = NULL; memset(users, 0, sizeof(users)); users_all = 0; // count users on each map iter = mapit_getallusers(); - for(;;) - { - struct map_session_data* sd2 = (struct map_session_data*)mapit->next(iter); - if( sd2 == NULL ) - break;// no more users - - if( sd2->mapindex >= MAX_MAPINDEX ) + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { + if (pl_sd->mapindex >= MAX_MAPINDEX) continue;// invalid mapindex - if( users[sd2->mapindex] < INT_MAX ) ++users[sd2->mapindex]; - if( users_all < INT_MAX ) ++users_all; + if (users[pl_sd->mapindex] < INT_MAX) + ++users[pl_sd->mapindex]; + if (users_all < INT_MAX) + ++users_all; } mapit->free(iter); @@ -6512,7 +6528,7 @@ ACMD(refreshall) struct s_mapiterator* iter; iter = mapit_getallusers(); - for (iter_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); iter_sd = (TBL_PC*)mapit->next(iter)) + for (iter_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); iter_sd = BL_UCAST(BL_PC, mapit->next(iter))) clif->refresh(iter_sd); mapit->free(iter); return true; @@ -6720,7 +6736,8 @@ ACMD(showmobs) char mob_name[100]; int mob_id; int number = 0; - struct s_mapiterator* it; + struct s_mapiterator *it; + const struct mob_data *md = NULL; if (sscanf(message, "%99[^\n]", mob_name) < 0) { clif->message(fd, msg_fd(fd,546)); // Please enter a mob name/id (usage: @showmobs <mob name/id>) @@ -6757,12 +6774,7 @@ ACMD(showmobs) clif->message(fd, atcmd_output); it = mapit_geteachmob(); - for(;;) - { - TBL_MOB* md = (TBL_MOB*)mapit->next(it); - if( md == NULL ) - break;// no more mobs - + for (md = BL_UCCAST(BL_MOB, mapit->first(it)); mapit->next(it); md = BL_UCCAST(BL_MOB, mapit->next(it))) { if( md->bl.m != sd->bl.m ) continue; if( mob_id != -1 && md->class_ != mob_id ) @@ -6784,7 +6796,7 @@ ACMD(showmobs) * homunculus level up [orn] *------------------------------------------*/ ACMD(homlevel) { - TBL_HOM * hd; + struct homun_data *hd; int level = 0; enum homun_type htype; @@ -7279,7 +7291,7 @@ int atcommand_mutearea_sub(struct block_list *bl, va_list ap) { // As it is being used [ACMD(mutearea)] there's no need to be a bool, but if there's need to reuse it, it's better to be this way int time, id; - struct map_session_data *pl_sd = (struct map_session_data *)bl; + struct map_session_data *pl_sd = BL_CAST(BL_PC, bl); if (pl_sd == NULL) return 0; @@ -7395,7 +7407,7 @@ ACMD(sizeall) size = cap_value(size,0,2); iter = mapit_getallusers(); - for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (pl_sd->state.size != size) { if (pl_sd->state.size) { pl_sd->state.size = SZ_SMALL; @@ -9650,6 +9662,7 @@ void atcommand_basecommands(void) { ACMD_DEF(skdebug), ACMD_DEF(cddebug), ACMD_DEF(lang), + ACMD_DEF(bodystyle), }; int i; @@ -9797,7 +9810,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa //Reconstructed message char atcmd_msg[CHAT_SIZE_MAX]; - TBL_PC * ssd = NULL; //sd for target + struct map_session_data *ssd = NULL; //sd for target AtCommandInfo * info; nullpo_retr(false, sd); diff --git a/src/map/battle.c b/src/map/battle.c index 69d24b299..3b3ea2047 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -61,18 +61,30 @@ struct Battle_Config battle_config; struct battle_interface battle_s; struct battle_interface *battle; -int battle_getcurrentskill(struct block_list *bl) { //Returns the current/last skill in use by this bl. - struct unit_data *ud; +/** + * Returns the current/last skill in use by this bl. + * + * @param bl The bl to check. + * @return The current/last skill ID. + */ +int battle_getcurrentskill(struct block_list *bl) +{ + const struct unit_data *ud; nullpo_ret(bl); if (bl->type == BL_SKILL) { - struct skill_unit * su = (struct skill_unit*)bl; - return su->group?su->group->skill_id:0; + const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl); + if (su->group == NULL) + return 0; + return su->group->skill_id; } ud = unit->bl2ud(bl); - return ud?ud->skill_id:0; + if (ud == NULL) + return 0; + + return ud->skill_id; } /*========================================== @@ -125,12 +137,12 @@ int battle_gettarget(struct block_list* bl) { nullpo_ret(bl); switch (bl->type) { - case BL_PC: return ((struct map_session_data*)bl)->ud.target; - case BL_MOB: return ((struct mob_data*)bl)->target_id; - case BL_PET: return ((struct pet_data*)bl)->target_id; - case BL_HOM: return ((struct homun_data*)bl)->ud.target; - case BL_MER: return ((struct mercenary_data*)bl)->ud.target; - case BL_ELEM: return ((struct elemental_data*)bl)->ud.target; + case BL_PC: return BL_UCCAST(BL_PC, bl)->ud.target; + case BL_MOB: return BL_UCCAST(BL_MOB, bl)->target_id; + case BL_PET: return BL_UCCAST(BL_PET, bl)->target_id; + case BL_HOM: return BL_UCCAST(BL_HOM, bl)->ud.target; + case BL_MER: return BL_UCCAST(BL_MER, bl)->ud.target; + case BL_ELEM: return BL_UCCAST(BL_ELEM, bl)->ud.target; } return 0; @@ -230,47 +242,37 @@ int battle_delay_damage_sub(int tid, int64 tick, int id, intptr_t data) { struct delay_damage *dat = (struct delay_damage *)data; if ( dat ) { - struct block_list* src = NULL; - struct block_list* target = map->id2bl(dat->target_id); - - if( !target || status->isdead(target) ) {/* nothing we can do */ - if( dat->src_type == BL_PC && (src = map->id2bl(dat->src_id)) != NULL && --((TBL_PC*)src)->delayed_damage == 0 && ((TBL_PC*)src)->state.hold_recalc ) { - ((TBL_PC*)src)->state.hold_recalc = 0; - status_calc_pc(((TBL_PC*)src),SCO_FORCE); + struct block_list *src = map->id2bl(dat->src_id); + struct map_session_data *sd = BL_CAST(BL_PC, src); + struct block_list *target = map->id2bl(dat->target_id); + + if (target != NULL && !status->isdead(target)) { + //Check to see if you haven't teleported. [Skotlex] + if (src != NULL && ( + battle_config.fix_warp_hit_delay_abuse ? + (dat->skill_id == MO_EXTREMITYFIST || target->m != src->m || check_distance_bl(src, target, dat->distance)) + : + ((target->type != BL_PC || BL_UCAST(BL_PC, target)->invincible_timer == INVALID_TIMER) + && (dat->skill_id == MO_EXTREMITYFIST || (target->m == src->m && check_distance_bl(src, target, dat->distance)))) + )) { + map->freeblock_lock(); + status_fix_damage(src, target, dat->damage, dat->delay); + if (dat->attack_type && !status->isdead(target) && dat->additional_effects) + skill->additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,dat->dmg_lv,tick); + if (dat->dmg_lv > ATK_BLOCK && dat->attack_type) + skill->counter_additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,tick); + map->freeblock_unlock(); + } else if (src == NULL && dat->skill_id == CR_REFLECTSHIELD) { + // it was monster reflected damage, and the monster died, we pass the damage to the character as expected + map->freeblock_lock(); + status_fix_damage(target, target, dat->damage, dat->delay); + map->freeblock_unlock(); } - ers_free(battle->delay_damage_ers, dat); - return 0; - } - - src = map->id2bl(dat->src_id); - - //Check to see if you haven't teleported. [Skotlex] - if (src && ( - battle_config.fix_warp_hit_delay_abuse ? - (dat->skill_id == MO_EXTREMITYFIST || target->m != src->m || check_distance_bl(src, target, dat->distance)) - : - ((target->type != BL_PC || ((TBL_PC*)target)->invincible_timer == INVALID_TIMER) - && (dat->skill_id == MO_EXTREMITYFIST || (target->m == src->m && check_distance_bl(src, target, dat->distance)))) - )) { - map->freeblock_lock(); - status_fix_damage(src, target, dat->damage, dat->delay); - if( dat->attack_type && !status->isdead(target) && dat->additional_effects ) - skill->additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,dat->dmg_lv,tick); - if( dat->dmg_lv > ATK_BLOCK && dat->attack_type ) - skill->counter_additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,tick); - map->freeblock_unlock(); - } else if( !src && dat->skill_id == CR_REFLECTSHIELD ) { - /** - * it was monster reflected damage, and the monster died, we pass the damage to the character as expected - **/ - map->freeblock_lock(); - status_fix_damage(target, target, dat->damage, dat->delay); - map->freeblock_unlock(); } - if( src && src->type == BL_PC && --((TBL_PC*)src)->delayed_damage == 0 && ((TBL_PC*)src)->state.hold_recalc ) { - ((TBL_PC*)src)->state.hold_recalc = 0; - status_calc_pc(((TBL_PC*)src),SCO_FORCE); + if (sd != NULL && --sd->delayed_damage == 0 && sd->state.hold_recalc) { + sd->state.hold_recalc = 0; + status_calc_pc(sd, SCO_FORCE); } } ers_free(battle->delay_damage_ers, dat); @@ -317,8 +319,8 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct if (src->type != BL_PC && amotion > 1000) amotion = 1000; //Aegis places a damage-delay cap of 1 sec to non player attacks. [Skotlex] - if( src->type == BL_PC ) { - ((TBL_PC*)src)->delayed_damage++; + if (src->type == BL_PC) { + BL_UCAST(BL_PC, src)->delayed_damage++; } timer->add(tick+amotion, battle->delay_damage_sub, 0, (intptr_t)dat); @@ -371,7 +373,7 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d } if( target && target->type == BL_SKILL ) { if( atk_elem == ELE_FIRE && battle->get_current_skill(target) == GN_WALLOFTHORN ) { - struct skill_unit *su = (struct skill_unit*)target; + struct skill_unit *su = BL_UCAST(BL_SKILL, target); struct skill_unit_group *sg; struct block_list *sgsrc; @@ -526,17 +528,20 @@ int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uin int64 damage; struct status_data *st = status->get_status_data(src); struct status_change *sc = status->get_sc(src); - + const struct map_session_data *sd = NULL; nullpo_retr(0, src); + + sd = BL_CCAST(BL_PC, src); + if ( !skill_id ) { s_ele = st->rhw.ele; s_ele_ = st->lhw.ele; - if ( src->type == BL_PC ) { - if ( ((TBL_PC*)src)->charm_type != CHARM_TYPE_NONE && ((TBL_PC*)src)->charm_count >= MAX_SPIRITCHARM ) { - s_ele = s_ele_ = ((TBL_PC*)src)->charm_type; + if (sd != NULL) { + if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count >= MAX_SPIRITCHARM) { + s_ele = s_ele_ = sd->charm_type; } - if ( flag & 2 && ((TBL_PC*)src)->bonus.arrow_ele ) - s_ele = ((TBL_PC*)src)->bonus.arrow_ele; + if (flag&2 && sd->bonus.arrow_ele != 0) + s_ele = sd->bonus.arrow_ele; } } if (src->type == BL_PC) { @@ -550,8 +555,7 @@ int64 battle_calc_base_damage(struct block_list *src, struct block_list *bl, uin damage = batk + 3 * battle->calc_weapon_damage(src, bl, skill_id, skill_lv, &st->lhw, nk, n_ele, s_ele, s_ele_, status_get_size(bl), type, flag, flag2) / 4; else damage = (batk << 1) + battle->calc_weapon_damage(src, bl, skill_id, skill_lv, &st->rhw, nk, n_ele, s_ele, s_ele_, status_get_size(bl), type, flag, flag2); - } - else{ + } else { damage = st->batk + battle->calc_weapon_damage(src, bl, skill_id, skill_lv, &st->rhw, nk, n_ele, s_ele, s_ele_, status_get_size(bl), type, flag, flag2); } @@ -1931,7 +1935,7 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block skillratio += 10 * skill_lv; break; case KN_SPEARSTAB: - skillratio += 15 * skill_lv; + skillratio += 20 * skill_lv; break; case KN_SPEARBOOMERANG: skillratio += 50*skill_lv; @@ -2720,6 +2724,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam nullpo_ret(bl); nullpo_ret(d); + + sd = BL_CAST(BL_PC, bl); div_ = d->div_; flag = d->flag; @@ -2729,8 +2735,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam return 0; if( battle_config.ksprotection && mob->ksprotected(src, bl) ) return 0; - if (bl->type == BL_PC) { - sd=(struct map_session_data *)bl; + if (sd != NULL) { //Special no damage states if(flag&BF_WEAPON && sd->special_state.no_weapon_damage) damage -= damage * sd->special_state.no_weapon_damage / 100; @@ -2861,9 +2866,11 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam // If the target is too far away from the devotion caster, autoguard has no effect // Autoguard will be disabled later on struct block_list *d_bl = map->id2bl(sce_d->val1); - if (d_bl && check_distance_bl(bl, d_bl, sce_d->val3) - && ((d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == bl->id) - || (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce_d->val2] == bl->id)) + struct mercenary_data *d_md = BL_CAST(BL_MER, d_bl); + struct map_session_data *d_sd = BL_CAST(BL_PC, d_bl); + if (d_bl != NULL && check_distance_bl(bl, d_bl, sce_d->val3) + && ((d_bl->type == BL_MER && d_md->master != NULL && d_md->master->bl.id == bl->id) + || (d_bl->type == BL_PC && d_sd->devotion[sce_d->val2] == bl->id)) ) { // if player is target of devotion, show guard effect on the devotion caster rather than the target clif->skill_nodamage(d_bl, d_bl, CR_AUTOGUARD, sce->val1, 1); @@ -3059,10 +3066,11 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam // Compressed code, fixed by map.h [Epoque] if (src->type == BL_MOB) { + const struct mob_data *md = BL_UCCAST(BL_MOB, src); int i; if (sc->data[SC_MANU_DEF] != NULL) { for (i = 0; i < ARRAYLENGTH(mob->manuk); i++) { - if (mob->manuk[i] == ((TBL_MOB*)src)->class_) { + if (mob->manuk[i] == md->class_) { damage -= damage * sc->data[SC_MANU_DEF]->val1 / 100; break; } @@ -3070,7 +3078,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } if (sc->data[SC_SPL_DEF] != NULL) { for (i = 0; i < ARRAYLENGTH(mob->splendide); i++) { - if (mob->splendide[i] == ((TBL_MOB*)src)->class_) { + if (mob->splendide[i] == md->class_) { damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100; break; } @@ -3078,7 +3086,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } if (sc->data[SC_MORA_BUFF] != NULL) { for (i = 0; i < ARRAYLENGTH(mob->mora); i++) { - if (mob->mora[i] == ((TBL_MOB*)src)->class_) { + if (mob->mora[i] == md->class_) { damage -= damage * sc->data[SC_MORA_BUFF]->val1 / 100; break; } @@ -3123,7 +3131,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&(BF_SHORT|BF_WEAPON) && damage > 0 ) { sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX); if( src->type == BL_PC ) { - TBL_PC *ssd = BL_CAST(BL_PC, src); + struct map_session_data *ssd = BL_CAST(BL_PC, src); if (ssd && ssd->status.weapon != W_BOW) skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF); } else @@ -3194,7 +3202,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam clif->millenniumshield(bl, sc->fv_counter++); if (sc->data[SC_STYLE_CHANGE] && rnd()%2) { - TBL_HOM *hd = BL_CAST(BL_HOM,bl); + struct homun_data *hd = BL_CAST(BL_HOM,bl); if (hd) homun->addspiritball(hd, 10); //add a sphere } @@ -3213,24 +3221,25 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam damage += damage * 75 / 100; // [Epoque] if (bl->type == BL_MOB) { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); int i; - if ( ((sce=tsc->data[SC_MANU_ATK]) && (flag&BF_WEAPON)) || - ((sce=tsc->data[SC_MANU_MATK]) && (flag&BF_MAGIC)) - ) - for (i=0;ARRAYLENGTH(mob->manuk)>i;i++) - if (((TBL_MOB*)bl)->class_==mob->manuk[i]) { + if (((sce=tsc->data[SC_MANU_ATK]) != NULL && (flag&BF_WEAPON)) + || ((sce=tsc->data[SC_MANU_MATK]) != NULL && (flag&BF_MAGIC))) { + for (i = 0; i < ARRAYLENGTH(mob->manuk); i++) + if (md->class_ == mob->manuk[i]) { damage += damage * sce->val1 / 100; break; } - if ( ((sce=tsc->data[SC_SPL_ATK]) && (flag&BF_WEAPON)) || - ((sce=tsc->data[SC_SPL_MATK]) && (flag&BF_MAGIC)) - ) - for (i=0;ARRAYLENGTH(mob->splendide)>i;i++) - if (((TBL_MOB*)bl)->class_==mob->splendide[i]) { + } + if (((sce=tsc->data[SC_SPL_ATK]) != NULL && (flag&BF_WEAPON)) + || ((sce=tsc->data[SC_SPL_MATK]) != NULL && (flag&BF_MAGIC))) { + for (i = 0; i < ARRAYLENGTH(mob->splendide); i++) + if (md->class_ == mob->splendide[i]) { damage += damage * sce->val1 / 100; break; } + } } if( tsc->data[SC_POISONINGWEAPON] ) { struct status_data *tstatus = status->get_status_data(bl); @@ -3246,12 +3255,12 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (tsc->data[SC_SHIELDSPELL_REF] && tsc->data[SC_SHIELDSPELL_REF]->val1 == 1 && damage > 0) skill->break_equip(bl,EQP_ARMOR,10000,BCT_ENEMY ); if (tsc->data[SC_STYLE_CHANGE] && rnd()%2) { - TBL_HOM *hd = BL_CAST(BL_HOM,bl); + struct homun_data *hd = BL_CAST(BL_HOM,bl); if (hd) homun->addspiritball(hd, 10); } if (src->type == BL_PC && damage > 0 && (sce = tsc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { - struct map_session_data *tsd = (struct map_session_data *)src; - if ( tsd && rnd() % 100 < sce->val2 ) + struct map_session_data *tsd = BL_UCAST(BL_PC, src); + if (tsd != NULL && rnd() % 100 < sce->val2) pc->addspiritball(tsd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(tsd, 0)); } } @@ -3292,18 +3301,20 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } if( bl->type == BL_MOB && !status->isdead(bl) && src != bl) { - if ( damage > 0 ) - mob->skill_event((TBL_MOB*)bl,src,timer->gettick(),flag); + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (damage > 0) + mob->skill_event(md, src, timer->gettick(), flag); if (skill_id) - mob->skill_event((TBL_MOB*)bl,src,timer->gettick(),MSC_SKILLUSED|(skill_id<<16)); + mob->skill_event(md, src, timer->gettick(), MSC_SKILLUSED|(skill_id<<16)); } if (sd && pc_ismadogear(sd) && rnd()%100 < 50) { int element = -1; if (!skill_id || (element = skill->get_ele(skill_id, skill_lv)) == -1) { // Take weapon's element struct status_data *sstatus = NULL; - if (src->type == BL_PC && ((TBL_PC*)src)->bonus.arrow_ele) { - element = ((TBL_PC*)src)->bonus.arrow_ele; + struct map_session_data *ssd = BL_CAST(BL_PC, src); + if (src->type == BL_PC && ssd->bonus.arrow_ele != 0) { + element = ssd->bonus.arrow_ele; } else if ((sstatus = status->get_status_data(src)) != NULL) { element = sstatus->rhw.ele; } @@ -3371,7 +3382,13 @@ int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64 } } if(src->type != BL_MOB) { - struct guild *g = src->type == BL_PC ? ((TBL_PC *)src)->guild : guild->search(status->get_guild_id(src)); + struct guild *g = NULL; + if (src->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, src); + g = sd->guild; + } else { + g = guild->search(status->get_guild_id(src)); + } if (class_ == MOBID_EMPELIUM && (!g || guild->checkskill(g,GD_APPROVAL) <= 0)) return 0; @@ -3420,7 +3437,8 @@ int battle_calc_drain(int64 damage, int rate, int per) { /*========================================== * Consumes ammo for the given skill. *------------------------------------------*/ -void battle_consume_ammo(TBL_PC*sd, int skill_id, int lv) { +void battle_consume_ammo(struct map_session_data *sd, int skill_id, int lv) +{ int qty=1; nullpo_retv(sd); @@ -3499,7 +3517,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list short s_ele = 0; unsigned int skillratio = 100; //Skill dmg modifiers. - TBL_PC *sd; + struct map_session_data *sd = NULL; struct status_change *sc; struct Damage ad; struct status_data *sstatus = status->get_status_data(src); @@ -3562,8 +3580,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list //Skill Range Criteria ad.flag |= battle->range_type(src, target, skill_id, skill_lv); flag.infdef = (tstatus->mode&MD_PLANT) ? 1 : 0; - if( !flag.infdef && target->type == BL_SKILL && ((TBL_SKILL*)target)->group->unit_id == UNT_REVERBERATION ) - flag.infdef = 1; // Reverberation takes 1 damage + if (!flag.infdef && target->type == BL_SKILL) { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, target); + if (su->group->unit_id == UNT_REVERBERATION) + flag.infdef = 1; // Reverberation takes 1 damage + } switch(skill_id) { case MG_FIREWALL: @@ -3691,10 +3712,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { - if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { - if( (((TBL_MOB*)target)->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS) ) + if (target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE) { + const struct mob_data *md = BL_UCCAST(BL_MOB, target); + if ((md->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS)) continue; - if( ((TBL_MOB*)target)->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE) ) + if (md->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE)) continue; } if( ad.damage > map->list[target->m].zone->capped_skills[i]->cap ) @@ -4165,10 +4187,11 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { - if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { - if( (((TBL_MOB*)target)->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS) ) + if (target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE) { + const struct mob_data *t_md = BL_UCCAST(BL_MOB, target); + if ((t_md->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS)) continue; - if( ((TBL_MOB*)target)->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE) ) + if (t_md->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE)) continue; } if( md.damage > map->list[target->m].zone->capped_skills[i]->cap ) @@ -4294,13 +4317,16 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list //Initial flag flag.rh=1; flag.weapon=1; - flag.infdef=(tstatus->mode&MD_PLANT && skill_id != RA_CLUSTERBOMB + flag.infdef = (tstatus->mode&MD_PLANT && skill_id != RA_CLUSTERBOMB?1:0); #ifdef RENEWAL - && skill_id != HT_FREEZINGTRAP + if (skill_id == HT_FREEZINGTRAP) + flag.infdef = 0; #endif - ?1:0); - if( !flag.infdef && target->type == BL_SKILL && ((TBL_SKILL*)target)->group->unit_id == UNT_REVERBERATION ) - flag.infdef = 1; // Reverberation takes 1 damage + if (!flag.infdef && target->type == BL_SKILL) { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, target); + if (su->group->unit_id == UNT_REVERBERATION) + flag.infdef = 1; // Reverberation takes 1 damage + } //Initial Values wd.type = BDT_NORMAL; @@ -4846,10 +4872,12 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list ATK_ADD(sstatus->rhw.atk2); //Else use Atk2 break; case HFLI_SBR44: //[orn] - if(src->type == BL_HOM) { - wd.damage = ((TBL_HOM*)src)->homunculus.intimacy ; + if (src->type == BL_HOM) { + const struct homun_data *hd = BL_UCCAST(BL_HOM, src); + wd.damage = hd->homunculus.intimacy; break; } + break; default: { i = (flag.cri @@ -5153,8 +5181,9 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } #endif if(sc->data[SC_STYLE_CHANGE]){ - TBL_HOM *hd = BL_CAST(BL_HOM,src); - if (hd) ATK_ADD(hd->homunculus.spiritball * 3); + struct homun_data *hd = BL_CAST(BL_HOM, src); + if (hd != NULL) + ATK_ADD(hd->homunculus.spiritball * 3); } } @@ -5384,10 +5413,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { - if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { - if( (((TBL_MOB*)target)->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS) ) + if (target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE) { + const struct mob_data *md = BL_UCCAST(BL_MOB, target); + if ((md->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS)) continue; - if( ((TBL_MOB*)target)->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE) ) + if (md->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE)) continue; } if( wd.damage > map->list[target->m].zone->capped_skills[i]->cap ) @@ -5596,14 +5626,10 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } } //Reject Sword bugreport:4493 by Daegaladh - if(wd.damage && tsc && tsc->data[SC_SWORDREJECT] && - (src->type!=BL_PC || ( - ((TBL_PC *)src)->weapontype1 == W_DAGGER || - ((TBL_PC *)src)->weapontype1 == W_1HSWORD || - ((TBL_PC *)src)->status.weapon == W_2HSWORD - )) && - rnd()%100 < tsc->data[SC_SWORDREJECT]->val2 - ) { + if (wd.damage != 0 && tsc != NULL && tsc->data[SC_SWORDREJECT] != NULL + && (sd == NULL || sd->weapontype1 == W_DAGGER || sd->weapontype1 == W_1HSWORD || sd->status.weapon == W_2HSWORD) + && rnd()%100 < tsc->data[SC_SWORDREJECT]->val2 + ) { ATK_RATER(50); status_fix_damage(target,src,wd.damage,clif->damage(target,src,0,0,wd.damage,0,BDT_NORMAL,0)); clif->skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_SWORDREJECT]->val1,1); @@ -5644,10 +5670,11 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl int i; for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { - if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { - if( (((TBL_MOB*)target)->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS) ) + if (target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE) { + const struct mob_data *md = BL_UCCAST(BL_MOB, target); + if ((md->status.mode&MD_BOSS) && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_BOSS)) continue; - if( ((TBL_MOB*)target)->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE) ) + if (md->special_state.clone && !(map->list[target->m].zone->disabled_skills[i]->subtype&MZS_CLONE)) continue; } if( d.damage > map->list[target->m].zone->capped_skills[i]->cap ) @@ -5893,7 +5920,7 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st #undef NORMALIZE_RDAMAGE } -void battle_drain(TBL_PC *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss) +void battle_drain(struct map_session_data *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss) { struct weapon_data *wd; int type, thp = 0, tsp = 0, rhp = 0, rsp = 0, hp, sp, i; @@ -5964,19 +5991,23 @@ int battle_damage_area(struct block_list *bl, va_list ap) { amotion=va_arg(ap,int); dmotion=va_arg(ap,int); damage=va_arg(ap,int); - if (bl->type == BL_MOB && ((TBL_MOB*)bl)->class_ == MOBID_EMPELIUM) + if (bl->type == BL_MOB && BL_UCCAST(BL_MOB, bl)->class_ == MOBID_EMPELIUM) return 0; if( bl != src && battle->check_target(src,bl,BCT_ENEMY) > 0 ) { + struct map_session_data *sd = NULL; nullpo_ret(src); + map->freeblock_lock(); - if( src->type == BL_PC ) - battle->drain((TBL_PC*)src, bl, damage, damage, status_get_race(bl), is_boss(bl)); + sd = BL_CAST(BL_PC, src); + + if (src->type == BL_PC) + battle->drain(sd, bl, damage, damage, status_get_race(bl), is_boss(bl)); if( amotion ) battle->delay_damage(tick, amotion,src,bl,0,CR_REFLECTSHIELD,0,damage,ATK_DEF,0,true); else status_fix_damage(src,bl,damage,0); clif->damage(bl,bl,amotion,dmotion,damage,1,BDT_ENDURE,0); - if( !(src->type == BL_PC && ((TBL_PC*)src)->state.autocast) ) + if (src->type != BL_PC || !sd->state.autocast) skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); map->freeblock_unlock(); } @@ -6171,9 +6202,9 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if (sd && sd->bonus.splash_range > 0 && damage > 0) skill->castend_damage_id(src, target, 0, 1, tick, 0); - if ( target->type == BL_SKILL && damage > 0 ){ - TBL_SKILL *su = (TBL_SKILL*)target; - if( su->group && su->group->skill_id == HT_BLASTMINE) + if (target->type == BL_SKILL && damage > 0) { + struct skill_unit *su = BL_UCAST(BL_SKILL, target); + if (su->group && su->group->skill_id == HT_BLASTMINE) skill->blown(src, target, 3, -1, 0); } map->freeblock_lock(); @@ -6189,20 +6220,23 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if( tsc->data[SC_DEVOTION] ) { struct status_change_entry *sce = tsc->data[SC_DEVOTION]; struct block_list *d_bl = map->id2bl(sce->val1); - - if( d_bl && ( - (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) || - (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id) - ) && check_distance_bl(target, d_bl, sce->val3) ) - { + struct mercenary_data *d_md = BL_CAST(BL_MER, d_bl); + struct map_session_data *d_sd = BL_CAST(BL_PC, d_bl); + + if (d_bl != NULL + && ((d_bl->type == BL_MER && d_md->master != NULL && d_md->master->bl.id == target->id) + || (d_bl->type == BL_PC && d_sd->devotion[sce->val2] == target->id) + ) + && check_distance_bl(target, d_bl, sce->val3) + ) { clif->damage(d_bl, d_bl, 0, 0, damage, 0, BDT_NORMAL, 0); status_fix_damage(NULL, d_bl, damage, 0); - } - else + } else { status_change_end(target, SC_DEVOTION, INVALID_TIMER); + } } else if( tsc->data[SC_CIRCLE_OF_FIRE_OPTION] && (wd.flag&BF_SHORT) && target->type == BL_PC ) { - struct elemental_data *ed = ((TBL_PC*)target)->ed; - if( ed ) { + struct elemental_data *ed = BL_UCAST(BL_PC, target)->ed; + if (ed != NULL) { clif->skill_damage(&ed->bl, target, tick, status_get_amotion(src), 0, -30000, 1, EL_CIRCLE_OF_FIRE, tsc->data[SC_CIRCLE_OF_FIRE_OPTION]->val1, BDT_SKILL); skill->attack(BF_MAGIC,&ed->bl,&ed->bl,src,EL_CIRCLE_OF_FIRE,tsc->data[SC_CIRCLE_OF_FIRE_OPTION]->val1,tick,wd.flag); } @@ -6366,35 +6400,54 @@ bool battle_check_undead(int race,int element) } //Returns the upmost level master starting with the given object -struct block_list* battle_get_master(struct block_list *src) { - struct block_list *prev; //Used for infinite loop check (master of yourself?) +struct block_list *battle_get_master(struct block_list *src) +{ + struct block_list *prev = NULL; //Used for infinite loop check (master of yourself?) nullpo_retr(NULL, src); do { prev = src; switch (src->type) { case BL_PET: - if (((TBL_PET*)src)->msd) - src = (struct block_list*)((TBL_PET*)src)->msd; + { + struct pet_data *pd = BL_UCAST(BL_PET, src); + if (pd->msd != NULL) + src = &pd->msd->bl; + } break; case BL_MOB: - if (((TBL_MOB*)src)->master_id) - src = map->id2bl(((TBL_MOB*)src)->master_id); + { + struct mob_data *md = BL_UCAST(BL_MOB, src); + if (md->master_id != 0) + src = map->id2bl(md->master_id); + } break; case BL_HOM: - if (((TBL_HOM*)src)->master) - src = (struct block_list*)((TBL_HOM*)src)->master; + { + struct homun_data *hd = BL_UCAST(BL_HOM, src); + if (hd->master != NULL) + src = &hd->master->bl; + } break; case BL_MER: - if (((TBL_MER*)src)->master) - src = (struct block_list*)((TBL_MER*)src)->master; + { + struct mercenary_data *md = BL_UCAST(BL_MER, src); + if (md->master != NULL) + src = &md->master->bl; + } break; case BL_ELEM: - if (((TBL_ELEM*)src)->master) - src = (struct block_list*)((TBL_ELEM*)src)->master; + { + struct elemental_data *ed = BL_UCAST(BL_ELEM, src); + if (ed->master != NULL) + src = &ed->master->bl; + } break; case BL_SKILL: - if (((TBL_SKILL*)src)->group && ((TBL_SKILL*)src)->group->src_id) - src = map->id2bl(((TBL_SKILL*)src)->group->src_id); + { + struct skill_unit *su = BL_UCAST(BL_SKILL, src); + if (su->group != NULL && su->group->src_id != 0) + src = map->id2bl(su->group->src_id); + } break; } } while (src && src != prev); @@ -6435,14 +6488,15 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if( (s_bl = battle->get_master(src)) == NULL ) s_bl = src; - if ( s_bl->type == BL_PC ) { - switch( t_bl->type ) { + if (s_bl->type == BL_PC) { + const struct map_session_data *s_sd = BL_UCCAST(BL_PC, s_bl); + switch (t_bl->type) { case BL_MOB: // Source => PC, Target => MOB - if (pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVM) ) + if (pc_has_permission(s_sd, PC_PERM_DISABLE_PVM)) return 0; break; case BL_PC: - if (pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVP)) + if (pc_has_permission(s_sd, PC_PERM_DISABLE_PVP)) return 0; break; default:/* anything else goes */ @@ -6451,29 +6505,31 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } switch( target->type ) { // Checks on actual target - case BL_PC: { - struct status_change* sc = status->get_sc(src); - if( ((TBL_PC*)target)->invincible_timer != INVALID_TIMER ) { - switch( battle->get_current_skill(src) ) { - /* TODO a proper distinction should be established bugreport:8397 */ - case PR_SANCTUARY: - case PR_MAGNIFICAT: - break; - default: - return -1; - } - } - if ( pc_isinvisible((TBL_PC*)target) ) - return -1; //Cannot be targeted yet. - if( sc && sc->count ) { - if( sc->data[SC_SIREN] && sc->data[SC_SIREN]->val2 == target->id ) + case BL_PC: + { + const struct status_change *sc = status->get_sc(src); + const struct map_session_data *t_sd = BL_UCCAST(BL_PC, target); + if (t_sd->invincible_timer != INVALID_TIMER) { + switch( battle->get_current_skill(src) ) { + /* TODO a proper distinction should be established bugreport:8397 */ + case PR_SANCTUARY: + case PR_MAGNIFICAT: + break; + default: return -1; } } + if (pc_isinvisible(t_sd)) + return -1; //Cannot be targeted yet. + if (sc && sc->count) { + if (sc->data[SC_SIREN] && sc->data[SC_SIREN]->val2 == target->id) + return -1; + } + } break; case BL_MOB: { - TBL_MOB *md = BL_CAST(BL_MOB, target); + const struct mob_data *md = BL_UCCAST(BL_MOB, target); if(( (md->special_state.ai == AI_SPHERE || (md->special_state.ai == AI_FLORA && battle_config.summon_flora&1)) && s_bl->type == BL_PC && src->type != BL_MOB @@ -6488,7 +6544,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } case BL_SKILL: { - TBL_SKILL *su = (TBL_SKILL*)target; + const struct skill_unit *su = BL_UCCAST(BL_SKILL, target); if( !su->group ) return 0; if( skill->get_inf2(su->group->skill_id)&INF2_TRAP && @@ -6559,13 +6615,13 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f switch( t_bl->type ) { //Checks on target master case BL_PC: { - struct map_session_data *sd; - if( t_bl == s_bl ) break; - sd = BL_CAST(BL_PC, t_bl); + const struct map_session_data *sd = BL_UCCAST(BL_PC, t_bl); + if (t_bl == s_bl) + break; if( sd->state.monster_ignore && flag&BCT_ENEMY ) return 0; // Global immunity only to Attacks - if( sd->status.karma && s_bl->type == BL_PC && ((TBL_PC*)s_bl)->status.karma ) + if (sd->status.karma && s_bl->type == BL_PC && BL_UCCAST(BL_PC, s_bl)->status.karma) state |= BCT_ENEMY; // Characters with bad karma may fight amongst them if( sd->state.killable ) { state |= BCT_ENEMY; // Everything can kill it @@ -6575,7 +6631,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } case BL_MOB: { - struct mob_data *md = BL_CAST(BL_MOB, t_bl); + const struct mob_data *md = BL_UCCAST(BL_MOB, t_bl); if( !((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle) && md->guardian_data && (md->guardian_data->g || md->guardian_data->castle->guild_id) ) @@ -6589,31 +6645,32 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f case BL_PET: if (t_bl->type != BL_MOB && flag&BCT_ENEMY) return 0; //Pet may not attack non-mobs. - if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->guardian_data && flag&BCT_ENEMY) + if (t_bl->type == BL_MOB && BL_UCCAST(BL_MOB, t_bl)->guardian_data && flag&BCT_ENEMY) return 0; //pet may not attack Guardians/Emperium break; - case BL_SKILL: { - struct skill_unit *su = (struct skill_unit *)src; - struct status_change* sc = status->get_sc(target); - if (!su->group) - return 0; + case BL_SKILL: + { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, src); + const struct status_change *sc = status->get_sc(target); + if (su->group == NULL) + return 0; - if (su->group->src_id == target->id) { - int inf2 = skill->get_inf2(su->group->skill_id); - if (inf2&INF2_NO_TARGET_SELF) - return -1; - if (inf2&INF2_TARGET_SELF) - return 1; - } - //Status changes that prevent traps from triggering - if (sc && sc->count && skill->get_inf2(su->group->skill_id)&INF2_TRAP) { - if( sc->data[SC_WZ_SIGHTBLASTER] && sc->data[SC_WZ_SIGHTBLASTER]->val2 > 0 && sc->data[SC_WZ_SIGHTBLASTER]->val4%2 == 0) - return -1; - } + if (su->group->src_id == target->id) { + int inf2 = skill->get_inf2(su->group->skill_id); + if (inf2&INF2_NO_TARGET_SELF) + return -1; + if (inf2&INF2_TARGET_SELF) + return 1; } + //Status changes that prevent traps from triggering + if (sc != NULL && sc->count != 0 && skill->get_inf2(su->group->skill_id)&INF2_TRAP) { + if (sc->data[SC_WZ_SIGHTBLASTER] != NULL && sc->data[SC_WZ_SIGHTBLASTER]->val2 > 0 && sc->data[SC_WZ_SIGHTBLASTER]->val4%2 == 0) + return -1; + } + } break; case BL_MER: - if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->class_ == MOBID_EMPELIUM && flag&BCT_ENEMY) + if (t_bl->type == BL_MOB && BL_UCCAST(BL_MOB, t_bl)->class_ == MOBID_EMPELIUM && flag&BCT_ENEMY) return 0; //mercenary may not attack Emperium break; } //end switch actual src @@ -6621,7 +6678,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f switch( s_bl->type ) { //Checks on source master case BL_PC: { - struct map_session_data *sd = BL_CAST(BL_PC, s_bl); + const struct map_session_data *sd = BL_UCCAST(BL_PC, s_bl); if( s_bl != t_bl ) { if( sd->state.killer ) { state |= BCT_ENEMY; // Can kill anything @@ -6629,13 +6686,13 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } else if( sd->duel_group && !((!battle_config.duel_allow_pvp && map->list[m].flag.pvp) || (!battle_config.duel_allow_gvg && map_flag_gvg(m))) ) { - if( t_bl->type == BL_PC && (sd->duel_group == ((TBL_PC*)t_bl)->duel_group) ) + if (t_bl->type == BL_PC && sd->duel_group == BL_UCCAST(BL_PC, t_bl)->duel_group) return (BCT_ENEMY&flag)?1:-1; // Duel targets can ONLY be your enemy, nothing else. else if (src->type != BL_SKILL || (flag&BCT_ALL) != BCT_ALL) return 0; } } - if (map_flag_gvg(m) && !sd->status.guild_id && t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->class_ == MOBID_EMPELIUM) + if (map_flag_gvg(m) && !sd->status.guild_id && t_bl->type == BL_MOB && BL_UCCAST(BL_MOB, t_bl)->class_ == MOBID_EMPELIUM) return 0; //If you don't belong to a guild, can't target emperium. if( t_bl->type != BL_PC ) state |= BCT_ENEMY; //Natural enemy. @@ -6643,21 +6700,21 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } case BL_MOB: { - struct mob_data *md = BL_CAST(BL_MOB, s_bl); + const struct mob_data *md = BL_UCCAST(BL_MOB, s_bl); if( !((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle) && md->guardian_data && (md->guardian_data->g || md->guardian_data->castle->guild_id) ) return 0; // Disable guardians/emperium owned by Guilds on non-woe times. if (md->special_state.ai == AI_NONE) { //Normal mobs - struct mob_data *target_md = BL_CAST(BL_MOB, target); - if( (target_md && t_bl->type == BL_PC && target_md->special_state.ai != AI_ZANZOU && target_md->special_state.ai != AI_ATTACK) - || (t_bl->type == BL_MOB && !((TBL_MOB*)t_bl)->special_state.ai) ) + const struct mob_data *target_md = BL_CCAST(BL_MOB, target); + if ((target_md != NULL && t_bl->type == BL_PC && target_md->special_state.ai != AI_ZANZOU && target_md->special_state.ai != AI_ATTACK) + || (t_bl->type == BL_MOB && BL_UCCAST(BL_MOB, t_bl)->special_state.ai == AI_NONE)) state |= BCT_PARTY; //Normal mobs with no ai are friends. else state |= BCT_ENEMY; //However, all else are enemies. } else { - if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->special_state.ai == AI_NONE) + if (t_bl->type == BL_MOB && BL_UCCAST(BL_MOB, t_bl)->special_state.ai == AI_NONE) state |= BCT_ENEMY; //Natural enemy for AI mobs are normal mobs. } break; @@ -6720,15 +6777,16 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if( state&BCT_ENEMY && map->list[m].flag.battleground && sbg_id && sbg_id == tbg_id ) state &= ~BCT_ENEMY; - if( state&BCT_ENEMY && battle_config.pk_mode && !map_flag_gvg(m) && s_bl->type == BL_PC && t_bl->type == BL_PC ) - { // Prevent novice engagement on pk_mode (feature by Valaris) - TBL_PC *sd = (TBL_PC*)s_bl, *sd2 = (TBL_PC*)t_bl; + if (state&BCT_ENEMY && battle_config.pk_mode && !map_flag_gvg(m) && s_bl->type == BL_PC && t_bl->type == BL_PC) { + // Prevent novice engagement on pk_mode (feature by Valaris) + const struct map_session_data *s_sd = BL_UCCAST(BL_PC, s_bl); + const struct map_session_data *t_sd = BL_UCCAST(BL_PC, t_bl); if ( - (sd->class_&MAPID_UPPERMASK) == MAPID_NOVICE || - (sd2->class_&MAPID_UPPERMASK) == MAPID_NOVICE || - (int)sd->status.base_level < battle_config.pk_min_level || - (int)sd2->status.base_level < battle_config.pk_min_level || - (battle_config.pk_level_range && abs((int)sd->status.base_level - (int)sd2->status.base_level) > battle_config.pk_level_range) + (s_sd->class_&MAPID_UPPERMASK) == MAPID_NOVICE || + (t_sd->class_&MAPID_UPPERMASK) == MAPID_NOVICE || + (int)s_sd->status.base_level < battle_config.pk_min_level || + (int)t_sd->status.base_level < battle_config.pk_min_level || + (battle_config.pk_level_range && abs((int)s_sd->status.base_level - (int)t_sd->status.base_level) > battle_config.pk_level_range) ) state &= ~BCT_ENEMY; } @@ -6925,8 +6983,8 @@ static const struct battle_data { { "max_walk_speed", &battle_config.max_walk_speed, 300, 100, 100*DEFAULT_WALK_SPEED, }, { "max_lv", &battle_config.max_lv, 99, 0, MAX_LEVEL, }, { "aura_lv", &battle_config.aura_lv, 99, 0, INT_MAX, }, - { "max_hp", &battle_config.max_hp, 32500, 100, 1000000000, }, - { "max_sp", &battle_config.max_sp, 32500, 100, 1000000000, }, + { "max_hp", &battle_config.max_hp, 1000000, 100, 21474836, }, + { "max_sp", &battle_config.max_sp, 1000000, 100, 21474836, }, { "max_cart_weight", &battle_config.max_cart_weight, 8000, 100, 1000000, }, { "max_parameter", &battle_config.max_parameter, 99, 10, 10000, }, { "max_baby_parameter", &battle_config.max_baby_parameter, 80, 10, 10000, }, @@ -7196,6 +7254,9 @@ static const struct battle_data { { "costume_refine_def", &battle_config.costume_refine_def, 1, 0, 1, }, { "shadow_refine_def", &battle_config.shadow_refine_def, 1, 0, 1, }, { "shadow_refine_atk", &battle_config.shadow_refine_atk, 1, 0, 1, }, + { "min_body_style", &battle_config.min_body_style, 0, 0, SHRT_MAX, }, + { "max_body_style", &battle_config.max_body_style, 4, 0, SHRT_MAX, }, + { "save_body_style", &battle_config.save_body_style, 0, 0, 1, }, }; #ifndef STATS_OPT_OUT /** diff --git a/src/map/battle.h b/src/map/battle.h index 37d78436c..49abdc730 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -43,6 +43,8 @@ struct status_data; #define MAX_HAIR_COLOR (battle->bc->max_hair_color) #define MIN_CLOTH_COLOR (battle->bc->min_cloth_color) #define MAX_CLOTH_COLOR (battle->bc->max_cloth_color) +#define MIN_BODY_STYLE (battle->bc->min_body_style) +#define MAX_BODY_STYLE (battle->bc->max_body_style) #define is_boss(bl) (status_get_mode(bl)&MD_BOSS) // Can refine later [Aru] @@ -529,9 +531,14 @@ struct Battle_Config { int show_monster_hp_bar; // [Frost] int fix_warp_hit_delay_abuse; - + + // Refine Def/Atk int costume_refine_def, shadow_refine_def; int shadow_refine_atk; + + // BodyStyle + int min_body_style, max_body_style; + int save_body_style; }; /* criteria for battle_config.idletime_critera */ diff --git a/src/map/battleground.c b/src/map/battleground.c index b2d6f0faf..e3fedbf34 100644 --- a/src/map/battleground.c +++ b/src/map/battleground.c @@ -220,29 +220,46 @@ int bg_team_get_id(struct block_list *bl) { nullpo_ret(bl); switch( bl->type ) { case BL_PC: - return ((TBL_PC*)bl)->bg_id; + { + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); + return sd->bg_id; + } case BL_PET: - if( ((TBL_PET*)bl)->msd ) - return ((TBL_PET*)bl)->msd->bg_id; + { + const struct pet_data *pd = BL_UCCAST(BL_PET, bl); + if (pd->msd != NULL) + return pd->msd->bg_id; + } break; case BL_MOB: { - struct map_session_data *msd; - struct mob_data *md = (TBL_MOB*)bl; + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + const struct map_session_data *msd; if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) return msd->bg_id; return md->bg_id; } case BL_HOM: - if( ((TBL_HOM*)bl)->master ) - return ((TBL_HOM*)bl)->master->bg_id; + { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + if (hd->master != NULL) + return hd->master->bg_id; + } break; case BL_MER: - if( ((TBL_MER*)bl)->master ) - return ((TBL_MER*)bl)->master->bg_id; + { + const struct mercenary_data *md = BL_UCCAST(BL_MER, bl); + if (md->master != NULL) + return md->master->bg_id; + } break; case BL_SKILL: - return ((TBL_SKILL*)bl)->group->bg_id; + { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl); + if (su->group != NULL) + return su->group->bg_id; + } + break; } return 0; @@ -655,7 +672,7 @@ int bg_afk_timer(int tid, int64 tick, int id, intptr_t data) { int count = 0; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( !sd->bg_queue.arena || !sd->bg_id ) continue; if( DIFF_TICK(sockt->last_tick, sd->idletime) > bg->mafksec ) diff --git a/src/map/chat.c b/src/map/chat.c index 45d4ea0cc..d60b9bece 100644 --- a/src/map/chat.c +++ b/src/map/chat.c @@ -53,7 +53,7 @@ struct chat_data* chat_createchat(struct block_list* bl, const char* title, cons nullpo_retr(NULL, ev); /* Given the overhead and the numerous instances (npc allocated or otherwise) wouldn't it be beneficial to have it use ERS? [Ind] */ - cd = (struct chat_data *) aMalloc(sizeof(struct chat_data)); + CREATE(cd, struct chat_data, 1); safestrncpy(cd->title, title, sizeof(cd->title)); safestrncpy(cd->pass, pass, sizeof(cd->pass)); @@ -140,7 +140,7 @@ bool chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) { nullpo_ret(sd); nullpo_ret(pass); - cd = (struct chat_data*)map->id2bl(chatid); + cd = map->id2cd(chatid); if( cd == NULL || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->state.vending || sd->state.buyingstore || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit ) { @@ -204,7 +204,7 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) { nullpo_retr(0, sd); - cd = (struct chat_data*)map->id2bl(sd->chatID); + cd = map->id2cd(sd->chatID); if( cd == NULL ) { pc_setchatid(sd, 0); return 0; @@ -247,14 +247,14 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) { if( leavechar == 0 && cd->owner->type == BL_PC ) { // Set and announce new owner - cd->owner = (struct block_list*) cd->usersd[0]; + cd->owner = &cd->usersd[0]->bl; clif->changechatowner(cd, cd->usersd[0]); clif->clearchat(cd, 0); //Adjust Chat location after owner has been changed. map->delblock( &cd->bl ); - cd->bl.x=cd->usersd[0]->bl.x; - cd->bl.y=cd->usersd[0]->bl.y; + cd->bl.x = cd->owner->x; + cd->bl.y = cd->owner->y; map->addblock( &cd->bl ); clif->dispchat(cd,0); @@ -279,8 +279,8 @@ bool chat_changechatowner(struct map_session_data* sd, const char* nextownername nullpo_ret(sd); nullpo_ret(nextownername); - cd = (struct chat_data*)map->id2bl(sd->chatID); - if( cd == NULL || (struct block_list*) sd != cd->owner ) + cd = map->id2cd(sd->chatID); + if (cd == NULL || &sd->bl != cd->owner) return false; ARR_FIND( 1, cd->users, i, strncmp(cd->usersd[i]->status.name, nextownername, NAME_LENGTH) == 0 ); @@ -291,7 +291,7 @@ bool chat_changechatowner(struct map_session_data* sd, const char* nextownername clif->clearchat(cd,0); // set new owner - cd->owner = (struct block_list*) cd->usersd[i]; + cd->owner = &cd->usersd[i]->bl; clif->changechatowner(cd,cd->usersd[i]); // swap the old and new owners' positions @@ -324,8 +324,8 @@ bool chat_changechatstatus(struct map_session_data* sd, const char* title, const nullpo_ret(title); nullpo_ret(pass); - cd = (struct chat_data*)map->id2bl(sd->chatID); - if( cd==NULL || (struct block_list *)sd != cd->owner ) + cd = map->id2cd(sd->chatID); + if (cd == NULL || &sd->bl != cd->owner) return false; safestrncpy(cd->title, title, CHATROOM_TITLE_SIZE); @@ -352,9 +352,9 @@ bool chat_kickchat(struct map_session_data* sd, const char* kickusername) { nullpo_ret(sd); nullpo_ret(kickusername); - cd = (struct chat_data *)map->id2bl(sd->chatID); + cd = map->id2cd(sd->chatID); - if( cd==NULL || (struct block_list *)sd != cd->owner ) + if (cd == NULL || &sd->bl != cd->owner) return false; ARR_FIND( 0, cd->users, i, strncmp(cd->usersd[i]->status.name, kickusername, NAME_LENGTH) == 0 ); @@ -409,8 +409,8 @@ bool chat_deletenpcchat(struct npc_data* nd) { struct chat_data *cd; nullpo_ret(nd); - cd = (struct chat_data*)map->id2bl(nd->chat_id); - if( cd == NULL ) + cd = map->id2cd(nd->chat_id); + if (cd == NULL) return false; chat->npc_kick_all(cd); diff --git a/src/map/chrif.c b/src/map/chrif.c index e9227db73..1f7fbe96e 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -163,7 +163,8 @@ bool chrif_auth_delete(int account_id, int char_id, enum sd_state state) { } //Moves the sd character to the auth_db structure. -bool chrif_sd_to_auth(TBL_PC* sd, enum sd_state state) { +bool chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state) +{ struct auth_node *node; nullpo_retr(false, sd); @@ -191,7 +192,7 @@ bool chrif_sd_to_auth(TBL_PC* sd, enum sd_state state) { return true; } -bool chrif_auth_logout(TBL_PC* sd, enum sd_state state) +bool chrif_auth_logout(struct map_session_data *sd, enum sd_state state) { nullpo_retr(false, sd); if(sd->fd && state == ST_LOGOUT) { //Disassociate player, and free it after saving ack returns. [Skotlex] @@ -204,7 +205,8 @@ bool chrif_auth_logout(TBL_PC* sd, enum sd_state state) return chrif->sd_to_auth(sd, state); } -bool chrif_auth_finished(TBL_PC* sd) { +bool chrif_auth_finished(struct map_session_data *sd) +{ struct auth_node *node; nullpo_retr(false, sd); @@ -593,7 +595,7 @@ void chrif_authok(int fd) { struct mmo_charstatus* charstatus; struct auth_node *node; bool changing_mapservers; - TBL_PC* sd; + struct map_session_data *sd = NULL; //Check if both servers agree on the struct's size if( RFIFOW(fd,2) - 25 != sizeof(struct mmo_charstatus) ) { @@ -1476,8 +1478,8 @@ int send_usercount_tochar(int tid, int64 tick, int id, intptr_t data) { *------------------------------------------*/ bool send_users_tochar(void) { int users = 0, i = 0; - struct map_session_data* sd; - struct s_mapiterator* iter; + const struct map_session_data *sd; + struct s_mapiterator *iter; chrif_check(false); @@ -1487,7 +1489,7 @@ bool send_users_tochar(void) { WFIFOW(chrif->fd,0) = 0x2aff; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCCAST(BL_PC, mapit->next(iter))) { WFIFOL(chrif->fd,6+8*i) = sd->status.account_id; WFIFOL(chrif->fd,6+8*i+4) = sd->status.char_id; i++; diff --git a/src/map/chrif.h b/src/map/chrif.h index d57d4d42c..6a5ec36b6 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -21,9 +21,9 @@ #ifndef MAP_CHRIF_H #define MAP_CHRIF_H -#include "map/map.h" //TBL_PC #include "common/hercules.h" #include "common/db.h" +#include "common/mmo.h" struct eri; struct map_session_data; @@ -129,9 +129,9 @@ struct chrif_interface { bool (*flush) (void); void (*skillid2idx) (int fd); - bool (*sd_to_auth) (TBL_PC* sd, enum sd_state state); + bool (*sd_to_auth) (struct map_session_data *sd, enum sd_state state); int (*check_connect_char_server) (int tid, int64 tick, int id, intptr_t data); - bool (*auth_logout) (TBL_PC* sd, enum sd_state state); + bool (*auth_logout) (struct map_session_data *sd, enum sd_state state); void (*save_ack) (int fd); int (*reconnect) (DBKey key, DBData *data, va_list ap); int (*auth_db_cleanup_sub) (DBKey key, DBData *data, va_list ap); diff --git a/src/map/clif.c b/src/map/clif.c index a26fece79..827f57c45 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -190,8 +190,12 @@ static inline void RFIFOPOS2(int fd, unsigned short pos, short* x0, short* y0, s #endif // 0 //To identify disguised characters. -static inline bool disguised(struct block_list* bl) { - return (bool)( bl->type == BL_PC && ((TBL_PC*)bl)->disguise != -1 ); +static inline bool disguised(struct block_list* bl) +{ + struct map_session_data *sd = BL_CAST(BL_PC, bl); + if (sd == NULL || sd->disguise == -1) + return false; + return true; } //Guarantees that the given string does not exceeds the allowed size, as well as making sure it's null terminated. [Skotlex] @@ -313,7 +317,8 @@ int clif_send_sub(struct block_list *bl, va_list ap) { int len, type, fd; nullpo_ret(bl); - nullpo_ret(sd = (struct map_session_data *)bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); fd = sd->fd; if (!fd || sockt->session[fd] == NULL) //Don't send to disconnected clients. @@ -334,15 +339,14 @@ int clif_send_sub(struct block_list *bl, va_list ap) { return 0; break; case AREA_WOSC: { - if(src_bl->type == BL_PC){ - struct map_session_data *ssd = (struct map_session_data *)src_bl; - if (ssd && sd->chatID && (sd->chatID == ssd->chatID)) - return 0; - } - else if(src_bl->type == BL_NPC) { - struct npc_data *nd = (struct npc_data *)src_bl; - if (nd && sd->chatID && (sd->chatID == nd->chat_id)) - return 0; + if (src_bl->type == BL_PC) { + const struct map_session_data *ssd = BL_UCCAST(BL_PC, src_bl); + if (ssd != NULL && sd->chatID != 0 && (sd->chatID == ssd->chatID)) + return 0; + } else if (src_bl->type == BL_NPC) { + const struct npc_data *nd = BL_UCCAST(BL_NPC, src_bl); + if (nd != NULL && sd->chatID != 0 && (sd->chatID == nd->chat_id)) + return 0; } } break; @@ -404,7 +408,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); - while( (tsd = (TBL_PC*)mapit->next(iter)) != NULL ) { + while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); WFIFOSET(tsd->fd,len); @@ -414,7 +418,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target case ALL_SAMEMAP: //All players on the same map iter = mapit_getallusers(); - while ((tsd = (TBL_PC*)mapit->next(iter)) != NULL) { + while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { if (bl && bl->m == tsd->bl.m) { WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); @@ -445,12 +449,12 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target case CHAT_WOS: nullpo_retr(true, bl); { - struct chat_data *cd; - if (sd) { - cd = (struct chat_data*)map->id2bl(sd->chatID); - } else if (bl->type == BL_CHAT) { - cd = (struct chat_data*)bl; - } else break; + const struct chat_data *cd = NULL; + if (sd != NULL) { + cd = map->id2cd(sd->chatID); + } else { + cd = BL_CCAST(BL_CHAT, bl); + } if (cd == NULL) break; for(i = 0; i < cd->users; i++) { @@ -505,7 +509,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target break; iter = mapit_getallusers(); - while( (tsd = (TBL_PC*)mapit->next(iter)) != NULL ) { + while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { if( tsd->partyspy == p->party.party_id ) { WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); @@ -521,7 +525,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target if (!sd || !sd->duel_group) break; //Invalid usage. iter = mapit_getallusers(); - while( (tsd = (TBL_PC*)mapit->next(iter)) != NULL ) { + while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { if( type == DUEL_WOS && bl->id == tsd->bl.id ) continue; if( sd->duel_group == tsd->duel_group ) { @@ -584,7 +588,7 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target break; iter = mapit_getallusers(); - while( (tsd = (TBL_PC*)mapit->next(iter)) != NULL ) { + while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { if( tsd->guildspy == g->guild_id ) { WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); @@ -946,7 +950,7 @@ void clif_set_unit_idle2(struct block_list* bl, struct map_session_data *tsd, en p.speed = status->get_speed(bl); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; - p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + p.effectState = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); p.job = vd->class_; p.head = vd->hair_style; p.weapon = vd->weapon; @@ -1013,7 +1017,7 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu p.speed = status->get_speed(bl); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; - p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + p.effectState = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); p.job = vd->class_; p.head = vd->hair_style; p.weapon = vd->weapon; @@ -1049,9 +1053,10 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu #endif #if PACKETVER >= 20120221 if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); p.maxHP = status_get_max_hp(bl); p.HP = status_get_hp(bl); - p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0; + p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0; } else { p.maxHP = -1; p.HP = -1; @@ -1059,7 +1064,7 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu } #endif #if PACKETVER >= 20150513 - p.body = 0; + p.body = vd->body_style; #endif clif->send(&p,sizeof(p),tsd?&tsd->bl:bl,target); @@ -1095,7 +1100,7 @@ void clif_spawn_unit2(struct block_list* bl, enum send_target target) { p.speed = status->get_speed(bl); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; - p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + p.effectState = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); p.head = vd->hair_style; p.weapon = vd->weapon; p.accessory = vd->head_bottom; @@ -1153,7 +1158,7 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) { p.speed = status->get_speed(bl); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; - p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + p.effectState = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); p.job = vd->class_; p.head = vd->hair_style; p.weapon = vd->weapon; @@ -1188,9 +1193,10 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) { #endif #if PACKETVER >= 20120221 if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); p.maxHP = status_get_max_hp(bl); p.HP = status_get_hp(bl); - p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0; + p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0; } else { p.maxHP = -1; p.HP = -1; @@ -1198,7 +1204,7 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) { } #endif #if PACKETVER >= 20150513 - p.body = 0; + p.body = vd->body_style; #endif if( disguised(bl) ) { nullpo_retv(sd); @@ -1247,7 +1253,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, p.speed = status->get_speed(bl); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; - p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + p.effectState = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); p.job = vd->class_; p.head = vd->hair_style; p.weapon = vd->weapon; @@ -1278,9 +1284,10 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, #endif #if PACKETVER >= 20120221 if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); p.maxHP = status_get_max_hp(bl); p.HP = status_get_hp(bl); - p.isBoss = ( ((TBL_MOB*)bl)->spawn && ((TBL_MOB*)bl)->spawn->state.boss ) ? 1 : 0; + p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0; } else { p.maxHP = -1; p.HP = -1; @@ -1288,7 +1295,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, } #endif #if PACKETVER >= 20150513 - p.body = 0; + p.body = vd->body_style; #endif clif->send(&p,sizeof(p),tsd?&tsd->bl:bl,target); @@ -1387,8 +1394,7 @@ void clif_weather(int16 m) struct map_session_data *sd=NULL; iter = mapit_getallusers(); - for( sd = (struct map_session_data*)mapit->first(iter); mapit->exists(iter); sd = (struct map_session_data*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( sd->bl.m == m ) clif->weather_check(sd); } @@ -1406,61 +1412,65 @@ bool clif_spawn(struct block_list *bl) if( !vd ) return false; - if( ( bl->type == BL_NPC - && !((TBL_NPC*)bl)->chat_id - && (((TBL_NPC*)bl)->option&OPTION_INVISIBLE) ) // Hide NPC from maya purple card. - || ( vd->class_ == INVISIBLE_CLASS ) - ) + if (vd->class_ == INVISIBLE_CLASS) return true; // Doesn't need to be spawned, so everything is alright + if (bl->type == BL_NPC) { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->chat_id == 0 && (nd->option&OPTION_INVISIBLE)) // Hide NPC from maya purple card. + return true; // Doesn't need to be spawned, so everything is alright + } + clif->spawn_unit(bl,AREA_WOS); if (vd->cloth_color) clif->refreshlook(bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,AREA_WOS); + if (vd->body_style) + clif->refreshlook(bl,bl->id,LOOK_BODY2,vd->body_style,AREA_WOS); switch (bl->type) { case BL_PC: - { - TBL_PC *sd = ((TBL_PC*)bl); - int i; - if (sd->spiritball > 0) - clif->spiritball(&sd->bl); - if(sd->state.size==SZ_BIG) // tiny/big players [Valaris] - clif->specialeffect(bl,423,AREA); - else if(sd->state.size==SZ_MEDIUM) - clif->specialeffect(bl,421,AREA); - if( sd->bg_id && map->list[sd->bl.m].flag.battleground ) - clif->sendbgemblem_area(sd); - for( i = 0; i < sd->sc_display_count; i++ ) { - clif->sc_load(&sd->bl, sd->bl.id,AREA,status->dbs->IconChangeTable[sd->sc_display[i]->type],sd->sc_display[i]->val1,sd->sc_display[i]->val2,sd->sc_display[i]->val3); - } - if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) - clif->spiritcharm(sd); - if (sd->status.robe) - clif->refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA); + { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + int i; + if (sd->spiritball > 0) + clif->spiritball(&sd->bl); + if (sd->state.size == SZ_BIG) // tiny/big players [Valaris] + clif->specialeffect(bl,423,AREA); + else if (sd->state.size == SZ_MEDIUM) + clif->specialeffect(bl,421,AREA); + if (sd->bg_id != 0 && map->list[sd->bl.m].flag.battleground) + clif->sendbgemblem_area(sd); + for (i = 0; i < sd->sc_display_count; i++) { + clif->sc_load(&sd->bl, sd->bl.id,AREA,status->dbs->IconChangeTable[sd->sc_display[i]->type],sd->sc_display[i]->val1,sd->sc_display[i]->val2,sd->sc_display[i]->val3); } + if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) + clif->spiritcharm(sd); + if (sd->status.robe) + clif->refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA); + } break; case BL_MOB: - { - TBL_MOB *md = ((TBL_MOB*)bl); - if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris] - clif->specialeffect(&md->bl,423,AREA); - else if(md->special_state.size==SZ_MEDIUM) - clif->specialeffect(&md->bl,421,AREA); - } + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris] + clif->specialeffect(&md->bl,423,AREA); + else if (md->special_state.size==SZ_MEDIUM) + clif->specialeffect(&md->bl,421,AREA); + } break; case BL_NPC: - { - TBL_NPC *nd = ((TBL_NPC*)bl); - if( nd->size == SZ_BIG ) - clif->specialeffect(&nd->bl,423,AREA); - else if( nd->size == SZ_MEDIUM ) - clif->specialeffect(&nd->bl,421,AREA); - } + { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->size == SZ_BIG) + clif->specialeffect(&nd->bl,423,AREA); + else if (nd->size == SZ_MEDIUM) + clif->specialeffect(&nd->bl,421,AREA); + } break; case BL_PET: if (vd->head_bottom) - clif->send_petdata(NULL, (TBL_PET*)bl, 3, vd->head_bottom); // needed to display pet equip properly + clif->send_petdata(NULL, BL_UCAST(BL_PET, bl), 3, vd->head_bottom); // needed to display pet equip properly break; } return true; @@ -1681,30 +1691,32 @@ void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *u if(vd->cloth_color) clif->refreshlook(bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,AREA_WOS); + if (vd->body_style) + clif->refreshlook(bl,bl->id,LOOK_BODY2,vd->body_style,AREA_WOS); switch(bl->type) { case BL_PC: - { - TBL_PC *sd = ((TBL_PC*)bl); - //clif_movepc(sd); - if(sd->state.size==SZ_BIG) // tiny/big players [Valaris] - clif->specialeffect(&sd->bl,423,AREA); - else if(sd->state.size==SZ_MEDIUM) - clif->specialeffect(&sd->bl,421,AREA); - } + { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + //clif_movepc(sd); + if(sd->state.size==SZ_BIG) // tiny/big players [Valaris] + clif->specialeffect(&sd->bl,423,AREA); + else if(sd->state.size==SZ_MEDIUM) + clif->specialeffect(&sd->bl,421,AREA); + } break; case BL_MOB: - { - TBL_MOB *md = ((TBL_MOB*)bl); - if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris] - clif->specialeffect(&md->bl,423,AREA); - else if(md->special_state.size==SZ_MEDIUM) - clif->specialeffect(&md->bl,421,AREA); - } + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (md->special_state.size == SZ_BIG) // tiny/big mobs [Valaris] + clif->specialeffect(&md->bl,423,AREA); + else if (md->special_state.size == SZ_MEDIUM) + clif->specialeffect(&md->bl,421,AREA); + } break; case BL_PET: if( vd->head_bottom ) // needed to display pet equip properly - clif->send_petdata(NULL, (TBL_PET*)bl, 3, vd->head_bottom); + clif->send_petdata(NULL, BL_UCAST(BL_PET, bl), 3, vd->head_bottom); break; } #ifdef ANTI_MAYAP_CHEAT @@ -1731,11 +1743,12 @@ void clif_move(struct unit_data *ud) if (!vd || vd->class_ == INVISIBLE_CLASS) return; //This performance check is needed to keep GM-hidden objects from being notified to bots. - /** - * Hide NPC from maya purple card. - **/ - if(bl->type == BL_NPC && !((TBL_NPC*)bl)->chat_id && (((TBL_NPC*)bl)->option&OPTION_INVISIBLE)) - return; + if (bl->type == BL_NPC) { + // Hide NPC from maya purple card. + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->chat_id == 0 && (nd->option&OPTION_INVISIBLE)) + return; + } if (ud->state.speed_changed) { // Since we don't know how to update the speed of other objects, @@ -2761,16 +2774,15 @@ void clif_guild_xy_remove(struct map_session_data *sd) /*========================================== * *------------------------------------------*/ -int clif_hpmeter_sub(struct block_list *bl, va_list ap) { - struct map_session_data *sd, *tsd; +int clif_hpmeter_sub(struct block_list *bl, va_list ap) +{ #if PACKETVER < 20100126 const int cmd = 0x106; #else const int cmd = 0x80e; #endif - - sd = va_arg(ap, struct map_session_data *); - tsd = (TBL_PC *)bl; + struct map_session_data *sd = va_arg(ap, struct map_session_data *); + struct map_session_data *tsd = BL_CAST(BL_PC, bl); nullpo_ret(sd); nullpo_ret(tsd); @@ -3120,6 +3132,11 @@ void clif_changelook(struct block_list *bl,int type,int val) vd->cloth_color = 0; if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */) vd->cloth_color = 0; + if (vd->body_style && ( + sd->sc.option&OPTION_WEDDING || sd->sc.option&OPTION_XMAS || + sd->sc.option&OPTION_SUMMER || sd->sc.option&OPTION_HANBOK || + sd->sc.option&OPTION_OKTOBERFEST)) + vd->body_style = 0; break; case LOOK_HAIR: vd->hair_style = val; @@ -3177,6 +3194,14 @@ void clif_changelook(struct block_list *bl,int type,int val) vd->robe = val; #endif break; + case LOOK_BODY2: + if (val && ( + sd->sc.option&OPTION_WEDDING || sd->sc.option&OPTION_XMAS || + sd->sc.option&OPTION_SUMMER || sd->sc.option&OPTION_HANBOK || + sd->sc.option&OPTION_OKTOBERFEST)) + val = 0; + vd->body_style = val; + break; } // prevent leaking the presence of GM-hidden objects @@ -3474,7 +3499,7 @@ void clif_changeoption(struct block_list* bl) WBUFL(buf,2) = bl->id; WBUFW(buf,6) = (sc) ? sc->opt1 : 0; WBUFW(buf,8) = (sc) ? sc->opt2 : 0; - WBUFL(buf,10) = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + WBUFL(buf,10) = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); WBUFB(buf,14) = (sd)? sd->status.karma : 0; if(disguised(bl)) { clif->send(buf,packet_len(0x229),bl,AREA_WOS); @@ -3490,7 +3515,7 @@ void clif_changeoption(struct block_list* bl) WBUFL(buf,2) = bl->id; WBUFW(buf,6) = (sc) ? sc->opt1 : 0; WBUFW(buf,8) = (sc) ? sc->opt2 : 0; - WBUFL(buf,10) = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + WBUFL(buf,10) = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); WBUFB(buf,12) = (sd)? sd->status.karma : 0; if(disguised(bl)) { clif->send(buf,packet_len(0x119),bl,AREA_WOS); @@ -3515,7 +3540,7 @@ void clif_changeoption2(struct block_list* bl) { WBUFW(buf,0) = 0x28a; WBUFL(buf,2) = bl->id; - WBUFL(buf,6) = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0; + WBUFL(buf,6) = (sc != NULL) ? sc->option : ((bl->type == BL_NPC) ? BL_UCCAST(BL_NPC, bl)->option : 0); WBUFL(buf,10) = clif_setlevel(bl); WBUFL(buf,14) = (sc) ? sc->opt3 : 0; if(disguised(bl)) { @@ -3725,10 +3750,11 @@ void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd) WFIFOW(fd, 2) = 8 + (28*(cd->users+t)); WFIFOL(fd, 4) = cd->bl.id; - if(cd->owner->type == BL_NPC){ + if(cd->owner->type == BL_NPC) { + const struct npc_data *nd = BL_UCCAST(BL_NPC, cd->owner); WFIFOL(fd, 30) = 1; WFIFOL(fd, 8) = 0; - memcpy(WFIFOP(fd, 12), ((struct npc_data *)cd->owner)->name, NAME_LENGTH); + memcpy(WFIFOP(fd, 12), nd->name, NAME_LENGTH); for (i = 0; i < cd->users; i++) { WFIFOL(fd, 8+(i+1)*28) = 1; memcpy(WFIFOP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH); @@ -4103,8 +4129,8 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds nullpo_retv(sd); nullpo_retv(dstsd); if( dstsd->chatID ) { - struct chat_data *cd = NULL; - if( (cd = (struct chat_data*)map->id2bl(dstsd->chatID)) && cd->usersd[0]==dstsd) + struct chat_data *cd = map->id2cd(dstsd->chatID); + if (cd != NULL && cd->usersd[0] == dstsd) clif->dispchat(cd,sd->fd); } else if( dstsd->state.vending ) clif->showvendingboard(&dstsd->bl,dstsd->message,sd->fd); @@ -4147,11 +4173,12 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) { if (!vd || vd->class_ == INVISIBLE_CLASS) return; - /** - * Hide NPC from maya purple card. - **/ - if(bl->type == BL_NPC && !((TBL_NPC*)bl)->chat_id && (((TBL_NPC*)bl)->option&OPTION_INVISIBLE)) - return; + if (bl->type == BL_NPC) { + // Hide NPC from maya purple card. + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->chat_id == 0 && (nd->option&OPTION_INVISIBLE)) + return; + } if ( ( ud = unit->bl2ud(bl) ) && ud->walktimer != INVALID_TIMER ) clif->set_unit_walking(bl,sd,ud,SELF); @@ -4160,59 +4187,65 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) { if (vd->cloth_color) clif->refreshlook(&sd->bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,SELF); + if (vd->body_style) + clif->refreshlook(&sd->bl,bl->id,LOOK_BODY2,vd->body_style,SELF); + switch (bl->type) { case BL_PC: - { - TBL_PC* tsd = (TBL_PC*)bl; - clif->getareachar_pc(sd, tsd); - if(tsd->state.size==SZ_BIG) // tiny/big players [Valaris] - clif->specialeffect_single(bl,423,sd->fd); - else if(tsd->state.size==SZ_MEDIUM) - clif->specialeffect_single(bl,421,sd->fd); - if( tsd->bg_id && map->list[tsd->bl.m].flag.battleground ) - clif->sendbgemblem_single(sd->fd,tsd); - if ( tsd->status.robe ) - clif->refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF); - } + { + struct map_session_data *tsd = BL_UCAST(BL_PC, bl); + clif->getareachar_pc(sd, tsd); + if (tsd->state.size == SZ_BIG) // tiny/big players [Valaris] + clif->specialeffect_single(bl,423,sd->fd); + else if (tsd->state.size == SZ_MEDIUM) + clif->specialeffect_single(bl,421,sd->fd); + if (tsd->bg_id != 0 && map->list[tsd->bl.m].flag.battleground) + clif->sendbgemblem_single(sd->fd,tsd); + if (tsd->status.robe) + clif->refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF); + } break; case BL_MER: // Devotion Effects - if( ((TBL_MER*)bl)->devotion_flag ) + { + struct mercenary_data *md = BL_UCAST(BL_MER, bl); + if (md->devotion_flag) clif->devotion(bl, sd); + } break; case BL_NPC: - { - TBL_NPC* nd = (TBL_NPC*)bl; - if( nd->chat_id ) - clif->dispchat((struct chat_data*)map->id2bl(nd->chat_id),sd->fd); - if( nd->size == SZ_BIG ) - clif->specialeffect_single(bl,423,sd->fd); - else if( nd->size == SZ_MEDIUM ) - clif->specialeffect_single(bl,421,sd->fd); - } + { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->chat_id != 0) + clif->dispchat(map->id2cd(nd->chat_id), sd->fd); + if (nd->size == SZ_BIG) + clif->specialeffect_single(bl,423,sd->fd); + else if (nd->size == SZ_MEDIUM) + clif->specialeffect_single(bl,421,sd->fd); + } break; case BL_MOB: - { - TBL_MOB* md = (TBL_MOB*)bl; - if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris] - clif->specialeffect_single(bl,423,sd->fd); - else if(md->special_state.size==SZ_MEDIUM) - clif->specialeffect_single(bl,421,sd->fd); + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (md->special_state.size == SZ_BIG) // tiny/big mobs [Valaris] + clif->specialeffect_single(bl,423,sd->fd); + else if (md->special_state.size == SZ_MEDIUM) + clif->specialeffect_single(bl,421,sd->fd); #if (PACKETVER >= 20120404 && PACKETVER < 20131223) - if (battle_config.show_monster_hp_bar && !(md->status.mode&MD_BOSS)) { - int i; - for(i = 0; i < DAMAGELOG_SIZE; i++) {// must show hp bar to all char who already hit the mob. - if (md->dmglog[i].id == sd->status.char_id) { - clif->monster_hp_bar(md, sd); - break; - } + if (battle_config.show_monster_hp_bar && !(md->status.mode&MD_BOSS)) { + int i; + for (i = 0; i < DAMAGELOG_SIZE; i++) {// must show hp bar to all char who already hit the mob. + if (md->dmglog[i].id == sd->status.char_id) { + clif->monster_hp_bar(md, sd); + break; } } -#endif } +#endif + } break; case BL_PET: if (vd->head_bottom) - clif->send_petdata(NULL, (TBL_PET*)bl, 3, vd->head_bottom); // needed to display pet equip properly + clif->send_petdata(NULL, BL_UCAST(BL_PET, bl), 3, vd->head_bottom); // needed to display pet equip properly break; } } @@ -4502,8 +4535,10 @@ void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *su, en clif->send(&p,sizeof(p),bl,target); - if(su->group->skill_id == WZ_ICEWALL) - clif->changemapcell(bl->type == BL_PC ? ((TBL_PC*)bl)->fd : 0,su->bl.m,su->bl.x,su->bl.y,5,SELF); + if (su->group->skill_id == WZ_ICEWALL) { + struct map_session_data *sd = BL_CAST(BL_PC, bl); + clif->changemapcell(sd != NULL ? sd->fd : 0, su->bl.m, su->bl.x, su->bl.y, 5, SELF); + } } /*========================================== @@ -4562,10 +4597,10 @@ int clif_getareachar(struct block_list* bl,va_list ap) { switch(bl->type){ case BL_ITEM: - clif->getareachar_item(sd,(struct flooritem_data*) bl); + clif->getareachar_item(sd, BL_UCAST(BL_ITEM, bl)); break; case BL_SKILL: - clif->getareachar_skillunit(&sd->bl,(TBL_SKILL*)bl,SELF); + clif->getareachar_skillunit(&sd->bl, BL_UCAST(BL_SKILL, bl), SELF); break; default: if(&sd->bl == bl) @@ -4583,7 +4618,7 @@ int clif_outsight(struct block_list *bl,va_list ap) { struct block_list *tbl; struct view_data *vd; - TBL_PC *sd, *tsd; + struct map_session_data *sd, *tsd; tbl=va_arg(ap,struct block_list*); if(bl == tbl) return 0; // bl can be null pointer? and after if BL_PC, sd will be null pointer too @@ -4596,9 +4631,8 @@ int clif_outsight(struct block_list *bl,va_list ap) case BL_PC: if (sd->vd.class_ != INVISIBLE_CLASS) clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd); - if(sd->chatID){ - struct chat_data *cd; - cd=(struct chat_data*)map->id2bl(sd->chatID); + if (sd->chatID) { + struct chat_data *cd = map->id2cd(sd->chatID); if(cd->usersd[0]==sd) clif->dispchat(cd,tsd->fd); } @@ -4608,13 +4642,13 @@ int clif_outsight(struct block_list *bl,va_list ap) clif->buyingstore_disappear_entry_single(tsd, sd); break; case BL_ITEM: - clif->clearflooritem((struct flooritem_data*)bl,tsd->fd); + clif->clearflooritem(BL_UCAST(BL_ITEM, bl), tsd->fd); break; case BL_SKILL: - clif->clearchar_skillunit((struct skill_unit *)bl,tsd->fd); + clif->clearchar_skillunit(BL_UCAST(BL_SKILL, bl), tsd->fd); break; case BL_NPC: - if( !(((TBL_NPC*)bl)->option&OPTION_INVISIBLE) ) + if (!(BL_UCAST(BL_NPC, bl)->option&OPTION_INVISIBLE)) clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd); break; default: @@ -4625,10 +4659,10 @@ int clif_outsight(struct block_list *bl,va_list ap) } if (sd && sd->fd) { //sd is watching tbl go out of view. nullpo_ret(tbl); - if(tbl->type == BL_SKILL) //Trap knocked out of sight - clif->clearchar_skillunit((struct skill_unit *)tbl,sd->fd); - else if (((vd=status->get_viewdata(tbl)) && vd->class_ != INVISIBLE_CLASS) && - !(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->option&OPTION_INVISIBLE))) + if (tbl->type == BL_SKILL) //Trap knocked out of sight + clif->clearchar_skillunit(BL_UCAST(BL_SKILL, tbl), sd->fd); + else if ((vd = status->get_viewdata(tbl)) && vd->class_ != INVISIBLE_CLASS + && !(tbl->type == BL_NPC && (BL_UCAST(BL_NPC, tbl)->option&OPTION_INVISIBLE))) clif->clearunit_single(tbl->id,CLR_OUTSIGHT,sd->fd); } return 0; @@ -4640,7 +4674,7 @@ int clif_outsight(struct block_list *bl,va_list ap) int clif_insight(struct block_list *bl,va_list ap) { struct block_list *tbl; - TBL_PC *sd, *tsd; + struct map_session_data *sd, *tsd; tbl=va_arg(ap,struct block_list*); if (bl == tbl) return 0; @@ -4652,10 +4686,10 @@ int clif_insight(struct block_list *bl,va_list ap) nullpo_ret(bl); switch(bl->type) { case BL_ITEM: - clif->getareachar_item(tsd,(struct flooritem_data*)bl); + clif->getareachar_item(tsd, BL_UCAST(BL_ITEM, bl)); break; case BL_SKILL: - clif->getareachar_skillunit(&tsd->bl,(TBL_SKILL*)bl,SELF); + clif->getareachar_skillunit(&tsd->bl, BL_UCAST(BL_SKILL, bl), SELF); break; default: clif->getareachar_unit(tsd,bl); @@ -5649,11 +5683,13 @@ void clif_resurrection(struct block_list *bl,int type) clif->send(buf,packet_len(0x148),bl, type == 1 ? AREA : AREA_WOS); if (disguised(bl)) { - if( ((TBL_PC*)bl)->fontcolor ) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + if (sd->fontcolor) { WBUFL(buf,2)=-bl->id; clif->send(buf,packet_len(0x148),bl, SELF); - } else + } else { clif->spawn(bl); + } } } @@ -6993,8 +7029,8 @@ void clif_devotion(struct block_list *src, struct map_session_data *tsd) *------------------------------------------*/ void clif_spiritball(struct block_list *bl) { unsigned char buf[16]; - TBL_PC *sd = BL_CAST(BL_PC,bl); - TBL_HOM *hd = BL_CAST(BL_HOM,bl); + struct map_session_data *sd = BL_CAST(BL_PC,bl); + struct homun_data *hd = BL_CAST(BL_HOM,bl); nullpo_retv(bl); @@ -8281,6 +8317,8 @@ void clif_refresh(struct map_session_data *sd) if (sd->vd.cloth_color) clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF); + if (sd->vd.body_style) + clif->refreshlook(&sd->bl,sd->bl.id,LOOK_BODY2,sd->vd.body_style,SELF); if(homun_alive(sd->hd)) clif->send_homdata(sd,SP_ACK,0); if( sd->md ) { @@ -8331,114 +8369,110 @@ void clif_charnameack (int fd, struct block_list *bl) switch( bl->type ) { case BL_PC: - { - struct map_session_data *ssd = (struct map_session_data *)bl; - struct party_data *p = NULL; - struct guild *g = NULL; - int ps = -1; - - //Requesting your own "shadow" name. [Skotlex] - if (ssd->fd == fd && ssd->disguise != -1) - WBUFL(buf,2) = -bl->id; - - if( ssd->fakename[0] ) { - WBUFW(buf, 0) = cmd = 0x195; - memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH); - WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0; - break; - } - memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH); + { + const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl); + const struct party_data *p = NULL; + const struct guild *g = NULL; + int ps = -1; - if( ssd->status.party_id ) { - p = party->search(ssd->status.party_id); - } - if( ssd->status.guild_id ) { - if ((g = ssd->guild ) != NULL) { - int i; - ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id); - if( i < g->max_member ) ps = g->member[i].position; - } - } + //Requesting your own "shadow" name. [Skotlex] + if (ssd->fd == fd && ssd->disguise != -1) + WBUFL(buf,2) = -bl->id; + + if (ssd->fakename[0] != '\0') { + WBUFW(buf, 0) = cmd = 0x195; + memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH); + WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0; + break; + } + memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH); - if( !battle_config.display_party_name && g == NULL ) {// do not display party unless the player is also in a guild - p = NULL; + if (ssd->status.party_id != 0) { + p = party->search(ssd->status.party_id); + } + if (ssd->status.guild_id != 0) { + if ((g = ssd->guild) != NULL) { + int i; + ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id); + if (i < g->max_member) + ps = g->member[i].position; } + } - if (p == NULL && g == NULL) - break; + if (!battle_config.display_party_name && g == NULL) { + // do not display party unless the player is also in a guild + p = NULL; + } - WBUFW(buf, 0) = cmd = 0x195; - if (p) - memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH); - else - WBUFB(buf,30) = 0; + if (p == NULL && g == NULL) + break; - if (g && ps >= 0 && ps < MAX_GUILDPOSITION) - { - memcpy(WBUFP(buf,54), g->name,NAME_LENGTH); - memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH); - } else { //Assume no guild. - WBUFB(buf,54) = 0; - WBUFB(buf,78) = 0; - } + WBUFW(buf, 0) = cmd = 0x195; + if (p != NULL) + memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH); + else + WBUFB(buf,30) = 0; + + if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) { + memcpy(WBUFP(buf,54), g->name,NAME_LENGTH); + memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH); + } else { //Assume no guild. + WBUFB(buf,54) = 0; + WBUFB(buf,78) = 0; } + } break; //[blackhole89] case BL_HOM: - memcpy(WBUFP(buf,6), ((TBL_HOM*)bl)->homunculus.name, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_HOM, bl)->homunculus.name, NAME_LENGTH); break; case BL_MER: - memcpy(WBUFP(buf,6), ((TBL_MER*)bl)->db->name, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_MER, bl)->db->name, NAME_LENGTH); break; case BL_PET: - memcpy(WBUFP(buf,6), ((TBL_PET*)bl)->pet.name, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_PET, bl)->pet.name, NAME_LENGTH); break; case BL_NPC: - memcpy(WBUFP(buf,6), ((TBL_NPC*)bl)->name, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_NPC, bl)->name, NAME_LENGTH); break; case BL_MOB: - { - struct mob_data *md = (struct mob_data *)bl; - nullpo_retv(md); - - memcpy(WBUFP(buf,6), md->name, NAME_LENGTH); - if( md->guardian_data && md->guardian_data->g ) - { - WBUFW(buf, 0) = cmd = 0x195; - WBUFB(buf,30) = 0; - memcpy(WBUFP(buf,54), md->guardian_data->g->name, NAME_LENGTH); - memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH); - } - else if( battle_config.show_mob_info ) - { - char mobhp[50], *str_p = mobhp; - WBUFW(buf, 0) = cmd = 0x195; - if( battle_config.show_mob_info&4 ) - str_p += sprintf(str_p, "Lv. %d | ", md->level); - if( battle_config.show_mob_info&1 ) - str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp); - if( battle_config.show_mob_info&2 ) - str_p += sprintf(str_p, "HP: %u%% | ", get_percentage(md->status.hp, md->status.max_hp)); - //Even thought mobhp ain't a name, we send it as one so the client - //can parse it. [Skotlex] - if( str_p != mobhp ) - { - *(str_p-3) = '\0'; //Remove trailing space + pipe. - memcpy(WBUFP(buf,30), mobhp, NAME_LENGTH); - WBUFB(buf,54) = 0; - WBUFB(buf,78) = 0; - } + { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + + memcpy(WBUFP(buf,6), md->name, NAME_LENGTH); + if (md->guardian_data && md->guardian_data->g) { + WBUFW(buf, 0) = cmd = 0x195; + WBUFB(buf,30) = 0; + memcpy(WBUFP(buf,54), md->guardian_data->g->name, NAME_LENGTH); + memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH); + } else if (battle_config.show_mob_info) { + char mobhp[50], *str_p = mobhp; + WBUFW(buf, 0) = cmd = 0x195; + if (battle_config.show_mob_info&4) + str_p += sprintf(str_p, "Lv. %d | ", md->level); + if (battle_config.show_mob_info&1) + str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp); + if (battle_config.show_mob_info&2) + str_p += sprintf(str_p, "HP: %u%% | ", get_percentage(md->status.hp, md->status.max_hp)); + //Even thought mobhp ain't a name, we send it as one so the client + //can parse it. [Skotlex] + if (str_p != mobhp) { + *(str_p-3) = '\0'; //Remove trailing space + pipe. + memcpy(WBUFP(buf,30), mobhp, NAME_LENGTH); + WBUFB(buf,54) = 0; + WBUFB(buf,78) = 0; } } + } break; case BL_CHAT: #if 0 //FIXME: Clients DO request this... what should be done about it? The chat's title may not fit... [Skotlex] - memcpy(WBUFP(buf,6), (struct chat*)->title, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_CHAT, bl)->title, NAME_LENGTH); break; #endif return; case BL_ELEM: - memcpy(WBUFP(buf,6), ((TBL_ELEM*)bl)->db->name, NAME_LENGTH); + memcpy(WBUFP(buf,6), BL_UCCAST(BL_ELEM, bl)->db->name, NAME_LENGTH); break; default: ShowError("clif_charnameack: bad type %d(%d)\n", bl->type, bl->id); @@ -8446,9 +8480,9 @@ void clif_charnameack (int fd, struct block_list *bl) } // if no recipient specified just update nearby clients - if (fd == 0) + if (fd == 0) { clif->send(buf, packet_len(cmd), bl, AREA); - else { + } else { WFIFOHEAD(fd, packet_len(cmd)); memcpy(WFIFOP(fd, 0), buf, packet_len(cmd)); WFIFOSET(fd, packet_len(cmd)); @@ -9065,7 +9099,7 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) { return; } - CREATE(sd, TBL_PC, 1); + CREATE(sd, struct map_session_data, 1); sd->fd = fd; sd->cryptKey = (( ((( clif->cryptKey[0] * clif->cryptKey[1] ) + clif->cryptKey[2]) & 0xFFFFFFFF) @@ -9124,6 +9158,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) { if(sd->vd.cloth_color) clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF); + if (sd->vd.body_style) + clif->refreshlook(&sd->bl,sd->bl.id,LOOK_BODY2,sd->vd.body_style,SELF); // item clif->inventorylist(sd); // inventory list first, otherwise deleted items in pc->checkitem show up as 'unknown item' pc->checkitem(sd); @@ -9866,7 +9902,7 @@ void clif_changed_dir(struct block_list *bl, enum send_target target) nullpo_retv(bl); WBUFW(buf,0) = 0x9c; WBUFL(buf,2) = bl->id; - WBUFW(buf,6) = bl->type==BL_PC?((TBL_PC*)bl)->head_dir:0; + WBUFW(buf,6) = bl->type == BL_PC ? BL_UCCAST(BL_PC, bl)->head_dir : 0; WBUFB(buf,8) = unit->getdir(bl); clif->send(buf, packet_len(0x9c), bl, target); @@ -9949,9 +9985,8 @@ void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) { clif->user_count(sd, map->getusers()); } -void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick) { - struct block_list *target = NULL; - +void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, int64 tick) +{ nullpo_retv(sd); if (pc_isdead(sd)) { clif->clearunit_area(&sd->bl, CLR_DEAD); @@ -9978,8 +10013,10 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, switch(action_type) { case 0x00: // once attack case 0x07: // continuous attack - if( (target = map->id2bl(target_id)) && target->type == BL_NPC ) { - npc->click(sd,(TBL_NPC*)target); + { + struct npc_data *nd = map->id2nd(target_id); + if (nd != NULL) { + npc->click(sd, nd); return; } @@ -9999,6 +10036,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, pc->delinvincibletimer(sd); pc->update_idle_time(sd, BCIDLE_ATTACK); unit->attack(&sd->bl, target_id, action_type != 0); + } break; case 0x02: // sitdown if (battle_config.basic_skill_check && pc->checkskill(sd, NV_BASIC) < 3) { @@ -10256,13 +10294,10 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) __attribute__((non /// 009f <id>.L (CZ_ITEM_PICKUP) /// 0362 <id>.L (CZ_ITEM_PICKUP2) /// There are various variants of this packet, some of them have padding between fields. -void clif_parse_TakeItem(int fd, struct map_session_data *sd) { - struct flooritem_data *fitem; - int map_object_id; - - map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - - fitem = (struct flooritem_data*)map->id2bl(map_object_id); +void clif_parse_TakeItem(int fd, struct map_session_data *sd) +{ + int map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); + struct flooritem_data *fitem = map->id2fi(map_object_id); do { if (pc_isdead(sd)) { @@ -10270,7 +10305,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) { break; } - if (fitem == NULL || fitem->bl.type != BL_ITEM || fitem->bl.m != sd->bl.m) + if (fitem == NULL || fitem->bl.m != sd->bl.m) break; if( sd->sc.count && ( @@ -10466,7 +10501,7 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd) break; } if( bl->m != -1 )// the user can't click floating npcs directly (hack attempt) - npc->click(sd,(TBL_NPC*)bl); + npc->click(sd, BL_UCAST(BL_NPC, bl)); break; } } @@ -11346,7 +11381,7 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) #ifdef SECURE_NPCTIMEOUT if( sd->npc_idle_timer != INVALID_TIMER ) { #endif - TBL_NPC* nd = map->id2nd(npc_id); + struct npc_data *nd = map->id2nd(npc_id); ShowWarning("Invalid menu selection on npc %d:'%s' - got %d, valid range is [%d..%d] (player AID:%d, CID:%d, name:'%s')!\n", npc_id, (nd)?nd->name:"invalid npc id", select, 1, sd->npc_menu, sd->bl.id, sd->status.char_id, sd->status.name); clif->GM_kick(NULL,sd); #ifdef SECURE_NPCTIMEOUT @@ -13196,7 +13231,7 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) { case BL_NPC: { - struct npc_data* nd = (struct npc_data *)target; + struct npc_data *nd = BL_UCAST(BL_NPC, target); if( !pc->can_use_command(sd, "@unloadnpc")) { clif->GM_kickack(sd, 0); return; @@ -17580,7 +17615,7 @@ void clif_status_change_end(struct block_list *bl, int tid, enum send_target tar nullpo_retv(bl); - if( bl->type == BL_PC && !((TBL_PC*)bl)->state.active ) + if (bl->type == BL_PC && !BL_UCAST(BL_PC, bl)->state.active) return; p.PacketType = status_change_endType; @@ -18614,7 +18649,7 @@ unsigned short clif_parse_cmd_optional( int fd, struct map_session_data *sd ) { *------------------------------------------*/ int clif_parse(int fd) { int cmd, packet_len; - TBL_PC* sd; + struct map_session_data *sd; int pnum; //TODO apply delays or disconnect based on packet throughput [FlavioJS] @@ -18624,7 +18659,7 @@ int clif_parse(int fd) { unsigned short (*parse_cmd_func)(int fd, struct map_session_data *sd); // begin main client packet processing loop - sd = (TBL_PC *)sockt->session[fd]->session_data; + sd = sockt->session[fd]->session_data; if (sockt->session[fd]->flag.eof) { if (sd) { diff --git a/src/map/duel.c b/src/map/duel.c index 8f309abe4..c658ea3e3 100644 --- a/src/map/duel.c +++ b/src/map/duel.c @@ -134,7 +134,7 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map // "Blue -- Player %s invites you to PVP duel (@accept/@reject) --" sprintf(output, msg_sd(target_sd,374), sd->status.name); - clif->broadcast((struct block_list *)target_sd, output, strlen(output)+1, BC_BLUE, SELF); + clif->broadcast(&target_sd->bl, output, strlen(output)+1, BC_BLUE, SELF); } static int duel_leave_sub(struct map_session_data* sd, va_list va) diff --git a/src/map/elemental.c b/src/map/elemental.c index a6fe94ab2..a87deb7d7 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -273,9 +273,10 @@ int elemental_data_received(struct s_elemental *ele, bool flag) { db = &elemental->db[i]; if( !sd->ed ) { // Initialize it after first summon. - sd->ed = ed = (struct elemental_data*)aCalloc(1,sizeof(struct elemental_data)); + CREATE(ed, struct elemental_data, 1); ed->bl.type = BL_ELEM; ed->bl.id = npc->get_new_npc_id(); + sd->ed = ed; ed->master = sd; ed->db = db; memcpy(&ed->elemental, ele, sizeof(struct s_elemental)); diff --git a/src/map/guild.c b/src/map/guild.c index 10511067a..cba05638f 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -57,8 +57,9 @@ struct guild_interface *guild; /*========================================== * Retrieves and validates the sd pointer for this guild member [Skotlex] *------------------------------------------*/ -TBL_PC* guild_sd_check(int guild_id, int account_id, int char_id) { - TBL_PC* sd = map->id2sd(account_id); +struct map_session_data *guild_sd_check(int guild_id, int account_id, int char_id) +{ + struct map_session_data *sd = map->id2sd(account_id); if (!(sd && sd->status.char_id == char_id)) return NULL; @@ -441,8 +442,7 @@ int guild_check_member(struct guild *g) nullpo_ret(g); iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( sd->status.guild_id != g->guild_id ) continue; @@ -465,7 +465,7 @@ int guild_recv_noinfo(int guild_id) struct s_mapiterator* iter; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( sd->status.guild_id == guild_id ) sd->status.guild_id = 0; // erase guild } @@ -505,7 +505,7 @@ int guild_recv_info(struct guild *sg) { tg[i] = guild->search(sg->alliance[i].guild_id); } - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (!sd->status.guild_id) continue; // Not interested in guildless users @@ -939,14 +939,14 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c void guild_retrieveitembound(int char_id,int aid,int guild_id) { #ifdef GP_BOUND_ITEMS - TBL_PC *sd = map->charid2sd(char_id); - if(sd){ //Character is online + struct map_session_data *sd = map->charid2sd(char_id); + if (sd != NULL) { //Character is online pc->bound_clear(sd,IBT_GUILD); } else { //Character is offline, ask char server to do the job struct guild_storage *gstor = idb_get(gstorage->db,guild_id); if(gstor && gstor->storage_status == 1) { //Someone is in guild storage, close them struct s_mapiterator* iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if(sd->status.guild_id == guild_id && sd->state.storage_flag == STORAGE_FLAG_GUILD) { gstorage->close(sd); break; @@ -1229,7 +1229,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) continue; // update permanent guardians for( i = 0; i < ARRAYLENGTH(gc->guardian); ++i ) { - TBL_MOB* md = (gc->guardian[i].id ? map->id2md(gc->guardian[i].id) : NULL); + struct mob_data *md = gc->guardian[i].id ? map->id2md(gc->guardian[i].id) : NULL; if( md == NULL || md->guardian_data == NULL ) continue; @@ -1237,7 +1237,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) } // update temporary guardians for( i = 0; i < gc->temp_guardians_max; ++i ) { - TBL_MOB* md = (gc->temp_guardians[i] ? map->id2md(gc->temp_guardians[i]) : NULL); + struct mob_data *md = gc->temp_guardians[i] ? map->id2md(gc->temp_guardians[i]) : NULL; if( md == NULL || md->guardian_data == NULL ) continue; @@ -1328,7 +1328,7 @@ int guild_getexp(struct map_session_data *sd,int exp) /*==================================================== * Ask to increase guildskill skill_id *---------------------------------------------------*/ -int guild_skillup(TBL_PC* sd, uint16 skill_id) +int guild_skillup(struct map_session_data *sd, uint16 skill_id) { struct guild* g; int idx = skill_id - GD_SKILLBASE; @@ -2208,7 +2208,7 @@ void guild_flag_remove(struct npc_data *nd) { continue; if( cursor != i ) { - memmove(&guild->flags[cursor], &guild->flags[i], sizeof(struct npc_data*)); + memmove(&guild->flags[cursor], &guild->flags[i], sizeof(guild->flags[0])); } cursor++; } diff --git a/src/map/guild.h b/src/map/guild.h index 4b6e860d8..10749f8ad 100644 --- a/src/map/guild.h +++ b/src/map/guild.h @@ -21,11 +21,13 @@ #ifndef MAP_GUILD_H #define MAP_GUILD_H -#include "map/map.h" // EVENT_NAME_LENGTH, TBL_PC +#include "map/map.h" // EVENT_NAME_LENGTH #include "common/hercules.h" #include "common/db.h" #include "common/mmo.h" +struct map_session_data; + /** * Defines **/ @@ -161,7 +163,7 @@ struct guild_interface { void (*retrieveitembound) (int char_id,int aid,int guild_id); /* */ int (*payexp_timer) (int tid, int64 tick, int id, intptr_t data); - TBL_PC* (*sd_check) (int guild_id, int account_id, int char_id); + struct map_session_data *(*sd_check) (int guild_id, int account_id, int char_id); bool (*read_guildskill_tree_db) (char* split[], int columns, int current); bool (*read_castledb) (char* str[], int columns, int current); int (*payexp_timer_sub) (DBKey key, DBData *data, va_list ap); diff --git a/src/map/homunculus.c b/src/map/homunculus.c index ac1c4052b..b642c197f 100644 --- a/src/map/homunculus.c +++ b/src/map/homunculus.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -227,7 +227,7 @@ int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) { if( hd->homunculus.hskill[ id - HM_SKILLBASE ].id ) continue; //Skill already known. if(!battle_config.skillfree) { - for( j = 0; j < MAX_PC_SKILL_REQUIRE; j++ ) { + for (j = 0; j < MAX_HOM_SKILL_REQUIRE; j++) { if( homun->dbs->skill_tree[c][i].need[j].id && homun->checkskill(hd,homun->dbs->skill_tree[c][i].need[j].id) < homun->dbs->skill_tree[c][i].need[j].lv ) { f = 0; @@ -252,7 +252,7 @@ int homunculus_calc_skilltree(struct homun_data *hd, int flag_evolve) { if( j < homun->dbs->skill_tree[c][i].intimacylv ) continue; if(!battle_config.skillfree) { - for( j = 0; j < MAX_PC_SKILL_REQUIRE; j++ ) { + for (j = 0; j < MAX_HOM_SKILL_REQUIRE; j++) { if( homun->dbs->skill_tree[c][i].need[j].id && homun->checkskill(hd,homun->dbs->skill_tree[c][i].need[j].id) < homun->dbs->skill_tree[c][i].need[j].lv ) { f = 0; @@ -580,7 +580,7 @@ void homunculus_healed (struct homun_data *hd) { void homunculus_save(struct homun_data *hd) { // copy data that must be saved in homunculus struct ( hp / sp ) - TBL_PC * sd; + struct map_session_data *sd = NULL; //Do not check for max_hp/max_sp caps as current could be higher to max due //to status changes/skills (they will be capped as needed upon stat //calculation on login) @@ -786,9 +786,10 @@ bool homunculus_create(struct map_session_data *sd, struct s_homunculus *hom) { intif->homunculus_requestdelete(hom->hom_id); return false; } - sd->hd = hd = (struct homun_data*)aCalloc(1,sizeof(struct homun_data)); + CREATE(hd, struct homun_data, 1); hd->bl.type = BL_HOM; hd->bl.id = npc->get_new_npc_id(); + sd->hd = hd; hd->master = sd; hd->homunculusDB = &homun->dbs->db[i]; @@ -1234,7 +1235,7 @@ bool homunculus_read_skill_db_sub(char* split[], int columns, int current) { if (minJobLevelPresent) homun->dbs->skill_tree[classid][j].joblv = atoi(split[3]); - for( k = 0; k < MAX_PC_SKILL_REQUIRE; k++ ) { + for (k = 0; k < MAX_HOM_SKILL_REQUIRE; k++) { homun->dbs->skill_tree[classid][j].need[k].id = atoi(split[3+k*2+minJobLevelPresent]); homun->dbs->skill_tree[classid][j].need[k].lv = atoi(split[3+k*2+minJobLevelPresent+1]); } diff --git a/src/map/instance.c b/src/map/instance.c index ff6f8bdab..5e8256c88 100644 --- a/src/map/instance.c +++ b/src/map/instance.c @@ -369,21 +369,31 @@ int instance_mapid2imapid(int16 m, int instance_id) { /*-------------------------------------- * Used on Init instance. Duplicates each script on source map *--------------------------------------*/ -int instance_map_npcsub(struct block_list* bl, va_list args) { - struct npc_data* nd = (struct npc_data*)bl; +int instance_map_npcsub(struct block_list* bl, va_list args) +{ + struct npc_data *nd = NULL; int16 m = va_arg(args, int); // Destination Map - if ( npc->duplicate4instance(nd, m) ) + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCAST(BL_NPC, bl); + + if (npc->duplicate4instance(nd, m)) ShowDebug("instance_map_npcsub:npc_duplicate4instance failed (%s/%d)\n",nd->name,m); return 1; } -int instance_init_npc(struct block_list* bl, va_list args) { - struct npc_data *nd = (struct npc_data*)bl; +int instance_init_npc(struct block_list* bl, va_list args) +{ + struct npc_data *nd = NULL; struct event_data *ev; char evname[EVENT_NAME_LENGTH]; + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCAST(BL_NPC, bl); + snprintf(evname, EVENT_NAME_LENGTH, "%s::OnInstanceInit", nd->exname); if( ( ev = strdb_get(npc->ev_db, evname) ) ) @@ -430,10 +440,10 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) { switch(bl->type) { case BL_PC: - map->quit((struct map_session_data *) bl); + map->quit(BL_UCAST(BL_PC, bl)); break; case BL_NPC: - npc->unload((struct npc_data *)bl,true); + npc->unload(BL_UCAST(BL_NPC, bl), true); break; case BL_MOB: unit->free(bl,CLR_OUTSIGHT); @@ -445,7 +455,7 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) { map->clearflooritem(bl); break; case BL_SKILL: - skill->delunit((struct skill_unit *) bl); + skill->delunit(BL_UCAST(BL_SKILL, bl)); break; } @@ -724,7 +734,7 @@ void do_reload_instance(void) { } iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if(sd && map->list[sd->bl.m].instance_id >= 0) { pc->setpos(sd,instance->list[map->list[sd->bl.m].instance_id].respawn.map,instance->list[map->list[sd->bl.m].instance_id].respawn.x,instance->list[map->list[sd->bl.m].instance_id].respawn.y,CLR_TELEPORT); } diff --git a/src/map/intif.c b/src/map/intif.c index 016b4f7d3..1968ebe67 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -995,7 +995,7 @@ void intif_parse_WisEnd(int fd) { if (battle_config.etc_log) ShowInfo("intif_parse_wisend: player: %s, flag: %d\n", RFIFOP(fd,2), RFIFOB(fd,26)); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target - sd = (struct map_session_data *)map->nick2sd((char *) RFIFOP(fd,2)); + sd = map->nick2sd((char *)RFIFOP(fd,2)); if (sd != NULL) clif->wis_end(sd->fd, RFIFOB(fd,26)); @@ -1496,7 +1496,8 @@ QUESTLOG SYSTEM FUNCTIONS * * @param sd Character's data */ -void intif_request_questlog(TBL_PC *sd) { +void intif_request_questlog(struct map_session_data *sd) +{ nullpo_retv(sd); WFIFOHEAD(inter_fd,6); WFIFOW(inter_fd,0) = 0x3060; @@ -1513,7 +1514,7 @@ void intif_request_questlog(TBL_PC *sd) { */ void intif_parse_QuestLog(int fd) { int char_id = RFIFOL(fd, 4), num_received = (RFIFOW(fd, 2)-8)/sizeof(struct quest); - TBL_PC *sd = map->charid2sd(char_id); + struct map_session_data *sd = map->charid2sd(char_id); if (!sd) // User not online anymore return; @@ -1568,7 +1569,7 @@ void intif_parse_QuestLog(int fd) { */ void intif_parse_QuestSave(int fd) { int cid = RFIFOL(fd, 2); - TBL_PC *sd = map->id2sd(cid); + struct map_session_data *sd = map->id2sd(cid); if( !RFIFOB(fd, 6) ) ShowError("intif_parse_QuestSave: Failed to save quest(s) for character %d!\n", cid); @@ -1582,7 +1583,8 @@ void intif_parse_QuestSave(int fd) { * @param sd Character's data * @return 0 in case of success, nonzero otherwise */ -int intif_quest_save(TBL_PC *sd) { +int intif_quest_save(struct map_session_data *sd) +{ int len = sizeof(struct quest)*sd->num_quests + 8; if(intif->CheckForCharServer()) diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 2894463de..048efd636 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2123,7 +2123,7 @@ void itemdb_reload(void) { // readjust itemdb pointer cache for each player iter = mapit_geteachpc(); - for( sd = (struct map_session_data*)mapit->first(iter); mapit->exists(iter); sd = (struct map_session_data*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { memset(sd->item_delay, 0, sizeof(sd->item_delay)); // reset item delays pc->setinventorydata(sd); if( battle_config.item_check ) diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 5ea22b190..d751451c6 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -64,6 +64,7 @@ enum item_itemid { ITEMID_BRANCH_OF_DEAD_TREE = 604, ITEMID_ANODYNE = 605, ITEMID_ALOEBERA = 606, + ITEMID_POISON_BOTTLE = 678, ITEMID_EMPTY_BOTTLE = 713, ITEMID_EMPERIUM = 714, ITEMID_YELLOW_GEMSTONE = 715, @@ -95,6 +96,10 @@ enum item_itemid { ITEMID_ANGRA_MANYU = 1599, ITEMID_STRANGE_EMBRYO = 6415, ITEMID_FACE_PAINT = 6120, + ITEMID_SCARLET_POINT = 6360, + ITEMID_INDIGO_POINT = 6361, + ITEMID_YELLOW_WISH_POINT = 6362, + ITEMID_LIME_GREEN_POINT = 6363, ITEMID_STONE = 7049, ITEMID_FIRE_BOTTLE = 7135, ITEMID_ACID_BOTTLE = 7136, @@ -149,6 +154,9 @@ enum item_itemid { ITEMID_WOB_LOCAL = 14585, ITEMID_SIEGE_TELEPORT_SCROLL = 14591, ITEMID_JOB_MANUAL50 = 14592, + ITEMID_PILEBUNCKER_S = 16030, + ITEMID_PILEBUNCKER_P = 16031, + ITEMID_PILEBUNCKER_T = 16032, }; enum cards_item_list { @@ -530,13 +538,14 @@ struct item_data { #define itemdb_canrefine(n) (!itemdb->search(n)->flag.no_refine) #define itemdb_is_rune(n) (((n) >= ITEMID_NAUTHIZ && (n) <= ITEMID_HAGALAZ) || (n) == ITEMID_LUX_ANIMA) -#define itemdb_is_element(n) ((n) >= ITEMID_BOODY_RED && (n) <= ITEMID_YELLOW_LIVE) +#define itemdb_is_element(n) ((n) >= ITEMID_SCARLET_POINT && (n) <= ITEMID_LIME_GREEN_POINT) #define itemdb_is_spellbook(n) ((n) >= ITEMID_MAGIC_BOOK_FB && (n) <= ITEMID_MAGIC_BOOK_DL) #define itemdb_is_poison(n) ((n) >= ITEMID_POISON_PARALYSIS && (n) <= ITEMID_POISON_FATIGUE) #define itemid_isgemstone(n) ((n) >= ITEMID_YELLOW_GEMSTONE && (n) <= ITEMID_BLUE_GEMSTONE) #define itemdb_iscashfood(n) ((n) >= ITEMID_STR_DISH10_ && (n) <= ITEMID_VIT_DISH10_) #define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP) #define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW) +#define itemid_is_pilebunker(n) ((n) == ITEMID_PILEBUNCKER || (n) == ITEMID_PILEBUNCKER_P || (n) == ITEMID_PILEBUNCKER_S || (n) == ITEMID_PILEBUNCKER_T) #define itemdb_is_shadowequip(n) ((n) & (EQP_SHADOW_ARMOR|EQP_SHADOW_WEAPON|EQP_SHADOW_SHIELD|EQP_SHADOW_SHOES|EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L)) #define itemdb_is_costumeequip(n) ((n) & (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW|EQP_COSTUME_GARMENT)) diff --git a/src/map/map.c b/src/map/map.c index dcbc3f6f5..1b922148b 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -332,8 +332,9 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) { if (sc && sc->data[SC_PROPERTYWALK] && sc->data[SC_PROPERTYWALK]->val3 >= skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) ) status_change_end(bl,SC_PROPERTYWALK,INVALID_TIMER); - } else if (bl->type == BL_NPC) - npc->unsetcells((TBL_NPC*)bl); + } else if (bl->type == BL_NPC) { + npc->unsetcells(BL_UCAST(BL_NPC, bl)); + } if (moveblock) map->delblock(bl); #ifdef CELL_NOSTACK @@ -347,15 +348,17 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) { #endif if (bl->type&BL_CHAR) { + struct map_session_data *sd = BL_CAST(BL_PC, bl); skill->unit_move(bl,tick,3); - if( bl->type == BL_PC && ((TBL_PC*)bl)->shadowform_id ) {//Shadow Form Target Moving + if (sd != NULL && sd->shadowform_id != 0) { + //Shadow Form Target Moving struct block_list *d_bl; - if( (d_bl = map->id2bl(((TBL_PC*)bl)->shadowform_id)) == NULL || !check_distance_bl(bl,d_bl,10) ) { + if ((d_bl = map->id2bl(sd->shadowform_id)) == NULL || !check_distance_bl(bl,d_bl,10)) { if( d_bl ) status_change_end(d_bl,SC__SHADOWFORM,INVALID_TIMER); - ((TBL_PC*)bl)->shadowform_id = 0; + sd->shadowform_id = 0; } } @@ -391,7 +394,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) { } } /* Guild Aura Moving */ - if( bl->type == BL_PC && ((TBL_PC*)bl)->state.gmaster_flag ) { + if (sd != NULL && sd->state.gmaster_flag) { if (sc->data[SC_LEADERSHIP]) skill->unit_move_unit_group(skill->id2group(sc->data[SC_LEADERSHIP]->val4), bl->m, x1-x0, y1-y0); if (sc->data[SC_GLORYWOUNDS]) @@ -402,8 +405,9 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) { skill->unit_move_unit_group(skill->id2group(sc->data[SC_HAWKEYES]->val4), bl->m, x1-x0, y1-y0); } } - } else if (bl->type == BL_NPC) - npc->setcells((TBL_NPC*)bl); + } else if (bl->type == BL_NPC) { + npc->setcells(BL_UCAST(BL_NPC, bl)); + } return 0; } @@ -484,7 +488,7 @@ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x, if (bl->x != x || bl->y != y || bl->type != BL_SKILL) continue; - su = (struct skill_unit *) bl; + su = BL_UCAST(BL_SKILL, bl); if( su == out_unit || !su->alive || !su->group || su->group->skill_id != skill_id ) continue; if( !(flag&1) || battle->check_target(&su->bl,target,su->group->target_flag) > 0 ) @@ -1370,10 +1374,12 @@ int map_get_new_object_id(void) * Timered function to clear the floor (remove remaining item) * Called each flooritem_lifetime ms *------------------------------------------*/ -int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) { - struct flooritem_data* fitem = (struct flooritem_data*)idb_get(map->id_db, id); +int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) +{ + struct block_list *bl = idb_get(map->id_db, id); + struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl); - if (fitem == NULL || fitem->bl.type != BL_ITEM || (fitem->cleartimer != tid)) { + if (fitem == NULL || fitem->cleartimer != tid) { ShowError("map_clearflooritem_timer : error\n"); return 1; } @@ -1391,8 +1397,11 @@ int map_clearflooritem_timer(int tid, int64 tick, int id, intptr_t data) { /* * clears a single bl item out of the bazooonga. */ -void map_clearflooritem(struct block_list *bl) { - struct flooritem_data* fitem = (struct flooritem_data*)bl; +void map_clearflooritem(struct block_list *bl) +{ + struct flooritem_data *fitem = BL_CAST(BL_ITEM, bl); + + nullpo_retv(fitem); if( fitem->cleartimer != INVALID_TIMER ) timer->delete(fitem->cleartimer,map->clearflooritem_timer); @@ -1738,15 +1747,12 @@ void map_addiddb(struct block_list *bl) { nullpo_retv(bl); - if( bl->type == BL_PC ) - { - TBL_PC* sd = (TBL_PC*)bl; + if (bl->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); idb_put(map->pc_db,sd->bl.id,sd); idb_put(map->charid_db,sd->status.char_id,sd); - } - else if( bl->type == BL_MOB ) - { - TBL_MOB* md = (TBL_MOB*)bl; + } else if (bl->type == BL_MOB) { + struct mob_data *md = BL_UCAST(BL_MOB, bl); idb_put(map->mobid_db,bl->id,bl); if( md->state.boss ) @@ -1766,14 +1772,11 @@ void map_deliddb(struct block_list *bl) { nullpo_retv(bl); - if( bl->type == BL_PC ) - { - TBL_PC* sd = (TBL_PC*)bl; + if (bl->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); idb_remove(map->pc_db,sd->bl.id); idb_remove(map->charid_db,sd->status.char_id); - } - else if( bl->type == BL_MOB ) - { + } else if (bl->type == BL_MOB) { idb_remove(map->mobid_db,bl->id); idb_remove(map->bossid_db,bl->id); } @@ -1901,42 +1904,187 @@ int map_quit(struct map_session_data *sd) { return 0; } -/*========================================== - * Lookup, id to session (player,mob,npc,homon,merc..) - *------------------------------------------*/ -struct map_session_data *map_id2sd(int id) { - if (id <= 0) return NULL; - return (struct map_session_data*)idb_get(map->pc_db,id); -} +/** + * Looks up a session data by ID. + * + * The search is performed using the pc_db. + * + * @param id The bl ID to search. + * @return The searched map_session_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a player unit. + */ +struct map_session_data *map_id2sd(int id) +{ + struct block_list *bl = NULL; + if (id <= 0) + return NULL; + + bl = idb_get(map->pc_db,id); -struct mob_data *map_id2md(int id) { - if (id <= 0) return NULL; - return (struct mob_data*)idb_get(map->mobid_db,id); + if (bl) + Assert_retr(NULL, bl->type == BL_PC); + return BL_UCAST(BL_PC, bl); } -struct npc_data *map_id2nd(int id) { +/** + * Looks up a NPC data by ID. + * + * @param id The bl ID to search. + * @return The searched npc_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a NPC. + */ +struct npc_data *map_id2nd(int id) +{ // just a id2bl lookup because there's no npc_db struct block_list* bl = map->id2bl(id); return BL_CAST(BL_NPC, bl); } -struct homun_data *map_id2hd(int id) { +/** + * Looks up a mob data by ID. + * + * The search is performed using the mobid_db. + * + * @param id The bl ID to search. + * @return The searched mob_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a mob unit. + */ +struct mob_data *map_id2md(int id) +{ + struct block_list *bl = NULL; + if (id <= 0) + return NULL; + + bl = idb_get(map->mobid_db,id); + + if (bl) + Assert_retr(NULL, bl->type == BL_MOB); + return BL_UCAST(BL_MOB, bl); +} + +/** + * Looks up a floor item data by ID. + * + * @param id The bl ID to search. + * @return The searched flooritem_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a floor item. + */ +struct flooritem_data *map_id2fi(int id) +{ + struct block_list* bl = map->id2bl(id); + + return BL_CAST(BL_ITEM, bl); +} + +/** + * Looks up a chat data by ID. + * + * @param id The bl ID to search. + * @return The searched chat_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a chat. + */ +struct chat_data *map_id2cd(int id) +{ + struct block_list* bl = map->id2bl(id); + + return BL_CAST(BL_CHAT, bl); +} + +/** + * Looks up a skill unit data by ID. + * + * @param id The bl ID to search. + * @return The searched skill_unit data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a skill unit. + */ +struct skill_unit *map_id2su(int id) +{ + struct block_list* bl = map->id2bl(id); + + return BL_CAST(BL_SKILL, bl); +} + +/** + * Looks up a pet data by ID. + * + * @param id The bl ID to search. + * @return The searched pet_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a pet. + */ +struct pet_data *map_id2pd(int id) +{ + struct block_list* bl = map->id2bl(id); + + return BL_CAST(BL_PET, bl); +} + +/** + * Looks up a homunculus data by ID. + * + * @param id The bl ID to search. + * @return The searched homun_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a homunculus. + */ +struct homun_data *map_id2hd(int id) +{ struct block_list* bl = map->id2bl(id); return BL_CAST(BL_HOM, bl); } -struct mercenary_data *map_id2mc(int id) { +/** + * Looks up a mercenary data by ID. + * + * @param id The bl ID to search. + * @return The searched mercenary_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to a mercenary. + */ +struct mercenary_data *map_id2mc(int id) +{ struct block_list* bl = map->id2bl(id); return BL_CAST(BL_MER, bl); } -struct chat_data *map_id2cd(int id) { +/** + * Looks up an elemental data by ID. + * + * @param id The bl ID to search. + * @return The searched elemental_data, if it exists. + * @retval NULL if the ID is invalid or doesn't belong to an elemental. + */ +struct elemental_data *map_id2ed(int id) +{ struct block_list* bl = map->id2bl(id); - return BL_CAST(BL_CHAT, bl); + return BL_CAST(BL_ELEM, bl); +} + +/** + * Looks up a block_list by ID. + * + * The search is performed using the id_db. + * + * @param id The bl ID to search. + * @return The searched block_list, if it exists. + * @retval NULL if the ID is invalid. + */ +struct block_list *map_id2bl(int id) +{ + return idb_get(map->id_db, id); +} + +/** + * Verifies whether a block list ID is valid. + * + * @param id The bl ID to search. + * @retval true if the ID exists and is valid. + * @retval false otherwise. + */ +bool map_blid_exists(int id) +{ + return (idb_exists(map->id_db,id)); } /// Returns the nick of the target charid or NULL if unknown (requests the nick to the char server). @@ -1959,7 +2107,10 @@ const char *map_charid2nick(int charid) { /// Returns the struct map_session_data of the charid or NULL if the char is not online. struct map_session_data* map_charid2sd(int charid) { - return (struct map_session_data*)idb_get(map->charid_db, charid); + struct block_list *bl = idb_get(map->charid_db, charid); + if (bl) + Assert_retr(NULL, bl->type == BL_PC); + return BL_UCAST(BL_PC, bl); } /*========================================== @@ -1982,8 +2133,7 @@ struct map_session_data * map_nick2sd(const char *nick) iter = mapit_getallusers(); found_sd = NULL; - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( battle_config.partial_name_scan ) {// partial name search if( strnicmp(sd->status.name, nick, nicklen) == 0 ) @@ -2014,20 +2164,6 @@ struct map_session_data * map_nick2sd(const char *nick) } /*========================================== - * Looksup id_db DBMap and returns BL pointer of 'id' or NULL if not found - *------------------------------------------*/ -struct block_list * map_id2bl(int id) { - return (struct block_list*)idb_get(map->id_db,id); -} - -/** - * Same as map->id2bl except it only checks for its existence - **/ -bool map_blid_exists( int id ) { - return (idb_exists(map->id_db,id)); -} - -/*========================================== * Convext Mirror *------------------------------------------*/ struct mob_data * map_getmob_boss(int16 m) @@ -2037,10 +2173,8 @@ struct mob_data * map_getmob_boss(int16 m) bool found = false; iter = db_iterator(map->bossid_db); - for( md = (struct mob_data*)dbi_first(iter); dbi_exists(iter); md = (struct mob_data*)dbi_next(iter) ) - { - if( md->bl.m == m ) - { + for (md = dbi_first(iter); dbi_exists(iter); md = dbi_next(iter)) { + if (md->bl.m == m) { found = true; break; } @@ -2050,10 +2184,15 @@ struct mob_data * map_getmob_boss(int16 m) return (found)? md : NULL; } -struct mob_data * map_id2boss(int id) +struct mob_data *map_id2boss(int id) { - if (id <= 0) return NULL; - return (struct mob_data*)idb_get(map->bossid_db,id); + struct block_list *bl = NULL; + if (id <= 0) + return NULL; + bl = idb_get(map->bossid_db,id); + if (bl) + Assert_retr(NULL, bl->type == BL_MOB); + return BL_UCAST(BL_MOB, bl); } /** @@ -2128,7 +2267,7 @@ void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list arg struct mob_data* md; iter = db_iterator(map->mobid_db); - for( md = (struct mob_data*)dbi_first(iter); dbi_exists(iter); md = (struct mob_data*)dbi_next(iter) ) { + for (md = dbi_first(iter); dbi_exists(iter); md = dbi_next(iter)) { va_list argscopy; int ret; @@ -2159,9 +2298,9 @@ void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list arg struct block_list* bl; iter = db_iterator(map->id_db); - for( bl = (struct block_list*)dbi_first(iter); dbi_exists(iter); bl = (struct block_list*)dbi_next(iter) ) { - if( bl->type == BL_NPC ) { - struct npc_data* nd = (struct npc_data*)bl; + for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { + if (bl->type == BL_NPC) { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); va_list argscopy; int ret; @@ -2193,7 +2332,7 @@ void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list struct block_list* bl; iter = db_iterator(map->regen_db); - for( bl = (struct block_list*)dbi_first(iter); dbi_exists(iter); bl = (struct block_list*)dbi_next(iter) ) { + for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { va_list argscopy; int ret; @@ -2224,7 +2363,7 @@ void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list struct block_list* bl; iter = db_iterator(map->id_db); - for( bl = (struct block_list*)dbi_first(iter); dbi_exists(iter); bl = (struct block_list*)dbi_next(iter) ) { + for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { va_list argscopy; int ret; @@ -2305,7 +2444,7 @@ struct block_list* mapit_first(struct s_mapiterator* iter) { nullpo_retr(NULL,iter); - for( bl = (struct block_list*)dbi_first(iter->dbi); bl != NULL; bl = (struct block_list*)dbi_next(iter->dbi) ) { + for (bl = dbi_first(iter->dbi); bl != NULL; bl = dbi_next(iter->dbi) ) { if( MAPIT_MATCHES(iter,bl) ) break;// found match } @@ -2322,7 +2461,7 @@ struct block_list* mapit_last(struct s_mapiterator* iter) { nullpo_retr(NULL,iter); - for( bl = (struct block_list*)dbi_last(iter->dbi); bl != NULL; bl = (struct block_list*)dbi_prev(iter->dbi) ) { + for (bl = dbi_last(iter->dbi); bl != NULL; bl = dbi_prev(iter->dbi)) { if( MAPIT_MATCHES(iter,bl) ) break;// found match } @@ -2340,7 +2479,7 @@ struct block_list* mapit_next(struct s_mapiterator* iter) { nullpo_retr(NULL,iter); for( ; ; ) { - bl = (struct block_list*)dbi_next(iter->dbi); + bl = dbi_next(iter->dbi); if( bl == NULL ) break;// end if( MAPIT_MATCHES(iter,bl) ) @@ -2361,7 +2500,7 @@ struct block_list* mapit_prev(struct s_mapiterator* iter) { nullpo_retr(NULL,iter); for( ; ; ) { - bl = (struct block_list*)dbi_prev(iter->dbi); + bl = dbi_prev(iter->dbi); if( bl == NULL ) break;// end if( MAPIT_MATCHES(iter,bl) ) @@ -2437,8 +2576,10 @@ void map_spawnmobs(int16 m) { int map_removemobs_sub(struct block_list *bl, va_list ap) { - struct mob_data *md = (struct mob_data *)bl; - nullpo_ret(md); + struct mob_data *md = NULL; + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); //When not to remove mob: // doesn't respawn and is not a slave @@ -5338,10 +5479,10 @@ int cleanup_sub(struct block_list *bl, va_list ap) { switch(bl->type) { case BL_PC: - map->quit((struct map_session_data *) bl); + map->quit(BL_UCAST(BL_PC, bl)); break; case BL_NPC: - npc->unload((struct npc_data *)bl,false); + npc->unload(BL_UCAST(BL_NPC, bl), false); break; case BL_MOB: unit->free(bl,CLR_OUTSIGHT); @@ -5353,7 +5494,7 @@ int cleanup_sub(struct block_list *bl, va_list ap) { map->clearflooritem(bl); break; case BL_SKILL: - skill->delunit((struct skill_unit *) bl); + skill->delunit(BL_UCAST(BL_SKILL, bl)); break; } @@ -5384,7 +5525,7 @@ int do_final(void) { //Ladies and babies first. iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) map->quit(sd); mapit->free(iter); @@ -5528,7 +5669,7 @@ void do_shutdown(void) { struct map_session_data* sd; struct s_mapiterator* iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) clif->GM_kick(NULL, sd); mapit->free(iter); sockt->flush_fifos(); @@ -6163,11 +6304,15 @@ void map_defaults(void) { map->foreachininstance = map_foreachininstance; map->id2sd = map_id2sd; - map->id2md = map_id2md; map->id2nd = map_id2nd; + map->id2md = map_id2md; + map->id2fi = map_id2fi; + map->id2cd = map_id2cd; + map->id2su = map_id2su; + map->id2pd = map_id2pd; map->id2hd = map_id2hd; map->id2mc = map_id2mc; - map->id2cd = map_id2cd; + map->id2ed = map_id2ed; map->id2bl = map_id2bl; map->blid_exists = map_blid_exists; map->mapindex2mapid = map_mapindex2mapid; diff --git a/src/map/map.h b/src/map/map.h index 896c12f23..4c74d352c 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -486,6 +486,7 @@ enum look { LOOK_BODY, LOOK_FLOOR, LOOK_ROBE, + LOOK_BODY2, }; // used by map_setcell() @@ -827,8 +828,89 @@ typedef struct homun_data TBL_HOM; typedef struct mercenary_data TBL_MER; typedef struct elemental_data TBL_ELEM; +/** + * Casts a block list to a specific type. + * + * @remark + * The `bl` argument may be evaluated more than once. + * + * @param type_ The block list type (using symbols from enum bl_type). + * @param bl The source block list to cast. + * @return The block list, cast to the correct type. + * @retval NULL if bl is the wrong type or NULL. + */ #define BL_CAST(type_, bl) \ - ( ((bl) == (struct block_list*)NULL || (bl)->type != (type_)) ? (T ## type_ *)NULL : (T ## type_ *)(bl) ) + ( ((bl) == (struct block_list *)NULL || (bl)->type != (type_)) ? (T ## type_ *)NULL : (T ## type_ *)(bl) ) + +/** + * Casts a const block list to a specific type. + * + * @remark + * The `bl` argument may be evaluated more than once. + * + * @param type_ The block list type (using symbols from enum bl_type). + * @param bl The source block list to cast. + * @return The block list, cast to the correct type. + * @retval NULL if bl is the wrong type or NULL. + */ +#define BL_CCAST(type_, bl) \ + ( ((bl) == (const struct block_list *)NULL || (bl)->type != (type_)) ? (const T ## type_ *)NULL : (const T ## type_ *)(bl) ) + +/** + * Helper function for `BL_UCAST`. + * + * @warning + * This function shouldn't be called on it own. + * + * The purpose of this function is to produce a compile-timer error if a non-bl + * object is passed to BL_UCAST. It's declared as static inline to let the + * compiler optimize out the function call overhead. + */ +static inline struct block_list *BL_UCAST_(struct block_list *bl) +{ + return bl; +} + +/** + * Casts a block list to a specific type, without performing any type checks. + * + * @remark + * The `bl` argument is guaranteed to be evaluated once and only once. + * + * @param type_ The block list type (using symbols from enum bl_type). + * @param bl The source block list to cast. + * @return The block list, cast to the correct type. + */ +#define BL_UCAST(type_, bl) \ + ((T ## type_ *)BL_UCAST_(bl)) + +/** + * Helper function for `BL_UCCAST`. + * + * @warning + * This function shouldn't be called on it own. + * + * The purpose of this function is to produce a compile-timer error if a non-bl + * object is passed to BL_UCAST. It's declared as static inline to let the + * compiler optimize out the function call overhead. + */ +static inline const struct block_list *BL_UCCAST_(const struct block_list *bl) +{ + return bl; +} + +/** + * Casts a const block list to a specific type, without performing any type checks. + * + * @remark + * The `bl` argument is guaranteed to be evaluated once and only once. + * + * @param type_ The block list type (using symbols from enum bl_type). + * @param bl The source block list to cast. + * @return The block list, cast to the correct type. + */ +#define BL_UCCAST(type_, bl) \ + ((const T ## type_ *)BL_UCCAST_(bl)) struct charid_request { struct charid_request* next; @@ -1028,13 +1110,17 @@ END_ZEROED_BLOCK; int (*vforeachininstance)(int (*func)(struct block_list*,va_list), int16 instance_id, int type, va_list ap); int (*foreachininstance)(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...); - struct map_session_data * (*id2sd) (int id); - struct mob_data * (*id2md) (int id); - struct npc_data * (*id2nd) (int id); - struct homun_data* (*id2hd) (int id); - struct mercenary_data* (*id2mc) (int id); - struct chat_data* (*id2cd) (int id); - struct block_list * (*id2bl) (int id); + struct map_session_data *(*id2sd) (int id); + struct npc_data *(*id2nd) (int id); + struct mob_data *(*id2md) (int id); + struct flooritem_data *(*id2fi) (int id); + struct chat_data *(*id2cd) (int id); + struct skill_unit *(*id2su) (int id); + struct pet_data *(*id2pd) (int id); + struct homun_data *(*id2hd) (int id); + struct mercenary_data *(*id2mc) (int id); + struct elemental_data *(*id2ed) (int id); + struct block_list *(*id2bl) (int id); bool (*blid_exists) (int id); int16 (*mapindex2mapid) (unsigned short map_index); int16 (*mapname2mapid) (const char* name); diff --git a/src/map/mercenary.c b/src/map/mercenary.c index fb801a8da..e6c911ef6 100644 --- a/src/map/mercenary.c +++ b/src/map/mercenary.c @@ -317,10 +317,11 @@ int merc_data_received(struct s_mercenary *merc, bool flag) { db = &mercenary->db[i]; if( !sd->md ) { - sd->md = md = (struct mercenary_data*)aCalloc(1,sizeof(struct mercenary_data)); + CREATE(md, struct mercenary_data, 1); md->bl.type = BL_MER; md->bl.id = npc->get_new_npc_id(); md->devotion_flag = 0; + sd->md = md; md->master = sd; md->db = db; diff --git a/src/map/mob.c b/src/map/mob.c index 16b5417b9..37da81a15 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -274,7 +274,8 @@ int mob_parse_dataset(struct spawn_data *data) * Generates the basic mob data using the spawn_data provided. *------------------------------------------*/ struct mob_data* mob_spawn_dataset(struct spawn_data *data) { - struct mob_data *md = (struct mob_data*)aCalloc(1, sizeof(struct mob_data)); + struct mob_data *md = NULL; + CREATE(md, struct mob_data, 1); md->bl.id= npc->get_new_npc_id(); md->bl.type = BL_MOB; md->bl.m = data->m; @@ -591,12 +592,9 @@ int mob_spawn_guardian_sub(int tid, int64 tick, int id, intptr_t data) { if( bl == NULL ) //It is possible mob was already removed from map when the castle has no owner. [Skotlex] return 0; - if( bl->type != BL_MOB ) { - ShowError("mob_spawn_guardian_sub: Block error!\n"); - return 0; - } + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); - md = (struct mob_data*)bl; nullpo_ret(md->guardian_data); g = guild->search((int)data); @@ -684,11 +682,9 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam if( has_index && gc->guardian[guardian].id ) { //Check if guardian already exists, refuse to spawn if so. - struct mob_data *md2 = (TBL_MOB*)map->id2bl(gc->guardian[guardian].id); - if (md2 && md2->bl.type == BL_MOB - && md2->guardian_data - && md2->guardian_data->number == guardian - ) { + struct block_list *bl2 = map->id2bl(gc->guardian[guardian].id); // TODO: Why does this not use map->id2md? + struct mob_data *md2 = BL_CAST(BL_MOB, bl2); + if (md2 != NULL && md2->guardian_data != NULL && md2->guardian_data->number == guardian) { ShowError("mob_spawn_guardian: Attempted to spawn guardian in position %d which already has a guardian (castle map %s)\n", guardian, map->list[m].name); return 0; } @@ -794,17 +790,16 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state /*========================================== * Links nearby mobs (supportive mobs) *------------------------------------------*/ -int mob_linksearch(struct block_list *bl,va_list ap) { - struct mob_data *md; - int class_; - struct block_list *target; - int64 tick; +int mob_linksearch(struct block_list *bl,va_list ap) +{ + struct mob_data *md = NULL; + int class_ = va_arg(ap, int); + struct block_list *target = va_arg(ap, struct block_list *); + int64 tick = va_arg(ap, int64); nullpo_ret(bl); - md=(struct mob_data *)bl; - class_ = va_arg(ap, int); - target = va_arg(ap, struct block_list *); - tick = va_arg(ap, int64); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); if (md->class_ == class_ && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME && !md->target_id) @@ -825,7 +820,7 @@ int mob_linksearch(struct block_list *bl,va_list ap) { * mob spawn with delay (timer function) *------------------------------------------*/ int mob_delayspawn(int tid, int64 tick, int id, intptr_t data) { - struct block_list* bl = map->id2bl(id); + struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->bl2md? struct mob_data* md = BL_CAST(BL_MOB, bl); if( md ) @@ -889,7 +884,7 @@ int mob_count_sub(struct block_list *bl, va_list ap) { int mobid[10] = { 0 }, i; ARR_FIND(0, 10, i, (mobid[i] = va_arg(ap, int)) == 0); //fetch till 0 if (mobid[0]) { //if there one let's check it otherwise go backward - TBL_MOB *md = BL_CAST(BL_MOB, bl); + struct mob_data *md = BL_CAST(BL_MOB, bl); nullpo_ret(md); ARR_FIND(0, 10, i, md->class_ == mobid[i]); return (i < 10) ? 1 : 0; @@ -1073,8 +1068,7 @@ int mob_ai_sub_hard_activesearch(struct block_list *bl,va_list ap) switch (bl->type) { case BL_PC: - if (((TBL_PC*)bl)->state.gangsterparadise && - !(status_get_mode(&md->bl)&MD_BOSS)) + if (BL_UCCAST(BL_PC, bl)->state.gangsterparadise && !(status_get_mode(&md->bl)&MD_BOSS)) return 0; //Gangster paradise protection. default: if (battle_config.hom_setting&0x4 && @@ -1174,17 +1168,15 @@ int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap) } int mob_warpchase_sub(struct block_list *bl,va_list ap) { - struct block_list *target; - struct npc_data **target_nd; - struct npc_data *nd; - int *min_distance; int cur_distance; + struct block_list *target = va_arg(ap, struct block_list *); + struct npc_data **target_nd = va_arg(ap, struct npc_data **); + int *min_distance = va_arg(ap, int *); + struct npc_data *nd = NULL; - target= va_arg(ap, struct block_list*); - target_nd= va_arg(ap, struct npc_data**); - min_distance= va_arg(ap, int*); - - nd = (TBL_NPC*) bl; + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCAST(BL_NPC, bl); if(nd->subtype != WARP) return 0; //Not a warp @@ -1440,14 +1432,13 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) { if (md->target_id) { //Check validity of current target. [Skotlex] + struct map_session_data *tsd = NULL; tbl = map->id2bl(md->target_id); - if (!tbl || tbl->m != md->bl.m + tsd = BL_CAST(BL_PC, tbl); + if (tbl == NULL || tbl->m != md->bl.m || (md->ud.attacktimer == INVALID_TIMER && !status->check_skilluse(&md->bl, tbl, 0, 0)) || (md->ud.walktimer != INVALID_TIMER && !(battle_config.mob_ai&0x1) && !check_distance_bl(&md->bl, tbl, md->min_chase)) - || ( tbl->type == BL_PC - && ((((TBL_PC*)tbl)->state.gangsterparadise && !(mode&MD_BOSS)) - || ((TBL_PC*)tbl)->invincible_timer != INVALID_TIMER) - ) + || (tsd != NULL && ((tsd->state.gangsterparadise && !(mode&MD_BOSS)) || tsd->invincible_timer != INVALID_TIMER)) ) { //No valid target if (mob->warpchase(md, tbl)) @@ -1580,7 +1571,7 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) { //Target exists, attack or loot as applicable. if (tbl->type == BL_ITEM) { //Loot time. - struct flooritem_data *fitem; + struct flooritem_data *fitem = BL_UCAST(BL_ITEM, tbl); if (md->ud.target == tbl->id && md->ud.walktimer != INVALID_TIMER) return true; //Already locked. if (md->lootitem == NULL) { @@ -1606,7 +1597,6 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) { if (md->ud.attacktimer != INVALID_TIMER) return true; //Busy attacking? - fitem = (struct flooritem_data *)tbl; //Logs items, taken by (L)ooter Mobs [Lupus] logs->pick_mob(md, LOG_TYPE_LOOT, fitem->item_data.amount, &fitem->item_data, NULL); @@ -1687,9 +1677,15 @@ bool mob_ai_sub_hard(struct mob_data *md, int64 tick) { return true; } -int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap) { - struct mob_data *md = (struct mob_data*)bl; +int mob_ai_sub_hard_timer(struct block_list *bl, va_list ap) +{ + struct mob_data *md = NULL; int64 tick = va_arg(ap, int64); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); + if (mob->ai_sub_hard(md, tick)) { //Hard AI triggered. if(!md->state.spotted) @@ -1847,7 +1843,7 @@ int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) { *------------------------------------------*/ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct item_drop *ditem, int loot, int drop_rate, unsigned short flag) { - TBL_PC* sd; + struct map_session_data *sd = NULL; //Logs items, dropped by mobs [Lupus] logs->pick_mob(md, loot?LOG_TYPE_LOOT:LOG_TYPE_PICKDROP_MONSTER, -ditem->item_data.amount, &ditem->item_data, NULL); @@ -1878,7 +1874,7 @@ void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, struct ite } int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) { - struct block_list* bl = map->id2bl(id); + struct block_list* bl = map->id2bl(id); // TODO: Why does this not use map->id2md? struct mob_data* md = BL_CAST(BL_MOB, bl); if( md ) @@ -1900,13 +1896,13 @@ int mob_timer_delete(int tid, int64 tick, int id, intptr_t data) { *------------------------------------------*/ int mob_deleteslave_sub(struct block_list *bl,va_list ap) { - struct mob_data *md; - int id; + struct mob_data *md = NULL; + int id = va_arg(ap, int); nullpo_ret(bl); - nullpo_ret(md = (struct mob_data *)bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); - id=va_arg(ap,int); if(md->master_id > 0 && md->master_id == id ) status_kill(bl); return 0; @@ -1945,7 +1941,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) { case BL_PC: { - struct map_session_data *sd = (TBL_PC*)src; + const struct map_session_data *sd = BL_UCCAST(BL_PC, src); char_id = sd->status.char_id; if( damage ) md->attacked_id = src->id; @@ -1953,7 +1949,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) } case BL_HOM: { - struct homun_data *hd = (TBL_HOM*)src; + const struct homun_data *hd = BL_UCCAST(BL_HOM, src); flag = MDLF_HOMUN; if( hd->master ) char_id = hd->master->status.char_id; @@ -1963,7 +1959,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) } case BL_MER: { - struct mercenary_data *mer = (TBL_MER*)src; + const struct mercenary_data *mer = BL_UCCAST(BL_MER, src); if( mer->master ) char_id = mer->master->status.char_id; if( damage ) @@ -1972,7 +1968,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) } case BL_PET: { - struct pet_data *pd = (TBL_PET*)src; + const struct pet_data *pd = BL_UCCAST(BL_PET, src); flag = MDLF_PET; if( pd->msd ) { @@ -1984,7 +1980,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) } case BL_MOB: { - struct mob_data* md2 = (TBL_MOB*)src; + const struct mob_data *md2 = BL_UCCAST(BL_MOB, src); if (md2->special_state.ai != AI_NONE && md2->master_id) { struct map_session_data* msd = map->id2sd(md2->master_id); if( msd ) @@ -2001,7 +1997,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) } case BL_ELEM: { - struct elemental_data *ele = (TBL_ELEM*)src; + const struct elemental_data *ele = BL_UCCAST(BL_ELEM, src); if( ele->master ) char_id = ele->master->status.char_id; if( damage ) @@ -2098,14 +2094,15 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) { *------------------------------------------*/ int mob_dead(struct mob_data *md, struct block_list *src, int type) { struct status_data *mstatus; - struct map_session_data *sd = NULL, *tmpsd[DAMAGELOG_SIZE]; - struct map_session_data *mvp_sd = NULL, *second_sd = NULL, *third_sd = NULL; + struct map_session_data *sd = BL_CAST(BL_PC, src); + struct map_session_data *tmpsd[DAMAGELOG_SIZE] = { NULL }; + struct map_session_data *mvp_sd = sd, *second_sd = NULL, *third_sd = NULL; struct { struct party_data *p; int id,zeny; unsigned int base_exp,job_exp; - } pt[DAMAGELOG_SIZE]; + } pt[DAMAGELOG_SIZE] = { { 0 } }; int i, temp, count, m = md->bl.m; int dmgbltypes = 0; // bitfield of all bl types, that caused damage to the mob and are eligible for exp distribution unsigned int mvp_damage; @@ -2114,12 +2111,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { mstatus = &md->status; - if( src && src->type == BL_PC ) - { - sd = (struct map_session_data *)src; - mvp_sd = sd; - } - if( md->guardian_data && md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS ) guild->castledatasave(md->guardian_data->castle->castle_id, 10+md->guardian_data->number,0); @@ -2131,13 +2122,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { map->freeblock_lock(); - memset(pt,0,sizeof(pt)); - - if(src && src->type == BL_MOB) - mob->unlocktarget((struct mob_data *)src,tick); + if (src != NULL && src->type == BL_MOB) + mob->unlocktarget(BL_UCAST(BL_MOB, src), tick); // filter out entries not eligible for exp distribution - memset(tmpsd,0,sizeof(tmpsd)); for(i = 0, count = 0, mvp_damage = 0; i < DAMAGELOG_SIZE && md->dmglog[i].id; i++) { struct map_session_data* tsd = map->charid2sd(md->dmglog[i].id); @@ -2582,10 +2570,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { md->status.hp = 0; //So that npc_event invoked functions KNOW that mob is dead if( src ) { switch( src->type ) { - case BL_PET: sd = ((TBL_PET*)src)->msd; break; - case BL_HOM: sd = ((TBL_HOM*)src)->master; break; - case BL_MER: sd = ((TBL_MER*)src)->master; break; - case BL_ELEM: sd = ((TBL_ELEM*)src)->master; break; + case BL_PET: sd = BL_UCAST(BL_PET, src)->msd; break; + case BL_HOM: sd = BL_UCAST(BL_HOM, src)->master; break; + case BL_MER: sd = BL_UCAST(BL_MER, src)->master; break; + case BL_ELEM: sd = BL_UCAST(BL_ELEM, src)->master; break; } } @@ -2843,13 +2831,18 @@ void mob_heal(struct mob_data *md, unsigned int heal) /*========================================== * Added by RoVeRT *------------------------------------------*/ -int mob_warpslave_sub(struct block_list *bl,va_list ap) { - struct mob_data *md=(struct mob_data *)bl; +int mob_warpslave_sub(struct block_list *bl, va_list ap) +{ + struct mob_data *md = NULL; struct block_list *master; short x,y,range=0; master = va_arg(ap, struct block_list*); range = va_arg(ap, int); + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); + if(md->master_id!=master->id) return 0; @@ -2873,14 +2866,16 @@ int mob_warpslave(struct block_list *bl, int range) { /*========================================== * Counts slave sub, currently checking if mob master is the given ID. *------------------------------------------*/ -int mob_countslave_sub(struct block_list *bl,va_list ap) +int mob_countslave_sub(struct block_list *bl, va_list ap) { - int id; - struct mob_data *md; - id=va_arg(ap,int); + int id = va_arg(ap, int); + struct mob_data *md = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); - md = (struct mob_data *)bl; - if( md->master_id==id ) + if (md->master_id == id) return 1; return 0; } @@ -3064,11 +3059,12 @@ struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) { int mob_getfriendstatus_sub(struct block_list *bl,va_list ap) { int cond1,cond2; - struct mob_data **fr, *md, *mmd; + struct mob_data **fr = NULL, *md = NULL, *mmd = NULL; int flag=0; nullpo_ret(bl); - nullpo_ret(md=(struct mob_data *)bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); nullpo_ret(mmd=va_arg(ap,struct mob_data *)); if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) diff --git a/src/map/npc.c b/src/map/npc.c index 09e5c0f46..411e52c29 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -147,8 +147,13 @@ int npc_get_new_npc_id(void) { } } -int npc_isnear_sub(struct block_list* bl, va_list args) { - struct npc_data *nd = (struct npc_data*)bl; +int npc_isnear_sub(struct block_list *bl, va_list args) +{ + const struct npc_data *nd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCCAST(BL_NPC, bl); if( nd->option & (OPTION_HIDE|OPTION_INVISIBLE) ) return 0; @@ -212,9 +217,9 @@ int npc_enable_sub(struct block_list *bl, va_list ap) nullpo_ret(bl); nullpo_ret(nd=va_arg(ap,struct npc_data *)); - if(bl->type == BL_PC) - { - TBL_PC *sd = (TBL_PC*)bl; + + if (bl->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); if (nd->option&OPTION_INVISIBLE) return 1; @@ -272,9 +277,9 @@ int npc_enable(const char* name, int flag) /*========================================== * NPC lookup (get npc_data through npcname) *------------------------------------------*/ -struct npc_data* npc_name2id(const char* name) +struct npc_data *npc_name2id(const char *name) { - return (struct npc_data *) strdb_get(npc->name_db, name); + return strdb_get(npc->name_db, name); } /** * For the Secure NPC Timeout option (check config/Secure.h) [RR] @@ -566,10 +571,11 @@ struct timer_event_data { /*========================================== * triger 'OnTimerXXXX' events *------------------------------------------*/ -int npc_timerevent(int tid, int64 tick, int id, intptr_t data) { +int npc_timerevent(int tid, int64 tick, int id, intptr_t data) +{ int old_rid, old_timer; int64 old_tick; - struct npc_data* nd=(struct npc_data *)map->id2bl(id); + struct npc_data *nd = map->id2nd(id); struct npc_timerevent_list *te; struct timer_event_data *ted = (struct timer_event_data*)data; struct map_session_data *sd=NULL; @@ -736,14 +742,13 @@ void npc_timerevent_quit(struct map_session_data* sd) } // Delete timer - nd = (struct npc_data *)map->id2bl(td->id); + nd = map->id2nd(td->id); ted = (struct timer_event_data*)td->data; timer->delete(sd->npc_timer_id, npc->timerevent); sd->npc_timer_id = INVALID_TIMER; // Execute OnTimerQuit - if( nd && nd->bl.type == BL_NPC ) - { + if (nd != NULL) { char buf[EVENT_NAME_LENGTH]; struct event_data *ev; @@ -1027,15 +1032,14 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y) *------------------------------------------*/ int npc_untouch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y) { - struct npc_data *nd; + struct npc_data *nd = NULL; nullpo_retr(1, sd); if (!sd->areanpc_id) return 0; - nd = (struct npc_data *) map->id2bl(sd->areanpc_id); - if (!nd) - { + nd = map->id2nd(sd->areanpc_id); + if (nd == NULL) { sd->areanpc_id = 0; return 1; } @@ -1166,13 +1170,13 @@ int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) { *------------------------------------------*/ struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* bl) { - struct npc_data *nd; + struct npc_data *nd = BL_CAST(BL_NPC, bl); int distance = AREA_SIZE + 1; nullpo_retr(NULL, sd); - if (bl == NULL) return NULL; - if (bl->type != BL_NPC) return NULL; - nd = (TBL_NPC*)bl; + + if (nd == NULL) + return NULL; if (sd->npc_id == bl->id) return nd; @@ -1297,8 +1301,8 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) { nullpo_retr(1, sd); if( id != sd->npc_id ){ - TBL_NPC* nd_sd=(TBL_NPC*)map->id2bl(sd->npc_id); - TBL_NPC* nd = BL_CAST(BL_NPC, target); + struct npc_data *nd_sd = map->id2nd(sd->npc_id); + struct npc_data *nd = BL_CAST(BL_NPC, target); ShowDebug("npc_scriptcont: %s (sd->npc_id=%d) is not %s (id=%d).\n", nd_sd?(char*)nd_sd->name:"'Unknown NPC'", (int)sd->npc_id, nd?(char*)nd->name:"'Unknown NPC'", (int)id); @@ -1397,7 +1401,8 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, uns if( points < 0 ) return ERROR_TYPE_MONEY; - if( !(nd = (struct npc_data *)map->id2bl(sd->npc_shopid)) ) + nd = map->id2nd(sd->npc_shopid); + if (nd == NULL) return ERROR_TYPE_NPC; if( nd->subtype != CASHSHOP ) { @@ -1631,11 +1636,10 @@ void npc_trader_update(int master) { CREATE(master_nd->u.scr.shop,struct npc_shop_data,1); iter = db_iterator(map->id_db); - for( bl = (struct block_list*)dbi_first(iter); dbi_exists(iter); bl = (struct block_list*)dbi_next(iter) ) { - if( bl->type == BL_NPC ) { - struct npc_data* nd = (struct npc_data*)bl; - - if( nd->src_id == master ) { + for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { + if (bl->type == BL_NPC) { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->src_id == master) { nd->u.scr.shop = master_nd->u.scr.shop; } } @@ -1720,7 +1724,8 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po if( sd->state.trading ) return ERROR_TYPE_EXCHANGE; - if( !(nd = (struct npc_data *)map->id2bl(sd->npc_shopid)) ) + nd = map->id2nd(sd->npc_shopid); + if (nd == NULL) return ERROR_TYPE_NPC; if( (item = itemdb->exists(nameid)) == NULL ) @@ -2283,11 +2288,12 @@ int npc_unload(struct npc_data* nd, bool single) if( single && nd->bl.m != -1 ) map->remove_questinfo(nd->bl.m,nd); - if( nd->src_id == 0 && ( nd->subtype == SHOP || nd->subtype == CASHSHOP ) ) //src check for duplicate shops [Orcao] + if (nd->src_id == 0 && ( nd->subtype == SHOP || nd->subtype == CASHSHOP)) { + //src check for duplicate shops [Orcao] aFree(nd->u.shop.shop_item); - else if( nd->subtype == SCRIPT ) { - struct s_mapiterator* iter; - struct block_list* bl; + } else if (nd->subtype == SCRIPT) { + struct s_mapiterator *iter; + struct map_session_data *sd = NULL; if( single ) { npc->ev_db->foreach(npc->ev_db,npc->unload_ev,nd->exname); //Clean up all events related @@ -2295,9 +2301,8 @@ int npc_unload(struct npc_data* nd, bool single) } iter = mapit_geteachpc(); - for( bl = (struct block_list*)mapit->first(iter); mapit->exists(iter); bl = (struct block_list*)mapit->next(iter) ) { - struct map_session_data *sd = ((TBL_PC*)bl); - if( sd && sd->npc_timer_id != INVALID_TIMER ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { + if (sd->npc_timer_id != INVALID_TIMER ) { const struct TimerData *td = timer->get(sd->npc_timer_id); if( td && td->id != nd->bl.id ) @@ -2569,8 +2574,7 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c } else { // NPC has an ID specified for view id. val = atoi(w4); - if (val != FAKE_NPC) // TODO: Add this to the constants table and replace -1 with FAKE_NPC in the scripts, then remove this check. - ShowWarning("npc_parseview: Use of numeric NPC view IDs is deprecated and may be removed in a future update. Please use NPC view constants instead. ID '%d' specified in file '%s', line '%d'.\n", val, filepath, strline(buffer, start-buffer)); + ShowWarning("npc_parseview: Use of numeric NPC view IDs is deprecated and may be removed in a future update. Please use NPC view constants instead. ID '%d' specified in file '%s', line '%d'.\n", val, filepath, strline(buffer, start-buffer)); } return val; @@ -2947,7 +2951,7 @@ const char* npc_skip_script(const char* start, const char* buffer, const char* f * * Example: * @code - * -<TAB>script<TAB><NPC Name><TAB>-1,{ + * -<TAB>script<TAB><NPC Name><TAB>FAKE_NPC,{ * <code> * } * <map name>,<x>,<y>,<facing><TAB>script<TAB><NPC Name><TAB><sprite id>,{ @@ -3431,10 +3435,17 @@ void npc_setcells(struct npc_data* nd) { } } -int npc_unsetcells_sub(struct block_list* bl, va_list ap) { - struct npc_data *nd = (struct npc_data*)bl; - int id = va_arg(ap,int); - if (nd->bl.id == id) return 0; +int npc_unsetcells_sub(struct block_list *bl, va_list ap) +{ + struct npc_data *nd = NULL; + int id = va_arg(ap, int); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCAST(BL_NPC, bl); + + if (nd->bl.id == id) + return 0; npc->setcells(nd); return 1; } @@ -4664,11 +4675,11 @@ int npc_reload(void) { //Remove all npcs/mobs. [Skotlex] iter = mapit_geteachiddb(); - for( bl = (struct block_list*)mapit->first(iter); mapit->exists(iter); bl = (struct block_list*)mapit->next(iter) ) { + for (bl = mapit->first(iter); mapit->exists(iter); bl = mapit->next(iter)) { switch(bl->type) { case BL_NPC: if( bl->id != npc->fake_nd->bl.id )// don't remove fake_nd - npc->unload((struct npc_data *)bl, false); + npc->unload(BL_UCAST(BL_NPC, bl), false); break; case BL_MOB: unit->free(bl,CLR_OUTSIGHT); @@ -4879,7 +4890,7 @@ int do_init_npc(bool minimal) { } // Init dummy NPC - npc->fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data)); + CREATE(npc->fake_nd, struct npc_data, 1); npc->fake_nd->bl.m = -1; npc->fake_nd->bl.id = npc->get_new_npc_id(); npc->fake_nd->class_ = FAKE_NPC; diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c index 8950df1ee..fef3ba99b 100644 --- a/src/map/npc_chat.c +++ b/src/map/npc_chat.c @@ -339,15 +339,20 @@ void npc_chat_finalize(struct npc_data* nd) */ int npc_chat_sub(struct block_list* bl, va_list ap) { - struct npc_data *nd = (struct npc_data *) bl; - struct npc_parse *npcParse = nd->chatdb; - char* msg; + struct npc_data *nd = NULL; + struct npc_parse *npcParse = NULL; + char *msg; int len, i; struct map_session_data* sd; struct npc_label_list* lst; struct pcrematch_set* pcreset; struct pcrematch_entry* e; + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCAST(BL_NPC, bl); + npcParse = nd->chatdb; + // Not interested in anything you might have to say... if (npcParse == NULL || npcParse->active == NULL) return 0; @@ -395,38 +400,46 @@ int npc_chat_sub(struct block_list* bl, va_list ap) } // Various script built-ins used to support these functions -BUILDIN(defpattern) { +BUILDIN(defpattern) +{ int setid = script_getnum(st,2); const char* pattern = script_getstr(st,3); const char* label = script_getstr(st,4); - struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid); + struct npc_data *nd = map->id2nd(st->oid); + nullpo_retr(false, nd); npc_chat->def_pattern(nd, setid, pattern, label); return true; } -BUILDIN(activatepset) { +BUILDIN(activatepset) +{ int setid = script_getnum(st,2); - struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid); + struct npc_data *nd = map->id2nd(st->oid); + nullpo_retr(false, nd); npc_chat->activate_pcreset(nd, setid); return true; } -BUILDIN(deactivatepset) { +BUILDIN(deactivatepset) +{ int setid = script_getnum(st,2); - struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid); + struct npc_data *nd = map->id2nd(st->oid); + nullpo_retr(false, nd); npc_chat->deactivate_pcreset(nd, setid); return true; } -BUILDIN(deletepset) { +BUILDIN(deletepset) +{ int setid = script_getnum(st,2); - struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid); + struct npc_data *nd = map->id2nd(st->oid); + nullpo_retr(false, nd); npc_chat->delete_pcreset(nd, setid); diff --git a/src/map/party.c b/src/map/party.c index 1b5989f41..a3e59c281 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -96,8 +96,9 @@ struct map_session_data* party_getavailablesd(struct party_data *p) /*========================================== * Retrieves and validates the sd pointer for this party member [Skotlex] *------------------------------------------*/ -TBL_PC* party_sd_check(int party_id, int account_id, int char_id) { - TBL_PC* sd = map->id2sd(account_id); +struct map_session_data *party_sd_check(int party_id, int account_id, int char_id) +{ + struct map_session_data *sd = map->id2sd(account_id); if (!(sd && sd->status.char_id == char_id)) return NULL; @@ -954,8 +955,8 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b for (i = 0; i < c; i++) { #ifdef RENEWAL_EXP - if( !(src && src->type == BL_MOB && ((TBL_MOB*)src)->db->mexp) ){ - struct mob_data *md = (TBL_MOB*)src; + struct mob_data *md = BL_CAST(BL_MOB, src); + if (md != NULL && md->db->mexp == 0) { int rate = pc->level_penalty_mod(md->level - (sd[i])->status.base_level, md->status.race, md->status.mode, 1); base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX); @@ -973,16 +974,16 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b //Does party loot. first_charid holds the charid of the player who has time priority to take the item. int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid) { - TBL_PC* target = NULL; + struct map_session_data *target = NULL; int i; if (p && p->party.item&2 && (first_charid || !(battle_config.party_share_type&1))) { //item distribution to party members. if (battle_config.party_share_type&2) { //Round Robin - TBL_PC* psd; i = p->itemc; do { + struct map_session_data *psd; i++; if (i >= MAX_PARTY) i = 0; // reset counter to 1st person in party so it'll stop when it reaches "itemc" @@ -1000,7 +1001,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i } while (i != p->itemc); } else { //Random pick - TBL_PC* psd[MAX_PARTY]; + struct map_session_data *psd[MAX_PARTY]; int count = 0; //Collect pick candidates for (i = 0; i < MAX_PARTY; i++) { @@ -1048,7 +1049,11 @@ int party_send_dot_remove(struct map_session_data *sd) // party_foreachsamemap(party->sub_count, sd, 0, &c); int party_sub_count(struct block_list *bl, va_list ap) { - struct map_session_data *sd = (TBL_PC *)bl; + const struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCCAST(BL_PC, bl); if (sd->state.autotrade) return 0; @@ -1109,8 +1114,13 @@ int party_vforeachsamemap(int (*func)(struct block_list*,va_list), struct map_se } // Special check for Minstrel's and Wanderer's chorus skills. -int party_sub_count_chorus(struct block_list *bl, va_list ap) { - struct map_session_data *sd = (TBL_PC *)bl; +int party_sub_count_chorus(struct block_list *bl, va_list ap) +{ + const struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCCAST(BL_PC, bl); if (sd->state.autotrade) return 0; diff --git a/src/map/party.h b/src/map/party.h index eb3442b92..828916b88 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -21,7 +21,6 @@ #ifndef MAP_PARTY_H #define MAP_PARTY_H -#include "map/map.h" // TBL_PC #include "common/hercules.h" #include "common/db.h" #include "common/mmo.h" // struct party @@ -31,7 +30,9 @@ #define PARTY_BOOKING_JOBS 6 #define PARTY_BOOKING_RESULTS 10 +struct block_list; struct hplugin_data_store; +struct map_session_data; struct party_member_data { struct map_session_data *sd; @@ -141,7 +142,7 @@ struct party_interface { int (*foreachsamemap) (int (*func)(struct block_list *,va_list),struct map_session_data *sd,int range,...); int (*send_xy_timer) (int tid, int64 tick, int id, intptr_t data); void (*fill_member) (struct party_member* member, struct map_session_data* sd, unsigned int leader); - TBL_PC* (*sd_check) (int party_id, int account_id, int char_id); + struct map_session_data *(*sd_check) (int party_id, int account_id, int char_id); void (*check_state) (struct party_data *p); struct party_booking_ad_info* (*create_booking_data) (void); int (*db_final) (DBKey key, DBData *data, va_list ap); diff --git a/src/map/pc.c b/src/map/pc.c index d697cd9f4..2dfd9519b 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -123,10 +123,11 @@ bool pc_should_log_commands(struct map_session_data *sd) return pcg->should_log_commands(sd->group); } -int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data) { - struct map_session_data *sd; +int pc_invincible_timer(int tid, int64 tick, int id, intptr_t data) +{ + struct map_session_data *sd = map->id2sd(id); - if( (sd=(struct map_session_data *)map->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if (sd == NULL) return 1; if(sd->invincible_timer != tid){ @@ -162,10 +163,10 @@ void pc_delinvincibletimer(struct map_session_data* sd) } int pc_spiritball_timer(int tid, int64 tick, int id, intptr_t data) { - struct map_session_data *sd; + struct map_session_data *sd = map->id2sd(id); int i; - if( (sd=(struct map_session_data *)map->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if (sd == NULL) return 1; if( sd->spiritball <= 0 ) @@ -286,14 +287,17 @@ int pc_delspiritball(struct map_session_data *sd,int count,int type) } return 0; } -int pc_check_banding( struct block_list *bl, va_list ap ) { +int pc_check_banding(struct block_list *bl, va_list ap) +{ int *c, *b_sd; struct block_list *src; - struct map_session_data *tsd; + const struct map_session_data *tsd; struct status_change *sc; nullpo_ret(bl); - nullpo_ret(tsd = (struct map_session_data*)bl); + Assert_ret(bl->type == BL_PC); + tsd = BL_UCCAST(BL_PC, bl); + nullpo_ret(src = va_arg(ap,struct block_list *)); c = va_arg(ap,int *); b_sd = va_arg(ap, int *); @@ -596,6 +600,10 @@ int pc_makesavestatus(struct map_session_data *sd) if(!battle_config.save_clothcolor) sd->status.clothes_color=0; + if (!battle_config.save_body_style) + sd->status.body = 0; + + //Only copy the Cart/Peco/Falcon options, the rest are handled via //status change load/saving. [Skotlex] #ifdef NEW_CARTS @@ -1067,6 +1075,9 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if( sd->status.clothes_color < MIN_CLOTH_COLOR || sd->status.clothes_color > MAX_CLOTH_COLOR ) { sd->status.clothes_color = MIN_CLOTH_COLOR; } + if (sd->status.body < MIN_BODY_STYLE || sd->status.body > MAX_BODY_STYLE) { + sd->status.body = MIN_BODY_STYLE; + } //Initializations to null/0 unneeded since map_session_data was filled with 0 upon allocation. if(!sd->status.hp) pc_setdead(sd); @@ -1526,43 +1537,42 @@ int pc_calc_skilltree(struct map_session_data *sd) do { flag = 0; - for( i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[c][i].id) > 0; i++ ) { - int f, idx = pc->skill_tree[c][i].idx; - if( sd->status.skill[idx].id ) + for (i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[c][i].id) > 0; i++) { + int idx = pc->skill_tree[c][i].idx; + bool satisfied = true; + if (sd->status.skill[idx].id > 0) continue; //Skill already known. - f = 1; - if(!battle_config.skillfree) { + if (!battle_config.skillfree) { int j; - for(j = 0; j < MAX_PC_SKILL_REQUIRE; j++) { - int k; - if((k=pc->skill_tree[c][i].need[j].id)) { - int idx2 = pc->skill_tree[c][i].need[j].idx; - if (sd->status.skill[idx2].id == 0 || sd->status.skill[idx2].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[idx2].flag == SKILL_FLAG_PLAGIARIZED) - k = 0; //Not learned. - else if (sd->status.skill[idx2].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level - k = sd->status.skill[idx2].flag - SKILL_FLAG_REPLACED_LV_0; - else - k = pc->checkskill2(sd,idx2); - if (k < pc->skill_tree[c][i].need[j].lv) { - f = 0; - break; - } + for (j = 0; j < VECTOR_LENGTH(pc->skill_tree[c][i].need); j++) { + struct skill_tree_requirement *req = &VECTOR_INDEX(pc->skill_tree[c][i].need, j); + int level; + if (sd->status.skill[req->idx].id == 0 + || sd->status.skill[req->idx].flag == SKILL_FLAG_TEMPORARY + || sd->status.skill[req->idx].flag == SKILL_FLAG_PLAGIARIZED) + level = 0; //Not learned. + else if (sd->status.skill[req->idx].flag >= SKILL_FLAG_REPLACED_LV_0) //Real learned level + level = sd->status.skill[req->idx].flag - SKILL_FLAG_REPLACED_LV_0; + else + level = pc->checkskill2(sd, req->idx); + if (level < req->lv) { + satisfied = false; + break; } } - if ( sd->status.job_level < pc->skill_tree[c][i].joblv ) { - int x = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree - if ( x > -1 ) { - x = pc->class2idx(x); - if ( !pc->skill_tree[x][i].inherited ) - f = 0; // job level requirement wasn't satisfied - } else - f = 0; + if (sd->status.job_level < pc->skill_tree[c][i].joblv) { + int jobid = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree + if (jobid > -1) { + if (!pc->skill_tree[pc->class2idx(jobid)][i].inherited) + satisfied = false; // job level requirement wasn't satisfied + } else { + satisfied = false; + } } } - if( f ) { - int inf2; - inf2 = skill->dbs->db[idx].inf2; + if (satisfied) { + int inf2 = skill->dbs->db[idx].inf2; if(!sd->status.skill[idx].lv && ( (inf2&INF2_QUEST_SKILL && !battle_config.quest_skill_learn) || @@ -1628,39 +1638,40 @@ void pc_check_skilltree(struct map_session_data *sd, int skill_id) c = pc->class2idx(c); do { flag = 0; - for (i = 0; i < MAX_SKILL_TREE && (id=pc->skill_tree[c][i].id)>0; i++) { - int j, f = 1, idx = pc->skill_tree[c][i].idx; + for (i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[c][i].id) > 0; i++) { + int j, idx = pc->skill_tree[c][i].idx; + bool satisfied = true; - if( sd->status.skill[idx].id ) //Already learned + if (sd->status.skill[idx].id) //Already learned continue; - for (j = 0; j < MAX_PC_SKILL_REQUIRE; j++) { - int k = pc->skill_tree[c][i].need[j].id; - if (k) { - int idx2 = pc->skill_tree[c][i].need[j].idx; - if (sd->status.skill[idx2].id == 0 || sd->status.skill[idx2].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[idx2].flag == SKILL_FLAG_PLAGIARIZED) - k = 0; //Not learned. - else if (sd->status.skill[idx2].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level - k = sd->status.skill[idx2].flag - SKILL_FLAG_REPLACED_LV_0; - else - k = pc->checkskill2(sd,idx2); - if (k < pc->skill_tree[c][i].need[j].lv) { - f = 0; - break; - } + for (j = 0; j < VECTOR_LENGTH(pc->skill_tree[c][i].need); j++) { + struct skill_tree_requirement *req = &VECTOR_INDEX(pc->skill_tree[c][i].need, j); + int level; + if (sd->status.skill[req->idx].id == 0 + || sd->status.skill[req->idx].flag == SKILL_FLAG_TEMPORARY + || sd->status.skill[req->idx].flag == SKILL_FLAG_PLAGIARIZED) + level = 0; //Not learned. + else if (sd->status.skill[req->idx].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level + level = sd->status.skill[req->idx].flag - SKILL_FLAG_REPLACED_LV_0; + else + level = pc->checkskill2(sd,req->idx); + if (level < req->lv) { + satisfied = false; + break; } } - if( !f ) + if (!satisfied) continue; - if ( sd->status.job_level < pc->skill_tree[c][i].joblv ) { - int x = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree - if ( x > -1 ) { - x = pc->class2idx(x); - if ( !pc->skill_tree[x][i].inherited ) + if (sd->status.job_level < pc->skill_tree[c][i].joblv) { + int jobid = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree + if (jobid > -1) { + if (!pc->skill_tree[pc->class2idx(jobid)][i].inherited) continue; - } else + } else { continue; + } } j = skill->dbs->db[idx].inf2; @@ -1851,9 +1862,9 @@ int pc_disguise(struct map_session_data *sd, int class_) { clif->updatestatus(sd,SP_CARTINFO); } if (sd->chatID) { - struct chat_data* cd; + struct chat_data *cd = map->id2cd(sd->chatID); - if( (cd = (struct chat_data*)map->id2bl(sd->chatID)) ) + if (cd != NULL) clif->dispchat(cd,0); } } @@ -3969,7 +3980,7 @@ int pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type4 * Grants a player a given skill. * Flag values: @see enum pc_skill_flag *------------------------------------------*/ -int pc_skill(TBL_PC* sd, int id, int level, int flag) +int pc_skill(struct map_session_data *sd, int id, int level, int flag) { uint16 index = 0; nullpo_ret(sd); @@ -5217,7 +5228,7 @@ void pc_bound_clear(struct map_session_data *sd, enum e_item_bound_type type) { *------------------------------------------*/ int pc_show_steal(struct block_list *bl,va_list ap) { - struct map_session_data *sd; + struct map_session_data *sd = NULL, *tsd = NULL; int itemid; struct item_data *item=NULL; @@ -5226,11 +5237,16 @@ int pc_show_steal(struct block_list *bl,va_list ap) sd=va_arg(ap,struct map_session_data *); itemid=va_arg(ap,int); + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + tsd = BL_UCAST(BL_PC, bl); + nullpo_ret(sd); + if((item=itemdb->exists(itemid))==NULL) sprintf(output,"%s stole an Unknown Item (id: %i).",sd->status.name, itemid); else sprintf(output,"%s stole %s.",sd->status.name,item->jname); - clif->message( ((struct map_session_data *)bl)->fd, output); + clif->message(tsd->fd, output); return 0; } @@ -5245,15 +5261,13 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil int i,itemid,flag; double rate; struct status_data *sd_status, *md_status; - struct mob_data *md; + struct mob_data *md = BL_CAST(BL_MOB, bl); struct item tmp_item; struct item_data *data = NULL; - if(!sd || !bl || bl->type!=BL_MOB) + if (sd == NULL || md == NULL) return 0; - md = (TBL_MOB *)bl; - if(md->state.steal_flag == UCHAR_MAX || ( md->sc.opt1 && md->sc.opt1 != OPT1_BURNING && md->sc.opt1 != OPT1_CRYSTALIZE ) ) //already stolen from / status change check return 0; @@ -5325,12 +5339,11 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil **/ int pc_steal_coin(struct map_session_data *sd, struct block_list *target) { int rate, skill_lv; - struct mob_data *md; + struct mob_data *md = BL_CAST(BL_MOB, target); - if (!sd || !target || target->type != BL_MOB) + if (sd == NULL || md == NULL) return 0; - md = (TBL_MOB*)target; if (md->state.steal_coin_flag || md->sc.data[SC_STONE] || md->sc.data[SC_FREEZE] || md->status.mode&MD_BOSS) return 0; @@ -7590,11 +7603,11 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) pc->del_charm(sd, sd->charm_count, sd->charm_type); - if (src) { + if (src != NULL) { switch (src->type) { case BL_MOB: { - struct mob_data *md=(struct mob_data *)src; + struct mob_data *md = BL_UCAST(BL_MOB, src); if (md->target_id==sd->bl.id) mob->unlocktarget(md,tick); if (battle_config.mobs_level_up && md->status.hp @@ -7616,19 +7629,19 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { } break; case BL_PET: //Pass on to master... - src = &((TBL_PET*)src)->msd->bl; + src = &BL_UCAST(BL_PET, src)->msd->bl; break; case BL_HOM: - src = &((TBL_HOM*)src)->master->bl; + src = &BL_UCAST(BL_HOM, src)->master->bl; break; case BL_MER: - src = &((TBL_MER*)src)->master->bl; + src = &BL_UCAST(BL_MER, src)->master->bl; break; } } - if (src && src->type == BL_PC) { - struct map_session_data *ssd = (struct map_session_data *)src; + if (src != NULL && src->type == BL_PC) { + struct map_session_data *ssd = BL_UCAST(BL_PC, src); pc->setparam(ssd, SP_KILLEDRID, sd->bl.id); npc->script_event(ssd, NPCE_KILLPC); @@ -7814,9 +7827,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if( map->list[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map->list[sd->bl.m].flag.pvp_nocalcrank ) { sd->pvp_point -= 5; sd->pvp_lost++; - if( src && src->type == BL_PC ) - { - struct map_session_data *ssd = (struct map_session_data *)src; + if (src != NULL && src->type == BL_PC) { + struct map_session_data *ssd = BL_UCAST(BL_PC, src); ssd->pvp_point++; ssd->pvp_won++; } @@ -8316,11 +8328,12 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp) int jobchange_killclone(struct block_list *bl, va_list ap) { - struct mob_data *md; - int flag; - md = (struct mob_data *)bl; - nullpo_ret(md); - flag = va_arg(ap, int); + struct mob_data *md = NULL; + int flag = va_arg(ap, int); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); if (md->master_id && md->special_state.clone && md->master_id == flag) status_kill(&md->bl); @@ -8450,6 +8463,8 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) clif->changelook(&sd->bl,LOOK_BASE,sd->vd.class_); // move sprite update to prevent client crashes with incompatible equipment [Valaris] if(sd->vd.cloth_color) clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color); + if (sd->vd.body_style) + clif->changelook(&sd->bl,LOOK_BODY2,sd->vd.body_style); //Update skill tree. pc->calc_skilltree(sd); @@ -8546,6 +8561,8 @@ int pc_changelook(struct map_session_data *sd,int type,int val) clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); if (sd->vd.cloth_color) clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color); + if (sd->vd.body_style) + clif->changelook(&sd->bl,LOOK_BODY2,sd->vd.body_style); clif->skillinfoblock(sd); return 0; break; @@ -8594,6 +8611,10 @@ int pc_changelook(struct map_session_data *sd,int type,int val) case LOOK_ROBE: sd->status.robe = val; break; + case LOOK_BODY2: + val = cap_value(val, MIN_BODY_STYLE, MAX_BODY_STYLE); + sd->status.body=val; + break; } clif->changelook(&sd->bl,type,val); return 0; @@ -8690,6 +8711,8 @@ int pc_setoption(struct map_session_data *sd,int type) clif->changelook(&sd->bl,LOOK_BASE,new_look); if (sd->vd.cloth_color) clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color); + if( sd->vd.body_style ) + clif->changelook(&sd->bl,LOOK_BODY2,sd->vd.body_style); clif->skillinfoblock(sd); // Skill list needs to be updated after base change. return 0; @@ -8761,7 +8784,7 @@ int pc_setcart(struct map_session_data *sd,int type) { * @param sd Target player. * @param flag New state. **/ -void pc_setfalcon(TBL_PC* sd, bool flag) +void pc_setfalcon(struct map_session_data *sd, bool flag) { if (flag) { if (pc->checkskill(sd,HT_FALCON) > 0) // add falcon if he have the skill @@ -8779,7 +8802,7 @@ void pc_setfalcon(TBL_PC* sd, bool flag) * @param sd Target player. * @param flag New state. **/ -void pc_setridingpeco(TBL_PC* sd, bool flag) +void pc_setridingpeco(struct map_session_data *sd, bool flag) { if (flag) { if (pc->checkskill(sd, KN_RIDING)) @@ -8815,7 +8838,7 @@ void pc_setmadogear(struct map_session_data *sd, bool flag) * @param sd Target player. * @param type New state. This must be a valid OPTION_DRAGON* or 0. **/ -void pc_setridingdragon(TBL_PC* sd, unsigned int type) +void pc_setridingdragon(struct map_session_data *sd, unsigned int type) { if (type&OPTION_DRAGON) { // Ensure only one dragon is set at a time. @@ -8847,7 +8870,7 @@ void pc_setridingdragon(TBL_PC* sd, unsigned int type) * @param sd Target player. * @param flag New state. **/ -void pc_setridingwug(TBL_PC* sd, bool flag) +void pc_setridingwug(struct map_session_data *sd, bool flag) { if (flag) { if (pc->checkskill(sd, RA_WUGRIDER) > 0) @@ -9982,12 +10005,15 @@ int pc_checkitem(struct map_session_data *sd) /*========================================== * Update PVP rank for sd1 in cmp to sd2 *------------------------------------------*/ -int pc_calc_pvprank_sub(struct block_list *bl,va_list ap) +int pc_calc_pvprank_sub(struct block_list *bl, va_list ap) { - struct map_session_data *sd1,*sd2; + struct map_session_data *sd1 = NULL; + struct map_session_data *sd2 = va_arg(ap,struct map_session_data *); - sd1=(struct map_session_data *)bl; - sd2=va_arg(ap,struct map_session_data *); + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd1 = BL_UCAST(BL_PC, bl); + nullpo_ret(sd2); if (pc_isinvisible(sd1) ||pc_isinvisible(sd2)) { // cannot register pvp rank for hidden GMs @@ -10242,8 +10268,7 @@ int pc_autosave(int tid, int64 tick, int id, intptr_t data) { save_flag = 1; //Noone was saved, so save first found char. iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if(sd->bl.id == last_save_id && save_flag != 1) { save_flag = 1; continue; @@ -10386,10 +10411,10 @@ bool pc_can_use_command(struct map_session_data *sd, const char *command) { */ int pc_charm_timer(int tid, int64 tick, int id, intptr_t data) { - struct map_session_data *sd; + struct map_session_data *sd = map->id2sd(id); int i; - if( (sd=(struct map_session_data *)map->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if (sd == NULL) return 1; if (sd->charm_count <= 0) { @@ -10592,128 +10617,203 @@ int pc_split_atoui(char* str, unsigned int* val, char sep, int max) val[j] = 0; return i; } -/* [Ind/Hercules] */ -void pc_read_skill_tree(void) { + +/** + * Parses the skill tree config file. + * + * In order to reclaim the memory allocated by this function + * `pc->clear_skill_tree()` should be used. + * + * @remark + * This function assumes that the skill tree is clear and zeroed. + * If it has been already loaded (ie reloading), it needs to be cleared + * before calling this function again. + * + * @author [Ind/Hercules] + */ +void pc_read_skill_tree(void) +{ config_t skill_tree_conf; - config_setting_t *skt = NULL, *inherit = NULL, *skills = NULL, *sk = NULL; -#ifdef RENEWAL - const char *config_filename = "db/re/skill_tree.conf"; // FIXME hardcoded name -#else - const char *config_filename = "db/pre-re/skill_tree.conf"; // FIXME hardcoded name -#endif + config_setting_t *skt = NULL; + char config_filename[128]; int i = 0; struct s_mapiterator *iter; struct map_session_data *sd; + bool loaded[CLASS_COUNT] = { false }; + safesnprintf(config_filename, sizeof(config_filename), "%s/"DBPATH"skill_tree.conf", map->db_path); if (libconfig->read_file(&skill_tree_conf, config_filename)) { ShowError("can't read %s\n", config_filename); return; } - while ((skt = libconfig->setting_get_elem(skill_tree_conf.root,i++))) { - int k; - const char *name = config_setting_name(skt); + // Foreach job + while ((skt = libconfig->setting_get_elem(skill_tree_conf.root, i++))) { + config_setting_t *t = NULL; + int job_idx; + const char *job_name = config_setting_name(skt); + int job_id = pc->check_job_name(job_name); - if ( (k = pc->check_job_name(name)) == -1 ) { - ShowWarning("pc_read_skill_tree: '%s' unknown job name!\n", name); + if (job_id == -1) { + ShowWarning("pc_read_skill_tree: '%s' unknown job name!\n", job_name); + continue; + } + job_idx = pc->class2idx(job_id); + if (loaded[job_idx]) { + ShowWarning("pc_read_skill_tree: Duplicate entry for job '%s'. Skipping.\n", job_name); continue; } + loaded[job_idx] = true; - if( ( skills = libconfig->setting_get_member(skt,"skills") ) ) { - int c = 0; - int idx = pc->class2idx(k); + if ((t = libconfig->setting_get_member(skt, "inherit")) != NULL) { + int j = 0; + const char *ijob_name = NULL; + // Foreach inherited job + while ((ijob_name = libconfig->setting_get_string_elem(t, j++)) != NULL) { + int k, ijob_idx; + int ijob_id = pc->check_job_name(ijob_name); - while ((sk = libconfig->setting_get_elem(skills,c++))) { - const char *sk_name = config_setting_name(sk); - int skill_id; + if (ijob_id == -1) { + ShowWarning("pc_read_skill_tree: '%s' trying to inherit unknown '%s'!\n", job_name, ijob_name); + continue; + } + ijob_idx = pc->class2idx(ijob_id); + if (ijob_idx == job_idx) { + ShowWarning("pc_read_skill_tree: '%s' trying to inherit itself. Skipping.\n", job_name); + continue; + } + if (!loaded[ijob_idx]) { + ShowWarning("pc_read_skill_tree: '%s' trying to inherit not yet loaded '%s' (wrong order in the tree). Skipping.\n", job_name, ijob_name); + continue; + } - if( ( skill_id = skill->name2id(sk_name) ) ) { - int skidx, offset = 0, h = 0, rlen = 0; + for (k = 0; k < MAX_SKILL_TREE; k++) { + int cur; + struct skill_tree_entry *dst = NULL; + const struct skill_tree_entry *src = &pc->skill_tree[ijob_idx][k]; - ARR_FIND( 0, MAX_SKILL_TREE, skidx, pc->skill_tree[idx][skidx].id == 0 || pc->skill_tree[idx][skidx].id == skill_id ); - if (skidx == MAX_SKILL_TREE) { - ShowWarning("pc_read_skill_tree: Unable to load skill %d (%s) into '%s's tree. Maximum number of skills per class has been reached.\n", skill_id, sk_name, name); - continue; - } else if (pc->skill_tree[idx][skidx].id) { - ShowNotice("pc_read_skill_tree: Overwriting %d for '%s' (%d)\n", skill_id, name, k); - } + if (src->id == 0) + break; // No more skills to copy - pc->skill_tree[idx][skidx].id = skill_id; - pc->skill_tree[idx][skidx].idx = skill->get_index(skill_id); - - if( config_setting_is_group(sk) ) { - int max = 0, jlevel = 0; - libconfig->setting_lookup_int(sk, "MaxLevel", &max); - libconfig->setting_lookup_int(sk, "MinJobLevel", &jlevel); - pc->skill_tree[idx][skidx].max = (unsigned char)max; - pc->skill_tree[idx][skidx].joblv = (unsigned char)jlevel; - rlen = libconfig->setting_length(sk); - offset += jlevel ? 2 : 1; - } else { - pc->skill_tree[idx][skidx].max = (unsigned char)libconfig->setting_get_int(sk); - pc->skill_tree[idx][skidx].joblv = 0; + ARR_FIND(0, MAX_SKILL_TREE, cur, pc->skill_tree[job_idx][cur].id == 0 || pc->skill_tree[job_idx][cur].id == src->id); + if (cur == MAX_SKILL_TREE) { + ShowWarning("pc_read_skill_tree: '%s' can't inherit '%s', skill tree is full!\n", job_name, ijob_name); + break; } - - for (h = offset; h < rlen && h < MAX_PC_SKILL_REQUIRE; h++) { - config_setting_t *rsk = libconfig->setting_get_elem(sk,h); - int rskid; - if (rsk && (rskid = skill->name2id(config_setting_name(rsk))) != 0) { - pc->skill_tree[idx][skidx].need[h].id = rskid; - pc->skill_tree[idx][skidx].need[h].idx = skill->get_index(rskid); - pc->skill_tree[idx][skidx].need[h].lv = (unsigned char)libconfig->setting_get_int(rsk); - } else if( rsk ) { - ShowWarning("pc_read_skill_tree: unknown requirement '%s' for '%s' in '%s'\n",config_setting_name(rsk),sk_name,name); - } else { - ShowWarning("pc_read_skill_tree: error for '%s' in '%s'\n",sk_name,name); + if (src->id == NV_TRICKDEAD && ((pc->jobid2mapid(job_id)&(MAPID_BASEMASK | JOBL_2)) != MAPID_NOVICE)) + continue; // skip trickdead for non-novices + dst = &pc->skill_tree[job_idx][cur]; + dst->inherited = 1; + if (dst->id == 0) { + // Not existing yet, copy + dst->id = src->id; + dst->idx = src->idx; + dst->max = src->max; + dst->joblv = src->joblv; + VECTOR_INIT(dst->need); + if (VECTOR_LENGTH(src->need) > 0) { + VECTOR_ENSURE(dst->need, VECTOR_LENGTH(src->need), 1); + VECTOR_PUSHARRAY(dst->need, VECTOR_DATA(src->need), VECTOR_LENGTH(src->need)); + } + } else { + int l; + // Already existing, merge + if (src->max > dst->max) + dst->max = src->max; + dst->joblv = src->joblv; + for (l = 0; l < VECTOR_LENGTH(src->need); l++) { + int m; + struct skill_tree_requirement *sreq = &VECTOR_INDEX(src->need, l); + ARR_FIND(0, VECTOR_LENGTH(dst->need), m, VECTOR_INDEX(dst->need, m).id == sreq->id); + if (m == VECTOR_LENGTH(dst->need)) { + VECTOR_ENSURE(dst->need, 1, 1); + VECTOR_PUSHCOPY(dst->need, sreq); + } else { + struct skill_tree_requirement *dreq = &VECTOR_INDEX(dst->need, m); + dreq->lv = sreq->lv; + } } } - } else { - ShowWarning("pc_read_skill_tree: unknown skill '%s' in '%s'\n",sk_name,name); } } } - } - - i = 0; - while( (skt = libconfig->setting_get_elem(skill_tree_conf.root,i++)) ) { - int k, idx; - const char *name = config_setting_name(skt); - - if ( (k = pc->check_job_name(name)) == -1 ) { - ShowWarning("pc_read_skill_tree: '%s' unknown job name!\n", name); - continue; - } - - idx = pc->class2idx(k); - - if( ( inherit = libconfig->setting_get_member(skt,"inherit") ) ) { - const char *iname; - int v = 0; - while ( (iname = libconfig->setting_get_string_elem(inherit, v++)) ) { - int b = 0, a, d, f, fidx; + if ((t = libconfig->setting_get_member(skt, "skills")) != NULL) { + int j = 0; + config_setting_t *sk = NULL; + // Foreach skill + while ((sk = libconfig->setting_get_elem(t, j++)) != NULL) { + int skill_id, sk_idx; + config_setting_t *rsk = NULL; + const char *sk_name = config_setting_name(sk); + struct skill_tree_entry *tree_entry = NULL; - if ( (b = pc->check_job_name(iname)) == -1 ) { - ShowWarning("pc_read_skill_tree: '%s' trying to inherit unknown '%s'!\n", name, iname); + if ((skill_id = skill->name2id(sk_name)) == 0) { + ShowWarning("pc_read_skill_tree: unknown skill '%s' in '%s'\n", sk_name, job_name); continue; } - fidx = pc->class2idx(b); - - ARR_FIND(0, MAX_SKILL_TREE, d, pc->skill_tree[fidx][d].id == 0); - - for ( f = 0; f < d; f++ ) { - - ARR_FIND(0, MAX_SKILL_TREE, a, pc->skill_tree[idx][a].id == 0 || pc->skill_tree[idx][a].id == pc->skill_tree[fidx][f].id); + ARR_FIND(0, MAX_SKILL_TREE, sk_idx, pc->skill_tree[job_idx][sk_idx].id == 0 || pc->skill_tree[job_idx][sk_idx].id == skill_id); + if (sk_idx == MAX_SKILL_TREE) { + ShowWarning("pc_read_skill_tree: Unable to load skill %d (%s) into '%s's tree. Maximum number of skills per class has been reached.\n", skill_id, sk_name, job_name); + continue; + } + tree_entry = &pc->skill_tree[job_idx][sk_idx]; - if ( a == MAX_SKILL_TREE ) { - ShowWarning("pc_read_skill_tree: '%s' can't inherit '%s', skill tree is full!\n", name, iname); - break; - } else if ( pc->skill_tree[idx][a].id || (pc->skill_tree[idx][a].id == NV_TRICKDEAD && ((pc->jobid2mapid(k)&(MAPID_BASEMASK | JOBL_2)) != MAPID_NOVICE)) ) /* we skip trickdead for non-novices */ - continue;/* skip */ - memcpy(&pc->skill_tree[idx][a], &pc->skill_tree[fidx][f], sizeof(pc->skill_tree[fidx][f])); - pc->skill_tree[idx][a].inherited = 1; + if (tree_entry->id != 0 && !tree_entry->inherited) { + ShowNotice("pc_read_skill_tree: Duplicate %d for '%s' (%d). Skipping.\n", skill_id, job_name, job_id); + continue; + } + if (config_setting_is_group(sk)) { + int i32 = 0; + if (libconfig->setting_lookup_int(sk, "MaxLevel", &i32) && i32 > 0) { + tree_entry->max = (unsigned char)i32; + } else { + ShowWarning("pc_read_skill_tree: missing MaxLevel for skill %d (%s) class '%s'. Skipping.\n", skill_id, sk_name, job_name); + continue; + } + if (libconfig->setting_lookup_int(sk, "MinJobLevel", &i32) && i32 > 0) { + tree_entry->joblv = (unsigned char)i32; + } else if (!tree_entry->inherited) { + tree_entry->joblv = 0; + } + } else { + tree_entry->max = (unsigned char)libconfig->setting_get_int(sk); + if (!tree_entry->inherited) + tree_entry->joblv = 0; + } + if (!tree_entry->inherited) { + tree_entry->id = skill_id; + tree_entry->idx = skill->get_index(skill_id); + VECTOR_INIT(tree_entry->need); } + if (config_setting_is_group(sk)) { + int k = 0; + // Foreach requirement + while ((rsk = libconfig->setting_get_elem(sk, k++)) != NULL) { + const char *rsk_name = config_setting_name(rsk); + int rsk_id = skill->name2id(rsk_name); + struct skill_tree_requirement *req = NULL; + int l; + + if (rsk_id == 0) { + if (strcmp(rsk_name, "MaxLevel") != 0 && strcmp(rsk_name, "MinJobLevel") != 0) + ShowWarning("pc_read_skill_tree: unknown requirement '%s' for '%s' in '%s'\n", rsk_name, sk_name, job_name); + continue; + } + ARR_FIND(0, VECTOR_LENGTH(tree_entry->need), l, VECTOR_INDEX(tree_entry->need, l).id == rsk_id); + if (l == VECTOR_LENGTH(tree_entry->need)) { + VECTOR_ENSURE(tree_entry->need, 1, 1); + VECTOR_PUSHZEROED(tree_entry->need); + req = &VECTOR_LAST(tree_entry->need); + req->id = rsk_id; + req->idx = skill->get_index(rsk_id); + } else { + req = &VECTOR_INDEX(tree_entry->need, l); + } + req->lv = (unsigned char)libconfig->setting_get_int(rsk); + } + } } } } @@ -10722,10 +10822,28 @@ void pc_read_skill_tree(void) { /* lets update all players skill tree */ iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) clif->skillinfoblock(sd); mapit->free(iter); } + +/** + * Clears the skill tree and frees any allocated memory. + */ +void pc_clear_skill_tree(void) +{ + int i; + for (i = 0; i < CLASS_COUNT; i++) { + int j; + for (j = 0; j < MAX_SKILL_TREE; j++) { + if (pc->skill_tree[i][j].id == 0) + continue; + VECTOR_CLEAR(pc->skill_tree[i][j].need); + } + } + memset(pc->skill_tree, 0, sizeof(pc->skill_tree)); +} + bool pc_readdb_levelpenalty(char* fields[], int columns, int current) { #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) int type, race, diff; @@ -10842,7 +10960,7 @@ int pc_readdb(void) { ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,map->db_path,"exp.txt"); count = 0; // Reset and read skilltree - memset(pc->skill_tree,0,sizeof(pc->skill_tree)); + pc->clear_skill_tree(); pc->read_skill_tree(); #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) sv->readdb(map->db_path, "re/level_penalty.txt", ',', 4, 4, -1, pc->readdb_levelpenalty); @@ -11087,7 +11205,7 @@ int pc_global_expiration_timer(int tid, int64 tick, int id, intptr_t data) { struct map_session_data* sd; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( sd->expiration_time ) pc->expire_check(sd); } @@ -11133,7 +11251,7 @@ void pc_autotrade_load(void) SQL->GetData(map->mysql_handle, 2, &data, NULL); sex = atoi(data); SQL->GetData(map->mysql_handle, 3, &data, NULL); safestrncpy(title, data, sizeof(title)); - CREATE(sd, TBL_PC, 1); + CREATE(sd, struct map_session_data, 1); pc->setnewpc(sd, account_id, char_id, 0, 0, sex, 0); @@ -11279,7 +11397,7 @@ void pc_autotrade_prepare(struct map_session_data *sd) { map->quit(sd); chrif->auth_delete(account_id, char_id, ST_LOGOUT); - CREATE(sd, TBL_PC, 1); + CREATE(sd, struct map_session_data, 1); pc->setnewpc(sd, account_id, char_id, 0, 0, sex, 0); @@ -11367,6 +11485,8 @@ void do_final_pc(void) { pcg->final(); + pc->clear_skill_tree(); + ers_destroy(pc->sc_display_ers); ers_destroy(pc->num_reg_ers); ers_destroy(pc->str_reg_ers); @@ -11693,6 +11813,7 @@ void pc_defaults(void) { pc->autosave = pc_autosave; pc->follow_timer = pc_follow_timer; pc->read_skill_tree = pc_read_skill_tree; + pc->clear_skill_tree = pc_clear_skill_tree; pc->isUseitem = pc_isUseitem; pc->show_steal = pc_show_steal; pc->checkcombo = pc_checkcombo; diff --git a/src/map/pc.h b/src/map/pc.h index 97f339bf6..23b46a631 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -41,7 +41,6 @@ * Defines **/ #define MAX_PC_BONUS 10 -#define MAX_PC_SKILL_REQUIRE 5 #define MAX_PC_FEELHATE 3 #define MAX_PC_DEVOTION 5 ///< Max amount of devotion targets #define PVP_CALCRANK_INTERVAL 1000 ///< PVP calculation interval @@ -714,17 +713,19 @@ END_ZEROED_BLOCK; #define pc_can_give_items(sd) ( pc_has_permission((sd),PC_PERM_TRADE) ) #define pc_can_give_bound_items(sd) ( pc_has_permission((sd),PC_PERM_TRADE_BOUND) ) +struct skill_tree_requirement { + short id; + unsigned short idx; + unsigned char lv; +}; + struct skill_tree_entry { short id; unsigned short idx; unsigned char max; unsigned char joblv; short inherited; - struct { - short id; - unsigned short idx; - unsigned char lv; - } need[MAX_PC_SKILL_REQUIRE]; + VECTOR_DECL(struct skill_tree_requirement) need; }; // Celest struct sg_data { @@ -1052,6 +1053,7 @@ END_ZEROED_BLOCK; /* End */ int (*autosave) (int tid, int64 tick, int id, intptr_t data); int (*follow_timer) (int tid, int64 tick, int id, intptr_t data); void (*read_skill_tree) (void); + void (*clear_skill_tree) (void); int (*isUseitem) (struct map_session_data *sd,int n); int (*show_steal) (struct block_list *bl,va_list ap); int (*checkcombo) (struct map_session_data *sd, struct item_data *data ); diff --git a/src/map/pc_groups.c b/src/map/pc_groups.c index 675a8b62e..bd46b9616 100644 --- a/src/map/pc_groups.c +++ b/src/map/pc_groups.c @@ -508,7 +508,7 @@ void pc_groups_reload(void) { /* refresh online users permissions */ iter = mapit_getallusers(); - for (sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter)) { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if (pc->set_group(sd, sd->group_id) != 0) { ShowWarning("pc_groups_reload: %s (AID:%d) has unknown group id (%d)! kicking...\n", sd->status.name, sd->status.account_id, pc_get_group_id(sd)); diff --git a/src/map/pet.c b/src/map/pet.c index 18a5ba915..db8d0d1f1 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -359,9 +359,10 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) sd->status.pet_id = 0; return 1; } - sd->pd = pd = (struct pet_data *)aCalloc(1,sizeof(struct pet_data)); + CREATE(pd, struct pet_data, 1); pd->bl.type = BL_PET; pd->bl.id = npc->get_new_npc_id(); + sd->pd = pd; pd->msd = sd; pd->petDB = &pet->db[i]; @@ -505,13 +506,15 @@ int pet_catch_process1(struct map_session_data *sd,int target_class) } int pet_catch_process2(struct map_session_data* sd, int target_id) { - struct mob_data* md; + struct mob_data *md = NULL; + struct block_list *bl = NULL; int i = 0, pet_catch_rate = 0; nullpo_retr(1, sd); - md = (struct mob_data*)map->id2bl(target_id); - if(!md || md->bl.type != BL_MOB || md->bl.prev == NULL) { + bl = map->id2bl(target_id); // TODO: Why does this not use map->id2md? + md = BL_CAST(BL_MOB, bl); + if (md == NULL || md->bl.prev == NULL) { // Invalid inputs/state, abort capture. clif->pet_roulette(sd,0); sd->catch_target_class = -1; @@ -937,7 +940,7 @@ int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick pet->unlocktarget(pd); return 0; } else{ - struct flooritem_data *fitem = (struct flooritem_data *)target; + struct flooritem_data *fitem = BL_UCAST(BL_ITEM, target); if(pd->loot->count < pd->loot->max){ memcpy(&pd->loot->item[pd->loot->count++],&fitem->item_data,sizeof(pd->loot->item[0])); pd->loot->weight += itemdb_weight(fitem->item_data.nameid)*fitem->item_data.amount; @@ -964,15 +967,16 @@ int pet_ai_hard(int tid, int64 tick, int id, intptr_t data) { return 0; } -int pet_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap) +int pet_ai_sub_hard_lootsearch(struct block_list *bl, va_list ap) { - struct pet_data* pd; - struct flooritem_data *fitem = (struct flooritem_data *)bl; - struct block_list **target; - int sd_charid =0; - - pd=va_arg(ap,struct pet_data *); - target=va_arg(ap,struct block_list**); + struct pet_data *pd = va_arg(ap,struct pet_data *); + struct block_list **target = va_arg(ap,struct block_list**); + struct flooritem_data *fitem = NULL; + int sd_charid = 0; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_ITEM); + fitem = BL_UCAST(BL_ITEM, bl); sd_charid = fitem->first_get_charid; diff --git a/src/map/quest.c b/src/map/quest.c index 9a6200138..0dbea56f8 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -75,7 +75,7 @@ struct quest_db *quest_db(int quest_id) { * @param sd Player's data * @return 0 in case of success, nonzero otherwise (i.e. the player has no quests) */ -int quest_pc_login(TBL_PC *sd) +int quest_pc_login(struct map_session_data *sd) { #if PACKETVER < 20141022 int i; @@ -106,7 +106,8 @@ int quest_pc_login(TBL_PC *sd) * @param quest_id ID of the quest to add. * @return 0 in case of success, nonzero otherwise */ -int quest_add(TBL_PC *sd, int quest_id) { +int quest_add(struct map_session_data *sd, int quest_id) +{ int n; struct quest_db *qi = quest->db(quest_id); @@ -157,7 +158,8 @@ int quest_add(TBL_PC *sd, int quest_id) { * @param qid2 New quest to add * @return 0 in case of success, nonzero otherwise */ -int quest_change(TBL_PC *sd, int qid1, int qid2) { +int quest_change(struct map_session_data *sd, int qid1, int qid2) +{ int i; struct quest_db *qi = quest->db(qid2); @@ -207,7 +209,8 @@ int quest_change(TBL_PC *sd, int qid1, int qid2) { * @param quest_id ID of the quest to remove * @return 0 in case of success, nonzero otherwise */ -int quest_delete(TBL_PC *sd, int quest_id) { +int quest_delete(struct map_session_data *sd, int quest_id) +{ int i; //Search for quest @@ -249,15 +252,15 @@ int quest_delete(TBL_PC *sd, int quest_id) { * int Party ID * int Mob ID */ -int quest_update_objective_sub(struct block_list *bl, va_list ap) { - struct map_session_data *sd; - int mob_id, party_id; +int quest_update_objective_sub(struct block_list *bl, va_list ap) +{ + struct map_session_data *sd = NULL; + int party_id = va_arg(ap, int); + int mob_id = va_arg(ap, int); nullpo_ret(bl); - nullpo_ret(sd = (struct map_session_data *)bl); - - party_id = va_arg(ap,int); - mob_id = va_arg(ap,int); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); if( !sd->avail_quests ) return 0; @@ -276,7 +279,7 @@ int quest_update_objective_sub(struct block_list *bl, va_list ap) { * @param sd Character's data * @param mob_id Monster ID */ -void quest_update_objective(TBL_PC *sd, int mob_id) +void quest_update_objective(struct map_session_data *sd, int mob_id) { int i,j; @@ -331,7 +334,8 @@ void quest_update_objective(TBL_PC *sd, int mob_id) * @param qs New quest state * @return 0 in case of success, nonzero otherwise */ -int quest_update_status(TBL_PC *sd, int quest_id, enum quest_state qs) { +int quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs) +{ int i; ARR_FIND(0, sd->avail_quests, i, sd->quest_log[i].quest_id == quest_id); @@ -380,7 +384,7 @@ int quest_update_status(TBL_PC *sd, int quest_id, enum quest_state qs) { * 1 if the quest's timeout has expired * 0 otherwise */ -int quest_check(TBL_PC *sd, int quest_id, enum quest_check_type type) +int quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type) { int i; diff --git a/src/map/quest.h b/src/map/quest.h index 567f0692a..8e2cb4e23 100644 --- a/src/map/quest.h +++ b/src/map/quest.h @@ -21,9 +21,12 @@ #ifndef MAP_QUEST_H #define MAP_QUEST_H -#include "map/map.h" // TBL_PC #include "common/hercules.h" #include "common/conf.h" +#include "common/mmo.h" // enum quest_state + +struct block_list; +struct map_session_data; #define MAX_QUEST_DB (60355+1) // Highest quest ID + 1 @@ -64,14 +67,14 @@ struct quest_interface { void (*reload) (void); /* */ struct quest_db *(*db) (int quest_id); - int (*pc_login) (TBL_PC *sd); - int (*add) (TBL_PC *sd, int quest_id); - int (*change) (TBL_PC *sd, int qid1, int qid2); - int (*delete) (TBL_PC *sd, int quest_id); + int (*pc_login) (struct map_session_data *sd); + int (*add) (struct map_session_data *sd, int quest_id); + int (*change) (struct map_session_data *sd, int qid1, int qid2); + int (*delete) (struct map_session_data *sd, int quest_id); int (*update_objective_sub) (struct block_list *bl, va_list ap); - void (*update_objective) (TBL_PC *sd, int mob_id); - int (*update_status) (TBL_PC *sd, int quest_id, enum quest_state qs); - int (*check) (TBL_PC *sd, int quest_id, enum quest_check_type type); + void (*update_objective) (struct map_session_data *sd, int mob_id); + int (*update_status) (struct map_session_data *sd, int quest_id, enum quest_state qs); + int (*check) (struct map_session_data *sd, int quest_id, enum quest_check_type type); void (*clear) (void); int (*read_db) (void); struct quest_db *(*read_db_sub) (config_setting_t *cs, int n, const char *source); diff --git a/src/map/script.c b/src/map/script.c index 591bca68f..befb85304 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -226,10 +226,13 @@ void script_reportsrc(struct script_state *st) { switch( bl->type ) { case BL_NPC: - if( bl->m >= 0 ) - ShowDebug("Source (NPC): %s at %s (%d,%d)\n", ((struct npc_data *)bl)->name, map->list[bl->m].name, bl->x, bl->y); + { + const struct npc_data *nd = BL_UCCAST(BL_NPC, bl); + if (bl->m >= 0) + ShowDebug("Source (NPC): %s at %s (%d,%d)\n", nd->name, map->list[bl->m].name, bl->x, bl->y); else - ShowDebug("Source (NPC): %s (invisible/not on a map)\n", ((struct npc_data *)bl)->name); + ShowDebug("Source (NPC): %s (invisible/not on a map)\n", nd->name); + } break; default: if( bl->m >= 0 ) @@ -2633,8 +2636,9 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o /// Returns the player attached to this script, identified by the rid. /// If there is no player attached, the script is terminated. -TBL_PC *script_rid2sd(struct script_state *st) { - TBL_PC *sd; +struct map_session_data *script_rid2sd(struct script_state *st) +{ + struct map_session_data *sd; if( !( sd = map->id2sd(st->rid) ) ) { ShowError("script_rid2sd: fatal error ! player not attached!\n"); script->reportfunc(st); @@ -2644,8 +2648,9 @@ TBL_PC *script_rid2sd(struct script_state *st) { return sd; } -TBL_PC *script_id2sd(struct script_state *st, int account_id) { - TBL_PC *sd; +struct map_session_data *script_id2sd(struct script_state *st, int account_id) +{ + struct map_session_data *sd; if ((sd = map->id2sd(account_id)) == NULL) { ShowWarning("script_id2sd: Player with account ID '%d' not found!\n", account_id); script->reportfunc(st); @@ -2654,8 +2659,9 @@ TBL_PC *script_id2sd(struct script_state *st, int account_id) { return sd; } -TBL_PC *script_charid2sd(struct script_state *st, int char_id) { - TBL_PC *sd; +struct map_session_data *script_charid2sd(struct script_state *st, int char_id) +{ + struct map_session_data *sd; if ((sd = map->charid2sd(char_id)) == NULL) { ShowWarning("script_charid2sd: Player with char ID '%d' not found!\n", char_id); script->reportfunc(st); @@ -2664,8 +2670,9 @@ TBL_PC *script_charid2sd(struct script_state *st, int char_id) { return sd; } -TBL_PC *script_nick2sd(struct script_state *st, const char *name) { - TBL_PC *sd; +struct map_session_data *script_nick2sd(struct script_state *st, const char *name) +{ + struct map_session_data *sd; if ((sd = map->nick2sd(name)) == NULL) { ShowWarning("script_nick2sd: Player name '%s' not found!\n", name); script->reportfunc(st); @@ -2717,7 +2724,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) { const char* name; char prefix; char postfix; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; if( !data_isreference(data) ) return data;// not a variable/constant @@ -3146,7 +3153,8 @@ void set_reg_instance_num(struct script_state* st, int64 num, const char* name, * * TODO: return values are screwed up, have been for some time (reaad: years), e.g. some functions return 1 failure and success. *------------------------------------------*/ -int set_reg(struct script_state* st, TBL_PC* sd, int64 num, const char* name, const void* value, struct reg_db *ref) { +int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref) +{ char prefix = name[0]; if (strlen(name) > SCRIPT_VARNAME_LENGTH) { @@ -3231,11 +3239,13 @@ int set_reg(struct script_state* st, TBL_PC* sd, int64 num, const char* name, co } } -int set_var(TBL_PC* sd, char* name, void* val) { +int set_var(struct map_session_data *sd, char *name, void *val) +{ return script->set_reg(NULL, sd, reference_uid(script->add_str(name),0), name, val, NULL); } -void setd_sub(struct script_state *st, TBL_PC *sd, const char *varname, int elem, void *value, struct reg_db *ref) { +void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, void *value, struct reg_db *ref) +{ script->set_reg(st, sd, reference_uid(script->add_str(varname),elem), varname, value, ref); } @@ -4156,7 +4166,7 @@ void script_stop_instances(struct script_code *code) { int run_script_timer(int tid, int64 tick, int id, intptr_t data) { struct script_state *st = idb_get(script->st_db,(int)data); if( st ) { - TBL_PC *sd = map->id2sd(st->rid); + struct map_session_data *sd = map->id2sd(st->rid); if((sd && sd->status.char_id != id) || (st->rid && !sd)) { //Character mismatch. Cancel execution. st->rid = 0; @@ -4241,7 +4251,7 @@ void script_attach_state(struct script_state* st) { void run_script_main(struct script_state *st) { int cmdcount = script->config.check_cmdcount; int gotocount = script->config.check_gotocount; - TBL_PC *sd; + struct map_session_data *sd; struct script_stack *stack = st->stack; struct npc_data *nd; @@ -5158,8 +5168,9 @@ const char *script_getfuncname(struct script_state *st) { /// If a dialog doesn't exist yet, one is created. /// /// mes "<message>"; -BUILDIN(mes) { - TBL_PC* sd = script->rid2sd(st); +BUILDIN(mes) +{ + struct map_session_data *sd = script->rid2sd(st); if( sd == NULL ) return true; @@ -5183,10 +5194,8 @@ BUILDIN(mes) { /// next; BUILDIN(next) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; #ifdef SECURE_NPCTIMEOUT sd->npc_idle_type = NPCT_WAIT; @@ -5200,11 +5209,10 @@ BUILDIN(next) /// The dialog is closed when the button is pressed. /// /// close; -BUILDIN(close) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) +BUILDIN(close) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; st->state = sd->state.dialog == 1 ? CLOSE : END; @@ -5216,11 +5224,10 @@ BUILDIN(close) { /// The dialog is closed and the script continues when the button is pressed. /// /// close2; -BUILDIN(close2) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) +BUILDIN(close2) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if( sd->state.dialog == 1 ) @@ -5290,10 +5297,8 @@ BUILDIN(menu) { int i; const char* text; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; #ifdef SECURE_NPCTIMEOUT @@ -5414,10 +5419,8 @@ BUILDIN(select) { int i; const char* text; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; #ifdef SECURE_NPCTIMEOUT @@ -5491,10 +5494,8 @@ BUILDIN(prompt) { int i; const char *text; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; #ifdef SECURE_NPCTIMEOUT @@ -5821,10 +5822,8 @@ BUILDIN(warp) int x,y; int warp_clean = 1; const char* str; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; str = script_getstr(st,2); @@ -5853,10 +5852,15 @@ BUILDIN(warp) /*========================================== * Warp a specified area *------------------------------------------*/ -int buildin_areawarp_sub(struct block_list *bl,va_list ap) +int buildin_areawarp_sub(struct block_list *bl, va_list ap) { int x2,y2,x3,y3; unsigned int index; + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); index = va_arg(ap,unsigned int); x2 = va_arg(ap,int); @@ -5864,9 +5868,9 @@ int buildin_areawarp_sub(struct block_list *bl,va_list ap) x3 = va_arg(ap,int); y3 = va_arg(ap,int); - if(index == 0) - pc->randomwarp((TBL_PC *)bl,CLR_TELEPORT); - else if(x3 && y3) { + if (index == 0) { + pc->randomwarp(sd, CLR_TELEPORT); + } else if (x3 != 0 && y3 != 0) { int max, tx, ty, j = 0; // choose a suitable max number of attempts @@ -5880,10 +5884,10 @@ int buildin_areawarp_sub(struct block_list *bl,va_list ap) j++; } while (map->getcell(index, bl, tx, ty, CELL_CHKNOPASS) && j < max); - pc->setpos((TBL_PC *)bl,index,tx,ty,CLR_OUTSIGHT); + pc->setpos(sd, index, tx, ty, CLR_OUTSIGHT); + } else { + pc->setpos(sd, index, x2, y2, CLR_OUTSIGHT); } - else - pc->setpos((TBL_PC *)bl,index,x2,y2,CLR_OUTSIGHT); return 0; } BUILDIN(areawarp) @@ -5928,14 +5932,20 @@ BUILDIN(areawarp) /*========================================== * areapercentheal <map>,<x1>,<y1>,<x2>,<y2>,<hp>,<sp> *------------------------------------------*/ -int buildin_areapercentheal_sub(struct block_list *bl,va_list ap) +int buildin_areapercentheal_sub(struct block_list *bl, va_list ap) { - int hp, sp; - hp = va_arg(ap, int); - sp = va_arg(ap, int); - pc->percentheal((TBL_PC *)bl,hp,sp); + int hp = va_arg(ap, int); + int sp = va_arg(ap, int); + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + + pc->percentheal(sd, hp, sp); return 0; } + BUILDIN(areapercentheal) { int hp,sp,m; const char *mapname; @@ -5965,7 +5975,7 @@ BUILDIN(areapercentheal) { BUILDIN(warpchar) { int x,y,a; const char *str; - TBL_PC *sd; + struct map_session_data *sd; str=script_getstr(st,2); x=script_getnum(st,3); @@ -5993,8 +6003,8 @@ BUILDIN(warpchar) { *------------------------------------------*/ BUILDIN(warpparty) { - TBL_PC *sd = NULL; - TBL_PC *pl_sd; + struct map_session_data *sd = NULL; + struct map_session_data *pl_sd; struct party_data* p; int type; int map_index; @@ -6082,8 +6092,8 @@ BUILDIN(warpparty) *------------------------------------------*/ BUILDIN(warpguild) { - TBL_PC *sd = NULL; - TBL_PC *pl_sd; + struct map_session_data *sd = NULL; + struct map_session_data *pl_sd; struct guild* g; struct s_mapiterator* iter; int type; @@ -6108,8 +6118,7 @@ BUILDIN(warpguild) } iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) - { + for (pl_sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( pl_sd->status.guild_id != gid ) continue; @@ -6140,12 +6149,12 @@ BUILDIN(warpguild) /*========================================== * Force Heal a player (hp and sp) *------------------------------------------*/ -BUILDIN(heal) { - TBL_PC *sd; +BUILDIN(heal) +{ int hp,sp; - - sd = script->rid2sd(st); - if (!sd) return true; + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) + return true; hp=script_getnum(st,2); sp=script_getnum(st,3); @@ -6157,7 +6166,7 @@ BUILDIN(heal) { *------------------------------------------*/ BUILDIN(itemheal) { - TBL_PC *sd; + struct map_session_data *sd; int hp,sp; hp=script_getnum(st,2); @@ -6180,7 +6189,7 @@ BUILDIN(itemheal) BUILDIN(percentheal) { int hp,sp; - TBL_PC* sd; + struct map_session_data *sd; hp=script_getnum(st,2); sp=script_getnum(st,3); @@ -6213,12 +6222,9 @@ BUILDIN(jobchange) if( script_hasdata(st,3) ) upper=script_getnum(st,3); - if (pc->db_checkid(job)) - { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + if (pc->db_checkid(job)) { + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; pc->jobchange(sd, job, upper); @@ -6246,15 +6252,13 @@ BUILDIN(jobname) /// input(<var>{,<min>{,<max>}}) -> <int> BUILDIN(input) { - TBL_PC* sd; struct script_data* data; int64 uid; const char* name; int min; int max; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; data = script_getdata(st,2); @@ -6308,8 +6312,9 @@ BUILDIN(copyarray); /// The value is converted to the type of the variable. /// /// set(<variable>,<value>) -> <variable> -BUILDIN(__setr) { - TBL_PC* sd = NULL; +BUILDIN(__setr) +{ + struct map_session_data *sd = NULL; struct script_data* data; //struct script_data* datavalue; int64 num; @@ -6402,7 +6407,7 @@ BUILDIN(setarray) uint32 end; int32 id; int32 i; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; data = script_getdata(st, 2); if( !data_isreference(data) || reference_toconstant(data) ) @@ -6453,7 +6458,7 @@ BUILDIN(cleararray) uint32 end; int32 id; void* v; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; data = script_getdata(st, 2); if( !data_isreference(data) ) @@ -6506,7 +6511,7 @@ BUILDIN(copyarray) void* v; int32 i; uint32 count; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; data1 = script_getdata(st, 2); data2 = script_getdata(st, 3); @@ -6608,7 +6613,7 @@ BUILDIN(deletearray) const char* name; unsigned int start, end, i; int id; - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; struct script_array *sa = NULL; struct reg_db *src = NULL; void *value; @@ -6757,7 +6762,7 @@ BUILDIN(getelementofarray) BUILDIN(setlook) { int type,val; - TBL_PC* sd; + struct map_session_data *sd; type=script_getnum(st,2); val=script_getnum(st,3); @@ -6774,7 +6779,7 @@ BUILDIN(setlook) BUILDIN(changelook) { // As setlook but only client side int type,val; - TBL_PC* sd; + struct map_session_data *sd; type=script_getnum(st,2); val=script_getnum(st,3); @@ -6793,10 +6798,8 @@ BUILDIN(changelook) *------------------------------------------*/ BUILDIN(cutin) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; clif->cutin(sd,script_getstr(st,2),script_getnum(st,3)); @@ -6809,7 +6812,7 @@ BUILDIN(cutin) BUILDIN(viewpoint) { int type,x,y,id,color; - TBL_PC* sd; + struct map_session_data *sd; type=script_getnum(st,2); x=script_getnum(st,3); @@ -6834,8 +6837,8 @@ BUILDIN(countitem) { int count = 0; struct item_data* id = NULL; - TBL_PC* sd = script->rid2sd(st); - if( !sd ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if( script_isstringtype(st, 2) ) { @@ -6872,8 +6875,8 @@ BUILDIN(countitem2) { int i; struct item_data* id = NULL; - TBL_PC* sd = script->rid2sd(st); - if( !sd ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if( script_isstringtype(st, 2) ) { @@ -7017,8 +7020,7 @@ BUILDIN(checkweight2) int32 idx_it, idx_nb; int nb_it, nb_nb; //array size - TBL_PC *sd = script->rid2sd(st); - + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -7110,7 +7112,7 @@ BUILDIN(checkweight2) BUILDIN(getitem) { int nameid,amount,get_count,i,flag = 0, offset = 0; struct item it; - TBL_PC *sd; + struct map_session_data *sd; struct item_data *item_data; if( script_isstringtype(st, 2) ) { @@ -7196,7 +7198,7 @@ BUILDIN(getitem2) { int nameid,amount,flag = 0, offset = 0; int iden,ref,attr,c1,c2,c3,c4, bound = 0; - TBL_PC *sd; + struct map_session_data *sd; if( !strcmp(script->getfuncname(st),"getitembound2") ) { bound = script_getnum(st,11); @@ -7253,7 +7255,7 @@ BUILDIN(getitem2) if (item_data == NULL) return -1; if(item_data->type==IT_WEAPON || item_data->type==IT_ARMOR) { - if(ref > MAX_REFINE) ref = MAX_REFINE; + ref = cap_value(ref, 0, MAX_REFINE); } else if(item_data->type==IT_PETEGG) { iden = 1; @@ -7353,7 +7355,7 @@ BUILDIN(rentitem) { BUILDIN(getnameditem) { int nameid; struct item item_tmp; - TBL_PC *sd, *tsd; + struct map_session_data *sd, *tsd; sd = script->rid2sd(st); if (sd == NULL) // Player not attached! @@ -7466,9 +7468,9 @@ BUILDIN(makeitem) y = script_getnum(st,6); if(strcmp(mapname,"this")==0) { - TBL_PC *sd; - sd = script->rid2sd(st); - if (!sd) return true; //Failed... + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) + return true; //Failed... m=sd->bl.m; } else m=map->mapname2mapid(mapname); @@ -7621,8 +7623,9 @@ bool buildin_delitem_search(struct map_session_data* sd, struct item* it, bool e /// /// delitem <item id>,<amount>{,<account id>} /// delitem "<item name>",<amount>{,<account id>} -BUILDIN(delitem) { - TBL_PC *sd; +BUILDIN(delitem) +{ + struct map_session_data *sd; struct item it; if (script_hasdata(st,4)) { @@ -7677,8 +7680,9 @@ BUILDIN(delitem) { /// /// delitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>} /// delitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>} -BUILDIN(delitem2) { - TBL_PC *sd; +BUILDIN(delitem2) +{ + struct map_session_data *sd; struct item it; if (script_hasdata(st,11)) { @@ -7741,18 +7745,16 @@ BUILDIN(delitem2) { *------------------------------------------*/ BUILDIN(enableitemuse) { - TBL_PC *sd; - sd=script->rid2sd(st); - if (sd) + struct map_session_data *sd = script->rid2sd(st); + if (sd != NULL) st->npc_item_flag = sd->npc_item_flag = 1; return true; } BUILDIN(disableitemuse) { - TBL_PC *sd; - sd=script->rid2sd(st); - if (sd) + struct map_session_data *sd = script->rid2sd(st); + if (sd != NULL) st->npc_item_flag = sd->npc_item_flag = 0; return true; } @@ -7763,7 +7765,7 @@ BUILDIN(disableitemuse) *------------------------------------------*/ BUILDIN(readparam) { int type; - TBL_PC *sd; + struct map_session_data *sd; type=script_getnum(st,2); if (script_hasdata(st,3)) @@ -7792,7 +7794,7 @@ BUILDIN(readparam) { *------------------------------------------*/ BUILDIN(getcharid) { int num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); if( script_hasdata(st,3) ) @@ -8066,13 +8068,11 @@ BUILDIN(getguildmember) *------------------------------------------*/ BUILDIN(strcharinfo) { - TBL_PC *sd; int num; struct guild* g; struct party_data* p; - - sd=script->rid2sd(st); - if (!sd) //Avoid crashing.... + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) //Avoid crashing.... return true; num=script_getnum(st,2); @@ -8115,13 +8115,12 @@ BUILDIN(strcharinfo) * 3 : ::str * 4 : map name *------------------------------------------*/ -BUILDIN(strnpcinfo) { - TBL_NPC* nd; +BUILDIN(strnpcinfo) +{ int num; char *buf,*name=NULL; - - nd = map->id2nd(st->oid); - if (!nd) { + struct npc_data *nd = map->id2nd(st->oid); + if (nd == NULL) { script_pushconststr(st, ""); return true; } @@ -8166,7 +8165,7 @@ BUILDIN(strnpcinfo) { BUILDIN(charid2rid) { int cid = script_getnum(st, 2); - TBL_PC *sd = map->charid2sd(cid); + struct map_session_data *sd = map->charid2sd(cid); if (sd == NULL) { script_pushint(st, 0); @@ -8183,11 +8182,9 @@ BUILDIN(charid2rid) BUILDIN(getequipid) { int i, num; - TBL_PC* sd; struct item_data* item; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; num = script_getnum(st,2) - 1; @@ -8221,11 +8218,9 @@ BUILDIN(getequipid) BUILDIN(getequipname) { int i, num; - TBL_PC* sd; struct item_data* item; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; num = script_getnum(st,2) - 1; @@ -8258,10 +8253,8 @@ BUILDIN(getequipname) BUILDIN(getbrokenid) { int i,num,id=0,brokencounter=0; - TBL_PC *sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; num=script_getnum(st,2); @@ -8286,10 +8279,7 @@ BUILDIN(getbrokenid) BUILDIN(getbrokencount) { int i, counter = 0; - TBL_PC *sd; - - sd = script->rid2sd(st); - + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -8310,10 +8300,8 @@ BUILDIN(repair) { int i,num; int repaircounter=0; - TBL_PC *sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; num=script_getnum(st,2); @@ -8339,10 +8327,8 @@ BUILDIN(repair) BUILDIN(repairall) { int i, repaircounter = 0; - TBL_PC *sd; - - sd = script->rid2sd(st); - if(sd == NULL) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; for(i = 0; i < MAX_INVENTORY; i++) @@ -8370,7 +8356,7 @@ BUILDIN(repairall) BUILDIN(getequipisequiped) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8397,7 +8383,7 @@ BUILDIN(getequipisequiped) BUILDIN(getequipisenableref) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8423,7 +8409,7 @@ BUILDIN(getequipisenableref) BUILDIN(getequipisidentify) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8449,7 +8435,7 @@ BUILDIN(getequipisidentify) BUILDIN(getequiprefinerycnt) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8476,7 +8462,7 @@ BUILDIN(getequiprefinerycnt) BUILDIN(getequipweaponlv) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8501,7 +8487,7 @@ BUILDIN(getequipweaponlv) *------------------------------------------*/ BUILDIN(getequippercentrefinery) { int i = -1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8524,7 +8510,7 @@ BUILDIN(getequippercentrefinery) { BUILDIN(successrefitem) { int i = -1 , num, up = 1; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8585,7 +8571,7 @@ BUILDIN(successrefitem) BUILDIN(failedrefitem) { int i=-1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8613,7 +8599,7 @@ BUILDIN(failedrefitem) BUILDIN(downrefitem) { int i = -1, num, down = 1; - TBL_PC *sd; + struct map_session_data *sd; sd = script->rid2sd(st); if (sd == NULL) @@ -8654,7 +8640,7 @@ BUILDIN(downrefitem) BUILDIN(delequip) { int i=-1,num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -8681,7 +8667,7 @@ BUILDIN(delequip) *------------------------------------------*/ BUILDIN(statusup) { int type; - TBL_PC *sd; + struct map_session_data *sd; type=script_getnum(st,2); sd = script->rid2sd(st); @@ -8698,7 +8684,7 @@ BUILDIN(statusup) { BUILDIN(statusup2) { int type,val; - TBL_PC *sd; + struct map_session_data *sd; type=script_getnum(st,2); val=script_getnum(st,3); @@ -8725,10 +8711,8 @@ BUILDIN(bonus) { int val3 = 0; int val4 = 0; int val5 = 0; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; // no player attached type = script_getnum(st,2); @@ -8806,11 +8790,9 @@ BUILDIN(autobonus) { unsigned int dur; short rate; short atk_type = 0; - TBL_PC* sd; const char *bonus_script, *other_script = NULL; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; // no player attached if( sd->state.autobonus&sd->status.inventory[status->current_equip_item_index].equip ) @@ -8842,11 +8824,9 @@ BUILDIN(autobonus2) { unsigned int dur; short rate; short atk_type = 0; - TBL_PC* sd; const char *bonus_script, *other_script = NULL; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; // no player attached if( sd->state.autobonus&sd->status.inventory[status->current_equip_item_index].equip ) @@ -8877,11 +8857,9 @@ BUILDIN(autobonus2) { BUILDIN(autobonus3) { unsigned int dur; short rate,atk_type; - TBL_PC* sd; const char *bonus_script, *other_script = NULL; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; // no player attached if( sd->state.autobonus&sd->status.inventory[status->current_equip_item_index].equip ) @@ -8922,10 +8900,8 @@ BUILDIN(skill) { int id; int level; int flag = SKILL_GRANT_TEMPORARY; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source id = ( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); @@ -8950,10 +8926,8 @@ BUILDIN(addtoskill) { int id; int level; int flag = SKILL_GRANT_TEMPSTACK; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source id = ( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); @@ -8973,11 +8947,9 @@ BUILDIN(guildskill) { int skill_id, id, max_points; int level; - TBL_PC* sd; struct guild *gd; struct guild_skill gd_skill; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; // no player attached, report source @@ -9007,12 +8979,11 @@ BUILDIN(guildskill) { /// /// getskilllv(<skill id>) -> <level> /// getskilllv("<skill name>") -> <level> -BUILDIN(getskilllv) { +BUILDIN(getskilllv) +{ int id; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source id = ( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); @@ -9057,10 +9028,8 @@ BUILDIN(basicskillcheck) /// getgmlevel() -> <level> BUILDIN(getgmlevel) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source script_pushint(st, pc_get_group_level(sd)); @@ -9097,9 +9066,7 @@ BUILDIN(setgroupid) { /// getgroupid() -> <int> BUILDIN(getgroupid) { - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; // no player attached, report source script_pushint(st, pc_get_group_id(sd)); @@ -9133,10 +9100,8 @@ BUILDIN(end) { BUILDIN(checkoption) { int option; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source option = script_getnum(st,2); @@ -9154,10 +9119,8 @@ BUILDIN(checkoption) BUILDIN(checkoption1) { int opt1; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source opt1 = script_getnum(st,2); @@ -9175,10 +9138,8 @@ BUILDIN(checkoption1) BUILDIN(checkoption2) { int opt2; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source opt2 = script_getnum(st,2); @@ -9201,10 +9162,8 @@ BUILDIN(setoption) { int option; int flag = 1; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source option = script_getnum(st,2); @@ -9234,10 +9193,8 @@ BUILDIN(setoption) /// @author Valaris BUILDIN(checkcart) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source if( pc_iscarton(sd) ) @@ -9262,10 +9219,8 @@ BUILDIN(checkcart) BUILDIN(setcart) { int type = 1; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source if( script_hasdata(st,2) ) @@ -9282,9 +9237,7 @@ BUILDIN(setcart) /// @author Valaris BUILDIN(checkfalcon) { - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true;// no player attached, report source @@ -9304,9 +9257,7 @@ BUILDIN(checkfalcon) BUILDIN(setfalcon) { bool flag = true; - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true;// no player attached, report source @@ -9342,9 +9293,7 @@ enum setmount_type { */ BUILDIN(checkmount) { - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; // no player attached, report source @@ -9388,9 +9337,7 @@ BUILDIN(checkmount) BUILDIN(setmount) { int flag = SETMOUNT_TYPE_AUTODETECT; - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true;// no player attached, report source @@ -9454,10 +9401,8 @@ BUILDIN(setmount) /// BUILDIN(checkwug) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source if( pc_iswug(sd) || pc_isridingwug(sd) ) @@ -9477,9 +9422,7 @@ BUILDIN(savepoint) { int y; short mapid; const char* str; - TBL_PC* sd; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; // no player attached, report source @@ -9595,23 +9538,21 @@ BUILDIN(gettimestr) /*========================================== * Open player storage *------------------------------------------*/ -BUILDIN(openstorage) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) +BUILDIN(openstorage) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; storage->open(sd); return true; } -BUILDIN(guildopenstorage) { - TBL_PC* sd; +BUILDIN(guildopenstorage) +{ int ret; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; ret = gstorage->open(sd); @@ -9624,13 +9565,12 @@ BUILDIN(guildopenstorage) { *------------------------------------------*/ /// itemskill <skill id>,<level>{,flag /// itemskill "<skill name>",<level>{,flag -BUILDIN(itemskill) { +BUILDIN(itemskill) +{ int id; int lv; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL || sd->ud.skilltimer != INVALID_TIMER ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || sd->ud.skilltimer != INVALID_TIMER) return true; id = ( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); @@ -9653,10 +9593,8 @@ BUILDIN(itemskill) { BUILDIN(produce) { int trigger; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; trigger=script_getnum(st,2); @@ -9669,10 +9607,8 @@ BUILDIN(produce) BUILDIN(cooking) { int trigger; - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; trigger=script_getnum(st,2); @@ -9684,7 +9620,7 @@ BUILDIN(cooking) *------------------------------------------*/ BUILDIN(makepet) { - TBL_PC* sd; + struct map_session_data *sd; int id,pet_id; id=script_getnum(st,2); @@ -9711,12 +9647,10 @@ BUILDIN(makepet) *------------------------------------------*/ BUILDIN(getexp) { - TBL_PC* sd; int base=0,job=0; double bonus; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; base=script_getnum(st,2); @@ -9739,11 +9673,9 @@ BUILDIN(getexp) *------------------------------------------*/ BUILDIN(guildgetexp) { - TBL_PC* sd; int exp; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; exp = script_getnum(st,2); @@ -9758,8 +9690,9 @@ BUILDIN(guildgetexp) /*========================================== * Changes the guild master of a guild [Skotlex] *------------------------------------------*/ -BUILDIN(guildchangegm) { - TBL_PC *sd; +BUILDIN(guildchangegm) +{ + struct map_session_data *sd; int guild_id; const char *name; @@ -9953,11 +9886,16 @@ BUILDIN(areamonster) { /*========================================== * KillMonster subcheck, verify if mob to kill ain't got an even to handle, could be force kill by allflag *------------------------------------------*/ -int buildin_killmonster_sub_strip(struct block_list *bl,va_list ap) -{ //same fix but with killmonster instead - stripping events from mobs. - TBL_MOB* md = (TBL_MOB*)bl; - char *event=va_arg(ap,char *); - int allflag=va_arg(ap,int); +int buildin_killmonster_sub_strip(struct block_list *bl, va_list ap) +{ + //same fix but with killmonster instead - stripping events from mobs. + struct mob_data *md = NULL; + char *event = va_arg(ap,char *); + int allflag = va_arg(ap,int); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); md->state.npc_killmonster = 1; @@ -9971,11 +9909,15 @@ int buildin_killmonster_sub_strip(struct block_list *bl,va_list ap) md->state.npc_killmonster = 0; return 0; } -int buildin_killmonster_sub(struct block_list *bl,va_list ap) +int buildin_killmonster_sub(struct block_list *bl, va_list ap) { - TBL_MOB* md = (TBL_MOB*)bl; - char *event=va_arg(ap,char *); - int allflag=va_arg(ap,int); + struct mob_data *md = NULL; + char *event = va_arg(ap,char *); + int allflag = va_arg(ap,int); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); if(!allflag) { if(strcmp(event,md->npc_event)==0) @@ -10058,7 +10000,7 @@ BUILDIN(killmonsterall) { * clone map, x, y, event, char_id, master_id, mode, flag, duration *------------------------------------------*/ BUILDIN(clone) { - TBL_PC *sd, *msd=NULL; + struct map_session_data *sd, *msd = NULL; int char_id,master_id=0,x,y, mode = 0, flag = 0, m; unsigned int duration = 0; const char *mapname, *event; @@ -10139,7 +10081,7 @@ BUILDIN(addtimer) { int tick = script_getnum(st,2); const char* event = script_getstr(st, 3); - TBL_PC* sd; + struct map_session_data *sd; script->check_event(st, event); sd = script->rid2sd(st); @@ -10157,7 +10099,7 @@ BUILDIN(addtimer) BUILDIN(deltimer) { const char *event; - TBL_PC* sd; + struct map_session_data *sd; event=script_getstr(st, 2); sd = script->rid2sd(st); @@ -10174,7 +10116,7 @@ BUILDIN(addtimercount) { const char *event; int tick; - TBL_PC* sd; + struct map_session_data *sd; event=script_getstr(st, 2); tick=script_getnum(st,3); @@ -10203,25 +10145,26 @@ BUILDIN(initnpctimer) struct script_data *data; data = script_getdata(st,2); script->get_val(st,data); // dereference if it's a variable - if( data_isstring(data) ) //NPC name + if (data_isstring(data)) { + //NPC name nd = npc->name2id(script->conv_str(st, data)); - else if( data_isint(data) ) { + } else if (data_isint(data)) { //Flag - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); flag = script->conv_num(st,data); } else { ShowError("initnpctimer: invalid argument type #1 (needs be int or string)).\n"); return false; } - } else - nd = (struct npc_data *)map->id2bl(st->oid); + } else { + nd = map->id2nd(st->oid); + } if( !nd ) return true; - if( flag ) //Attach - { - TBL_PC* sd = script->rid2sd(st); - if( sd == NULL ) + if (flag) { //Attach + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; nd->u.scr.rid = sd->bl.id; } @@ -10247,25 +10190,26 @@ BUILDIN(startnpctimer) struct script_data *data; data = script_getdata(st,2); script->get_val(st,data); // dereference if it's a variable - if( data_isstring(data) ) //NPC name + if (data_isstring(data)) { + //NPC name nd = npc->name2id(script->conv_str(st, data)); - else if( data_isint(data) ) { + } else if (data_isint(data)) { //Flag - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); flag = script->conv_num(st,data); } else { ShowError("initnpctimer: invalid argument type #1 (needs be int or string)).\n"); return false; } - } else - nd=(struct npc_data *)map->id2bl(st->oid); + } else { + nd = map->id2nd(st->oid); + } if( !nd ) return true; - if( flag ) //Attach - { - TBL_PC* sd = script->rid2sd(st); - if( sd == NULL ) + if (flag) { //Attach + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; nd->u.scr.rid = sd->bl.id; } @@ -10288,18 +10232,20 @@ BUILDIN(stopnpctimer) { struct script_data *data; data = script_getdata(st,2); script->get_val(st,data); // Dereference if it's a variable - if( data_isstring(data) ) //NPC name + if (data_isstring(data)) { + //NPC name nd = npc->name2id(script->conv_str(st, data)); - else if( data_isint(data) ) { + } else if (data_isint(data)) { //Flag - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); flag = script->conv_num(st,data); } else { ShowError("initnpctimer: invalid argument type #1 (needs be int or string)).\n"); return false; } - } else - nd=(struct npc_data *)map->id2bl(st->oid); + } else { + nd = map->id2nd(st->oid); + } if( !nd ) return true; @@ -10311,19 +10257,19 @@ BUILDIN(stopnpctimer) { } /*========================================== *------------------------------------------*/ -BUILDIN(getnpctimer) { +BUILDIN(getnpctimer) +{ struct npc_data *nd; - TBL_PC *sd; + struct map_session_data *sd; int type = script_getnum(st,2); int val = 0; if( script_hasdata(st,3) ) nd = npc->name2id(script_getstr(st,3)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( !nd || nd->bl.type != BL_NPC ) - { + if (nd == NULL) { script_pushint(st,0); ShowError("getnpctimer: Invalid NPC.\n"); return false; @@ -10358,9 +10304,9 @@ BUILDIN(setnpctimer) if( script_hasdata(st,3) ) nd = npc->name2id(script_getstr(st,3)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( !nd || nd->bl.type != BL_NPC ) { + if (nd == NULL) { script_pushint(st,1); ShowError("setnpctimer: Invalid NPC.\n"); return false; @@ -10374,12 +10320,12 @@ BUILDIN(setnpctimer) /*========================================== * attaches the player rid to the timer [Celest] *------------------------------------------*/ -BUILDIN(attachnpctimer) { - TBL_PC *sd; - struct npc_data *nd = (struct npc_data *)map->id2bl(st->oid); +BUILDIN(attachnpctimer) +{ + struct map_session_data *sd; + struct npc_data *nd = map->id2nd(st->oid); - if( !nd || nd->bl.type != BL_NPC ) - { + if (nd == NULL) { script_pushint(st,1); ShowError("setnpctimer: Invalid NPC.\n"); return false; @@ -10409,10 +10355,9 @@ BUILDIN(detachnpctimer) { if( script_hasdata(st,2) ) nd = npc->name2id(script_getstr(st,2)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( !nd || nd->bl.type != BL_NPC ) - { + if (nd == NULL) { script_pushint(st,1); ShowError("detachnpctimer: Invalid NPC.\n"); return false; @@ -10450,7 +10395,15 @@ BUILDIN(announce) { if( flag&(BC_TARGET_MASK|BC_SOURCE_MASK) ) { // Broadcast source or broadcast region defined send_target target; - struct block_list *bl = (flag&BC_NPC) ? map->id2bl(st->oid) : (struct block_list *)script->rid2sd(st); // If bc_npc flag is set, use NPC as broadcast source + struct block_list *bl = NULL; + if (flag&BC_NPC) { + // If bc_npc flag is set, use NPC as broadcast source + bl = map->id2bl(st->oid); + } else { + struct map_session_data *sd = script->rid2sd(st); + if (sd != NULL) + bl = &sd->bl; + } if (bl == NULL) return true; @@ -10494,17 +10447,16 @@ int buildin_announce_sub(struct block_list *bl, va_list ap) /* Runs item effect on attached character. * itemeffect <item id>; * itemeffect "<item name>"; */ -BUILDIN(itemeffect) { - TBL_NPC *nd; - TBL_PC *sd; +BUILDIN(itemeffect) +{ + struct npc_data *nd; struct item_data *item_data; - - sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; - nd = (TBL_NPC *)map->id2bl(sd->npc_id); - if( nd == NULL ) + nd = map->id2nd(sd->npc_id); + if (nd == NULL) return false; if( script_isstringtype(st, 2) ) { @@ -10611,7 +10563,8 @@ BUILDIN(getusers) { *------------------------------------------*/ BUILDIN(getusersname) { - TBL_PC *sd, *pl_sd; + struct map_session_data *sd; + const struct map_session_data *pl_sd; int /*disp_num=1,*/ group_level = 0; struct s_mapiterator* iter; @@ -10620,8 +10573,7 @@ BUILDIN(getusersname) group_level = pc_get_group_level(sd); iter = mapit_getallusers(); - for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) - { + for (pl_sd = BL_UCCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); pl_sd = BL_UCCAST(BL_PC, mapit->next(iter))) { if (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > group_level) continue; // skip hidden sessions @@ -10700,7 +10652,7 @@ BUILDIN(getareausers) } idx = 3; } else { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) { script_pushint(st, -1); return true; @@ -10746,17 +10698,22 @@ BUILDIN(getareausers) /*========================================== *------------------------------------------*/ -int buildin_getareadropitem_sub(struct block_list *bl,va_list ap) +int buildin_getareadropitem_sub(struct block_list *bl, va_list ap) { - int item=va_arg(ap,int); - int *amount=va_arg(ap,int *); - struct flooritem_data *drop=(struct flooritem_data *)bl; + int item = va_arg(ap, int); + int *amount = va_arg(ap, int *); + const struct flooritem_data *drop = NULL; - if(drop->item_data.nameid==item) - (*amount)+=drop->item_data.amount; + nullpo_ret(bl); + Assert_ret(bl->type == BL_ITEM); + drop = BL_UCCAST(BL_ITEM, bl); + + if (drop->item_data.nameid == item) + (*amount) += drop->item_data.amount; return 0; } + BUILDIN(getareadropitem) { const char *str; int16 m,x0,y0,x1,y1; @@ -10832,8 +10789,9 @@ BUILDIN(hideonnpc) * sc_start4 <effect_id>,<duration>,<val1>,<val2>,<val3>,<val4>{,<rate,<flag>,{<unit_id>}}; * <flag>: @see enum scstart_flag */ -BUILDIN(sc_start) { - TBL_NPC * nd = map->id2nd(st->oid); +BUILDIN(sc_start) +{ + struct npc_data *nd = map->id2nd(st->oid); struct block_list* bl; enum sc_type type; int tick, val1, val2, val3, val4=0, rate, flag; @@ -11029,7 +10987,7 @@ BUILDIN(debugmes) BUILDIN(catchpet) { int pet_id; - TBL_PC *sd; + struct map_session_data *sd; pet_id= script_getnum(st,2); sd=script->rid2sd(st); @@ -11045,10 +11003,8 @@ BUILDIN(catchpet) *------------------------------------------*/ BUILDIN(homunculus_evolution) { - TBL_PC *sd; - - sd=script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if(homun_alive(sd->hd)) { @@ -11067,11 +11023,9 @@ BUILDIN(homunculus_evolution) *------------------------------------------*/ BUILDIN(homunculus_mutate) { - TBL_PC *sd; bool success = false; - - sd = script->rid2sd(st); - if( sd == NULL || sd->hd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || sd->hd == NULL) return true; if (sd->hd->homunculus.vaporize == HOM_ST_MORPH) { @@ -11110,11 +11064,9 @@ BUILDIN(homunculus_mutate) *------------------------------------------*/ BUILDIN(homunculus_morphembryo) { - TBL_PC *sd; bool success = false; - - sd = script->rid2sd(st); - if( sd == NULL || sd->hd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || sd->hd == NULL) return true; if (homun_alive(sd->hd)) { @@ -11153,10 +11105,10 @@ BUILDIN(homunculus_morphembryo) * 1 = Homunculus is vaporized (rest) * 2 = Homunculus is in morph state *------------------------------------------*/ -BUILDIN(homunculus_checkcall) { - TBL_PC *sd = script->rid2sd(st); - - if( sd == NULL || !sd->hd ) +BUILDIN(homunculus_checkcall) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || sd->hd == NULL) script_pushint(st, -1); else script_pushint(st, sd->hd->homunculus.vaporize); @@ -11165,11 +11117,10 @@ BUILDIN(homunculus_checkcall) { } // [Zephyrus] -BUILDIN(homunculus_shuffle) { - TBL_PC *sd; - - sd=script->rid2sd(st); - if( sd == NULL ) +BUILDIN(homunculus_shuffle) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if(homun_alive(sd->hd)) @@ -11182,12 +11133,11 @@ BUILDIN(homunculus_shuffle) { BUILDIN(eaclass) { int class_; - if( script_hasdata(st,2) ) + if (script_hasdata(st,2)) { class_ = script_getnum(st,2); - else { - TBL_PC *sd; - sd=script->rid2sd(st); - if( !sd ) + } else { + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; class_ = sd->status.class_; } @@ -11199,10 +11149,10 @@ BUILDIN(roclass) { int class_ =script_getnum(st,2); int sex; - if( script_hasdata(st,3) ) + if (script_hasdata(st,3)) { sex = script_getnum(st,3); - else { - TBL_PC *sd; + } else { + struct map_session_data *sd; if (st->rid && (sd=script->rid2sd(st)) != NULL) sex = sd->status.sex; else @@ -11217,9 +11167,8 @@ BUILDIN(roclass) *------------------------------------------*/ BUILDIN(birthpet) { - TBL_PC *sd; - sd=script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if( sd->status.pet_id ) @@ -11241,12 +11190,9 @@ BUILDIN(birthpet) *------------------------------------------*/ BUILDIN(resetlvl) { - TBL_PC *sd; - int type=script_getnum(st,2); - - sd=script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; pc->resetlvl(sd,type); @@ -11257,7 +11203,7 @@ BUILDIN(resetlvl) *------------------------------------------*/ BUILDIN(resetstatus) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; pc->resetstate(sd); @@ -11269,7 +11215,7 @@ BUILDIN(resetstatus) *------------------------------------------*/ BUILDIN(resetskill) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; pc->resetskill(sd, PCRESETSKILL_RESYNC); @@ -11281,7 +11227,7 @@ BUILDIN(resetskill) *------------------------------------------*/ BUILDIN(skillpointcount) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; script_pushint(st,sd->status.skill_point + pc->resetskill(sd, PCRESETSKILL_RECOUNT)); @@ -11291,8 +11237,9 @@ BUILDIN(skillpointcount) /*========================================== * *------------------------------------------*/ -BUILDIN(changebase) { - TBL_PC *sd=NULL; +BUILDIN(changebase) +{ + struct map_session_data *sd = NULL; int vclass; if (script_hasdata(st,3)) @@ -11318,10 +11265,10 @@ BUILDIN(changebase) { return true; } -static TBL_PC *prepareChangeSex(struct script_state* st) +static struct map_session_data *prepareChangeSex(struct script_state *st) { int i; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return NULL; @@ -11338,7 +11285,7 @@ static TBL_PC *prepareChangeSex(struct script_state* st) *------------------------------------------*/ BUILDIN(changesex) { - TBL_PC *sd = prepareChangeSex(st); + struct map_session_data *sd = prepareChangeSex(st); if (sd == NULL) return true; chrif->changesex(sd, true); @@ -11350,7 +11297,7 @@ BUILDIN(changesex) *------------------------------------------*/ BUILDIN(changecharsex) { - TBL_PC *sd = prepareChangeSex(st); + struct map_session_data *sd = prepareChangeSex(st); if (sd == NULL) return true; chrif->changesex(sd, false); @@ -11360,9 +11307,8 @@ BUILDIN(changecharsex) /*========================================== * Works like 'announce' but outputs in the common chat window *------------------------------------------*/ -BUILDIN(globalmes) { - struct block_list *bl = map->id2bl(st->oid); - struct npc_data *nd = (struct npc_data *)bl; +BUILDIN(globalmes) +{ const char *name=NULL,*mes; mes=script_getstr(st,2); @@ -11372,7 +11318,9 @@ BUILDIN(globalmes) { // npc name to display name=script_getstr(st,3); } else { - name=nd->name; //use current npc name + const struct npc_data *nd = map->id2nd(st->oid); + nullpo_retr(false, nd); + name = nd->name; //use current npc name } npc->globalmessage(name,mes); // broadcast to all players connected @@ -11398,7 +11346,7 @@ BUILDIN(waitingroom) int minLvl = script_hasdata(st,7) ? script_getnum(st,7) : 1; int maxLvl = script_hasdata(st,8) ? script_getnum(st,8) : MAX_LEVEL; - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); if (nd != NULL) { int pub = 1; chat->create_npc_chat(nd, title, limit, pub, trigger, ev, zeny, minLvl, maxLvl); @@ -11416,8 +11364,8 @@ BUILDIN(delwaitingroom) { if( script_hasdata(st,2) ) nd = npc->name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map->id2bl(st->oid); - if( nd != NULL ) + nd = map->id2nd(st->oid); + if (nd != NULL) chat->delete_npc_chat(nd); return true; } @@ -11433,9 +11381,9 @@ BUILDIN(waitingroomkickall) { if( script_hasdata(st,2) ) nd = npc->name2id(script_getstr(st,2)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map->id2bl(nd->chat_id)) != NULL ) + if (nd != NULL && (cd=map->id2cd(nd->chat_id)) != NULL) chat->npc_kick_all(cd); return true; } @@ -11451,9 +11399,9 @@ BUILDIN(enablewaitingroomevent) { if( script_hasdata(st,2) ) nd = npc->name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map->id2bl(nd->chat_id)) != NULL ) + if (nd != NULL && (cd=map->id2cd(nd->chat_id)) != NULL) chat->enable_event(cd); return true; } @@ -11469,9 +11417,9 @@ BUILDIN(disablewaitingroomevent) { if( script_hasdata(st,2) ) nd = npc->name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map->id2bl(nd->chat_id)) != NULL ) + if (nd != NULL && (cd=map->id2cd(nd->chat_id)) != NULL) chat->disable_event(cd); return true; } @@ -11494,9 +11442,10 @@ BUILDIN(disablewaitingroomevent) { /// /// getwaitingroomstate(<type>,"<npc_name>") -> <info> /// getwaitingroomstate(<type>) -> <info> -BUILDIN(getwaitingroomstate) { - struct npc_data *nd; - struct chat_data *cd; +BUILDIN(getwaitingroomstate) +{ + const struct npc_data *nd; + const struct chat_data *cd; int type; int i; @@ -11504,9 +11453,9 @@ BUILDIN(getwaitingroomstate) { if( script_hasdata(st,3) ) nd = npc->name2id(script_getstr(st, 3)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd == NULL || (cd=(struct chat_data *)map->id2bl(nd->chat_id)) == NULL ) { + if (nd == NULL || (cd=map->id2cd(nd->chat_id)) == NULL) { script_pushint(st, -1); return true; } @@ -11555,8 +11504,8 @@ BUILDIN(warpwaitingpc) struct npc_data* nd; struct chat_data* cd; - nd = (struct npc_data *)map->id2bl(st->oid); - if( nd == NULL || (cd=(struct chat_data *)map->id2bl(nd->chat_id)) == NULL ) + nd = map->id2nd(st->oid); + if (nd == NULL || (cd=map->id2cd(nd->chat_id)) == NULL) return true; map_name = script_getstr(st,2); @@ -11568,7 +11517,7 @@ BUILDIN(warpwaitingpc) n = script_getnum(st,5); for (i = 0; i < n && cd->users > 0; i++) { - TBL_PC* sd = cd->usersd[0]; + struct map_session_data *sd = cd->usersd[0]; if (strcmp(map_name,"SavePoint") == 0 && map->list[sd->bl.m].flag.noteleport) { // can't teleport on this map @@ -11638,10 +11587,11 @@ BUILDIN(detachrid) /*========================================== * Chk if account connected, (and charid from account if specified) *------------------------------------------*/ -BUILDIN(isloggedin) { - TBL_PC* sd = map->id2sd(script_getnum(st,2)); - if (script_hasdata(st,3) && sd && - sd->status.char_id != script_getnum(st,3)) +BUILDIN(isloggedin) +{ + struct map_session_data *sd = map->id2sd(script_getnum(st,2)); + if (script_hasdata(st,3) && sd != NULL + && sd->status.char_id != script_getnum(st,3)) sd = NULL; script->push_val(st->stack,C_INT,sd!=NULL,NULL); return true; @@ -11741,8 +11691,14 @@ BUILDIN(getmapflag) return true; } /* pvp timer handling */ -int script_mapflag_pvp_sub(struct block_list *bl,va_list ap) { - TBL_PC* sd = (TBL_PC*)bl; +int script_mapflag_pvp_sub(struct block_list *bl, va_list ap) +{ + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + if (sd->pvp_timer == INVALID_TIMER) { sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; @@ -11755,6 +11711,7 @@ int script_mapflag_pvp_sub(struct block_list *bl,va_list ap) { clif->maptypeproperty2(&sd->bl,SELF); return 0; } + BUILDIN(setmapflag) { int16 m,i; const char *str, *val2 = NULL; @@ -11945,10 +11902,11 @@ BUILDIN(removemapflag) { return true; } -BUILDIN(pvpon) { +BUILDIN(pvpon) +{ int16 m; const char *str; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; struct s_mapiterator* iter; struct block_list bl; @@ -11973,8 +11931,7 @@ BUILDIN(pvpon) { return true; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if( sd->bl.m != m || sd->pvp_timer != INVALID_TIMER ) continue; // not applicable @@ -11990,9 +11947,14 @@ BUILDIN(pvpon) { return true; } -int buildin_pvpoff_sub(struct block_list *bl,va_list ap) +int buildin_pvpoff_sub(struct block_list *bl, va_list ap) { - TBL_PC* sd = (TBL_PC*)bl; + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + clif->pvpset(sd, 0, 0, 2); if (sd->pvp_timer != INVALID_TIMER) { timer->delete(sd->pvp_timer, pc->calc_pvprank_timer); @@ -12084,7 +12046,7 @@ BUILDIN(emotion) { player=script_getnum(st,3); if (player != 0) { - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; if (script_hasdata(st,4)) sd = script->nick2sd(st, script_getstr(st,4)); else @@ -12092,11 +12054,12 @@ BUILDIN(emotion) { if (sd != NULL) clif->emotion(&sd->bl,type); } else if( script_hasdata(st,4) ) { - TBL_NPC *nd = npc->name2id(script_getstr(st,4)); - if(nd) + struct npc_data *nd = npc->name2id(script_getstr(st,4)); + if (nd == NULL) clif->emotion(&nd->bl,type); - } else + } else { clif->emotion(map->id2bl(st->oid),type); + } return true; } @@ -12117,9 +12080,13 @@ int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap) return 1; } -int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap) +int buildin_maprespawnguildid_sub_mob(struct block_list *bl, va_list ap) { - struct mob_data *md=(struct mob_data *)bl; + struct mob_data *md = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); if (md->guardian_data == NULL && md->class_ != MOBID_EMPELIUM) status_kill(bl); @@ -12191,13 +12158,14 @@ BUILDIN(agitcheck2) { /// Sets the guild_id of this npc. /// /// flagemblem <guild_id>; -BUILDIN(flagemblem) { - TBL_NPC* nd; +BUILDIN(flagemblem) +{ + struct npc_data *nd; int g_id = script_getnum(st,2); if(g_id < 0) return true; - nd = (TBL_NPC*)map->id2nd(st->oid); + nd = map->id2nd(st->oid); if( nd == NULL ) { ShowError("script:flagemblem: npc %d not found\n", st->oid); } else if( nd->subtype != SCRIPT ) { @@ -12310,7 +12278,7 @@ BUILDIN(requestguildinfo) BUILDIN(getequipcardcnt) { int i=-1,j,num; - TBL_PC *sd; + struct map_session_data *sd; int count; num=script_getnum(st,2); @@ -12349,7 +12317,7 @@ BUILDIN(successremovecards) { int i=-1,c,cardflag=0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int num = script_getnum(st,2); if (sd == NULL) @@ -12420,7 +12388,7 @@ BUILDIN(failedremovecards) { int i=-1,c,cardflag=0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int num = script_getnum(st,2); int typefail = script_getnum(st,3); @@ -12550,9 +12518,15 @@ BUILDIN(mapwarp) { } // Added by RoVeRT -int buildin_mobcount_sub(struct block_list *bl,va_list ap) { - char *event=va_arg(ap,char *); - struct mob_data *md = ((struct mob_data *)bl); +int buildin_mobcount_sub(struct block_list *bl, va_list ap) +{ + char *event = va_arg(ap,char *); + const struct mob_data *md = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCCAST(BL_MOB, bl); + if( md->status.hp > 0 && (!event || strcmp(event,md->npc_event) == 0) ) return 1; return 0; @@ -12594,8 +12568,8 @@ BUILDIN(mobcount) { BUILDIN(marriage) { const char *partner=script_getstr(st,2); - TBL_PC *sd=script->rid2sd(st); - TBL_PC *p_sd = script->nick2sd(st, partner); + struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *p_sd = script->nick2sd(st, partner); if (sd == NULL || p_sd == NULL || pc->marriage(sd,p_sd) < 0) { script_pushint(st,0); @@ -12604,8 +12578,9 @@ BUILDIN(marriage) { script_pushint(st,1); return true; } -BUILDIN(wedding_effect) { - TBL_PC *sd = script->rid2sd(st); +BUILDIN(wedding_effect) +{ + struct map_session_data *sd = script->rid2sd(st); struct block_list *bl; if (sd == NULL) @@ -12617,8 +12592,8 @@ BUILDIN(wedding_effect) { } BUILDIN(divorce) { - TBL_PC *sd=script->rid2sd(st); - if(sd==NULL || pc->divorce(sd) < 0) { + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || pc->divorce(sd) < 0) { script_pushint(st,0); return true; } @@ -12627,7 +12602,7 @@ BUILDIN(divorce) } BUILDIN(ispartneron) { - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd==NULL || !pc->ismarried(sd) || map->charid2sd(sd->status.partner_id) == NULL) { @@ -12641,7 +12616,7 @@ BUILDIN(ispartneron) { BUILDIN(getpartnerid) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -12651,7 +12626,7 @@ BUILDIN(getpartnerid) BUILDIN(getchildid) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -12661,7 +12636,7 @@ BUILDIN(getchildid) BUILDIN(getmotherid) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -12670,8 +12645,8 @@ BUILDIN(getmotherid) } BUILDIN(getfatherid) { - TBL_PC *sd=script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; script_pushint(st,sd->status.father); @@ -12683,8 +12658,8 @@ BUILDIN(warppartner) int x,y; unsigned short map_index; const char *str; - TBL_PC *sd=script->rid2sd(st); - TBL_PC *p_sd=NULL; + struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *p_sd = NULL; if (sd == NULL || !pc->ismarried(sd) || (p_sd = script->charid2sd(st, sd->status.partner_id)) == NULL) { @@ -12992,7 +12967,7 @@ BUILDIN(setiteminfo) BUILDIN(getequipcardid) { int i=-1,num,slot; - TBL_PC *sd; + struct map_session_data *sd; num=script_getnum(st,2); slot=script_getnum(st,3); @@ -13018,9 +12993,9 @@ BUILDIN(petskillbonus) { struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); - if(sd==NULL || sd->pd==NULL) + if (sd == NULL || sd->pd == NULL) return true; pd=sd->pd; @@ -13055,9 +13030,9 @@ BUILDIN(petloot) { int max; struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); - if(sd==NULL || sd->pd==NULL) + if (sd == NULL || sd->pd == NULL) return true; max=script_getnum(st,2); @@ -13091,8 +13066,9 @@ BUILDIN(petloot) * @inventorylist_card(0..3), @inventorylist_expire * @inventorylist_count = scalar *------------------------------------------*/ -BUILDIN(getinventorylist){ - TBL_PC *sd=script->rid2sd(st); +BUILDIN(getinventorylist) +{ + struct map_session_data *sd = script->rid2sd(st); char card_var[NAME_LENGTH]; int i,j=0,k; @@ -13123,8 +13099,9 @@ BUILDIN(getinventorylist){ return true; } -BUILDIN(getcartinventorylist){ - TBL_PC *sd=script->rid2sd(st); +BUILDIN(getcartinventorylist) +{ + struct map_session_data *sd = script->rid2sd(st); char card_var[26]; int i,j=0,k; @@ -13153,9 +13130,10 @@ BUILDIN(getcartinventorylist){ BUILDIN(getskilllist) { - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int i,j=0; - if(!sd) return true; + if (sd == NULL) + return true; for(i=0;i<MAX_SKILL;i++) { if(sd->status.skill[i].id > 0 && sd->status.skill[i].lv > 0) { pc->setreg(sd,reference_uid(script->add_str("@skilllist_id"), j),sd->status.skill[i].id); @@ -13170,9 +13148,10 @@ BUILDIN(getskilllist) BUILDIN(clearitem) { - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int i; - if(sd==NULL) return true; + if (sd == NULL) + return true; for (i=0; i<MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_SCRIPT); @@ -13187,8 +13166,9 @@ BUILDIN(clearitem) BUILDIN(disguise) { int id; - TBL_PC* sd = script->rid2sd(st); - if (sd == NULL) return true; + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) + return true; id = script_getnum(st,2); @@ -13206,8 +13186,9 @@ BUILDIN(disguise) *------------------------------------------*/ BUILDIN(undisguise) { - TBL_PC* sd = script->rid2sd(st); - if (sd == NULL) return true; + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) + return true; if (sd->disguise != -1) { pc->disguise(sd, -1); @@ -13247,8 +13228,8 @@ BUILDIN(misceffect) if (bl) clif->specialeffect(bl,type,AREA); } else { - TBL_PC *sd=script->rid2sd(st); - if(sd) + struct map_session_data *sd = script->rid2sd(st); + if (sd != NULL) clif->specialeffect(&sd->bl,type,AREA); } return true; @@ -13333,23 +13314,27 @@ BUILDIN(playbgmall) { *------------------------------------------*/ BUILDIN(soundeffect) { - TBL_PC* sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); const char* name = script_getstr(st,2); int type = script_getnum(st,3); - if(sd) - { + if (sd != NULL) { clif->soundeffect(sd,&sd->bl,name,type); } return true; } -int soundeffect_sub(struct block_list* bl,va_list ap) +int soundeffect_sub(struct block_list *bl, va_list ap) { - char* name = va_arg(ap,char*); - int type = va_arg(ap,int); + struct map_session_data *sd = NULL; + char *name = va_arg(ap, char *); + int type = va_arg(ap, int); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); - clif->soundeffect((TBL_PC *)bl, bl, name, type); + clif->soundeffect(sd, bl, name, type); return true; } @@ -13412,9 +13397,9 @@ BUILDIN(soundeffectall) { BUILDIN(petrecovery) { struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); - if(sd==NULL || sd->pd==NULL) + if (sd == NULL || sd->pd == NULL) return true; pd=sd->pd; @@ -13438,9 +13423,10 @@ BUILDIN(petrecovery) *------------------------------------------*/ /// petskillattack <skill id>,<level>,<div>,<rate>,<bonusrate> /// petskillattack "<skill name>",<level>,<div>,<rate>,<bonusrate> -BUILDIN(petskillattack) { +BUILDIN(petskillattack) +{ struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd==NULL || sd->pd==NULL) return true; @@ -13463,11 +13449,12 @@ BUILDIN(petskillattack) { *------------------------------------------*/ /// petskillsupport <skill id>,<level>,<delay>,<hp>,<sp> /// petskillsupport "<skill name>",<level>,<delay>,<hp>,<sp> -BUILDIN(petskillsupport) { +BUILDIN(petskillsupport) +{ struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); - if(sd==NULL || sd->pd==NULL) + if (sd == NULL || sd->pd == NULL) return true; pd=sd->pd; @@ -13501,8 +13488,9 @@ BUILDIN(petskillsupport) { *------------------------------------------*/ /// skilleffect <skill id>,<level> /// skilleffect "<skill name>",<level> -BUILDIN(skilleffect) { - TBL_PC *sd; +BUILDIN(skilleffect) +{ + struct map_session_data *sd; uint16 skill_id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); uint16 skill_lv=script_getnum(st,3); @@ -13553,17 +13541,14 @@ BUILDIN(specialeffect) { if(bl==NULL) return true; - if( script_hasdata(st,4) ) - { - TBL_NPC *nd = npc->name2id(script_getstr(st,4)); - if(nd) + if (script_hasdata(st,4)) { + struct npc_data *nd = npc->name2id(script_getstr(st,4)); + if (nd != NULL) clif->specialeffect(&nd->bl, type, target); - } - else - { + } else { if (target == SELF) { - TBL_PC *sd=script->rid2sd(st); - if (sd) + struct map_session_data *sd = script->rid2sd(st); + if (sd != NULL) clif->specialeffect_single(bl,type,sd->fd); } else { clif->specialeffect(bl, type, target); @@ -13574,7 +13559,7 @@ BUILDIN(specialeffect) { } BUILDIN(specialeffect2) { - TBL_PC *sd; + struct map_session_data *sd; int type = script_getnum(st,2); enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA; @@ -13594,10 +13579,10 @@ BUILDIN(specialeffect2) { *------------------------------------------*/ BUILDIN(nude) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int i, calcflag = 0; - if( sd == NULL ) + if (sd == NULL) return true; for( i = 0 ; i < EQI_MAX; i++ ) { @@ -13617,8 +13602,9 @@ BUILDIN(nude) /*========================================== * gmcommand [MouseJstr] *------------------------------------------*/ -BUILDIN(atcommand) { - TBL_PC *sd, *dummy_sd = NULL; +BUILDIN(atcommand) +{ + struct map_session_data *sd, *dummy_sd = NULL; int fd; const char* cmd; bool ret = true; @@ -13638,7 +13624,7 @@ BUILDIN(atcommand) { struct block_list* bl = map->id2bl(st->oid); memcpy(&sd->bl, bl, sizeof(struct block_list)); if (bl->type == BL_NPC) - safestrncpy(sd->status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); + safestrncpy(sd->status.name, BL_UCAST(BL_NPC, bl)->name, NAME_LENGTH); } } @@ -13660,7 +13646,7 @@ BUILDIN(atcommand) { */ BUILDIN(dispbottom) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); const char *message = script_getstr(st,2); if (sd == NULL) @@ -13682,12 +13668,11 @@ BUILDIN(dispbottom) *------------------------------------------*/ BUILDIN(recovery) { - TBL_PC* sd; + struct map_session_data *sd; struct s_mapiterator* iter; iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - { + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) { if(pc_isdead(sd)) status->revive(&sd->bl, 100, 100); else @@ -13704,11 +13689,11 @@ BUILDIN(recovery) *------------------------------------------*/ BUILDIN(getpetinfo) { - TBL_PC *sd=script->rid2sd(st); - TBL_PET *pd; + struct map_session_data *sd = script->rid2sd(st); + struct pet_data *pd; int type=script_getnum(st,2); - if(!sd || !sd->pd) { + if (sd == NULL || sd->pd == NULL) { if (type == 2) script_pushconststr(st,"null"); else @@ -13738,10 +13723,10 @@ BUILDIN(getpetinfo) *------------------------------------------*/ BUILDIN(gethominfo) { - TBL_PC *sd=script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); int type = script_getnum(st,2); - if(!sd || !sd->hd) { + if (sd == NULL || sd->hd == NULL) { if (type == 2) script_pushconststr(st,"null"); else @@ -13820,7 +13805,7 @@ BUILDIN(getmercinfo) BUILDIN(checkequipedcard) { int n,i,c=0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -13866,8 +13851,9 @@ BUILDIN(__jump_zero) /*========================================== * movenpc [MouseJstr] *------------------------------------------*/ -BUILDIN(movenpc) { - TBL_NPC *nd = NULL; +BUILDIN(movenpc) +{ + struct npc_data *nd = NULL; const char *npc_name; int x,y; @@ -13890,7 +13876,7 @@ BUILDIN(movenpc) { BUILDIN(message) { const char *message; - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; if (script_isstringtype(st,2)) sd = script->nick2sd(st, script_getstr(st,2)); @@ -13917,12 +13903,11 @@ BUILDIN(npctalk) if (script_hasdata(st, 3)) { nd = npc->name2id(script_getstr(st, 3)); - } - else { - nd = (struct npc_data *)map->id2bl(st->oid); + } else { + nd = map->id2nd(st->oid); } - if (nd) { + if (nd != NULL) { char name[NAME_LENGTH], message[256]; safestrncpy(name, nd->name, sizeof(name)); strtok(name, "#"); // discard extra name identifier if present @@ -13939,9 +13924,9 @@ BUILDIN(npcspeed) { int speed; speed = script_getnum(st,2); - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd ) { + if (nd != NULL) { unit->bl2ud2(&nd->bl); // ensure nd->ud is safe to edit nd->speed = speed; nd->ud->state.speed_changed = 1; @@ -13950,14 +13935,15 @@ BUILDIN(npcspeed) { return true; } // make an npc walk to a position [Valaris] -BUILDIN(npcwalkto) { - struct npc_data *nd=(struct npc_data *)map->id2bl(st->oid); +BUILDIN(npcwalkto) +{ + struct npc_data *nd = map->id2nd(st->oid); int x=0,y=0; x=script_getnum(st,2); y=script_getnum(st,3); - if( nd ) { + if (nd != NULL) { unit->bl2ud2(&nd->bl); // ensure nd->ud is safe to edit if (!nd->status.hp) { status_calc_npc(nd, SCO_FIRST); @@ -13970,10 +13956,11 @@ BUILDIN(npcwalkto) { return true; } // stop an npc's movement [Valaris] -BUILDIN(npcstop) { - struct npc_data *nd = (struct npc_data *)map->id2bl(st->oid); +BUILDIN(npcstop) +{ + struct npc_data *nd = map->id2nd(st->oid); - if( nd ) { + if (nd != NULL) { unit->bl2ud2(&nd->bl); // ensure nd->ud is safe to edit unit->stop_walking(&nd->bl, STOPWALKING_FLAG_FIXPOS|STOPWALKING_FLAG_NEXTCELL); } @@ -13982,9 +13969,10 @@ BUILDIN(npcstop) { } // set click npc distance [4144] -BUILDIN(setnpcdistance) { - struct npc_data *nd = (struct npc_data *) map->id2bl (st->oid); - if (!nd) +BUILDIN(setnpcdistance) +{ + struct npc_data *nd = map->id2nd(st->oid); + if (nd == NULL) return false; nd->area_size = script_getnum(st, 2); @@ -13995,23 +13983,20 @@ BUILDIN(setnpcdistance) { // return current npc direction [4144] BUILDIN(getnpcdir) { - struct npc_data *nd = 0; + const struct npc_data *nd = NULL; - if (script_hasdata(st, 2)) - { - nd = npc->name2id (script_getstr(st, 2)); + if (script_hasdata(st, 2)) { + nd = npc->name2id(script_getstr(st, 2)); } - if (!nd && !st->oid) - { + if (nd == NULL && !st->oid) { script_pushint(st, -1); return true; } - if (!nd) - nd = (struct npc_data *) map->id2bl (st->oid); + if (nd == NULL) + nd = map->id2nd(st->oid); - if (!nd) - { + if (nd == NULL) { script_pushint(st, -1); return true; } @@ -14025,22 +14010,19 @@ BUILDIN(getnpcdir) BUILDIN(setnpcdir) { int newdir; - struct npc_data *nd = 0; + struct npc_data *nd = NULL; - if (script_hasdata(st, 3)) - { - nd = npc->name2id (script_getstr(st, 2)); + if (script_hasdata(st, 3)) { + nd = npc->name2id(script_getstr(st, 2)); newdir = script_getnum(st, 3); - } - else if (script_hasdata(st, 2)) - { + } else if (script_hasdata(st, 2)) { if (!st->oid) return false; - nd = (struct npc_data *) map->id2bl (st->oid); + nd = map->id2nd(st->oid); newdir = script_getnum(st, 2); } - if (!nd) + if (nd == NULL) return false; if (newdir < 0) @@ -14061,23 +14043,20 @@ BUILDIN(setnpcdir) // return npc class [4144] BUILDIN(getnpcclass) { - struct npc_data *nd = 0; + const struct npc_data *nd = NULL; - if (script_hasdata(st, 2)) - { - nd = npc->name2id (script_getstr(st, 2)); + if (script_hasdata(st, 2)) { + nd = npc->name2id(script_getstr(st, 2)); } - if (!nd && !st->oid) - { + if (nd == NULL && !st->oid) { script_pushint(st, -1); return false; } - if (!nd) - nd = (struct npc_data *) map->id2bl(st->oid); + if (nd == NULL) + nd = map->id2nd(st->oid); - if (!nd) - { + if (nd == NULL) { script_pushint(st, -1); return false; } @@ -14093,7 +14072,7 @@ BUILDIN(getnpcclass) BUILDIN(getlook) { int type,val = -1; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14109,6 +14088,7 @@ BUILDIN(getlook) case LOOK_SHIELD: val = sd->status.shield; break; //8 case LOOK_SHOES: break; //9 case LOOK_ROBE: val = sd->status.robe; break; //12 + case LOOK_BODY2: val=sd->status.body; break; //13 } script_pushint(st,val); @@ -14121,7 +14101,7 @@ BUILDIN(getlook) BUILDIN(getsavepoint) { int type; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14164,7 +14144,7 @@ BUILDIN(getsavepoint) BUILDIN(getmapxy) { struct block_list *bl = NULL; - TBL_PC *sd=NULL; + struct map_session_data *sd = NULL; int64 num; const char *name; @@ -14363,7 +14343,7 @@ BUILDIN(getmapxy) BUILDIN(logmes) { const char *str; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14377,12 +14357,11 @@ BUILDIN(summon) { int class_, timeout=0; const char *str,*event=""; - TBL_PC *sd; struct mob_data *md; int64 tick = timer->gettick(); - - sd=script->rid2sd(st); - if (!sd) return true; + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) + return true; str = script_getstr(st,2); class_ = script_getnum(st,3); @@ -14425,7 +14404,7 @@ BUILDIN(isequippedcnt) { int i, j, k, id = 1; int ret = 0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14477,7 +14456,7 @@ BUILDIN(isequipped) int ret = -1; //Original hash to reverse it when full check fails. unsigned int setitem_hash = 0, setitem_hash2 = 0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14555,7 +14534,7 @@ BUILDIN(cardscnt) int i, k, id = 1; int ret = 0; int index; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14594,7 +14573,7 @@ BUILDIN(cardscnt) *-------------------------------------------------------*/ BUILDIN(getrefine) { - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -14621,7 +14600,7 @@ BUILDIN(day) { BUILDIN(unequip) { size_t num; - TBL_PC *sd; + struct map_session_data *sd; num = script_getnum(st,2); sd = script->rid2sd(st); @@ -14636,11 +14615,9 @@ BUILDIN(unequip) BUILDIN(equip) { int nameid=0,i; - TBL_PC *sd; struct item_data *item_data; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return false; nameid=script_getnum(st,2); @@ -14687,7 +14664,7 @@ BUILDIN(equip2) { int i,nameid,ref,attr,c0,c1,c2,c3; struct item_data *item_data; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) { script_pushint(st,0); @@ -14981,7 +14958,7 @@ BUILDIN(explode) char *temp = NULL; const char *name; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; if (!data_isreference(data)) { ShowError("script:explode: not a variable\n"); @@ -15040,7 +15017,7 @@ BUILDIN(implode) const char *name; uint32 array_size, id; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; char *output; @@ -15735,11 +15712,81 @@ BUILDIN(md5) return true; } +BUILDIN(swap) +{ + struct map_session_data *sd = NULL; + struct script_data *data1, *data2; + const char *varname1, *varname2; + int64 uid1, uid2; + + data1 = script_getdata(st,2); + data2 = script_getdata(st,3); + + if (!data_isreference(data1) || !data_isreference(data2) || reference_toconstant(data1) || reference_toconstant(data2)) { + st->state = END; + return true; // avoid print error message twice + } + + if (reference_toparam(data1) || reference_toparam(data2)) { + ShowError("script:swap: detected parameter type constant.\n"); + if (reference_toparam(data1)) + script->reportdata(data1); + if (reference_toparam(data2)) + script->reportdata(data2); + st->state = END; + return false; + } + + varname1 = reference_getname(data1); + varname2 = reference_getname(data2); + + if ((is_string_variable(varname1) && !is_string_variable(varname2)) || (!is_string_variable(varname1) && is_string_variable(varname2))) { + ShowError("script:swap: both sides must be same integer or string type.\n"); + script->reportdata(data1); + script->reportdata(data2); + st->state = END; + return false; + } + + if (not_server_variable(*varname1) || not_server_variable(*varname2)) { + sd = script->rid2sd(st); + if (sd == NULL) + return true; // avoid print error message twice + } + + uid1 = reference_getuid(data1); + uid2 = reference_getuid(data2); + + if (is_string_variable(varname1)) { + const char *value1, *value2; + + value1 = script_getstr(st,2); + value2 = script_getstr(st,3); + + if (strcmpi(value1, value2)) { + script->set_reg(st, sd, uid1, varname1, (void*)(value2), script_getref(st,3)); + script->set_reg(st, sd, uid2, varname2, (void*)(value1), script_getref(st,2)); + } + } + else { + int value1, value2; + + value1 = script_getnum(st,2); + value2 = script_getnum(st,3); + + if (value1 != value2) { + script->set_reg(st, sd, uid1, varname1, (void*)h64BPTRSIZE(value2), script_getref(st,3)); + script->set_reg(st, sd, uid2, varname2, (void*)h64BPTRSIZE(value1), script_getref(st,2)); + } + } + return true; +} + // [zBuffer] List of dynamic var commands ---> BUILDIN(setd) { - TBL_PC *sd=NULL; + struct map_session_data *sd = NULL; char varname[100]; const char *buffer; int elem; @@ -15770,7 +15817,7 @@ BUILDIN(setd) int buildin_query_sql_sub(struct script_state* st, Sql* handle) { int i, j; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; const char* query; struct script_data* data; const char* name; @@ -15897,11 +15944,10 @@ BUILDIN(getd) { // Pet stat [Lance] BUILDIN(petstat) { - TBL_PC *sd = NULL; struct pet_data *pd; int flag = script_getnum(st,2); - sd = script->rid2sd(st); - if(!sd || !sd->status.pet_id || !sd->pd) { + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL || sd->status.pet_id == 0 || sd->pd == NULL) { if(flag == 2) script_pushconststr(st, ""); else @@ -15927,7 +15973,7 @@ BUILDIN(callshop) struct npc_data *nd; const char *shopname; int flag = 0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -16071,7 +16117,7 @@ BUILDIN(npcshopattach) { } if (flag) - nd->master_nd = ((struct npc_data *)map->id2bl(st->oid)); + nd->master_nd = map->id2nd(st->oid); else nd->master_nd = NULL; @@ -16282,7 +16328,7 @@ BUILDIN(getmonsterinfo) BUILDIN(checkvending) // check vending [Nab4] { - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; if (script_hasdata(st,2)) sd = script->nick2sd(st, script_getstr(st,2)); @@ -16299,7 +16345,7 @@ BUILDIN(checkvending) // check vending [Nab4] // check chatting [Marka] BUILDIN(checkchatting) { - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; if (script_hasdata(st,2)) sd = script->nick2sd(st, script_getstr(st,2)); @@ -16315,7 +16361,7 @@ BUILDIN(checkchatting) { } BUILDIN(checkidle) { - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; if (script_hasdata(st, 2)) sd = script->nick2sd(st, script_getstr(st, 2)); @@ -16341,11 +16387,11 @@ BUILDIN(searchitem) int32 start; int32 id; int32 i; - TBL_PC* sd = NULL; + struct map_session_data *sd = NULL; - if ((items[0] = itemdb->exists(atoi(itemname)))) + if ((items[0] = itemdb->exists(atoi(itemname)))) { count = 1; - else { + } else { count = itemdb->search_name_array(items, ARRAYLENGTH(items), itemname, 0); if (count > MAX_SEARCH) count = MAX_SEARCH; } @@ -16393,17 +16439,18 @@ BUILDIN(searchitem) } // [zBuffer] List of player cont commands ---> -BUILDIN(rid2name) { +BUILDIN(rid2name) +{ struct block_list *bl = NULL; int rid = script_getnum(st,2); if((bl = map->id2bl(rid))) { switch(bl->type) { - case BL_MOB: script_pushstrcopy(st,((TBL_MOB*)bl)->name); break; - case BL_PC: script_pushstrcopy(st,((TBL_PC*)bl)->status.name); break; - case BL_NPC: script_pushstrcopy(st,((TBL_NPC*)bl)->exname); break; - case BL_PET: script_pushstrcopy(st,((TBL_PET*)bl)->pet.name); break; - case BL_HOM: script_pushstrcopy(st,((TBL_HOM*)bl)->homunculus.name); break; - case BL_MER: script_pushstrcopy(st,((TBL_MER*)bl)->db->name); break; + case BL_MOB: script_pushstrcopy(st, BL_UCCAST(BL_MOB, bl)->name); break; + case BL_PC: script_pushstrcopy(st, BL_UCCAST(BL_PC, bl)->status.name); break; + case BL_NPC: script_pushstrcopy(st, BL_UCCAST(BL_NPC, bl)->exname); break; + case BL_PET: script_pushstrcopy(st, BL_UCCAST(BL_PET, bl)->pet.name); break; + case BL_HOM: script_pushstrcopy(st, BL_UCCAST(BL_HOM, bl)->homunculus.name); break; + case BL_MER: script_pushstrcopy(st, BL_UCCAST(BL_MER, bl)->db->name); break; default: ShowError("buildin_rid2name: BL type unknown.\n"); script_pushconststr(st,""); @@ -16418,7 +16465,7 @@ BUILDIN(rid2name) { BUILDIN(pcblockmove) { int id, flag; - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; id = script_getnum(st,2); flag = script_getnum(st,3); @@ -16434,9 +16481,10 @@ BUILDIN(pcblockmove) { return true; } -BUILDIN(pcfollow) { +BUILDIN(pcfollow) +{ int id, targetid; - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; id = script_getnum(st,2); targetid = script_getnum(st,3); @@ -16455,7 +16503,7 @@ BUILDIN(pcfollow) { BUILDIN(pcstopfollow) { int id; - TBL_PC *sd = NULL; + struct map_session_data *sd = NULL; id = script_getnum(st,2); @@ -16515,7 +16563,7 @@ BUILDIN(unitwalk) { } if( bl->type == BL_NPC ) { - unit->bl2ud2(bl); // ensure the ((TBL_NPC*)bl)->ud is safe to edit + unit->bl2ud2(bl); // ensure the ((struct npc_data*)bl)->ud is safe to edit } if( script_hasdata(st,4) ) { int x = script_getnum(st,3); @@ -16569,7 +16617,7 @@ BUILDIN(unitwarp) { mapid = map->mapname2mapid(mapname); if( mapid >= 0 && bl != NULL ) { - unit->bl2ud2(bl); // ensure ((TBL_NPC*)bl)->ud is safe to edit + unit->bl2ud2(bl); // ensure ((struct npc_data *)bl)->ud is safe to edit script_pushint(st, unit->warp(bl,mapid,x,y,CLR_OUTSIGHT)); } else { script_pushint(st, 0); @@ -16598,7 +16646,7 @@ BUILDIN(unitattack) { } if (script_isstringtype(st, 3)) { - TBL_PC* sd = script->nick2sd(st, script_getstr(st, 3)); + struct map_session_data *sd = script->nick2sd(st, script_getstr(st, 3)); if (sd != NULL) target_bl = &sd->bl; } else { @@ -16618,14 +16666,14 @@ BUILDIN(unitattack) { switch( unit_bl->type ) { case BL_PC: - clif->pActionRequest_sub(((TBL_PC *)unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, timer->gettick()); + clif->pActionRequest_sub(BL_UCAST(BL_PC, unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, timer->gettick()); script_pushint(st, 1); return true; case BL_MOB: - ((TBL_MOB *)unit_bl)->target_id = target_bl->id; + BL_UCAST(BL_MOB, unit_bl)->target_id = target_bl->id; break; case BL_PET: - ((TBL_PET *)unit_bl)->target_id = target_bl->id; + BL_UCAST(BL_PET, unit_bl)->target_id = target_bl->id; break; default: ShowError("script:unitattack: unsupported source unit type %d\n", unit_bl->type); @@ -16647,11 +16695,11 @@ BUILDIN(unitstop) { bl = map->id2bl(unit_id); if( bl != NULL ) { - unit->bl2ud2(bl); // ensure ((TBL_NPC*)bl)->ud is safe to edit + unit->bl2ud2(bl); // ensure ((struct npc_data *)bl)->ud is safe to edit unit->stop_attack(bl); unit->stop_walking(bl, STOPWALKING_FLAG_NEXTCELL); if( bl->type == BL_MOB ) - ((TBL_MOB*)bl)->target_id = 0; + BL_UCAST(BL_MOB, bl)->target_id = 0; } return true; @@ -16717,12 +16765,13 @@ BUILDIN(unitskilluseid) { bl = map->id2bl(unit_id); - if( bl != NULL ) { - if( bl->type == BL_NPC ) { - if (!((TBL_NPC*)bl)->status.hp) { - status_calc_npc(((TBL_NPC*)bl), SCO_FIRST); + if (bl != NULL) { + if (bl->type == BL_NPC) { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->status.hp == 0) { + status_calc_npc(nd, SCO_FIRST); } else { - status_calc_npc(((TBL_NPC*)bl), SCO_NONE); + status_calc_npc(nd, SCO_NONE); } } unit->skilluse_id(bl, target_id, skill_id, skill_lv); @@ -16751,12 +16800,13 @@ BUILDIN(unitskillusepos) { bl = map->id2bl(unit_id); - if( bl != NULL ) { - if( bl->type == BL_NPC ) { - if (!((TBL_NPC*)bl)->status.hp) { - status_calc_npc(((TBL_NPC*)bl), SCO_FIRST); + if (bl != NULL) { + if (bl->type == BL_NPC) { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (nd->status.hp == 0) { + status_calc_npc(nd, SCO_FIRST); } else { - status_calc_npc(((TBL_NPC*)bl), SCO_NONE); + status_calc_npc(nd, SCO_NONE); } } unit->skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv); @@ -16837,7 +16887,7 @@ BUILDIN(awake) { for( tst = dbi_first(iter); dbi_exists(iter); tst = dbi_next(iter) ) { if( tst->oid == nd->bl.id ) { - TBL_PC* sd = map->id2sd(tst->rid); + struct map_session_data *sd = map->id2sd(tst->rid); if( tst->sleep.timer == INVALID_TIMER ) {// already awake ??? continue; @@ -16952,10 +17002,8 @@ BUILDIN(warpportal) { BUILDIN(openmail) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; mail->openmail(sd); @@ -16965,10 +17013,8 @@ BUILDIN(openmail) BUILDIN(openauction) { - TBL_PC* sd; - - sd = script->rid2sd(st); - if( sd == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; clif->auction_openwindow(sd); @@ -17407,8 +17453,9 @@ BUILDIN(questprogress) return true; } -BUILDIN(showevent) { - TBL_PC *sd = script->rid2sd(st); +BUILDIN(showevent) +{ + struct map_session_data *sd = script->rid2sd(st); struct npc_data *nd = map->id2nd(st->oid); int icon, color = 0; @@ -17451,9 +17498,9 @@ BUILDIN(waitingroom2bg) { if( script_hasdata(st,7) ) nd = npc->name2id(script_getstr(st,7)); else - nd = (struct npc_data *)map->id2bl(st->oid); + nd = map->id2nd(st->oid); - if( nd == NULL || (cd = (struct chat_data *)map->id2bl(nd->chat_id)) == NULL ) { + if (nd == NULL || (cd = map->id2cd(nd->chat_id)) == NULL) { script_pushint(st,0); return true; } @@ -17512,7 +17559,7 @@ BUILDIN(waitingroom2bg_single) { y = script_getnum(st,5); nd = npc->name2id(script_getstr(st,6)); - if( nd == NULL || (cd = (struct chat_data *)map->id2bl(nd->chat_id)) == NULL || cd->users <= 0 ) + if (nd == NULL || (cd = map->id2cd(nd->chat_id)) == NULL || cd->users <= 0) return true; if( (sd = cd->usersd[0]) == NULL ) @@ -17575,15 +17622,15 @@ BUILDIN(bg_monster) return true; } -BUILDIN(bg_monster_set_team) { - struct mob_data *md; - struct block_list *mbl; +BUILDIN(bg_monster_set_team) +{ int id = script_getnum(st,2), bg_id = script_getnum(st,3); + struct block_list *mbl = map->id2bl(id); // TODO: Why does this not use map->id2md? + struct mob_data *md = BL_CAST(BL_MOB, mbl); - if( (mbl = map->id2bl(id)) == NULL || mbl->type != BL_MOB ) + if (md == NULL) return true; - md = (TBL_MOB *)mbl; md->bg_id = bg_id; mob_stop_attack(md); @@ -17965,12 +18012,18 @@ BUILDIN(has_instance) { script_pushconststr(st, map->list[m].name); return true; } -int buildin_instance_warpall_sub(struct block_list *bl,va_list ap) { - struct map_session_data *sd = ((TBL_PC*)bl); + +int buildin_instance_warpall_sub(struct block_list *bl, va_list ap) +{ + struct map_session_data *sd = NULL; int map_index = va_arg(ap,int); int x = va_arg(ap,int); int y = va_arg(ap,int); + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + pc->setpos(sd,map_index,x,y,CLR_TELEPORT); return 0; @@ -18140,9 +18193,9 @@ BUILDIN(setfont) return true; } -int buildin_mobuseskill_sub(struct block_list *bl,va_list ap) +int buildin_mobuseskill_sub(struct block_list *bl, va_list ap) { - TBL_MOB* md = (TBL_MOB*)bl; + struct mob_data *md = NULL; struct block_list *tbl; int mobid = va_arg(ap,int); uint16 skill_id = va_arg(ap,int); @@ -18152,6 +18205,10 @@ int buildin_mobuseskill_sub(struct block_list *bl,va_list ap) int emotion = va_arg(ap,int); int target = va_arg(ap,int); + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCAST(BL_MOB, bl); + if( md->class_ != mobid ) return 0; @@ -18349,9 +18406,10 @@ BUILDIN(showdigit) /** * Rune Knight **/ -BUILDIN(makerune) { - TBL_PC* sd; - if( (sd = script->rid2sd(st)) == NULL ) +BUILDIN(makerune) +{ + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; clif->skill_produce_mix_list(sd,RK_RUNEMASTERY,24); sd->itemid = script_getnum(st,2); @@ -18363,8 +18421,8 @@ BUILDIN(makerune) { **/ BUILDIN(hascashmount) { - TBL_PC* sd; - if( (sd = script->rid2sd(st)) == NULL ) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if( sd->sc.data[SC_ALL_RIDING] ) script_pushint(st,1); @@ -18382,8 +18440,8 @@ BUILDIN(hascashmount) **/ BUILDIN(setcashmount) { - TBL_PC* sd; - if ((sd = script->rid2sd(st)) == NULL) + struct map_session_data *sd = script->rid2sd(st); + if (sd == NULL) return true; if (pc_hasmount(sd)) { clif->msgtable(sd, MSG_REINS_CANT_USE_MOUNTED); @@ -18644,7 +18702,7 @@ BUILDIN(unbindatcmd) { } BUILDIN(useatcmd) { - TBL_PC *sd, *dummy_sd = NULL; + struct map_session_data *sd, *dummy_sd = NULL; int fd; const char* cmd; @@ -18663,8 +18721,8 @@ BUILDIN(useatcmd) { if( st->oid ) { struct block_list* bl = map->id2bl(st->oid); memcpy(&sd->bl, bl, sizeof(struct block_list)); - if( bl->type == BL_NPC ) - safestrncpy(sd->status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); + if (bl->type == BL_NPC) + safestrncpy(sd->status.name, BL_UCAST(BL_NPC, bl)->name, NAME_LENGTH); } } @@ -18843,7 +18901,7 @@ BUILDIN(npcskill) if (sd == NULL) return true; - nd = (struct npc_data *)map->id2bl(sd->npc_id); + nd = map->id2nd(sd->npc_id); if (stat_point > battle_config.max_third_parameter) { ShowError("npcskill: stat point exceeded maximum of %d.\n",battle_config.max_third_parameter ); @@ -18929,8 +18987,6 @@ BUILDIN(montransform) { if (tick != 0) { struct map_session_data *sd = script->id2sd(st, bl->id); - struct mob_db *monster = mob->db(mob_id); - char msg[CHAT_SIZE_MAX]; if (sd == NULL) return true; @@ -18945,8 +19001,6 @@ BUILDIN(montransform) { return true; } - sprintf(msg, msg_sd(sd,1485), monster->name); // Traaaansformation-!! %s form!! - clif->ShowScript(&sd->bl, msg); status_change_end(bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous sc_start2(NULL, bl, SC_MONSTER_TRANSFORM, 100, mob_id, type, tick); @@ -19517,7 +19571,7 @@ BUILDIN(bg_join_team) { BUILDIN(countbound) { int i, type, j=0, k=0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -19553,7 +19607,7 @@ BUILDIN(checkbound) { int i, nameid = script_getnum(st,2); int bound_type = 0; - TBL_PC *sd = script->rid2sd(st); + struct map_session_data *sd = script->rid2sd(st); if (sd == NULL) return true; @@ -20492,6 +20546,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(min, "i*"), BUILDIN_DEF(max, "i*"), BUILDIN_DEF(md5,"s"), + BUILDIN_DEF(swap,"rr"), // [zBuffer] List of dynamic var commands ---> BUILDIN_DEF(getd,"s"), BUILDIN_DEF(setd,"sv"), diff --git a/src/map/script.h b/src/map/script.h index b3e16b1b4..5f71662c6 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -647,10 +647,10 @@ struct script_interface { bool (*addScript) (char *name, char *args, bool (*func)(struct script_state *st), bool isDeprecated); int (*conv_num) (struct script_state *st,struct script_data *data); const char* (*conv_str) (struct script_state *st,struct script_data *data); - TBL_PC *(*rid2sd) (struct script_state *st); - TBL_PC *(*id2sd) (struct script_state *st, int account_id); - TBL_PC *(*charid2sd) (struct script_state *st, int char_id); - TBL_PC *(*nick2sd) (struct script_state *st, const char *name); + struct map_session_data *(*rid2sd) (struct script_state *st); + struct map_session_data *(*id2sd) (struct script_state *st, int account_id); + struct map_session_data *(*charid2sd) (struct script_state *st, int char_id); + struct map_session_data *(*nick2sd) (struct script_state *st, const char *name); void (*detach_rid) (struct script_state* st); struct script_data* (*push_val)(struct script_stack* stack, enum c_op type, int64 val, struct reg_db *ref); struct script_data *(*get_val) (struct script_state* st, struct script_data* data); @@ -728,7 +728,7 @@ struct script_interface { void (*read_constdb) (void); const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line); void (*errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos); - int (*set_reg) (struct script_state *st, TBL_PC *sd, int64 num, const char *name, const void *value, struct reg_db *ref); + int (*set_reg) (struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref); void (*set_reg_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str); void (*set_reg_scope_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str); void (*set_reg_npc_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str); diff --git a/src/map/skill.c b/src/map/skill.c index dc3ebe62e..b3c264e43 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2012-2015 Hercules Dev Team + * Copyright (C) 2012-2016 Hercules Dev Team * Copyright (C) Athena Dev Teams * * Hercules is free software: you can redistribute it and/or modify @@ -260,6 +260,7 @@ int skill_get_casttype2 (uint16 index) { //Returns actual skill range taking into account attack range and AC_OWL [Skotlex] int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { int range; + struct map_session_data *sd = BL_CAST(BL_PC, bl); if( bl->type == BL_MOB && battle_config.mob_ai&0x400 ) return 9; //Mobs have a range of 9 regardless of skill used. @@ -288,8 +289,8 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case RA_ARROWSTORM: case RA_AIMEDBOLT: case RA_WUGBITE: - if( bl->type == BL_PC ) - range += pc->checkskill((TBL_PC*)bl, AC_VULTURE); + if (sd != NULL) + range += pc->checkskill(sd, AC_VULTURE); else range += 10; //Assume level 10? break; @@ -299,14 +300,14 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case GS_FULLBUSTER: case GS_SPREADATTACK: case GS_GROUNDDRIFT: - if (bl->type == BL_PC) - range += pc->checkskill((TBL_PC*)bl, GS_SNAKEEYE); + if (sd != NULL) + range += pc->checkskill(sd, GS_SNAKEEYE); else range += 10; //Assume level 10? break; case NJ_KIRIKAGE: - if (bl->type == BL_PC) - range = skill->get_range(NJ_SHADOWJUMP,pc->checkskill((TBL_PC*)bl,NJ_SHADOWJUMP)); + if (sd != NULL) + range = skill->get_range(NJ_SHADOWJUMP, pc->checkskill(sd, NJ_SHADOWJUMP)); break; /** * Warlock @@ -323,9 +324,9 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case WL_TETRAVORTEX: case WL_EARTHSTRAIN: case WL_RELEASE: - if( bl->type == BL_PC ) - range += pc->checkskill((TBL_PC*)bl, WL_RADIUS); - break; + if (sd != NULL) + range += pc->checkskill(sd, WL_RADIUS); + break; /** * Ranger Bonus **/ @@ -336,8 +337,8 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case RA_CLUSTERBOMB: case RA_FIRINGTRAP: case RA_ICEBOUNDTRAP: - if( bl->type == BL_PC ) - range += (1 + pc->checkskill((TBL_PC*)bl, RA_RESEARCHTRAP))/2; + if (sd != NULL) + range += (1 + pc->checkskill(sd, RA_RESEARCHTRAP))/2; } if( !range && bl->type != BL_PC ) @@ -383,7 +384,7 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk #endif // RENEWAL if (sd && (skill2_lv = pc->checkskill(sd, HP_MEDITATIO)) > 0) hp += hp * skill2_lv * 2 / 100; - else if( src->type == BL_HOM && (skill2_lv = homun->checkskill(((TBL_HOM*)src), HLIF_BRAIN)) > 0 ) + else if (src->type == BL_HOM && (skill2_lv = homun->checkskill(BL_UCAST(BL_HOM, src), HLIF_BRAIN)) > 0) hp += hp * skill2_lv * 2 / 100; break; } @@ -1765,8 +1766,8 @@ int skill_counter_additional_effect(struct block_list* src, struct block_list *b break; case HFLI_SBR44: // [orn] case HVAN_EXPLOSION: - if(src->type == BL_HOM){ - TBL_HOM *hd = (TBL_HOM*)src; + if (src->type == BL_HOM) { + struct homun_data *hd = BL_UCAST(BL_HOM, src); hd->homunculus.intimacy = 200; if (hd->master) clif->send_homdata(hd->master,SP_INTIMATE,hd->homunculus.intimacy/100); @@ -1957,8 +1958,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in const enum sc_type scdef[4] = {SC_PROTECTWEAPON, SC_PROTECTARMOR, SC_PROTECTSHIELD, SC_PROTECTHELM}; struct status_change *sc = status->get_sc(bl); int i; - TBL_PC *sd; - sd = BL_CAST(BL_PC, bl); + struct map_session_data *sd = BL_CAST(BL_PC, bl); if (sc && !sc->count) sc = NULL; @@ -2074,9 +2074,9 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int - if 'flag&0x1', position update packets must not be sent. - if 'flag&0x2', skill blown ignores players' special_state.no_knockback -------------------------------------------------------------------------*/ -int skill_blown(struct block_list* src, struct block_list* target, int count, int8 dir, int flag) { +int skill_blown(struct block_list* src, struct block_list* target, int count, int8 dir, int flag) +{ int dx = 0, dy = 0; - struct skill_unit* su = NULL; nullpo_ret(src); @@ -2086,26 +2086,30 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in return 0; // Actual knockback distance is 0. switch (target->type) { - case BL_MOB: { - struct mob_data* md = BL_CAST(BL_MOB, target); - if (md->class_ == MOBID_EMPELIUM) - return 0; - if(src != target && is_boss(target)) // Bosses can't be knocked-back - return 0; - } + case BL_MOB: + { + const struct mob_data *md = BL_UCCAST(BL_MOB, target); + if (md->class_ == MOBID_EMPELIUM) + return 0; + if (src != target && is_boss(target)) // Bosses can't be knocked-back + return 0; + } break; - case BL_PC: { - struct map_session_data *sd = BL_CAST(BL_PC, target); - if( sd->sc.data[SC_BASILICA] && sd->sc.data[SC_BASILICA]->val4 == sd->bl.id && !is_boss(src)) - return 0; // Basilica caster can't be knocked-back by normal monsters. - if( !(flag&0x2) && src != target && sd->special_state.no_knockback ) - return 0; - } + case BL_PC: + { + struct map_session_data *sd = BL_UCAST(BL_PC, target); + if (sd->sc.data[SC_BASILICA] && sd->sc.data[SC_BASILICA]->val4 == sd->bl.id && !is_boss(src)) + return 0; // Basilica caster can't be knocked-back by normal monsters. + if (!(flag&0x2) && src != target && sd->special_state.no_knockback) + return 0; + } break; case BL_SKILL: - su = (struct skill_unit *)target; - if( su->group && (su->group->unit_id == UNT_ANKLESNARE || su->group->unit_id == UNT_REVERBERATION)) + { + struct skill_unit *su = BL_UCAST(BL_SKILL, target); + if (su->group && (su->group->unit_id == UNT_ANKLESNARE || su->group->unit_id == UNT_REVERBERATION)) return 0; // ankle snare cannot be knocked back + } break; } @@ -2232,8 +2236,8 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr dmg = battle->calc_attack(attack_type,src,bl,skill_id,skill_lv,flag&0xFFF); //Skotlex: Adjusted to the new system - if( src->type == BL_PET ) { // [Valaris] - struct pet_data *pd = (TBL_PET*)src; + if (src->type == BL_PET) { // [Valaris] + struct pet_data *pd = BL_UCAST(BL_PET, src); if (pd->a_skill && pd->a_skill->div_ && pd->a_skill->id == skill_id) { int element = skill->get_ele(skill_id, skill_lv); /*if (skill_id == -1) Does it ever worked? @@ -2770,12 +2774,13 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr if( sc && sc->data[SC_DEVOTION] && skill_id != PA_PRESSURE ) { struct status_change_entry *sce = sc->data[SC_DEVOTION]; struct block_list *d_bl = map->id2bl(sce->val1); + struct mercenary_data *d_md = BL_CAST(BL_MER, d_bl); + struct map_session_data *d_sd = BL_CAST(BL_PC, d_bl); - if( d_bl && ( - (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == bl->id) || - (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == bl->id) - ) && check_distance_bl(bl, d_bl, sce->val3) ) - { + if (d_bl != NULL + && ((d_md != NULL && d_md->master && d_md->master->bl.id == bl->id) || (d_sd != NULL && d_sd->devotion[sce->val2] == bl->id)) + && check_distance_bl(bl, d_bl, sce->val3) + ) { if(!rmdamage){ clif->damage(d_bl,d_bl, 0, 0, damage, 0, BDT_NORMAL, 0); status_fix_damage(NULL,d_bl, damage, 0); @@ -2876,8 +2881,8 @@ void skill_attack_combo2_unknown(int *attack_type, struct block_list* src, struc void skill_attack_display_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage) { if (*flag & SD_ANIMATION && dmg->div_ < 2) //Disabling skill animation doesn't works on multi-hit. *type = BDT_SPLASH; - if (bl->type == BL_SKILL ) { - TBL_SKILL *su = (TBL_SKILL*)bl; + if (bl->type == BL_SKILL) { + struct skill_unit *su = BL_UCAST(BL_SKILL, bl); if (su->group && skill->get_inf2(su->group->skill_id) & INF2_TRAP) // show damage on trap targets clif->skill_damage(src, bl, *tick, dmg->amotion, dmg->dmotion, *damage, dmg->div_, *skill_id, (*flag & SD_LEVEL) ? -1 : *skill_lv, BDT_SPLASH); } @@ -2895,7 +2900,7 @@ int skill_attack_dir_unknown(int *attack_type, struct block_list* src, struct bl void skill_attack_blow_unknown(int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir) { skill->blown(dsrc, bl, dmg->blewcount, *dir, 0x0); if (!dmg->blewcount && bl->type == BL_SKILL && *damage > 0){ - TBL_SKILL *su = (TBL_SKILL*)bl; + struct skill_unit *su = BL_UCAST(BL_SKILL, bl); if (su->group && su->group->skill_id == HT_BLASTMINE) skill->blown(src, bl, 3, -1, 0); } @@ -2938,15 +2943,18 @@ int skill_area_sub(struct block_list *bl, va_list ap) { return 0; } -int skill_check_unit_range_sub (struct block_list *bl, va_list ap) { - struct skill_unit *su; +int skill_check_unit_range_sub(struct block_list *bl, va_list ap) +{ + const struct skill_unit *su = NULL; uint16 skill_id,g_skill_id; - su = (struct skill_unit *)bl; + nullpo_ret(bl); - if(bl->prev == NULL || bl->type != BL_SKILL) + if (bl->type != BL_SKILL || bl->prev == NULL) return 0; + su = BL_UCCAST(BL_SKILL, bl); + if(!su->alive) return 0; @@ -3032,7 +3040,7 @@ int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) { if( skill_id == HP_BASILICA && bl->type == BL_PC ) return 0; - if (skill_id == AM_DEMONSTRATION && bl->type == BL_MOB && ((TBL_MOB*)bl)->class_ == MOBID_EMPELIUM) + if (skill_id == AM_DEMONSTRATION && bl->type == BL_MOB && BL_UCCAST(BL_MOB, bl)->class_ == MOBID_EMPELIUM) return 0; //Allow casting Bomb/Demonstration Right under emperium [Skotlex] return 1; } @@ -3092,8 +3100,8 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, nullpo_ret(bl); switch( bl->type ) { - case BL_HOM: sd = ((TBL_HOM*)bl)->master; break; - case BL_MER: sd = ((TBL_MER*)bl)->master; break; + case BL_HOM: sd = BL_UCAST(BL_HOM, bl)->master; break; + case BL_MER: sd = BL_UCAST(BL_MER, bl)->master; break; } st = status->get_status_data(bl); @@ -3323,9 +3331,9 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) { break; case LG_MOONSLASHER: case SR_WINDMILL: - if( target->type == BL_PC ) { - struct map_session_data *tsd = NULL; - if( (tsd = ((TBL_PC*)target)) && !pc_issit(tsd) ) { + if (target->type == BL_PC) { + struct map_session_data *tsd = BL_UCAST(BL_PC, target); + if (!pc_issit(tsd)) { pc_setsit(tsd); skill->sit(tsd,1); clif->sitting(&tsd->bl); @@ -3344,11 +3352,12 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) { case SR_FALLENEMPIRE: case SR_TIGERCANNON: case SR_SKYNETBLOW: - if( src->type == BL_PC ) { + if (src->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, src); if( distance_xy(src->x, src->y, target->x, target->y) >= 3 ) break; - skill->castend_damage_id(src, target, skl->skill_id, pc->checkskill(((TBL_PC*)src), skl->skill_id), tick, 0); + skill->castend_damage_id(src, target, skl->skill_id, pc->checkskill(sd, skl->skill_id), tick, 0); } break; case SC_ESCAPE: @@ -3359,12 +3368,14 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) { } break; case RK_HUNDREDSPEAR: - if(src->type == BL_PC) { - int skill_lv = pc->checkskill((TBL_PC *)src, KN_SPEARBOOMERANG); - if(skill_lv > 0) + if (src->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, src); + int skill_lv = pc->checkskill(sd, KN_SPEARBOOMERANG); + if (skill_lv > 0) skill->attack(BF_WEAPON, src, src, target, KN_SPEARBOOMERANG, skill_lv, tick, skl->flag); - } else + } else { skill->attack(BF_WEAPON, src, src, target, KN_SPEARBOOMERANG, 1, tick, skl->flag); + } break; case CH_PALMSTRIKE: { @@ -3506,11 +3517,16 @@ bool skill_cleartimerskill_exception(int skill_id) return false; } -int skill_activate_reverberation(struct block_list *bl, va_list ap) { - struct skill_unit *su = (TBL_SKILL*)bl; - struct skill_unit_group *sg; - if( bl->type != BL_SKILL ) +int skill_activate_reverberation(struct block_list *bl, va_list ap) +{ + struct skill_unit *su = NULL; + struct skill_unit_group *sg = NULL; + + nullpo_ret(bl); + if (bl->type != BL_SKILL) return 0; + su = BL_UCAST(BL_SKILL, bl); + if( su->alive && (sg = su->group) != NULL && sg->skill_id == WM_REVERBERATION && sg->unit_id == UNT_REVERBERATION ) { int64 tick = timer->gettick(); clif->changetraplook(bl,UNT_USED_TRAPS); @@ -3521,8 +3537,14 @@ int skill_activate_reverberation(struct block_list *bl, va_list ap) { return 0; } -int skill_reveal_trap (struct block_list *bl, va_list ap) { - TBL_SKILL *su = (TBL_SKILL*)bl; +int skill_reveal_trap(struct block_list *bl, va_list ap) +{ + struct skill_unit *su = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_SKILL); + su = BL_UCAST(BL_SKILL, bl); + if (su->alive && su->group && skill->get_inf2(su->group->skill_id)&INF2_TRAP) { //Reveal trap. //Change look is not good enough, the client ignores it as an actual trap still. [Skotlex] //clif->changetraplook(bl, su->group->unit_id); @@ -5000,7 +5022,7 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data) { } if (ud->skill_id >= SL_SKE && ud->skill_id <= SL_SKA && target->type == BL_MOB) { - if (((TBL_MOB*)target)->class_ == MOBID_EMPELIUM) + if (BL_UCCAST(BL_MOB, target)->class_ == MOBID_EMPELIUM) break; } else if (inf && battle->check_target(src, target, inf) <= 0) { if (sd) clif->skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0); @@ -5560,30 +5582,31 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin abra_skill_lv = min(skill_lv, skill->get_max(abra_skill_id)); clif->skill_nodamage (src, bl, skill_id, skill_lv, 1); - if( sd ) - {// player-casted + if (sd) { + // player-casted sd->state.abra_flag = 1; sd->skillitem = abra_skill_id; sd->skillitemlv = abra_skill_lv; clif->item_skill(sd, abra_skill_id, abra_skill_lv); - } - else - {// mob-casted + } else { + // mob-casted struct unit_data *ud = unit->bl2ud(src); int inf = skill->get_inf(abra_skill_id); - if (!ud) break; + if (ud == NULL) + break; if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) { - if (src->type == BL_PET) - bl = (struct block_list*)((TBL_PET*)src)->msd; - if (!bl) bl = src; - unit->skilluse_id(src, bl->id, abra_skill_id, abra_skill_lv); + int id = src->id; + struct pet_data *pd = BL_CAST(BL_PET, src); + if (pd != NULL && pd->msd != NULL) + id = pd->msd->bl.id; + unit->skilluse_id(src, id, abra_skill_id, abra_skill_lv); } else { //Assume offensive skills int target_id = 0; if (ud->target) target_id = ud->target; else switch (src->type) { - case BL_MOB: target_id = ((TBL_MOB*)src)->target_id; break; - case BL_PET: target_id = ((TBL_PET*)src)->target_id; break; + case BL_MOB: target_id = BL_UCAST(BL_MOB, src)->target_id; break; + case BL_PET: target_id = BL_UCAST(BL_PET, src)->target_id; break; } if (!target_id) break; @@ -5817,7 +5840,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin if( sd ) skill->blockpc_start(sd, skill_id, skill->get_time(skill_id, skill_lv)); else if( bl->type == BL_MER ) - skill->blockmerc_start((TBL_MER*)bl, skill_id, skill->get_time(skill_id, skill_lv)); + skill->blockmerc_start(BL_UCAST(BL_MER, bl), skill_id, skill->get_time(skill_id, skill_lv)); break; case TK_JUMPKICK: @@ -6733,7 +6756,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin case AL_HOLYWATER: if(sd) { - if (skill->produce_mix(sd, skill_id, 523, 0, 0, 0, 1)) + if (skill->produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1)) clif->skill_nodamage(src,bl,skill_id,skill_lv,1); else clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -6762,7 +6785,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin case ASC_CDP: if(sd) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - skill->produce_mix(sd, skill_id, 678, 0, 0, 0, 1); //Produce a Deadly Poison Bottle. + skill->produce_mix(sd, skill_id, ITEMID_POISON_BOTTLE, 0, 0, 0, 1); //Produce a Deadly Poison Bottle. } break; @@ -7501,10 +7524,10 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin break; case HT_SPRINGTRAP: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - { - struct skill_unit *su=NULL; - if (bl->type==BL_SKILL && (su=(struct skill_unit *)bl) != NULL && su->group != NULL) { - switch(su->group->unit_id){ + if (bl->type == BL_SKILL) { + struct skill_unit *su = BL_UCAST(BL_SKILL, bl); + if (su->group != NULL) { + switch (su->group->unit_id) { case UNT_ANKLESNARE: if (su->group->val2 != 0) // if it is already trapping something don't spring it, @@ -9002,8 +9025,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin if( flag&1 ) { if( is_boss(bl) ) break; if( sc_start2(src,bl, type, 100, skill_lv, src->id, skill->get_time(skill_id, skill_lv))) { - if( bl->type == BL_MOB ) - mob->unlocktarget((TBL_MOB*)bl,timer->gettick()); + if (bl->type == BL_MOB) + mob->unlocktarget(BL_UCAST(BL_MOB, bl), timer->gettick()); unit->stop_attack(bl); clif->bladestop(src, bl->id, 1); map->freeblock_unlock(); @@ -9251,7 +9274,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin improv_skill_lv = 4 + skill_lv; clif->skill_nodamage (src, bl, skill_id, skill_lv, 1); - if( sd ) { + if (sd == NULL) { sd->state.abra_flag = 2; sd->skillitem = improv_skill_id; sd->skillitemlv = improv_skill_lv; @@ -9259,19 +9282,23 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin } else { struct unit_data *ud = unit->bl2ud(src); int inf = skill->get_inf(improv_skill_id); - if (!ud) break; + if (ud == NULL) + break; if (inf&INF_SELF_SKILL || inf&INF_SUPPORT_SKILL) { - if (src->type == BL_PET) - bl = (struct block_list*)((TBL_PET*)src)->msd; - if (!bl) bl = src; - unit->skilluse_id(src, bl->id, improv_skill_id, improv_skill_lv); + int id = src->id; + struct pet_data *pd = BL_CAST(BL_PET, src); + if (pd != NULL && pd->msd != NULL) + id = pd->msd->bl.id; + unit->skilluse_id(src, id, improv_skill_id, improv_skill_lv); } else { int target_id = 0; - if (ud->target) + if (ud->target) { target_id = ud->target; - else switch (src->type) { - case BL_MOB: target_id = ((TBL_MOB*)src)->target_id; break; - case BL_PET: target_id = ((TBL_PET*)src)->target_id; break; + } else { + switch (src->type) { + case BL_MOB: target_id = BL_UCAST(BL_MOB, src)->target_id; break; + case BL_PET: target_id = BL_UCAST(BL_PET, src)->target_id; break; + } } if (!target_id) break; @@ -10049,10 +10076,16 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) return 0; } -static int check_npc_chaospanic(struct block_list* bl, va_list args) { - TBL_NPC* nd = (TBL_NPC*)bl; - if( nd->option&(OPTION_HIDE|OPTION_INVISIBLE) || nd->class_ != 45 ) +static int check_npc_chaospanic(struct block_list *bl, va_list args) +{ + const struct npc_data *nd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_NPC); + nd = BL_UCCAST(BL_NPC, bl); + + if (nd->option&(OPTION_HIDE|OPTION_INVISIBLE) || nd->class_ != WARP_CLASS) return 0; return 1; @@ -10648,9 +10681,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } else { int mob_id = skill_lv < 2 ? MOBID_BLACK_MUSHROOM + rnd()%2 : MOBID_RED_PLANT + rnd()%6; - TBL_MOB* md = mob->once_spawn_sub(src, src->m, x, y, "--ja--", mob_id, "", SZ_SMALL, AI_NONE); + struct mob_data *md = mob->once_spawn_sub(src, src->m, x, y, "--ja--", mob_id, "", SZ_SMALL, AI_NONE); int i; - if (!md) break; + if (md == NULL) + break; if ((i = skill->get_time(skill_id, skill_lv)) > 0) { if( md->deletetimer != INVALID_TIMER ) @@ -10968,11 +11002,16 @@ bool skill_castend_pos2_unknown(struct block_list* src, int *x, int *y, uint16 * } /// transforms 'target' skill unit into dissonance (if conditions are met) -int skill_dance_overlap_sub(struct block_list* bl, va_list ap) { - struct skill_unit* target = (struct skill_unit*)bl; - struct skill_unit* src = va_arg(ap, struct skill_unit*); +int skill_dance_overlap_sub(struct block_list *bl, va_list ap) +{ + struct skill_unit *target = NULL; + struct skill_unit *src = va_arg(ap, struct skill_unit*); int flag = va_arg(ap, int); + nullpo_ret(bl); + Assert_ret(bl->type == BL_SKILL); + target = BL_UCAST(BL_SKILL, bl); + if (src == target) return 0; if (!target->group || !(target->group->state.song_dance&0x1)) @@ -11133,10 +11172,13 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_ limit=2000; } else { // previous implementation (not used anymore) //Warp Portal morphing to active mode, extract relevant data from src. [Skotlex] - if( src->type != BL_SKILL ) return NULL; - group = ((TBL_SKILL*)src)->group; + struct skill_unit *su = BL_CAST(BL_SKILL, src); + if (su == NULL) + return NULL; + group = su->group; src = map->id2bl(group->src_id); - if( !src ) return NULL; + if (src == NULL) + return NULL; val2 = group->val2; //Copy the (x,y) position you warp to val3 = group->val3; //as well as the mapindex to warp to. } @@ -11666,11 +11708,9 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick case UNT_WARP_WAITING: { int working = sg->val1&0xffff; - if(bl->type==BL_PC && !working){ - struct map_session_data *sd = (struct map_session_data *)bl; - if((!sd->chatID || battle_config.chat_warpportal) - && sd->ud.to_x == src->bl.x && sd->ud.to_y == src->bl.y) - { + if (bl->type == BL_PC && !working) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + if ((!sd->chatID || battle_config.chat_warpportal) && sd->ud.to_x == src->bl.x && sd->ud.to_y == src->bl.y) { int x = sg->val2>>16; int y = sg->val2&0xffff; int count = sg->val1>>16; @@ -11827,7 +11867,7 @@ void skill_unit_onplace_unknown(struct skill_unit *src, struct block_list *bl, i int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int64 tick) { struct skill_unit_group *sg; struct block_list *ss; - TBL_PC* tsd; + struct map_session_data *tsd; struct status_data *tstatus, *bst; struct status_change *tsc, *ssc; struct skill_unit_group_tickset *ts; @@ -12416,7 +12456,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 break; case UNT_DEMONIC_FIRE: { - TBL_PC* sd = BL_CAST(BL_PC, ss); + struct map_session_data *sd = BL_CAST(BL_PC, ss); switch( sg->val2 ) { case 1: case 2: @@ -12559,7 +12599,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 } if (bl->type == BL_MOB && ss != bl) - mob->skill_event((TBL_MOB*)bl, ss, tick, MSC_SKILLUSED|(skill_id<<16)); + mob->skill_event(BL_UCAST(BL_MOB, bl), ss, tick, MSC_SKILLUSED|(skill_id<<16)); return skill_id; } @@ -12816,21 +12856,21 @@ int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int64 da /*========================================== * *------------------------------------------*/ -int skill_check_condition_char_sub (struct block_list *bl, va_list ap) { - int *c, skill_id; - struct block_list *src; - struct map_session_data *sd; - struct map_session_data *tsd; - int *p_sd; //Contains the list of characters found. +int skill_check_condition_char_sub (struct block_list *bl, va_list ap) +{ + struct map_session_data *tsd = NULL; + struct block_list *src = va_arg(ap, struct block_list *); + struct map_session_data *sd = NULL; + int *c = va_arg(ap, int *); + int *p_sd = va_arg(ap, int *); //Contains the list of characters found. + int skill_id = va_arg(ap, int); nullpo_ret(bl); - nullpo_ret(tsd=(struct map_session_data*)bl); - nullpo_ret(src=va_arg(ap,struct block_list *)); - nullpo_ret(sd=(struct map_session_data*)src); - - c=va_arg(ap,int *); - p_sd = va_arg(ap, int *); - skill_id = va_arg(ap,int); + nullpo_ret(src); + Assert_ret(bl->type == BL_PC); + Assert_ret(src->type == BL_PC); + tsd = BL_UCAST(BL_PC, bl); + sd = BL_UCAST(BL_PC, src); if ( ((skill_id != PR_BENEDICTIO && *c >=1) || *c >=2) && !(skill->get_inf2(skill_id)&INF2_CHORUS_SKILL) ) return 0; //Partner found for ensembles, or the two companions for Benedictio. [Skotlex] @@ -12958,15 +12998,18 @@ int skill_check_pc_partner (struct map_session_data *sd, uint16 skill_id, uint16 /*========================================== * *------------------------------------------*/ -int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap) { - int *c,src_id,mob_class,skill_id; - struct mob_data *md; +int skill_check_condition_mob_master_sub (struct block_list *bl, va_list ap) +{ + const struct mob_data *md = NULL; + int src_id = va_arg(ap, int); + int mob_class = va_arg(ap, int); + int skill_id = va_arg(ap, int); + int *c = va_arg(ap, int *); + + nullpo_ret(bl); + Assert_ret(bl->type == BL_MOB); + md = BL_UCCAST(BL_MOB, bl); - md=(struct mob_data*)bl; - src_id=va_arg(ap,int); - mob_class=va_arg(ap,int); - skill_id=va_arg(ap,int); - c=va_arg(ap,int *); if( md->master_id != src_id || md->special_state.ai != (skill_id == AM_SPHEREMINE?AI_SPHERE:skill_id == KO_ZANZOU?AI_ZANZOU:skill_id == MH_SUMMON_LEGION?AI_ATTACK:AI_FLORA) ) return 0; //Non alchemist summoned mobs have nothing to do here. @@ -13721,8 +13764,10 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id } break; case NC_PILEBUNKER: - if ( sd->equip_index[EQI_HAND_R] < 0 || sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid != ITEMID_PILEBUNCKER ) { - clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); + if (sd->equip_index[EQI_HAND_R] < 0 + || !itemid_is_pilebunker(sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid) + ) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0); return 0; } break; @@ -14084,7 +14129,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, map->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_SILVERSNIPER, skill_id, &c); } if( c >= maxcount ) { - clif->skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0); + clif->skill_fail(sd , skill_id, USESKILL_FAIL_SUMMON, 0); return 0; } } @@ -15309,10 +15354,14 @@ int skill_autospell (struct map_session_data *sd, uint16 skill_id) /*========================================== * Sitting skills functions. *------------------------------------------*/ -int skill_sit_count (struct block_list *bl, va_list ap) { - struct map_session_data *sd; - int type =va_arg(ap,int); - sd=(struct map_session_data*)bl; +int skill_sit_count(struct block_list *bl, va_list ap) +{ + int type = va_arg(ap, int); + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); if(!pc_issit(sd)) return 0; @@ -15326,11 +15375,14 @@ int skill_sit_count (struct block_list *bl, va_list ap) { return 0; } -int skill_sit_in (struct block_list *bl, va_list ap) { - struct map_session_data *sd; - int type =va_arg(ap,int); +int skill_sit_in(struct block_list *bl, va_list ap) +{ + int type = va_arg(ap, int); + struct map_session_data *sd = NULL; - sd=(struct map_session_data*)bl; + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); if(!pc_issit(sd)) return 0; @@ -15347,10 +15399,15 @@ int skill_sit_in (struct block_list *bl, va_list ap) { return 0; } -int skill_sit_out (struct block_list *bl, va_list ap) { - struct map_session_data *sd; - int type =va_arg(ap,int); - sd=(struct map_session_data*)bl; +int skill_sit_out(struct block_list *bl, va_list ap) +{ + int type = va_arg(ap, int); + struct map_session_data *sd = NULL; + + nullpo_ret(bl); + Assert_ret(bl->type == BL_PC); + sd = BL_UCAST(BL_PC, bl); + if(sd->state.gangsterparadise && type&1) sd->state.gangsterparadise=0; if(sd->state.rest && type&2) { @@ -15401,7 +15458,8 @@ int skill_sit (struct map_session_data *sd, int type) /*========================================== * *------------------------------------------*/ -int skill_frostjoke_scream(struct block_list *bl, va_list ap) { +int skill_frostjoke_scream(struct block_list *bl, va_list ap) +{ struct block_list *src; uint16 skill_id,skill_lv; int64 tick; @@ -15417,9 +15475,9 @@ int skill_frostjoke_scream(struct block_list *bl, va_list ap) { if (src == bl || status->isdead(bl)) return 0; if (bl->type == BL_PC) { - struct map_session_data *sd = (struct map_session_data *)bl; - if (sd && (pc_isinvisible(sd) || pc_ismadogear(sd))) - return 0;//Frost Joke / Scream cannot target invisible or MADO Gear characters [Ind] + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); + if (pc_isinvisible(sd) || pc_ismadogear(sd)) + return 0; //Frost Joke / Scream cannot target invisible or MADO Gear characters [Ind] } //It has been reported that Scream/Joke works the same regardless of woe-setting. [Skotlex] if(battle->check_target(src,bl,BCT_ENEMY) > 0) @@ -15551,15 +15609,15 @@ struct skill_unit_group *skill_locate_element_field(struct block_list *bl) { } // for graffiti cleaner [Valaris] -int skill_graffitiremover (struct block_list *bl, va_list ap) { - struct skill_unit *su=NULL; +int skill_graffitiremover(struct block_list *bl, va_list ap) +{ + struct skill_unit *su = NULL; nullpo_ret(bl); - if(bl->type != BL_SKILL) + if (bl->type != BL_SKILL) return 0; - - su = ((struct skill_unit *)bl); + su = BL_UCAST(BL_SKILL, bl); if((su->group) && (su->group->unit_id == UNT_GRAFFITI)) skill->delunit(su); @@ -15567,30 +15625,35 @@ int skill_graffitiremover (struct block_list *bl, va_list ap) { return 0; } -int skill_greed (struct block_list *bl, va_list ap) { - struct block_list *src; +int skill_greed(struct block_list *bl, va_list ap) +{ + struct block_list *src = va_arg(ap, struct block_list *); nullpo_ret(bl); - nullpo_ret(src = va_arg(ap, struct block_list *)); + nullpo_ret(src); - if(src->type == BL_PC && bl->type==BL_ITEM ) - pc->takeitem(((TBL_PC*)src), ((TBL_ITEM*)bl)); + if (src->type == BL_PC && bl->type == BL_ITEM) { + struct map_session_data *sd = BL_UCAST(BL_PC, src); + struct flooritem_data *fitem = BL_UCAST(BL_ITEM, bl); + pc->takeitem(sd, fitem); + } return 0; } + //For Ranger's Detonator [Jobbie/3CeAM] -int skill_detonator(struct block_list *bl, va_list ap) { - struct skill_unit *su=NULL; - struct block_list *src; +int skill_detonator(struct block_list *bl, va_list ap) +{ + struct skill_unit *su = NULL; + struct block_list *src = va_arg(ap,struct block_list *); int unit_id; nullpo_ret(bl); - src = va_arg(ap,struct block_list *); + nullpo_ret(src); - if( bl->type != BL_SKILL ) + if (bl->type != BL_SKILL) return 0; - - su = (struct skill_unit *)bl; + su = BL_UCAST(BL_SKILL, bl); if( !su->group || su->group->src_id != src->id ) return 0; @@ -15630,16 +15693,21 @@ int skill_detonator(struct block_list *bl, va_list ap) { /*========================================== * *------------------------------------------*/ -int skill_cell_overlap(struct block_list *bl, va_list ap) { +int skill_cell_overlap(struct block_list *bl, va_list ap) +{ uint16 skill_id; int *alive; - struct skill_unit *su; + struct skill_unit *su = NULL; skill_id = va_arg(ap,int); alive = va_arg(ap,int *); - su = (struct skill_unit *)bl; - if( su == NULL || su->group == NULL || (*alive) == 0 ) + nullpo_ret(bl); + Assert_ret(bl->type == BL_SKILL); + nullpo_ret(alive); + su = BL_UCAST(BL_SKILL, bl); + + if (bl->type != BL_SKILL || su->group == NULL || (*alive) == 0) return 0; if( su->group->state.guildaura ) /* guild auras are not canceled! */ @@ -15723,38 +15791,44 @@ int skill_cell_overlap(struct block_list *bl, va_list ap) { /*========================================== * *------------------------------------------*/ -int skill_chastle_mob_changetarget(struct block_list *bl,va_list ap) +int skill_chastle_mob_changetarget(struct block_list *bl, va_list ap) { - struct mob_data* md; - struct unit_data*ud = unit->bl2ud(bl); - struct block_list *from_bl; - struct block_list *to_bl; - md = (struct mob_data*)bl; - from_bl = va_arg(ap,struct block_list *); - to_bl = va_arg(ap,struct block_list *); - - if(ud && ud->target == from_bl->id) + struct unit_data *ud = unit->bl2ud(bl); + struct block_list *from_bl = va_arg(ap, struct block_list *); + struct block_list *to_bl = va_arg(ap, struct block_list *); + + nullpo_ret(bl); + nullpo_ret(from_bl); + nullpo_ret(to_bl); + + if (ud != NULL && ud->target == from_bl->id) ud->target = to_bl->id; - if(md->bl.type == BL_MOB && md->target_id == from_bl->id) - md->target_id = to_bl->id; + if (bl->type == BL_MOB) { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (md->target_id == from_bl->id) + md->target_id = to_bl->id; + } return 0; } /*========================================== * *------------------------------------------*/ -int skill_trap_splash(struct block_list *bl, va_list ap) { - struct block_list *src; - int64 tick; - struct skill_unit *src_su; +int skill_trap_splash(struct block_list *bl, va_list ap) +{ + struct block_list *src = va_arg(ap, struct block_list *); + int64 tick = va_arg(ap, int64); + struct skill_unit *src_su = NULL; struct skill_unit_group *sg; struct block_list *ss; - src = va_arg(ap,struct block_list *); - src_su = (struct skill_unit *)src; - tick = va_arg(ap,int64); - if( !src_su->alive || bl->prev == NULL ) + nullpo_ret(bl); + nullpo_ret(src); + Assert_ret(src->type == BL_SKILL); + src_su = BL_UCAST(BL_SKILL, src); + + if (!src_su->alive || bl->prev == NULL) return 0; nullpo_ret(sg = src_su->group); @@ -15807,21 +15881,24 @@ int skill_trap_splash(struct block_list *bl, va_list ap) { break; case UNT_FIRINGTRAP: case UNT_ICEBOUNDTRAP: - if( src->id == bl->id ) break; - if( bl->type == BL_SKILL ){ - struct skill_unit *su = (struct skill_unit *)bl; - if( su->group->unit_id == UNT_USED_TRAPS ) + if (src->id == bl->id) + break; + if (bl->type == BL_SKILL) { + struct skill_unit *su = BL_UCAST(BL_SKILL, bl); + if (su->group->unit_id == UNT_USED_TRAPS) break; } + /* Fall through */ case UNT_CLUSTERBOMB: if( ss != bl ) skill->attack(BF_MISC,ss,src,bl,sg->skill_id,sg->skill_lv,tick,sg->val1|SD_LEVEL); break; case UNT_CLAYMORETRAP: - if( src->id == bl->id ) break; - if( bl->type == BL_SKILL ){ - struct skill_unit *su = (struct skill_unit *)bl; - switch( su->group->unit_id ){ + if (src->id == bl->id) + break; + if (bl->type == BL_SKILL) { + struct skill_unit *su = BL_UCAST(BL_SKILL, bl); + switch (su->group->unit_id) { case UNT_CLAYMORETRAP: case UNT_LANDMINE: case UNT_BLASTMINE: @@ -15837,6 +15914,7 @@ int skill_trap_splash(struct block_list *bl, va_list ap) { } break; } + /* Fall through */ default: skill->attack(skill->get_type(sg->skill_id),ss,src,bl,sg->skill_id,sg->skill_lv,tick,0); break; @@ -15918,8 +15996,9 @@ bool skill_can_cloak(struct map_session_data *sd) { * Verifies if an user can still be cloaked (AS_CLOAKING) * Is called via map->foreachinrange when any kind of wall disapears **/ -int skill_check_cloaking_end(struct block_list *bl, va_list ap) { - TBL_PC *sd = BL_CAST(BL_PC, bl); +int skill_check_cloaking_end(struct block_list *bl, va_list ap) +{ + struct map_session_data *sd = BL_CAST(BL_PC, bl); if (sd && sd->sc.data[SC_CLOAKING] && !skill->can_cloak(sd)) status_change_end(bl, SC_CLOAKING, INVALID_TIMER); @@ -15964,6 +16043,7 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit) if (sc && sc->data[SC__SHADOWFORM] && damage) { struct block_list *src = map->id2bl(sc->data[SC__SHADOWFORM]->val2); + struct map_session_data *sd = BL_CAST(BL_PC, src); if( !src || src->m != bl->m ) { status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER); @@ -15971,8 +16051,8 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit) } if( src && (status->isdead(src) || !battle->check_target(bl,src,BCT_ENEMY)) ){ - if( src->type == BL_PC ) - ((TBL_PC*)src)->shadowform_id = 0; + if (sd != NULL) + sd->shadowform_id = 0; status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER); return false; } @@ -15982,8 +16062,8 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit) /* because damage can cancel it */ if( sc->data[SC__SHADOWFORM] && (--sc->data[SC__SHADOWFORM]->val3) <= 0 ) { status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER); - if( src->type == BL_PC ) - ((TBL_PC*)src)->shadowform_id = 0; + if (sd != NULL) + sd->shadowform_id = 0; } return true; } @@ -16180,7 +16260,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, group->guild_id = status->get_guild_id(src); group->bg_id = bg->team_get_id(src); group->group_id = skill->get_new_group_id(); - group->unit.data = (struct skill_unit *)aCalloc(count,sizeof(struct skill_unit)); + CREATE(group->unit.data, struct skill_unit, count); group->unit.count = count; group->alive_count = 0; group->val1 = 0; @@ -16207,24 +16287,27 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, /*========================================== * *------------------------------------------*/ -int skill_delunitgroup(struct skill_unit_group *group, const char* file, int line, const char* func) { +int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func) +{ struct block_list* src; struct unit_data *ud; int i,j; + struct map_session_data *sd = NULL; if( group == NULL ) { ShowDebug("skill_delunitgroup: group is NULL (source=%s:%d, %s)! Please report this! (#3504)\n", file, line, func); return 0; } - src=map->id2bl(group->src_id); + src = map->id2bl(group->src_id); ud = unit->bl2ud(src); - if(!src || !ud) { + sd = BL_CAST(BL_PC, src); + if (src == NULL || ud == NULL) { ShowError("skill_delunitgroup: Group's source not found! (src_id: %d skill_id: %d)\n", group->src_id, group->skill_id); return 0; } - if( src->type == BL_PC && !status->isdead(src) && ((TBL_PC*)src)->state.warping && !((TBL_PC*)src)->state.changemap ) { + if (sd != NULL && !status->isdead(src) && sd->state.warping && !sd->state.changemap) { switch( group->skill_id ) { case BA_DISSONANCE: case BA_POEMBRAGI: @@ -16236,7 +16319,7 @@ int skill_delunitgroup(struct skill_unit_group *group, const char* file, int lin case DC_DONTFORGETME: case DC_FORTUNEKISS: case DC_SERVICEFORYOU: - skill->usave_add(((TBL_PC*)src), group->skill_id, group->skill_lv); + skill->usave_add(sd, group->skill_id, group->skill_lv); break; } } @@ -16301,8 +16384,8 @@ int skill_delunitgroup(struct skill_unit_group *group, const char* file, int lin break; } - if (src->type==BL_PC && group->state.ammo_consume) - battle->consume_ammo((TBL_PC*)src, group->skill_id, group->skill_lv); + if (sd != NULL && group->state.ammo_consume) + battle->consume_ammo(sd, group->skill_id, group->skill_lv); group->alive_count=0; @@ -16646,9 +16729,10 @@ int skill_unit_timer(int tid, int64 tick, int id, intptr_t data) { /*========================================== * *------------------------------------------*/ -int skill_unit_move_sub(struct block_list* bl, va_list ap) { - struct skill_unit* su = (struct skill_unit *)bl; - struct skill_unit_group* group = su->group; +int skill_unit_move_sub(struct block_list* bl, va_list ap) +{ + struct skill_unit *su = NULL; + struct skill_unit_group *group = NULL; struct block_list* target = va_arg(ap,struct block_list*); int64 tick = va_arg(ap,int64); @@ -16658,6 +16742,10 @@ int skill_unit_move_sub(struct block_list* bl, va_list ap) { uint16 skill_id; int i; + nullpo_ret(bl); + Assert_ret(bl->type == BL_SKILL); + su = BL_UCAST(BL_SKILL, bl); + group = su->group; nullpo_ret(group); if( !su->alive || target->prev == NULL ) @@ -17607,9 +17695,10 @@ void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) { sc->data[SC_MAGICPOWER]->val4 = 1; status_calc_bl(bl, status->sc2scb_flag(SC_MAGICPOWER)); #ifndef RENEWAL - if(bl->type == BL_PC){// update current display. - clif->updatestatus(((TBL_PC *)bl),SP_MATK1); - clif->updatestatus(((TBL_PC *)bl),SP_MATK2); + if (bl->type == BL_PC) {// update current display. + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + clif->updatestatus(sd, SP_MATK1); + clif->updatestatus(sd, SP_MATK2); } #endif } @@ -17638,21 +17727,21 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid) { sd->menuskill_val = 0; switch (nameid) { - case ITEMID_BOODY_RED: + case ITEMID_SCARLET_POINT: class_ = MOBID_MAGICDECOY_FIRE; break; - case ITEMID_CRYSTAL_BLUE: + case ITEMID_INDIGO_POINT: class_ = MOBID_MAGICDECOY_WATER; break; - case ITEMID_WIND_OF_VERDURE: + case ITEMID_LIME_GREEN_POINT: class_ = MOBID_MAGICDECOY_WIND; break; - case ITEMID_YELLOW_LIVE: + case ITEMID_YELLOW_WISH_POINT: class_ = MOBID_MAGICDECOY_EARTH; break; } - md = mob->once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE); + md = mob->once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE); if( md ) { md->master_id = sd->bl.id; md->special_state.ai = AI_FLORA; @@ -17857,13 +17946,15 @@ int skill_changematerial(struct map_session_data *sd, int n, unsigned short *ite /** * for Royal Guard's LG_TRAMPLE **/ -int skill_destroy_trap(struct block_list *bl, va_list ap) { - struct skill_unit *su = (struct skill_unit *)bl; +int skill_destroy_trap(struct block_list *bl, va_list ap) +{ + struct skill_unit *su = NULL; struct skill_unit_group *sg; - int64 tick; + int64 tick = va_arg(ap, int64); - nullpo_ret(su); - tick = va_arg(ap, int64); + nullpo_ret(bl); + Assert_ret(bl->type == BL_SKILL); + su = BL_UCAST(BL_SKILL, bl); if (su->alive && (sg = su->group) != NULL && skill->get_inf2(sg->skill_id)&INF2_TRAP) { switch( sg->unit_id ) { @@ -18025,11 +18116,14 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick) return 0; } -int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data) { // [orn] - struct homun_data *hd = (TBL_HOM*)map->id2bl(id); +// [orn] +int skill_blockhomun_end(int tid, int64 tick, int id, intptr_t data) +{ + struct homun_data *hd = map->id2hd(id); if (data <= 0 || data >= MAX_SKILL) return 0; - if (hd) hd->blockskill[data] = 0; + if (hd != NULL) + hd->blockskill[data] = 0; return 1; } @@ -18049,11 +18143,14 @@ int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick) { / return timer->add(timer->gettick() + tick, skill->blockhomun_end, hd->bl.id, idx); } -int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data) {// [orn] - struct mercenary_data *md = (TBL_MER*)map->id2bl(id); - if( data <= 0 || data >= MAX_SKILL ) +// [orn] +int skill_blockmerc_end(int tid, int64 tick, int id, intptr_t data) +{ + struct mercenary_data *md = map->id2mc(id); + if (data <= 0 || data >= MAX_SKILL) return 0; - if( md ) md->blockskill[data] = 0; + if (md != NULL) + md->blockskill[data] = 0; return 1; } @@ -19082,29 +19179,31 @@ void skill_readdb(bool minimal) { sv->readdb(map->db_path, "skill_changematerial_db.txt", ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb); } -void skill_reload (void) { +void skill_reload(void) +{ struct s_mapiterator *iter; struct map_session_data *sd; - int i,c,k; + int i, j, k; skill->read_db(false); //[Ind/Hercules] refresh index cache - for(c = 0; c < CLASS_COUNT; c++) { - for( i = 0; i < MAX_SKILL_TREE; i++ ) { - if( pc->skill_tree[c][i].id ) { - pc->skill_tree[c][i].idx = skill->get_index(pc->skill_tree[c][i].id); - for(k = 0; k < MAX_PC_SKILL_REQUIRE; k++) { - if( pc->skill_tree[c][i].need[k].id ) - pc->skill_tree[c][i].need[k].idx = skill->get_index(pc->skill_tree[c][i].need[k].id); - } + for (j = 0; j < CLASS_COUNT; j++) { + for (i = 0; i < MAX_SKILL_TREE; i++) { + struct skill_tree_entry *entry = &pc->skill_tree[j][i]; + if (entry->id == 0) + continue; + entry->idx = skill->get_index(entry->id); + for (k = 0; k < VECTOR_LENGTH(entry->need); k++) { + struct skill_tree_requirement *req = &VECTOR_INDEX(entry->need, k); + req->idx = skill->get_index(req->id); } } } chrif->skillid2idx(0); /* lets update all players skill tree : so that if any skill modes were changed they're properly updated */ iter = mapit_getallusers(); - for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) + for (sd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); sd = BL_UCAST(BL_PC, mapit->next(iter))) clif->skillinfoblock(sd); mapit->free(iter); diff --git a/src/map/status.c b/src/map/status.c index 39329d5bb..c755d8eb0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1310,7 +1310,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, } if (target->type == BL_SKILL) - return skill->unit_ondamaged((struct skill_unit *)target, src, hp, timer->gettick()); + return skill->unit_ondamaged(BL_UCAST(BL_SKILL, target), src, hp, timer->gettick()); st = status->get_status_data(target); if( st == &status->dummy ) @@ -1350,9 +1350,14 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, #ifdef DEVOTION_REFLECT_DAMAGE if (src && (sce = sc->data[SC_DEVOTION]) != NULL) { struct block_list *d_bl = map->id2bl(sce->val1); + struct mercenary_data *d_md = BL_CAST(BL_MER, d_bl); + struct map_session_data *d_sd = BL_CAST(BL_PC, d_bl); - if(d_bl &&((d_bl->type == BL_MER && ((TBL_MER *)d_bl)->master && ((TBL_MER *)d_bl)->master->bl.id == target->id) - || (d_bl->type == BL_PC && ((TBL_PC *)d_bl)->devotion[sce->val2] == target->id)) && check_distance_bl(target, d_bl, sce->val3)) { + if (d_bl != NULL + && ((d_md != NULL && d_md->master != NULL && d_md->master->bl.id == target->id) + || (d_sd != NULL && d_sd->devotion[sce->val2] == target->id)) + && check_distance_bl(target, d_bl, sce->val3) + ) { clif->damage(d_bl, d_bl, 0, 0, hp, 0, BDT_NORMAL, 0); status_fix_damage(NULL, d_bl, hp, 0); return 0; @@ -1412,14 +1417,15 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, } switch (target->type) { - case BL_PC: pc->damage((TBL_PC*)target,src,hp,sp); break; - case BL_MOB: mob->damage((TBL_MOB*)target, src, hp); break; - case BL_HOM: homun->damaged((TBL_HOM*)target); break; - case BL_MER: mercenary->heal((TBL_MER*)target,hp,sp); break; - case BL_ELEM: elemental->heal((TBL_ELEM*)target,hp,sp); break; + case BL_PC: pc->damage(BL_UCAST(BL_PC, target), src, hp, sp); break; + case BL_MOB: mob->damage(BL_UCAST(BL_MOB, target), src, hp); break; + case BL_HOM: homun->damaged(BL_UCAST(BL_HOM, target)); break; + case BL_MER: mercenary->heal(BL_UCAST(BL_MER, target), hp, sp); break; + case BL_ELEM: elemental->heal(BL_UCAST(BL_ELEM, target), hp, sp); break; } - if( src && target->type == BL_PC && (((TBL_PC*)target)->disguise) > 0 ) {// stop walking when attacked in disguise to prevent walk-delay bug + if (src != NULL && target->type == BL_PC && BL_UCAST(BL_PC, target)->disguise > 0) { + // stop walking when attacked in disguise to prevent walk-delay bug unit->stop_walking(target, STOPWALKING_FLAG_FIXPOS); } @@ -1437,11 +1443,11 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, //&2: Also remove object from map. //&4: Also delete object from memory. switch (target->type) { - case BL_PC: flag = pc->dead((TBL_PC*)target,src); break; - case BL_MOB: flag = mob->dead((TBL_MOB*)target, src, (flag&4) ? 3 : 0); break; - case BL_HOM: flag = homun->dead((TBL_HOM*)target); break; - case BL_MER: flag = mercenary->dead((TBL_MER*)target); break; - case BL_ELEM: flag = elemental->dead((TBL_ELEM*)target); break; + case BL_PC: flag = pc->dead(BL_UCAST(BL_PC, target), src); break; + case BL_MOB: flag = mob->dead(BL_UCAST(BL_MOB, target), src, (flag&4) ? 3 : 0); break; + case BL_HOM: flag = homun->dead(BL_UCAST(BL_HOM, target)); break; + case BL_MER: flag = mercenary->dead(BL_UCAST(BL_MER, target)); break; + case BL_ELEM: flag = elemental->dead(BL_UCAST(BL_ELEM, target)); break; default: //Unhandled case, do nothing to object. flag = 0; break; @@ -1481,18 +1487,21 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, sc_start(target,target,status->skill2sc(PR_KYRIE),100,10,time); if( target->type == BL_MOB ) - ((TBL_MOB*)target)->state.rebirth = 1; + BL_UCAST(BL_MOB, target)->state.rebirth = 1; return (int)(hp+sp); } - if (target->type == BL_MOB && sc && sc->data[SC_REBIRTH] && !((TBL_MOB*) target)->state.rebirth) { - // Ensure the monster has not already rebirthed before doing so. - status->revive(target, sc->data[SC_REBIRTH]->val2, 0); - status->change_clear(target,0); - ((TBL_MOB*)target)->state.rebirth = 1; + if (target->type == BL_MOB && sc != NULL && sc->data[SC_REBIRTH] != NULL) { + struct mob_data *t_md = BL_UCAST(BL_MOB, target); + if (!t_md->state.rebirth) { + // Ensure the monster has not already reborn before doing so. + status->revive(target, sc->data[SC_REBIRTH]->val2, 0); + status->change_clear(target,0); + t_md->state.rebirth = 1; - return (int)(hp+sp); + return (int)(hp+sp); + } } status->change_clear(target,0); @@ -1577,11 +1586,11 @@ int status_heal(struct block_list *bl,int64 in_hp,int64 in_sp, int flag) { // send hp update to client switch(bl->type) { - case BL_PC: pc->heal((TBL_PC*)bl,hp,sp,(flag&2) ? 1 : 0); break; - case BL_MOB: mob->heal((TBL_MOB*)bl,hp); break; - case BL_HOM: homun->healed((TBL_HOM*)bl); break; - case BL_MER: mercenary->heal((TBL_MER*)bl,hp,sp); break; - case BL_ELEM: elemental->heal((TBL_ELEM*)bl,hp,sp); break; + case BL_PC: pc->heal(BL_UCAST(BL_PC, bl), hp, sp, (flag&2) ? 1 : 0); break; + case BL_MOB: mob->heal(BL_UCAST(BL_MOB, bl), hp); break; + case BL_HOM: homun->healed(BL_UCAST(BL_HOM, bl)); break; + case BL_MER: mercenary->heal(BL_UCAST(BL_MER, bl), hp, sp); break; + case BL_ELEM: elemental->heal(BL_UCAST(BL_ELEM, bl), hp, sp); break; } return (int)(hp+sp); @@ -1674,9 +1683,9 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per clif->resurrection(bl, 1); switch (bl->type) { - case BL_PC: pc->revive((TBL_PC*)bl, hp, sp); break; - case BL_MOB: mob->revive((TBL_MOB*)bl, hp); break; - case BL_HOM: homun->revive((TBL_HOM*)bl, hp, sp); break; + case BL_PC: pc->revive(BL_UCAST(BL_PC, bl), hp, sp); break; + case BL_MOB: mob->revive(BL_UCAST(BL_MOB, bl), hp); break; + case BL_HOM: homun->revive(BL_UCAST(BL_HOM, bl), hp, sp); break; } return 1; } @@ -1709,9 +1718,9 @@ int status_fixed_revive(struct block_list *bl, unsigned int per_hp, unsigned int if (bl->prev) //Animation only if character is already on a map. clif->resurrection(bl, 1); switch (bl->type) { - case BL_PC: pc->revive((TBL_PC*)bl, hp, sp); break; - case BL_MOB: mob->revive((TBL_MOB*)bl, hp); break; - case BL_HOM: homun->revive((TBL_HOM*)bl, hp, sp); break; + case BL_PC: pc->revive(BL_UCAST(BL_PC, bl), hp, sp); break; + case BL_MOB: mob->revive(BL_UCAST(BL_MOB, bl), hp); break; + case BL_HOM: homun->revive(BL_UCAST(BL_HOM, bl), hp, sp); break; } return 1; } @@ -1731,10 +1740,11 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin struct status_data *st; struct status_change *sc=NULL, *tsc; int hide_flag; + struct map_session_data *sd = BL_CAST(BL_PC, src); st = src ? status->get_status_data(src) : &status->dummy; - if (src && src->type != BL_PC && status->isdead(src)) + if (src != NULL && src->type != BL_PC && status->isdead(src)) return 0; if (!skill_id) { //Normal attack checks. @@ -1749,14 +1759,14 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin } if( skill_id ) { - - if( src && !(src->type == BL_PC && ((TBL_PC*)src)->skillitem)) { // Items that cast skills using 'itemskill' will not be handled by map_zone_db. + if (src != NULL && (sd == NULL || sd->skillitem == 0)) { + // Items that cast skills using 'itemskill' will not be handled by map_zone_db. int i; for(i = 0; i < map->list[src->m].zone->disabled_skills_count; i++) { if( skill_id == map->list[src->m].zone->disabled_skills[i]->nameid && (map->list[src->m].zone->disabled_skills[i]->type&src->type) ) { if (src->type == BL_PC) { - clif->msgtable((TBL_PC*)src, MSG_SKILL_CANT_USE_AREA); // This skill cannot be used within this area + clif->msgtable(sd, MSG_SKILL_CANT_USE_AREA); // This skill cannot be used within this area } else if (src->type == BL_MOB && map->list[src->m].zone->disabled_skills[i]->subtype != MZS_NONE) { if( st->mode&MD_BOSS ) { /* is boss */ if( !( map->list[src->m].zone->disabled_skills[i]->subtype&MZS_BOSS ) ) @@ -1786,9 +1796,10 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin break; case AL_TELEPORT: //Should fail when used on top of Land Protector [Skotlex] - if (src && map->getcell(src->m, src, src->x, src->y, CELL_CHKLANDPROTECTOR) - && !(st->mode&MD_BOSS) - && (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_id)) + if (src != NULL + && map->getcell(src->m, src, src->x, src->y, CELL_CHKLANDPROTECTOR) + && !(st->mode&MD_BOSS) + && (src->type != BL_PC || sd->skillitem != skill_id)) return 0; break; default: @@ -1818,7 +1829,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin struct block_list *winkcharm_target = map->id2bl(sc->data[SC_DC_WINKCHARM]->val2); if (winkcharm_target != NULL) { if (unit->bl2ud(src) && (unit->bl2ud(src))->walktimer == INVALID_TIMER) - unit->walktobl(src, map->id2bl(sc->data[SC_DC_WINKCHARM]->val2), 3, 1); + unit->walktobl(src, winkcharm_target, 3, 1); clif->emotion(src, E_LV); return 0; } else { @@ -1838,9 +1849,9 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin } if (sc->data[SC_DANCING] && flag!=2) { - if( src->type == BL_PC && skill_id >= WA_SWING_DANCE && skill_id <= WM_UNLIMITED_HUMMING_VOICE ) - { // Lvl 5 Lesson or higher allow you use 3rd job skills while dancing.v - if( pc->checkskill((TBL_PC*)src,WM_LESSON) < 5 ) + if (src->type == BL_PC && skill_id >= WA_SWING_DANCE && skill_id <= WM_UNLIMITED_HUMMING_VOICE) { + // Lvl 5 Lesson or higher allow you use 3rd job skills while dancing.v + if (pc->checkskill(sd, WM_LESSON) < 5) return 0; } else if(sc->data[SC_LONGING]) { //Allow everything except dancing/re-dancing. [Skotlex] if (skill_id == BD_ENCORE || @@ -1862,48 +1873,45 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin return 0; //Can't amp out of Wand of Hermode :/ [Skotlex] } - if (skill_id && //Do not block item-casted skills. - (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_id) - ) { + if (skill_id != 0 /* Do not block item-casted skills.*/ && (src->type != BL_PC || sd->skillitem != skill_id)) { //Skills blocked through status changes... - if (!flag && ( //Blocked only from using the skill (stuff like autospell may still go through - sc->data[SC_SILENCE] || - sc->data[SC_STEELBODY] || - sc->data[SC_BERSERK] || - sc->data[SC_OBLIVIONCURSE] || - sc->data[SC_WHITEIMPRISON] || - sc->data[SC__INVISIBILITY] || - (sc->data[SC_COLD] && src->type != BL_MOB) || - sc->data[SC__IGNORANCE] || - sc->data[SC_DEEP_SLEEP] || - sc->data[SC_SATURDAY_NIGHT_FEVER] || - sc->data[SC_CURSEDCIRCLE_TARGET] || - (sc->data[SC_MARIONETTE_MASTER] && skill_id != CG_MARIONETTE) || //Only skill you can use is marionette again to cancel it - (sc->data[SC_MARIONETTE] && skill_id == CG_MARIONETTE) || //Cannot use marionette if you are being buffed by another - (sc->data[SC_STASIS] && skill->block_check(src, SC_STASIS, skill_id)) || - (sc->data[SC_KG_KAGEHUMI] && skill->block_check(src, SC_KG_KAGEHUMI, skill_id)) - )) - return 0; + if (!flag && ( //Blocked only from using the skill (stuff like autospell may still go through + sc->data[SC_SILENCE] || + sc->data[SC_STEELBODY] || + sc->data[SC_BERSERK] || + sc->data[SC_OBLIVIONCURSE] || + sc->data[SC_WHITEIMPRISON] || + sc->data[SC__INVISIBILITY] || + (sc->data[SC_COLD] && src->type != BL_MOB) || + sc->data[SC__IGNORANCE] || + sc->data[SC_DEEP_SLEEP] || + sc->data[SC_SATURDAY_NIGHT_FEVER] || + sc->data[SC_CURSEDCIRCLE_TARGET] || + (sc->data[SC_MARIONETTE_MASTER] && skill_id != CG_MARIONETTE) || //Only skill you can use is marionette again to cancel it + (sc->data[SC_MARIONETTE] && skill_id == CG_MARIONETTE) || //Cannot use marionette if you are being buffed by another + (sc->data[SC_STASIS] && skill->block_check(src, SC_STASIS, skill_id)) || + (sc->data[SC_KG_KAGEHUMI] && skill->block_check(src, SC_KG_KAGEHUMI, skill_id)) + )) + return 0; - //Skill blocking. - if ( - (sc->data[SC_VOLCANO] && skill_id == WZ_ICEWALL) || - (sc->data[SC_ROKISWEIL] && skill_id != BD_ADAPTATION) || - (sc->data[SC_HERMODE] && skill->get_inf(skill_id) & INF_SUPPORT_SKILL) || - pc_ismuted(sc, MANNER_NOSKILL) - ) - return 0; + //Skill blocking. + if ( + (sc->data[SC_VOLCANO] && skill_id == WZ_ICEWALL) || + (sc->data[SC_ROKISWEIL] && skill_id != BD_ADAPTATION) || + (sc->data[SC_HERMODE] && skill->get_inf(skill_id) & INF_SUPPORT_SKILL) || + pc_ismuted(sc, MANNER_NOSKILL) + ) + return 0; - if( sc->data[SC__MANHOLE] || ((tsc = status->get_sc(target)) && tsc->data[SC__MANHOLE]) ) { - switch(skill_id) {//##TODO## make this a flag in skill_db? - // Skills that can be used even under Man Hole effects. - case SC_SHADOWFORM: - break; - default: - return 0; - } + if( sc->data[SC__MANHOLE] || ((tsc = status->get_sc(target)) && tsc->data[SC__MANHOLE]) ) { + switch(skill_id) {//##TODO## make this a flag in skill_db? + // Skills that can be used even under Man Hole effects. + case SC_SHADOWFORM: + break; + default: + return 0; } - + } } } @@ -1963,23 +1971,26 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin hide_flag &= ~OPTION_HIDE; switch( target->type ) { - case BL_PC: { - struct map_session_data *sd = (TBL_PC*) target; - bool is_boss = (st->mode&MD_BOSS); - bool is_detect = ((st->mode&MD_DETECTOR)?true:false);//god-knows-why gcc doesn't shut up until this happens - if (pc_isinvisible(sd)) + case BL_PC: + { + const struct map_session_data *tsd = BL_UCCAST(BL_PC, target); + bool is_boss = (st->mode&MD_BOSS); + bool is_detect = ((st->mode&MD_DETECTOR)?true:false);//god-knows-why gcc doesn't shut up until this happens + if (pc_isinvisible(tsd)) + return 0; + if (tsc != NULL) { + if (tsc->option&hide_flag + && !is_boss + && ((tsd->special_state.perfect_hiding || !is_detect) + || (tsc->data[SC_CLOAKINGEXCEED] != NULL && is_detect) + )) + return 0; + if (tsc->data[SC_CAMOUFLAGE] && !(is_boss || is_detect) && (!skill_id || (flag == 0 && src && src->type != BL_PC))) + return 0; + if (tsc->data[SC_STEALTHFIELD] && !is_boss) return 0; - if( tsc ) { - if (tsc->option&hide_flag && !is_boss && - ((sd->special_state.perfect_hiding || !is_detect) || - (tsc->data[SC_CLOAKINGEXCEED] && is_detect))) - return 0; - if( tsc->data[SC_CAMOUFLAGE] && !(is_boss || is_detect) && (!skill_id || (flag == 0 && src && src->type != BL_PC)) ) - return 0; - if( tsc->data[SC_STEALTHFIELD] && !is_boss ) - return 0; - } } + } break; case BL_ITEM: //Allow targeting of items to pick'em up (or in the case of mobs, to loot them). @@ -2052,7 +2063,7 @@ int status_calc_mob_(struct mob_data* md, enum e_status_calc_opt opt) { return 0; } if (!md->base_status) - md->base_status = (struct status_data*)aCalloc(1, sizeof(struct status_data)); + CREATE(md->base_status, struct status_data, 1); mstatus = md->base_status; memcpy(mstatus, &md->db->status, sizeof(struct status_data)); @@ -2074,7 +2085,7 @@ int status_calc_mob_(struct mob_data* md, enum e_status_calc_opt opt) { //Max HP setting from Summon Flora/marine Sphere struct unit_data *ud = unit->bl2ud(mbl); //Remove special AI when this is used by regular mobs. - if (mbl->type == BL_MOB && ((TBL_MOB*)mbl)->special_state.ai == AI_NONE) + if (mbl->type == BL_MOB && BL_UCAST(BL_MOB, mbl)->special_state.ai == AI_NONE) md->special_state.ai = AI_NONE; if (ud) { // different levels of HP according to skill level @@ -3426,8 +3437,8 @@ void status_calc_regen(struct block_list *bl, struct status_data *st, struct reg sregen->sp = cap_value(val, 0, SHRT_MAX); } - if( bl->type == BL_HOM ) { - struct homun_data *hd = (TBL_HOM*)bl; + if (bl->type == BL_HOM) { + struct homun_data *hd = BL_UCAST(BL_HOM, bl); if( (skill_lv = homun->checkskill(hd,HAMI_SKIN)) > 0 ) { val = regen->hp*(100+5*skill_lv)/100; regen->hp = cap_value(val, 1, SHRT_MAX); @@ -3492,10 +3503,17 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str ) regen->flag = 0; //No regen - if ( sc->data[SC_DANCING] || sc->data[SC_OBLIVIONCURSE] || sc->data[SC_MAXIMIZEPOWER] || sc->data[SC_REBOUND] - || ( bl->type == BL_PC && (((TBL_PC*)bl)->class_&MAPID_UPPERMASK) == MAPID_MONK - && (sc->data[SC_EXTREMITYFIST] || (sc->data[SC_EXPLOSIONSPIRITS] && (!sc->data[SC_SOULLINK] || sc->data[SC_SOULLINK]->val2 != SL_MONK))) + if (sc->data[SC_DANCING] != NULL + || sc->data[SC_OBLIVIONCURSE] != NULL + || sc->data[SC_MAXIMIZEPOWER] != NULL + || sc->data[SC_REBOUND] != NULL + || (bl->type == BL_PC && (BL_UCAST(BL_PC, bl)->class_&MAPID_UPPERMASK) == MAPID_MONK + && (sc->data[SC_EXTREMITYFIST] != NULL + || (sc->data[SC_EXPLOSIONSPIRITS] != NULL + && (sc->data[SC_SOULLINK] == NULL || sc->data[SC_SOULLINK]->val2 != SL_MONK) ) + ) + ) ) { regen->flag &=~RGN_SP; //No natural SP regen } @@ -3542,13 +3560,21 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str regen->rate.sp += regen->rate.sp * sc->data[SC_BUCHEDENOEL]->val2 / 100; } } + +#define status_get_homstr(st, hd) ((st)->str + (hd)->homunculus.str_value) +#define status_get_homagi(st, hd) ((st)->agi + (hd)->homunculus.agi_value) +#define status_get_homvit(st, hd) ((st)->vit + (hd)->homunculus.vit_value) +#define status_get_homint(st, hd) ((st)->int_ + (hd)->homunculus.int_value) +#define status_get_homdex(st, hd) ((st)->dex + (hd)->homunculus.dex_value) +#define status_get_homluk(st, hd) ((st)->luk + (hd)->homunculus.luk_value) + /// Recalculates parts of an object's battle status according to the specified flags. /// @param flag bitfield of values from enum scb_flag void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { const struct status_data *bst = status->get_base_status(bl); struct status_data *st = status->get_status_data(bl); struct status_change *sc = status->get_sc(bl); - TBL_PC *sd = BL_CAST(BL_PC,bl); + struct map_session_data *sd = BL_CAST(BL_PC,bl); int temp; if (!bst || !st) @@ -3744,8 +3770,11 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { if( bl->type&BL_PC && !(sd && sd->state.permanent_speed) && st->speed < battle_config.max_walk_speed ) st->speed = battle_config.max_walk_speed; - if( bl->type&BL_HOM && battle_config.hom_setting&0x8 && ((TBL_HOM*)bl)->master) - st->speed = status->get_speed(&((TBL_HOM*)bl)->master->bl); + if (bl->type&BL_HOM && battle_config.hom_setting&0x8) { + struct homun_data *hd = BL_UCAST(BL_HOM, bl); + if (hd->master != NULL) + st->speed = status->get_speed(&hd->master->bl); + } } if(flag&SCB_CRI && bst->cri) { @@ -3754,7 +3783,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { else st->cri = status->calc_critical(bl, sc, bst->cri + 3*(st->luk - bst->luk), true); } - if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && ((TBL_PC*)bl)->status.weapon == W_KATAR) + if (battle_config.show_katar_crit_bonus && bl->type == BL_PC && BL_UCAST(BL_PC, bl)->status.weapon == W_KATAR) st->cri <<= 1; if(flag&SCB_FLEE2 && bst->flee2) { @@ -3860,12 +3889,13 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { if(flag&SCB_ASPD) { int amotion; if ( bl->type&BL_HOM ) { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); #ifdef RENEWAL - amotion = ((TBL_HOM*)bl)->homunculusDB->baseASPD; - amotion = amotion - amotion * status_get_homdex(bl) / 1000 - status_get_homagi(bl) * amotion / 250; + amotion = hd->homunculusDB->baseASPD; + amotion = amotion - amotion * status_get_homdex(st, hd) / 1000 - status_get_homagi(st, hd) * amotion / 250; amotion = (amotion * status->calc_aspd(bl, sc, 1) + status->calc_aspd(bl, sc, 2)) / -100 + amotion; #else - amotion = (1000 - 4 * st->agi - st->dex) * ((TBL_HOM*)bl)->homunculusDB->baseASPD / 1000; + amotion = (1000 - 4 * st->agi - st->dex) * hd->homunculusDB->baseASPD / 1000; amotion = status->calc_aspd_rate(bl, sc, amotion); @@ -3918,16 +3948,20 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { /// Also sends updates to the client wherever applicable. /// @param flag bitfield of values from enum scb_flag /// @param first if true, will cause status_calc_* functions to run their base status initialization code -void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt) { +void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_calc_opt opt) +{ struct status_data bst; // previous battle status struct status_data *st; // pointer to current battle status - if( bl->type == BL_PC && ((TBL_PC*)bl)->delayed_damage != 0 ) { - if( opt&SCO_FORCE ) - ((TBL_PC*)bl)->state.hold_recalc = 0;/* clear and move on */ - else { - ((TBL_PC*)bl)->state.hold_recalc = 1;/* flag and stop */ - return; + if (bl->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + if (sd->delayed_damage != 0) { + if (opt&SCO_FORCE) { + sd->state.hold_recalc = 0;/* clear and move on */ + } else { + sd->state.hold_recalc = 1;/* flag and stop */ + return; + } } } @@ -3964,7 +3998,7 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_ca // compare against new values and send client updates if( bl->type == BL_PC ) { - TBL_PC* sd = BL_CAST(BL_PC, bl); + struct map_session_data *sd = BL_CAST(BL_PC, bl); if(bst.str != st->str) clif->updatestatus(sd,SP_STR); if(bst.agi != st->agi) @@ -4055,11 +4089,11 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_ca clif->updatestatus(sd,SP_ATK2); #endif } else if( bl->type == BL_HOM ) { - TBL_HOM* hd = BL_CAST(BL_HOM, bl); - if( hd->master && memcmp(&bst, st, sizeof(struct status_data)) != 0 ) + struct homun_data *hd = BL_CAST(BL_HOM, bl); + if (hd->master != NULL && memcmp(&bst, st, sizeof(struct status_data)) != 0) clif->hominfo(hd->master,hd,0); } else if( bl->type == BL_MER ) { - TBL_MER* md = BL_CAST(BL_MER, bl); + struct mercenary_data *md = BL_CAST(BL_MER, bl); if( bst.rhw.atk != st->rhw.atk || bst.rhw.atk2 != st->rhw.atk2 ) clif->mercenary_updatestatus(md->master, SP_ATK1); if( bst.matk_max != st->matk_max ) @@ -4085,7 +4119,7 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, enum e_status_ca if( bst.sp != st->sp ) clif->mercenary_updatestatus(md->master, SP_SP); } else if( bl->type == BL_ELEM ) { - TBL_ELEM* ed = BL_CAST(BL_ELEM, bl); + struct elemental_data *ed = BL_CAST(BL_ELEM, bl); if( bst.max_hp != st->max_hp ) clif->elemental_updatestatus(ed->master, SP_MAXHP); if( bst.max_sp != st->max_sp ) @@ -4103,10 +4137,10 @@ int status_check_visibility(struct block_list *src, struct block_list *target) { switch ( src->type ) { case BL_MOB: - view_range = ((TBL_MOB*)src)->min_chase; + view_range = BL_UCCAST(BL_MOB, src)->min_chase; break; case BL_PET: - view_range = ((TBL_PET*)src)->db->range2; + view_range = BL_UCCAST(BL_PET, src)->db->range2; break; default: view_range = AREA_SIZE; @@ -4125,8 +4159,13 @@ int status_check_visibility(struct block_list *src, struct block_list *target) { case BL_PC: if ( tsc->data[SC_CLOAKINGEXCEED] && !(st->mode&MD_BOSS) ) return 0; - if ( (tsc->option&(OPTION_HIDE | OPTION_CLOAK | OPTION_CHASEWALK) || tsc->data[SC_STEALTHFIELD] || tsc->data[SC__INVISIBILITY] || tsc->data[SC_CAMOUFLAGE]) && !(st->mode&MD_BOSS) && - (((TBL_PC*)target)->special_state.perfect_hiding || !(st->mode&MD_DETECTOR)) ) + if ((tsc->option&(OPTION_HIDE | OPTION_CLOAK | OPTION_CHASEWALK) + || tsc->data[SC_STEALTHFIELD] != NULL + || tsc->data[SC__INVISIBILITY] != NULL + || tsc->data[SC_CAMOUFLAGE] != NULL + ) + && !(st->mode&MD_BOSS) + && (BL_UCCAST(BL_PC, target)->special_state.perfect_hiding || !(st->mode&MD_DETECTOR))) return 0; break; default: @@ -4192,8 +4231,8 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_ if ( !(bl->type&battle_config.enable_baseatk) ) return 0; - if ( bl->type == BL_PC ) - switch ( ((TBL_PC*)bl)->status.weapon ) { + if (bl->type == BL_PC) { + switch (BL_UCCAST(BL_PC, bl)->status.weapon) { case W_BOW: case W_MUSICAL: case W_WHIP: @@ -4203,36 +4242,39 @@ unsigned short status_base_atk(const struct block_list *bl, const struct status_ case W_SHOTGUN: case W_GRENADE: flag = 1; + } } if ( flag ) { -#ifdef RENEWAL - dstr = -#endif - str = st->dex; + str = st->dex; dex = st->str; } else { -#ifdef RENEWAL - dstr = -#endif - str = st->str; + str = st->str; dex = st->dex; } +#ifdef RENEWAL + dstr = str; +#endif //Normally only players have base-atk, but homunc have a different batk // equation, hinting that perhaps non-players should use this for batk. // [Skotlex] #ifdef RENEWAL - if ( bl->type == BL_HOM ) - str = 2 * (((TBL_HOM*)bl)->homunculus.level + status_get_homstr(bl)); + if (bl->type == BL_HOM) { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + str = 2 * (hd->homunculus.level + status_get_homstr(st, hd)); + } #else dstr = str / 10; str += dstr*dstr; #endif - if ( bl->type == BL_PC ) #ifdef RENEWAL - str = (int)(dstr + (float)dex / 5 + (float)st->luk / 3 + (float)((TBL_PC*)bl)->status.base_level / 4); - else if ( bl->type == BL_MOB || bl->type == BL_MER ) - str = dstr + ((TBL_MOB*)bl)->level; + if (bl->type == BL_PC) + str = (int)(dstr + (float)dex / 5 + (float)st->luk / 3 + (float)BL_UCCAST(BL_PC, bl)->status.base_level / 4); + else if (bl->type == BL_MOB) + str = dstr + BL_UCCAST(BL_MOB, bl)->level; + //else if (bl->type == BL_MER) // FIXME: What should go here? + // str = dstr + BL_UCCAST(BL_MER, bl)->level; #else + if (bl->type == BL_PC) str += dex / 5 + st->luk / 5; #endif return cap_value(str, 0, USHRT_MAX); @@ -4249,7 +4291,7 @@ unsigned short status_base_matk(struct block_list *bl, const struct status_data case BL_MOB: return st->int_ + level; case BL_HOM: - return status_get_homint(bl) + level; + return status_get_homint(st, BL_UCCAST(BL_HOM, bl)) + level; case BL_MER: return st->int_ + st->int_ / 5 * st->int_ / 5; case BL_PC: @@ -4272,14 +4314,15 @@ void status_calc_misc(struct block_list *bl, struct status_data *st, int level) #ifdef RENEWAL // renewal formulas if ( bl->type == BL_HOM ) { - st->def2 = status_get_homvit(bl) + status_get_homagi(bl) / 2; - st->mdef2 = (status_get_homvit(bl) + status_get_homint(bl)) / 2; - st->def += status_get_homvit(bl) + level / 2; // Increase. Already initialized in status_calc_homunculus_ - st->mdef = (int)(((float)status_get_homvit(bl) + level) / 4 + (float)status_get_homint(bl) / 2); + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + st->def2 = status_get_homvit(st, hd) + status_get_homagi(st, hd) / 2; + st->mdef2 = (status_get_homvit(st, hd) + status_get_homint(st, hd)) / 2; + st->def += status_get_homvit(st, hd) + level / 2; // Increase. Already initialized in status_calc_homunculus_ + st->mdef = (int)(((float)status_get_homvit(st, hd) + level) / 4 + (float)status_get_homint(st, hd) / 2); st->hit = level + st->dex + 150; - st->flee = level + status_get_homagi(bl); - st->rhw.atk = (status_get_homstr(bl) + status_get_homdex(bl)) / 5; - st->rhw.atk2 = (status_get_homluk(bl) + status_get_homstr(bl) + status_get_homdex(bl)) / 3; + st->flee = level + status_get_homagi(st, hd); + st->rhw.atk = (status_get_homstr(st, hd) + status_get_homdex(st, hd)) / 5; + st->rhw.atk2 = (status_get_homluk(st, hd) + status_get_homstr(st, hd) + status_get_homdex(st, hd)) / 3; } else { st->hit += level + st->dex + (bl->type == BL_PC ? st->luk / 3 + 175 : 150); //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175 st->flee += level + st->agi + (bl->type == BL_MER ? 0: (bl->type == BL_PC ? st->luk / 5 : 0) + 100); //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100 @@ -4833,10 +4876,10 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc, #ifndef RENEWAL if(sc->data[SC_NIBELUNGEN]) { - if (bl->type != BL_PC) + if (bl->type != BL_PC) { watk += sc->data[SC_NIBELUNGEN]->val2; - else { - TBL_PC *sd = (TBL_PC*)bl; + } else { + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); int index = sd->equip_index[sd->state.lr_flag?EQI_HAND_L:EQI_HAND_R]; if(index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->wlv == 4) watk += sc->data[SC_NIBELUNGEN]->val2; @@ -4952,7 +4995,7 @@ unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, if (sc->data[SC_MOONLIT_SERENADE]) matk += matk * sc->data[SC_MOONLIT_SERENADE]->val2 / 100; if (sc->data[SC_MTF_MATK]) - matk += matk * sc->data[SC_MTF_MATK]->val1 / 100; + matk += sc->data[SC_MTF_MATK]->val1; if (sc->data[SC_MYSTICSCROLL]) matk += matk * sc->data[SC_MYSTICSCROLL]->val1 / 100; @@ -5469,7 +5512,7 @@ signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed) { - TBL_PC* sd = BL_CAST(BL_PC, bl); + struct map_session_data *sd = BL_CAST(BL_PC, bl); int speed_rate; if( sc == NULL || ( sd && sd->state.permanent_speed ) ) @@ -5698,11 +5741,10 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl } if (sc->data[SC_ASSNCROS] && bonus < sc->data[SC_ASSNCROS]->val2) { - if (bl->type!=BL_PC) + if (bl->type != BL_PC) { bonus = sc->data[SC_ASSNCROS]->val2; - else { - switch (((TBL_PC*)bl)->status.weapon) - { + } else { + switch (BL_UCCAST(BL_PC, bl)->status.weapon) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -5798,11 +5840,10 @@ short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int if (!sc || !sc->count) return cap_value(aspd, 0, 2000); - if ((sc->data[SC_GUST_OPTION] || sc->data[SC_BLAST_OPTION] - || sc->data[SC_WILD_STORM_OPTION])) + if (sc->data[SC_GUST_OPTION] != NULL || sc->data[SC_BLAST_OPTION] != NULL || sc->data[SC_WILD_STORM_OPTION] != NULL) aspd -= 50; // +5 ASPD - if (sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2) - aspd -= (bl->type==BL_PC?pc->checkskill((TBL_PC *)bl, RK_RUNEMASTERY):10) / 10 * 40; + if (sc->data[SC_FIGHTINGSPIRIT] != NULL && sc->data[SC_FIGHTINGSPIRIT]->val2 != 0) + aspd -= (bl->type == BL_PC ? pc->checkskill(BL_UCAST(BL_PC, bl), RK_RUNEMASTERY) : 10) / 10 * 40; if (sc->data[SC_MTF_ASPD]) aspd -= sc->data[SC_MTF_ASPD]->val1; @@ -5857,14 +5898,11 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int max < sc->data[SC_HLIF_FLEET]->val2) max = sc->data[SC_HLIF_FLEET]->val2; - if(sc->data[SC_ASSNCROS] && - max < sc->data[SC_ASSNCROS]->val2) - { - if (bl->type!=BL_PC) + if (sc->data[SC_ASSNCROS] && max < sc->data[SC_ASSNCROS]->val2) { + if (bl->type != BL_PC) { max = sc->data[SC_ASSNCROS]->val2; - else - switch(((TBL_PC*)bl)->status.weapon) - { + } else { + switch (BL_UCCAST(BL_PC, bl)->status.weapon) { case W_BOW: case W_REVOLVER: case W_RIFLE: @@ -5874,6 +5912,7 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int break; default: max = sc->data[SC_ASSNCROS]->val2; + } } } @@ -5957,9 +5996,10 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int return (short)cap_value(aspd_rate,0,SHRT_MAX); } -unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion) { +unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion) +{ // It has been confirmed on official servers that MvP mobs have no dmotion even without endure - if( bl->type == BL_MOB && (((TBL_MOB*)bl)->status.mode&MD_BOSS) ) + if (bl->type == BL_MOB && (BL_UCCAST(BL_MOB, bl)->status.mode&MD_BOSS)) return 0; if( !sc || !sc->count || map_flag_gvg2(bl->m) || map->list[bl->m].flag.battleground ) @@ -6183,14 +6223,21 @@ unsigned short status_calc_mode(struct block_list *bl, struct status_change *sc, return cap_value(mode,0,USHRT_MAX); } -const char* status_get_name(struct block_list *bl) { +const char *status_get_name(struct block_list *bl) +{ nullpo_ret(bl); switch (bl->type) { - case BL_PC: return ((TBL_PC *)bl)->fakename[0] != '\0' ? ((TBL_PC*)bl)->fakename : ((TBL_PC*)bl)->status.name; - case BL_MOB: return ((TBL_MOB*)bl)->name; - case BL_PET: return ((TBL_PET*)bl)->pet.name; - case BL_HOM: return ((TBL_HOM*)bl)->homunculus.name; - case BL_NPC: return ((TBL_NPC*)bl)->name; + case BL_PC: + { + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); + if (sd->fakename[0] != '\0') + return sd->fakename; + return sd->status.name; + } + case BL_MOB: return BL_UCCAST(BL_MOB, bl)->name; + case BL_PET: return BL_UCCAST(BL_PET, bl)->pet.name; + case BL_HOM: return BL_UCCAST(BL_HOM, bl)->homunculus.name; + case BL_NPC: return BL_UCCAST(BL_NPC, bl)->name; } return "Unknown"; } @@ -6201,16 +6248,17 @@ const char* status_get_name(struct block_list *bl) { * 0 = fail * class_id = success *------------------------------------------*/ -int status_get_class(struct block_list *bl) { +int status_get_class(struct block_list *bl) +{ nullpo_ret(bl); - switch( bl->type ) { - case BL_PC: return ((TBL_PC*)bl)->status.class_; - case BL_MOB: return ((TBL_MOB*)bl)->vd->class_; //Class used on all code should be the view class of the mob. - case BL_PET: return ((TBL_PET*)bl)->pet.class_; - case BL_HOM: return ((TBL_HOM*)bl)->homunculus.class_; - case BL_MER: return ((TBL_MER*)bl)->mercenary.class_; - case BL_NPC: return ((TBL_NPC*)bl)->class_; - case BL_ELEM: return ((TBL_ELEM*)bl)->elemental.class_; + switch (bl->type) { + case BL_PC: return BL_UCCAST(BL_PC, bl)->status.class_; + case BL_MOB: return BL_UCCAST(BL_MOB, bl)->vd->class_; //Class used on all code should be the view class of the mob. + case BL_PET: return BL_UCCAST(BL_PET, bl)->pet.class_; + case BL_HOM: return BL_UCCAST(BL_HOM, bl)->homunculus.class_; + case BL_MER: return BL_UCCAST(BL_MER, bl)->mercenary.class_; + case BL_NPC: return BL_UCCAST(BL_NPC, bl)->class_; + case BL_ELEM: return BL_UCCAST(BL_ELEM, bl)->elemental.class_; } return 0; } @@ -6220,16 +6268,17 @@ int status_get_class(struct block_list *bl) { * 1 = fail * level = success *------------------------------------------*/ -int status_get_lv(struct block_list *bl) { +int status_get_lv(struct block_list *bl) +{ nullpo_ret(bl); switch (bl->type) { - case BL_PC: return ((TBL_PC*)bl)->status.base_level; - case BL_MOB: return ((TBL_MOB*)bl)->level; - case BL_PET: return ((TBL_PET*)bl)->pet.level; - case BL_HOM: return ((TBL_HOM*)bl)->homunculus.level; - case BL_MER: return ((TBL_MER*)bl)->db->lv; - case BL_ELEM: return ((TBL_ELEM*)bl)->db->lv; - case BL_NPC: return ((TBL_NPC*)bl)->level; + case BL_PC: return BL_UCCAST(BL_PC, bl)->status.base_level; + case BL_MOB: return BL_UCCAST(BL_MOB, bl)->level; + case BL_PET: return BL_UCCAST(BL_PET, bl)->pet.level; + case BL_HOM: return BL_UCCAST(BL_HOM, bl)->homunculus.level; + case BL_MER: return BL_UCCAST(BL_MER, bl)->db->lv; + case BL_ELEM: return BL_UCCAST(BL_ELEM, bl)->db->lv; + case BL_NPC: return BL_UCCAST(BL_NPC, bl)->level; } return 1; } @@ -6238,10 +6287,10 @@ struct regen_data *status_get_regen_data(struct block_list *bl) { nullpo_retr(NULL, bl); switch (bl->type) { - case BL_PC: return &((TBL_PC*)bl)->regen; - case BL_HOM: return &((TBL_HOM*)bl)->regen; - case BL_MER: return &((TBL_MER*)bl)->regen; - case BL_ELEM: return &((TBL_ELEM*)bl)->regen; + case BL_PC: return &BL_UCAST(BL_PC, bl)->regen; + case BL_HOM: return &BL_UCAST(BL_HOM, bl)->regen; + case BL_MER: return &BL_UCAST(BL_MER, bl)->regen; + case BL_ELEM: return &BL_UCAST(BL_ELEM, bl)->regen; default: return NULL; } @@ -6252,13 +6301,17 @@ struct status_data *status_get_status_data(struct block_list *bl) nullpo_retr(&status->dummy, bl); switch (bl->type) { - case BL_PC: return &((TBL_PC*)bl)->battle_status; - case BL_MOB: return &((TBL_MOB*)bl)->status; - case BL_PET: return &((TBL_PET*)bl)->status; - case BL_HOM: return &((TBL_HOM*)bl)->battle_status; - case BL_MER: return &((TBL_MER*)bl)->battle_status; - case BL_ELEM: return &((TBL_ELEM*)bl)->battle_status; - case BL_NPC: return ((mob->db_checkid(((TBL_NPC*)bl)->class_) == 0) ? &((TBL_NPC*)bl)->status : &status->dummy); + case BL_PC: return &BL_UCAST(BL_PC, bl)->battle_status; + case BL_MOB: return &BL_UCAST(BL_MOB, bl)->status; + case BL_PET: return &BL_UCAST(BL_PET, bl)->status; + case BL_HOM: return &BL_UCAST(BL_HOM, bl)->battle_status; + case BL_MER: return &BL_UCAST(BL_MER, bl)->battle_status; + case BL_ELEM: return &BL_UCAST(BL_ELEM, bl)->battle_status; + case BL_NPC: + { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + return mob->db_checkid(nd->class_) == 0 ? &nd->status : &status->dummy; + } default: return &status->dummy; } @@ -6268,13 +6321,21 @@ struct status_data *status_get_base_status(struct block_list *bl) { nullpo_retr(NULL, bl); switch (bl->type) { - case BL_PC: return &((TBL_PC*)bl)->base_status; - case BL_MOB: return ((TBL_MOB*)bl)->base_status ? ((TBL_MOB*)bl)->base_status : &((TBL_MOB*)bl)->db->status; - case BL_PET: return &((TBL_PET*)bl)->db->status; - case BL_HOM: return &((TBL_HOM*)bl)->base_status; - case BL_MER: return &((TBL_MER*)bl)->base_status; - case BL_ELEM: return &((TBL_ELEM*)bl)->base_status; - case BL_NPC: return ((mob->db_checkid(((TBL_NPC*)bl)->class_) == 0) ? &((TBL_NPC*)bl)->status : NULL); + case BL_PC: return &BL_UCAST(BL_PC, bl)->base_status; + case BL_MOB: + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + return md->base_status ? md->base_status : &md->db->status; + } + case BL_PET: return &BL_UCAST(BL_PET, bl)->db->status; + case BL_HOM: return &BL_UCAST(BL_HOM, bl)->base_status; + case BL_MER: return &BL_UCAST(BL_MER, bl)->base_status; + case BL_ELEM: return &BL_UCAST(BL_ELEM, bl)->base_status; + case BL_NPC: + { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + return mob->db_checkid(nd->class_) == 0 ? &nd->status : NULL; + } default: return NULL; } @@ -6290,9 +6351,10 @@ defType status_get_def(struct block_list *bl) { return cap_value(def, DEFTYPE_MIN, DEFTYPE_MAX); } -unsigned short status_get_speed(struct block_list *bl) { - if(bl->type==BL_NPC)//Only BL with speed data but no status_data [Skotlex] - return ((struct npc_data *)bl)->speed; +unsigned short status_get_speed(struct block_list *bl) +{ + if (bl->type == BL_NPC) //Only BL with speed data but no status_data [Skotlex] + return BL_UCCAST(BL_NPC, bl)->speed; return status->get_status_data(bl)->speed; } @@ -6300,81 +6362,118 @@ int status_get_party_id(struct block_list *bl) { nullpo_ret(bl); switch (bl->type) { case BL_PC: - return ((TBL_PC*)bl)->status.party_id; + return BL_UCCAST(BL_PC, bl)->status.party_id; case BL_PET: - if (((TBL_PET*)bl)->msd) - return ((TBL_PET*)bl)->msd->status.party_id; + { + const struct pet_data *pd = BL_UCCAST(BL_PET, bl); + if (pd->msd != NULL) + return pd->msd->status.party_id; + } break; - case BL_MOB: { - struct mob_data *md=(TBL_MOB*)bl; - if( md->master_id > 0 ) { - struct map_session_data *msd; + case BL_MOB: + { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + if (md->master_id > 0) { + const struct map_session_data *msd = NULL; if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) return msd->status.party_id; return -md->master_id; } - } - break; + } + break; case BL_HOM: - if (((TBL_HOM*)bl)->master) - return ((TBL_HOM*)bl)->master->status.party_id; + { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + if (hd->master != NULL) + return hd->master->status.party_id; + } break; case BL_MER: - if (((TBL_MER*)bl)->master) - return ((TBL_MER*)bl)->master->status.party_id; + { + const struct mercenary_data *mc = BL_UCCAST(BL_MER, bl); + if (mc->master != NULL) + return mc->master->status.party_id; + } break; case BL_SKILL: - if (((TBL_SKILL*)bl)->group) - return ((TBL_SKILL*)bl)->group->party_id; + { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl); + if (su->group != NULL) + return su->group->party_id; + } break; case BL_ELEM: - if (((TBL_ELEM*)bl)->master) - return ((TBL_ELEM*)bl)->master->status.party_id; + { + const struct elemental_data *ed = BL_UCCAST(BL_ELEM, bl); + if (ed->master != NULL) + return ed->master->status.party_id; + } break; } return 0; } -int status_get_guild_id(struct block_list *bl) { +int status_get_guild_id(struct block_list *bl) +{ nullpo_ret(bl); switch (bl->type) { case BL_PC: - return ((TBL_PC*)bl)->status.guild_id; + return BL_UCCAST(BL_PC, bl)->status.guild_id; case BL_PET: - if (((TBL_PET*)bl)->msd) - return ((TBL_PET*)bl)->msd->status.guild_id; + { + const struct pet_data *pd = BL_UCCAST(BL_PET, bl); + if (pd->msd != NULL) + return pd->msd->status.guild_id; + } break; case BL_MOB: { - struct map_session_data *msd; - struct mob_data *md = (struct mob_data *)bl; - if( md->guardian_data ) { //Guardian's guild [Skotlex] + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + const struct map_session_data *msd = NULL; + if (md->guardian_data != NULL) { //Guardian's guild [Skotlex] // Guardian guild data may not been available yet, castle data is always set - return (md->guardian_data->g)?md->guardian_data->g->guild_id:md->guardian_data->castle->guild_id; + if (md->guardian_data->g != NULL) + return md->guardian_data->g->guild_id; + return md->guardian_data->castle->guild_id; } if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) return msd->status.guild_id; //Alchemist's mobs [Skotlex] break; } case BL_HOM: - if (((TBL_HOM*)bl)->master) - return ((TBL_HOM*)bl)->master->status.guild_id; + { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + if (hd->master != NULL) + return hd->master->status.guild_id; + } break; case BL_MER: - if (((TBL_MER*)bl)->master) - return ((TBL_MER*)bl)->master->status.guild_id; + { + const struct mercenary_data *mc = BL_UCCAST(BL_MER, bl); + if (mc->master != NULL) + return mc->master->status.guild_id; + } break; case BL_NPC: - if (((TBL_NPC*)bl)->subtype == SCRIPT) - return ((TBL_NPC*)bl)->u.scr.guild_id; + { + const struct npc_data *nd = BL_UCCAST(BL_NPC, bl); + if (nd->subtype == SCRIPT) + return nd->u.scr.guild_id; + } break; case BL_SKILL: - if (((TBL_SKILL*)bl)->group) - return ((TBL_SKILL*)bl)->group->guild_id; + { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl); + if (su->group != NULL) + return su->group->guild_id; + } break; case BL_ELEM: - if (((TBL_ELEM*)bl)->master) - return ((TBL_ELEM*)bl)->master->status.guild_id; + { + const struct elemental_data *ed = BL_UCCAST(BL_ELEM, bl); + if (ed->master != NULL) + return ed->master->status.guild_id; + } break; } return 0; @@ -6384,38 +6483,58 @@ int status_get_emblem_id(struct block_list *bl) { nullpo_ret(bl); switch (bl->type) { case BL_PC: - return ((TBL_PC*)bl)->guild_emblem_id; + return BL_UCCAST(BL_PC, bl)->guild_emblem_id; case BL_PET: - if (((TBL_PET*)bl)->msd) - return ((TBL_PET*)bl)->msd->guild_emblem_id; + { + const struct pet_data *pd = BL_UCCAST(BL_PET, bl); + if (pd->msd != NULL) + return pd->msd->guild_emblem_id; + } break; - case BL_MOB: { - struct map_session_data *msd; - struct mob_data *md = (struct mob_data *)bl; - if (md->guardian_data) //Guardian's guild [Skotlex] - return (md->guardian_data->g) ? md->guardian_data->g->emblem_id:0; + case BL_MOB: + { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + const struct map_session_data *msd = NULL; + if (md->guardian_data != NULL) { + //Guardian's guild [Skotlex] + if (md->guardian_data->g != NULL) + return md->guardian_data->g->emblem_id; + return 0; + } if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) return msd->guild_emblem_id; //Alchemist's mobs [Skotlex] - } - break; + } + break; case BL_HOM: - if (((TBL_HOM*)bl)->master) - return ((TBL_HOM*)bl)->master->guild_emblem_id; + { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + if (hd->master) + return hd->master->guild_emblem_id; + } break; case BL_MER: - if (((TBL_MER*)bl)->master) - return ((TBL_MER*)bl)->master->guild_emblem_id; + { + const struct mercenary_data *mc = BL_UCCAST(BL_MER, bl); + if (mc->master) + return mc->master->guild_emblem_id; + } break; case BL_NPC: - if (((TBL_NPC*)bl)->subtype == SCRIPT && ((TBL_NPC*)bl)->u.scr.guild_id > 0) { - struct guild *g = guild->search(((TBL_NPC*)bl)->u.scr.guild_id); - if (g) + { + const struct npc_data *nd = BL_UCCAST(BL_NPC, bl); + if (nd->subtype == SCRIPT && nd->u.scr.guild_id > 0) { + struct guild *g = guild->search(nd->u.scr.guild_id); + if (g != NULL) return g->emblem_id; } + } break; case BL_ELEM: - if (((TBL_ELEM*)bl)->master) - return ((TBL_ELEM*)bl)->master->guild_emblem_id; + { + const struct elemental_data *ed = BL_UCCAST(BL_ELEM, bl); + if (ed->master) + return ed->master->guild_emblem_id; + } break; } return 0; @@ -6424,19 +6543,20 @@ int status_get_emblem_id(struct block_list *bl) { int status_get_mexp(struct block_list *bl) { nullpo_ret(bl); - if(bl->type==BL_MOB) - return ((struct mob_data *)bl)->db->mexp; - if(bl->type==BL_PET) - return ((struct pet_data *)bl)->db->mexp; + if (bl->type == BL_MOB) + return BL_UCCAST(BL_MOB, bl)->db->mexp; + if (bl->type == BL_PET) + return BL_UCCAST(BL_PET, bl)->db->mexp; return 0; } + int status_get_race2(struct block_list *bl) { nullpo_ret(bl); - if(bl->type == BL_MOB) - return ((struct mob_data *)bl)->db->race2; - if(bl->type==BL_PET) - return ((struct pet_data *)bl)->db->race2; + if (bl->type == BL_MOB) + return BL_UCCAST(BL_MOB, bl)->db->race2; + if (bl->type == BL_PET) + return BL_UCCAST(BL_PET, bl)->db->race2; return 0; } @@ -6445,28 +6565,34 @@ int status_isdead(struct block_list *bl) { return status->get_status_data(bl)->hp == 0; } -int status_isimmune(struct block_list *bl) { - struct status_change *sc = status->get_sc(bl); - if (sc && sc->data[SC_HERMODE]) +int status_isimmune(struct block_list *bl) +{ + struct status_change *sc = NULL; + nullpo_ret(bl); + sc = status->get_sc(bl); + + if (sc != NULL && sc->data[SC_HERMODE] != NULL) return 100; - if (bl->type == BL_PC && - ((TBL_PC*)bl)->special_state.no_magic_damage >= battle_config.gtb_sc_immunity) - return ((TBL_PC*)bl)->special_state.no_magic_damage; + if (bl->type == BL_PC) { + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); + if (sd->special_state.no_magic_damage >= battle_config.gtb_sc_immunity) + return sd->special_state.no_magic_damage; + } return 0; } -struct view_data* status_get_viewdata(struct block_list *bl) +struct view_data *status_get_viewdata(struct block_list *bl) { nullpo_retr(NULL, bl); switch (bl->type) { - case BL_PC: return &((TBL_PC*)bl)->vd; - case BL_MOB: return ((TBL_MOB*)bl)->vd; - case BL_PET: return &((TBL_PET*)bl)->vd; - case BL_NPC: return ((TBL_NPC*)bl)->vd; - case BL_HOM: return ((TBL_HOM*)bl)->vd; - case BL_MER: return ((TBL_MER*)bl)->vd; - case BL_ELEM: return ((TBL_ELEM*)bl)->vd; + case BL_PC: return &BL_UCAST(BL_PC, bl)->vd; + case BL_MOB: return BL_UCAST(BL_MOB, bl)->vd; + case BL_PET: return &BL_UCAST(BL_PET, bl)->vd; + case BL_NPC: return BL_UCAST(BL_NPC, bl)->vd; + case BL_HOM: return BL_UCAST(BL_HOM, bl)->vd; + case BL_MER: return BL_UCAST(BL_MER, bl)->vd; + case BL_ELEM: return BL_UCAST(BL_ELEM, bl)->vd; } return NULL; } @@ -6490,136 +6616,147 @@ void status_set_viewdata(struct block_list *bl, int class_) switch (bl->type) { case BL_PC: - { - TBL_PC* sd = (TBL_PC*)bl; - if (pc->db_checkid(class_)) { - if (pc_isridingpeco(sd)) { - switch (class_) { - //Adapt class to a Mounted one. - case JOB_KNIGHT: - class_ = JOB_KNIGHT2; - break; - case JOB_CRUSADER: - class_ = JOB_CRUSADER2; - break; - case JOB_LORD_KNIGHT: - class_ = JOB_LORD_KNIGHT2; - break; - case JOB_PALADIN: - class_ = JOB_PALADIN2; - break; - case JOB_BABY_KNIGHT: - class_ = JOB_BABY_KNIGHT2; - break; - case JOB_BABY_CRUSADER: - class_ = JOB_BABY_CRUSADER2; - break; - } - } - sd->vd.class_ = class_; - clif->get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield); - sd->vd.head_top = sd->status.head_top; - sd->vd.head_mid = sd->status.head_mid; - sd->vd.head_bottom = sd->status.head_bottom; - sd->vd.hair_style = cap_value(sd->status.hair,0,battle_config.max_hair_style); - sd->vd.hair_color = cap_value(sd->status.hair_color,0,battle_config.max_hair_color); - sd->vd.cloth_color = cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color); - sd->vd.robe = sd->status.robe; - sd->vd.sex = sd->status.sex; - - if ( sd->vd.cloth_color ) { - if( sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette ) - sd->vd.cloth_color = 0; - if( sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette ) - sd->vd.cloth_color = 0; - if( sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette ) - sd->vd.cloth_color = 0; - if( sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette ) - sd->vd.cloth_color = 0; - if( sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */ ) - sd->vd.cloth_color = 0; + { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + if (pc->db_checkid(class_)) { + if (pc_isridingpeco(sd)) { + switch (class_) { + //Adapt class to a Mounted one. + case JOB_KNIGHT: + class_ = JOB_KNIGHT2; + break; + case JOB_CRUSADER: + class_ = JOB_CRUSADER2; + break; + case JOB_LORD_KNIGHT: + class_ = JOB_LORD_KNIGHT2; + break; + case JOB_PALADIN: + class_ = JOB_PALADIN2; + break; + case JOB_BABY_KNIGHT: + class_ = JOB_BABY_KNIGHT2; + break; + case JOB_BABY_CRUSADER: + class_ = JOB_BABY_CRUSADER2; + break; } - } else if (vd) - memcpy(&sd->vd, vd, sizeof(struct view_data)); - else - ShowError("status_set_viewdata (PC): No view data for class %d\n", class_); + } + sd->vd.class_ = class_; + clif->get_weapon_view(sd, &sd->vd.weapon, &sd->vd.shield); + sd->vd.head_top = sd->status.head_top; + sd->vd.head_mid = sd->status.head_mid; + sd->vd.head_bottom = sd->status.head_bottom; + sd->vd.hair_style = cap_value(sd->status.hair,0,battle_config.max_hair_style); + sd->vd.hair_color = cap_value(sd->status.hair_color,0,battle_config.max_hair_color); + sd->vd.cloth_color = cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color); + sd->vd.robe = sd->status.robe; + sd->vd.body_style = sd->status.body; + sd->vd.sex = sd->status.sex; + + if (sd->vd.cloth_color) { + if (sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette) + sd->vd.cloth_color = 0; + if (sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette) + sd->vd.cloth_color = 0; + if (sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette) + sd->vd.cloth_color = 0; + if (sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette) + sd->vd.cloth_color = 0; + if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */) + sd->vd.cloth_color = 0; + } + if (sd->vd.body_style + && (sd->sc.option&OPTION_WEDDING + || sd->sc.option&OPTION_XMAS + || sd->sc.option&OPTION_SUMMER + || sd->sc.option&OPTION_HANBOK + || sd->sc.option&OPTION_OKTOBERFEST)) + sd->vd.body_style = 0; + } else if (vd != NULL) { + memcpy(&sd->vd, vd, sizeof(struct view_data)); + } else { + ShowError("status_set_viewdata (PC): No view data for class %d\n", class_); } + } break; case BL_MOB: - { - TBL_MOB* md = (TBL_MOB*)bl; - if (vd) - md->vd = vd; - else - ShowError("status_set_viewdata (MOB): No view data for class %d\n", class_); - } + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); + if (vd != NULL) + md->vd = vd; + else + ShowError("status_set_viewdata (MOB): No view data for class %d\n", class_); + } break; case BL_PET: - { - TBL_PET* pd = (TBL_PET*)bl; - if (vd) { - memcpy(&pd->vd, vd, sizeof(struct view_data)); - if (!pc->db_checkid(vd->class_)) { - pd->vd.hair_style = battle_config.pet_hair_style; - if(pd->pet.equip) { - pd->vd.head_bottom = itemdb_viewid(pd->pet.equip); - if (!pd->vd.head_bottom) - pd->vd.head_bottom = pd->pet.equip; - } + { + struct pet_data *pd = BL_UCAST(BL_PET, bl); + if (vd != NULL) { + memcpy(&pd->vd, vd, sizeof(struct view_data)); + if (!pc->db_checkid(vd->class_)) { + pd->vd.hair_style = battle_config.pet_hair_style; + if(pd->pet.equip) { + pd->vd.head_bottom = itemdb_viewid(pd->pet.equip); + if (!pd->vd.head_bottom) + pd->vd.head_bottom = pd->pet.equip; } - } else - ShowError("status_set_viewdata (PET): No view data for class %d\n", class_); + } + } else { + ShowError("status_set_viewdata (PET): No view data for class %d\n", class_); } + } break; case BL_NPC: - { - TBL_NPC* nd = (TBL_NPC*)bl; - if (vd) - nd->vd = vd; - else - ShowError("status_set_viewdata (NPC): No view data for class %d (name=%s)\n", class_, nd->name); - } + { + struct npc_data *nd = BL_UCAST(BL_NPC, bl); + if (vd != NULL) + nd->vd = vd; + else + ShowError("status_set_viewdata (NPC): No view data for class %d (name=%s)\n", class_, nd->name); + } break; case BL_HOM: //[blackhole89] - { - struct homun_data *hd = (struct homun_data*)bl; - if (vd) - hd->vd = vd; - else - ShowError("status_set_viewdata (HOMUNCULUS): No view data for class %d\n", class_); - } + { + struct homun_data *hd = BL_UCAST(BL_HOM, bl); + if (vd != NULL) + hd->vd = vd; + else + ShowError("status_set_viewdata (HOMUNCULUS): No view data for class %d\n", class_); + } break; case BL_MER: - { - struct mercenary_data *md = (struct mercenary_data*)bl; - if (vd) - md->vd = vd; - else - ShowError("status_set_viewdata (MERCENARY): No view data for class %d\n", class_); - } + { + struct mercenary_data *md = BL_UCAST(BL_MER, bl); + if (vd != NULL) + md->vd = vd; + else + ShowError("status_set_viewdata (MERCENARY): No view data for class %d\n", class_); + } break; case BL_ELEM: - { - struct elemental_data *ed = (struct elemental_data*)bl; - if (vd) - ed->vd = vd; - else - ShowError("status_set_viewdata (ELEMENTAL): No view data for class %d\n", class_); - } + { + struct elemental_data *ed = BL_UCAST(BL_ELEM, bl); + if (vd != NULL) + ed->vd = vd; + else + ShowError("status_set_viewdata (ELEMENTAL): No view data for class %d\n", class_); + } break; } } /// Returns the status_change data of bl or NULL if it doesn't exist. -struct status_change *status_get_sc(struct block_list *bl) { - if( bl ) { +struct status_change *status_get_sc(struct block_list *bl) +{ + if (bl != NULL) { switch (bl->type) { - case BL_PC: return &((TBL_PC*)bl)->sc; - case BL_MOB: return &((TBL_MOB*)bl)->sc; + case BL_PC: return &BL_UCAST(BL_PC, bl)->sc; + case BL_MOB: return &BL_UCAST(BL_MOB, bl)->sc; case BL_NPC: return NULL; - case BL_HOM: return &((TBL_HOM*)bl)->sc; - case BL_MER: return &((TBL_MER*)bl)->sc; - case BL_ELEM: return &((TBL_ELEM*)bl)->sc; + case BL_HOM: return &BL_UCAST(BL_HOM, bl)->sc; + case BL_MER: return &BL_UCAST(BL_MER, bl)->sc; + case BL_ELEM: return &BL_UCAST(BL_ELEM, bl)->sc; } } return NULL; @@ -6870,13 +7007,13 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ sc_def = (st->vit + st->luk)*20; break; case SC_SIREN: - tick_def2 = (status->get_lv(bl) * 100) + ((bl->type == BL_PC)?((TBL_PC*)bl)->status.job_level : 0); + tick_def2 = status->get_lv(bl) * 100 + (bl->type == BL_PC ? BL_UCCAST(BL_PC, bl)->status.job_level : 0); break; case SC_NEEDLE_OF_PARALYZE: tick_def2 = (st->vit + st->luk) * 50; break; case SC_NETHERWORLD: - tick_def2 = 1000 * (((bl->type == BL_PC) ? ((TBL_PC*)bl)->status.job_level : 0) / 10 + status->get_lv(bl) / 50); + tick_def2 = 1000 * ((bl->type == BL_PC ? BL_UCCAST(BL_PC, bl)->status.job_level : 0) / 10 + status->get_lv(bl) / 50); break; default: //Effect that cannot be reduced? Likely a buff. @@ -7888,8 +8025,11 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if (sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) != NULL) status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, SCFLAG_ALL); } - } else if (bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) != NULL) { - status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, SCFLAG_ALL); + } else if (bl->type == BL_MER) { + struct mercenary_data *mc = BL_UCAST(BL_MER, bl); + if (mc->devotion_flag && (tsd = mc->master) != NULL) { + status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, SCFLAG_ALL); + } } } //val4 signals infinite endure (if val4 == 2 it is infinite endure from Berserk) @@ -7988,8 +8128,11 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if (sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) != NULL) status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); } - } else if (bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) != NULL) { - status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); + } else if (bl->type == BL_MER) { + struct mercenary_data *mc = BL_UCAST(BL_MER, bl); + if (mc->devotion_flag && (tsd = mc->master) != NULL) { + status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); + } } } break; @@ -8131,7 +8274,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if( val2 && bl->type == BL_MOB ) { struct block_list* src2 = map->id2bl(val2); if( src2 ) - mob->log_damage((TBL_MOB*)bl,src2,diff); + mob->log_damage(BL_UCAST(BL_MOB, bl), src2, diff); } status_zap(bl, diff, 0); } @@ -8205,7 +8348,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t //val4&1 signals the presence of a wall. //val4&2 makes cloak not end on normal attacks [Skotlex] //val4&4 makes cloak not end on using skills - if (bl->type == BL_PC || (bl->type == BL_MOB && ((TBL_MOB*)bl)->special_state.clone) ) //Standard cloaking. + if (bl->type == BL_PC || (bl->type == BL_MOB && BL_UCCAST(BL_MOB, bl)->special_state.clone)) //Standard cloaking. val4 |= battle_config.pc_cloak_check_type&7; else val4 |= battle_config.monster_cloak_check_type&7; @@ -8249,9 +8392,11 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if (sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) != NULL) status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); } - } - else if (bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) != NULL) { - status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); + } else if (bl->type == BL_MER) { + struct mercenary_data *mc = BL_UCAST(BL_MER, bl); + if (mc->devotion_flag && (tsd = mc->master) != NULL) { + status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, SCFLAG_ALL); + } } } } @@ -8426,7 +8571,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t if( val3 && bl->type == BL_MOB ) { struct block_list* src2 = map->id2bl(val3); if( src2 ) - mob->log_damage((TBL_MOB*)bl,src2,st->hp - 1); + mob->log_damage(BL_UCAST(BL_MOB, bl), src2, st->hp - 1); } status_zap(bl, st->hp-1, val2 ? 0 : st->sp); return 1; @@ -9464,6 +9609,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t clif->changelook(bl,LOOK_WEAPON,0); clif->changelook(bl,LOOK_SHIELD,0); clif->changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color); + clif->changelook(bl,LOOK_BODY2,0); break; case SC_KAAHI: val4 = INVALID_TIMER; @@ -9869,6 +10015,17 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t calc_flag&=~SCB_DYE; } +#if 0 //Currently No SC's use this + if (calc_flag&SCB_BODY) { + //Reset Body Style + if (vd && vd->body_style) { + val4 = vd->body_style; + clif->changelook(bl,LOOK_BODY2,0); + } + calc_flag&=~SCB_BODY; + } +#endif + if(!(flag&SCFLAG_NOICON) && !(flag&SCFLAG_LOADED && status->dbs->DisplayType[type])) clif->status_change(bl,status->dbs->IconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0); @@ -10187,11 +10344,14 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const if (sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) != NULL && tsd->sc.data[type]) status_change_end(&tsd->bl, type, INVALID_TIMER); } - } else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag ) { - // Clear Status from Master - tsd = ((TBL_MER*)bl)->master; - if( tsd && tsd->sc.data[type] ) - status_change_end(&tsd->bl, type, INVALID_TIMER); + } else if (bl->type == BL_MER) { + struct mercenary_data *mc = BL_UCAST(BL_MER, bl); + if (mc->devotion_flag) { + // Clear Status from Master + tsd = mc->master; + if (tsd != NULL && tsd->sc.data[type] != NULL) + status_change_end(&tsd->bl, type, INVALID_TIMER); + } } } break; @@ -10199,10 +10359,10 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const { struct block_list *d_bl = map->id2bl(sce->val1); if( d_bl ) { - if( d_bl->type == BL_PC ) - ((TBL_PC*)d_bl)->devotion[sce->val2] = 0; - else if( d_bl->type == BL_MER ) - ((TBL_MER*)d_bl)->devotion_flag = 0; + if (d_bl->type == BL_PC) + BL_UCAST(BL_PC, d_bl)->devotion[sce->val2] = 0; + else if (d_bl->type == BL_MER) + BL_UCAST(BL_MER, d_bl)->devotion_flag = 0; clif->devotion(d_bl, NULL); } @@ -10752,6 +10912,14 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const calc_flag&=~SCB_DYE; } +#if 0 // Currently No SC's use this + if (calc_flag&SCB_BODY) { // Restore Body color + if (vd && !vd->body_style && sce->val4) + clif->changelook(bl,LOOK_BODY2,sce->val4); + calc_flag&=~SCB_BODY; + } +#endif + //On Aegis, when turning off a status change, first goes the sc packet, then the option packet. clif->sc_end(bl,bl->id,AREA,status->dbs->IconChangeTable[type]); @@ -10765,6 +10933,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const clif->changelook(bl,LOOK_WEAPON,sd->vd.weapon); clif->changelook(bl,LOOK_SHIELD,sd->vd.shield); clif->changelook(bl,LOOK_CLOTHES_COLOR,cap_value(sd->status.clothes_color,0,battle_config.max_cloth_color)); + clif->changelook(bl,LOOK_BODY2,cap_value(sd->status.body,0,battle_config.max_body_style)); } } @@ -10948,8 +11117,8 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) { if (!sc->data[SC_SLOWPOISON]) { if( sce->val2 && bl->type == BL_MOB ) { struct block_list* src = map->id2bl(sce->val2); - if( src ) - mob->log_damage((TBL_MOB*)bl,src,sce->val4); + if (src != NULL) + mob->log_damage(BL_UCAST(BL_MOB, bl), src, sce->val4); } map->freeblock_lock(); status_zap(bl, sce->val4, 0); @@ -10988,7 +11157,7 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) { int hp = rnd()%600 + 200; struct block_list* src = map->id2bl(sce->val2); if( src && bl && bl->type == BL_MOB ) { - mob->log_damage((TBL_MOB*)bl,src,sd||hp<st->hp?hp:st->hp-1); + mob->log_damage(BL_UCAST(BL_MOB, bl), src, sd != NULL || hp < st->hp ? hp : st->hp-1); } map->freeblock_lock(); status_fix_damage(src, bl, sd||hp<st->hp?hp:st->hp-1, 1); @@ -11733,9 +11902,12 @@ int status_change_timer_sub(struct block_list* bl, va_list ap) { if (battle->check_target( src, bl, BCT_ENEMY ) > 0 && status->check_skilluse(src, bl, WZ_SIGHTBLASTER, 2) ) { - struct skill_unit *su = (struct skill_unit *)bl; - if (sce && skill->attack(BF_MAGIC,src,src,bl,WZ_SIGHTBLASTER,sce->val1,tick,0x4000) - && (!su || !su->group || !(skill->get_inf2(su->group->skill_id)&INF2_TRAP))) { // The hit is not counted if it's against a trap + const struct skill_unit *su = BL_CCAST(BL_SKILL, bl); + if (sce != NULL + && skill->attack(BF_MAGIC,src,src,bl,WZ_SIGHTBLASTER,sce->val1,tick,0x4000) + && (su == NULL || su->group == NULL || !(skill->get_inf2(su->group->skill_id)&INF2_TRAP)) + ) { + // The hit is not counted if it's against a trap sce->val2 = 0; // This signals it to end. } else if ((bl->type&BL_SKILL) && sce && sce->val4%2 == 0) { //Remove trap immunity temporarily so it triggers if you still stand on it @@ -11801,7 +11973,7 @@ int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int fl } if ( bl->type == BL_PC && !(flag & 2) ) { - struct map_session_data *sd = (struct map_session_data *)bl; + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); short index = sd->equip_index[EQI_HAND_R], refine; if ( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON && (refine = sd->status.inventory[index].refine) < 16 && refine ) { @@ -11872,16 +12044,25 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m } break; case BL_MER: - *matk_min += 70 * ((TBL_MER*)bl)->battle_status.rhw.atk2 / 100; - *matk_max += 130 * ((TBL_MER*)bl)->battle_status.rhw.atk2 / 100; + { + const struct mercenary_data *mc = BL_UCCAST(BL_MER, bl); + *matk_min += 70 * mc->battle_status.rhw.atk2 / 100; + *matk_max += 130 * mc->battle_status.rhw.atk2 / 100; + } break; case BL_MOB: - *matk_min += 70 * ((TBL_MOB*)bl)->status.rhw.atk2 / 100; - *matk_max += 130 * ((TBL_MOB*)bl)->status.rhw.atk2 / 100; + { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + *matk_min += 70 * md->status.rhw.atk2 / 100; + *matk_max += 130 * md->status.rhw.atk2 / 100; + } break; case BL_HOM: - *matk_min += (status_get_homint(bl) + status_get_homdex(bl)) / 5; - *matk_max += (status_get_homluk(bl) + status_get_homint(bl) + status_get_homdex(bl)) / 3; + { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + *matk_min += (status_get_homint(st, hd) + status_get_homdex(st, hd)) / 5; + *matk_max += (status_get_homluk(st, hd) + status_get_homint(st, hd) + status_get_homdex(st, hd)) / 3; + } break; } @@ -11917,6 +12098,13 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m return; } +#undef status_get_homstr +#undef status_get_homagi +#undef status_get_homvit +#undef status_get_homint +#undef status_get_homdex +#undef status_get_homluk + /** * Gets a random matk value depending on min matk and max matk **/ diff --git a/src/map/status.h b/src/map/status.h index 5996e8c2e..51ca1e78b 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -1641,10 +1641,10 @@ enum si_type { //SI_CHUSEOK_WEEKEND = 790, //SI_ALL_LIGHTGUARD = 791, //SI_ALL_LIGHTGUARD_COOL_TIME = 792, - //SI_MTF_MHP = 793, - //SI_MTF_MSP = 794, - //SI_MTF_PUMPKIN = 795, - //SI_MTF_HITFLEE = 796, + SI_MTF_MHP = 793, + SI_MTF_MSP = 794, + SI_MTF_PUMPKIN = 795, + SI_MTF_HITFLEE = 796, //SI_MTF_CRIDAMAGE2 = 797, //SI_MTF_SPDRAIN = 798, //SI_ACUO_MINT_GUM = 799, @@ -1923,6 +1923,9 @@ enum scb_flag SCB_RANGE = 0x10000000, SCB_REGEN = 0x20000000, SCB_DYE = 0x40000000, // force cloth-dye change to 0 to avoid client crashes. +#if 0 // Currently No SC use it. Also, when this will be implemented, there will be need to change to 64bit variable + SCB_BODY = 0x80000000, // Force bodysStyle change to 0 +#endif SCB_BATTLE = 0x3FFFFFFE, SCB_ALL = 0x3FFFFFFF @@ -2120,13 +2123,6 @@ struct status_change { #define status_get_size(bl) (status->get_status_data(bl)->size) #define status_get_mode(bl) (status->get_status_data(bl)->mode) -#define status_get_homstr(bl) (st->str + ((TBL_HOM*)bl)->homunculus.str_value) -#define status_get_homagi(bl) (st->agi + ((TBL_HOM*)bl)->homunculus.agi_value) -#define status_get_homvit(bl) (st->vit + ((TBL_HOM*)bl)->homunculus.vit_value) -#define status_get_homint(bl) (st->int_ + ((TBL_HOM*)bl)->homunculus.int_value) -#define status_get_homdex(bl) (st->dex + ((TBL_HOM*)bl)->homunculus.dex_value) -#define status_get_homluk(bl) (st->luk + ((TBL_HOM*)bl)->homunculus.luk_value) - //Short version, receives rate in 1->100 range, and does not uses a flag setting. #define sc_start(src, bl, type, rate, val1, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),0,0,0,(tick),SCFLAG_NONE)) #define sc_start2(src, bl, type, rate, val1, val2, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),(val2),0,0,(tick),SCFLAG_NONE)) diff --git a/src/map/unit.c b/src/map/unit.c index 4c5254373..03334f7f3 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -73,15 +73,16 @@ struct unit_interface *unit; * @param bl block_list to process * @return a pointer to the given object's unit_data **/ -struct unit_data* unit_bl2ud(struct block_list *bl) { - if( bl == NULL) return NULL; - if( bl->type == BL_PC) return &((struct map_session_data*)bl)->ud; - if( bl->type == BL_MOB) return &((struct mob_data*)bl)->ud; - if( bl->type == BL_PET) return &((struct pet_data*)bl)->ud; - if( bl->type == BL_NPC) return ((struct npc_data*)bl)->ud; - if( bl->type == BL_HOM) return &((struct homun_data*)bl)->ud; - if( bl->type == BL_MER) return &((struct mercenary_data*)bl)->ud; - if( bl->type == BL_ELEM) return &((struct elemental_data*)bl)->ud; +struct unit_data* unit_bl2ud(struct block_list *bl) +{ + if (bl == NULL) return NULL; + if (bl->type == BL_PC) return &BL_UCAST(BL_PC, bl)->ud; + if (bl->type == BL_MOB) return &BL_UCAST(BL_MOB, bl)->ud; + if (bl->type == BL_PET) return &BL_UCAST(BL_PET, bl)->ud; + if (bl->type == BL_NPC) return BL_UCAST(BL_NPC, bl)->ud; + if (bl->type == BL_HOM) return &BL_UCAST(BL_HOM, bl)->ud; + if (bl->type == BL_MER) return &BL_UCAST(BL_MER, bl)->ud; + if (bl->type == BL_ELEM) return &BL_UCAST(BL_ELEM, bl)->ud; return NULL; } @@ -92,9 +93,10 @@ struct unit_data* unit_bl2ud(struct block_list *bl) { * @param bl block_list to process * @return a pointer to the given object's unit_data */ -struct unit_data* unit_bl2ud2(struct block_list *bl) { - if( bl && bl->type == BL_NPC && ((struct npc_data*)bl)->ud == &npc->base_ud ) { - struct npc_data *nd = (struct npc_data *)bl; +struct unit_data *unit_bl2ud2(struct block_list *bl) +{ + struct npc_data *nd = BL_CAST(BL_NPC, bl); + if (nd != NULL && nd->ud == &npc->base_ud) { nd->ud = NULL; CREATE(nd->ud, struct unit_data, 1); unit->dataset(&nd->bl); @@ -148,8 +150,9 @@ int unit_walktoxy_sub(struct block_list *bl) ud->state.change_walk_target=0; if (bl->type == BL_PC) { - ((TBL_PC *)bl)->head_dir = 0; - clif->walkok((TBL_PC*)bl); + struct map_session_data *sd = BL_UCAST(BL_PC, bl); + sd->head_dir = 0; + clif->walkok(sd); } clif->move(ud); @@ -448,7 +451,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) { //Cancel chase. ud->to_x = bl->x; ud->to_y = bl->y; - if (tbl && bl->type == BL_MOB && mob->warpchase((TBL_MOB*)bl, tbl) ) + if (tbl && bl->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, bl), tbl)) return 0; ud->target_to = 0; return 0; @@ -813,7 +816,7 @@ int unit_setdir(struct block_list *bl,unsigned char dir) if (!ud) return 0; ud->dir = dir; if (bl->type == BL_PC) - ((TBL_PC *)bl)->head_dir = 0; + BL_UCAST(BL_PC, bl)->head_dir = 0; clif->changed_dir(bl, AREA); return 0; } @@ -823,7 +826,7 @@ uint8 unit_getdir(struct block_list *bl) { nullpo_ret(bl); if( bl->type == BL_NPC ) - return ((TBL_NPC*)bl)->dir; + return BL_UCCAST(BL_NPC, bl)->dir; ud = unit->bl2ud(bl); if (!ud) return 0; return ud->dir; @@ -917,10 +920,13 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) switch (bl->type) { case BL_MOB: - if (map->list[bl->m].flag.monster_noteleport && ((TBL_MOB*)bl)->master_id == 0) + { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + if (map->list[bl->m].flag.monster_noteleport && md->master_id == 0) return 1; - if (m != bl->m && map->list[m].flag.nobranch && battle_config.mob_warp&4 && !(((TBL_MOB *)bl)->master_id)) + if (m != bl->m && map->list[m].flag.nobranch && battle_config.mob_warp&4 && md->master_id == 0) return 1; + } break; case BL_PC: if (map->list[bl->m].flag.noteleport) @@ -947,7 +953,7 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) } if (bl->type == BL_PC) //Use pc_setpos - return pc->setpos((TBL_PC*)bl, map_id2index(m), x, y, type); + return pc->setpos(BL_UCAST(BL_PC, bl), map_id2index(m), x, y, type); if (!unit->remove_map(bl, type, ALC_MARK)) return 3; @@ -1137,7 +1143,7 @@ int unit_can_move(struct block_list *bl) { int unit_resume_running(int tid, int64 tick, int id, intptr_t data) { struct unit_data *ud = (struct unit_data *)data; - TBL_PC * sd = map->id2sd(id); + struct map_session_data *sd = map->id2sd(id); if(sd && pc_isridingwug(sd)) clif->skill_nodamage(ud->bl,ud->bl,RA_WUGDASH,ud->skill_lv, @@ -1164,7 +1170,7 @@ int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int type) { if (type) { //Bosses can ignore skill induced walkdelay (but not damage induced) - if(bl->type == BL_MOB && (((TBL_MOB*)bl)->status.mode&MD_BOSS)) + if (bl->type == BL_MOB && (BL_UCCAST(BL_MOB, bl)->status.mode&MD_BOSS)) return 0; //Make sure walk delay is not decreased if (DIFF_TICK(ud->canmove_tick, tick+delay) > 0) @@ -1256,13 +1262,17 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui break; case WE_MALE: case WE_FEMALE: + { + struct map_session_data *p_sd = NULL; if (!sd->status.partner_id) return 0; - target = (struct block_list*)map->charid2sd(sd->status.partner_id); - if (!target) { + p_sd = map->charid2sd(sd->status.partner_id); + if (p_sd == NULL) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; } + target = &p_sd->bl; + } break; case GC_WEAPONCRUSH: if( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == GC_WEAPONBLOCKING ) { @@ -1381,14 +1391,16 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui return 0; } - if( src->type == BL_MOB ) - switch( skill_id ) { + if (src->type == BL_MOB) { + const struct mob_data *src_md = BL_UCCAST(BL_MOB, src); + switch (skill_id) { case NPC_SUMMONSLAVE: case NPC_SUMMONMONSTER: case AL_TELEPORT: - if (((TBL_MOB*)src)->master_id && ((TBL_MOB*)src)->special_state.ai != AI_NONE) + if (src_md->master_id != 0 && src_md->special_state.ai != AI_NONE) return 0; } + } if (src->type == BL_NPC) // NPC-objects can override cast distance range = AREA_SIZE; // Maximum visible distance before NPC goes out of sight @@ -1564,9 +1576,8 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui clif->skillcasting(src, src->id, target_id, 0,0, skill_id, skill->get_ele(skill_id, skill_lv), casttime); if( casttime > 0 || temp ) { - if (sd && target->type == BL_MOB) - { - TBL_MOB *md = (TBL_MOB*)target; + if (sd != NULL && target->type == BL_MOB) { + struct mob_data *md = BL_UCAST(BL_MOB, target); mob->skill_event(md, src, tick, -1); //Cast targeted skill event. if (tstatus->mode&(MD_CASTSENSOR_IDLE|MD_CASTSENSOR_CHASE) && battle->check_target(target, src, BCT_ENEMY) > 0) @@ -1848,10 +1859,10 @@ int unit_unattackable(struct block_list *bl) unit->set_target(ud, 0); } - if(bl->type == BL_MOB) - mob->unlocktarget((struct mob_data*)bl, timer->gettick()) ; - else if(bl->type == BL_PET) - pet->unlocktarget((struct pet_data*)bl); + if (bl->type == BL_MOB) + mob->unlocktarget(BL_UCAST(BL_MOB, bl), timer->gettick()); + else if (bl->type == BL_PET) + pet->unlocktarget(BL_UCAST(BL_PET, bl)); return 0; } @@ -1872,10 +1883,10 @@ int unit_attack(struct block_list *src,int target_id,int continuous) { return 1; } - if( src->type == BL_PC ) { - TBL_PC* sd = (TBL_PC*)src; + if (src->type == BL_PC) { + struct map_session_data *sd = BL_UCAST(BL_PC, src); if( target->type == BL_NPC ) { // monster npcs [Valaris] - npc->click(sd,(TBL_NPC*)target); // submitted by leinsirk10 [Celest] + npc->click(sd, BL_UCAST(BL_NPC, target)); // submitted by leinsirk10 [Celest] return 0; } if( pc_is90overweight(sd) || pc_isridingwug(sd) ) { // overweight or mounted on warg - stop attacking @@ -2086,9 +2097,8 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) { ) return 0; // can't attack under these conditions - if( src->m != target->m ) - { - if( src->type == BL_MOB && mob->warpchase((TBL_MOB*)src, target) ) + if (src->m != target->m) { + if (src->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, src), target)) return 1; // Follow up. return 0; } @@ -2161,7 +2171,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) { map->foreachinrange(mob->linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick); } } - if(src->type == BL_PET && pet->attackskill((TBL_PET*)src, target->id)) + if (src->type == BL_PET && pet->attackskill(BL_UCAST(BL_PET, src), target->id)) return 1; map->freeblock_lock(); @@ -2256,7 +2266,8 @@ int unit_skillcastcancel(struct block_list *bl,int type) } } - if(bl->type==BL_MOB) ((TBL_MOB*)bl)->skill_idx = -1; + if (bl->type == BL_MOB) + BL_UCAST(BL_MOB, bl)->skill_idx = -1; clif->skillcastcancel(bl); return 1; @@ -2311,9 +2322,9 @@ int unit_changeviewsize(struct block_list *bl,short size) size=(size<0)?-1:(size>0)?1:0; if(bl->type == BL_PC) { - ((TBL_PC*)bl)->state.size=size; + BL_UCAST(BL_PC, bl)->state.size = size; } else if(bl->type == BL_MOB) { - ((TBL_MOB*)bl)->special_state.size=size; + BL_UCAST(BL_MOB, bl)->special_state.size = size; } else return 0; if(size!=0) @@ -2398,8 +2409,9 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i } switch( bl->type ) { - case BL_PC: { - struct map_session_data *sd = (struct map_session_data*)bl; + case BL_PC: + { + struct map_session_data *sd = BL_UCAST(BL_PC, bl); if(sd->shadowform_id) { struct block_list *d_bl = map->id2bl(sd->shadowform_id); @@ -2494,8 +2506,9 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i break; } - case BL_MOB: { - struct mob_data *md = (struct mob_data*)bl; + case BL_MOB: + { + struct mob_data *md = BL_UCAST(BL_MOB, bl); // Drop previous target mob_slave_keep_target: no. if (!battle_config.mob_slave_keep_target) md->target_id=0; @@ -2505,8 +2518,9 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i break; } - case BL_PET: { - struct pet_data *pd = (struct pet_data*)bl; + case BL_PET: + { + struct pet_data *pd = BL_UCAST(BL_PET, bl); if( pd->pet.intimate <= 0 && !(pd->msd && !pd->msd->state.active) ) { //If logging out, this is deleted on unit->free clif->clearunit_area(bl,clrtype); @@ -2519,7 +2533,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i break; } case BL_HOM: { - struct homun_data *hd = (struct homun_data *)bl; + struct homun_data *hd = BL_UCAST(BL_HOM, bl); if( !hd->homunculus.intimacy && !(hd->master && !hd->master->state.active) ) { //If logging out, this is deleted on unit->free clif->emotion(bl, E_SOB); @@ -2532,7 +2546,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i break; } case BL_MER: { - struct mercenary_data *md = (struct mercenary_data *)bl; + struct mercenary_data *md = BL_UCAST(BL_MER, bl); ud->canact_tick = ud->canmove_tick; if( mercenary->get_lifetime(md) <= 0 && !(md->master && !md->master->state.active) ) { clif->clearunit_area(bl,clrtype); @@ -2544,7 +2558,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i break; } case BL_ELEM: { - struct elemental_data *ed = (struct elemental_data *)bl; + struct elemental_data *ed = BL_UCAST(BL_ELEM, bl); ud->canact_tick = ud->canmove_tick; if( elemental->get_lifetime(ed) <= 0 && !(ed->master && !ed->master->state.active) ) { clif->clearunit_area(bl,clrtype); @@ -2608,7 +2622,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { switch( bl->type ) { case BL_PC: { - struct map_session_data *sd = (struct map_session_data*)bl; + struct map_session_data *sd = BL_UCAST(BL_PC, bl); sd->state.loggingout = 1; @@ -2672,7 +2686,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { } case BL_PET: { - struct pet_data *pd = (struct pet_data*)bl; + struct pet_data *pd = BL_UCAST(BL_PET, bl); struct map_session_data *sd = pd->msd; pet->hungry_timer_delete(pd); if( pd->a_skill ) @@ -2723,7 +2737,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { } case BL_MOB: { - struct mob_data *md = (struct mob_data*)bl; + struct mob_data *md = BL_UCAST(BL_MOB, bl); if( md->spawn_timer != INVALID_TIMER ) { timer->delete(md->spawn_timer,mob->delayspawn); @@ -2783,7 +2797,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { } case BL_HOM: { - struct homun_data *hd = (TBL_HOM*)bl; + struct homun_data *hd = BL_UCAST(BL_HOM, bl); struct map_session_data *sd = hd->master; homun->hunger_timer_delete(hd); if( hd->homunculus.intimacy > 0 ) @@ -2799,7 +2813,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { } case BL_MER: { - struct mercenary_data *md = (TBL_MER*)bl; + struct mercenary_data *md = BL_UCAST(BL_MER, bl); struct map_session_data *sd = md->master; if( mercenary->get_lifetime(md) > 0 ) mercenary->save(md); @@ -2816,7 +2830,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) { break; } case BL_ELEM: { - struct elemental_data *ed = (TBL_ELEM*)bl; + struct elemental_data *ed = BL_UCAST(BL_ELEM, bl); struct map_session_data *sd = ed->master; if( elemental->get_lifetime(ed) > 0 ) elemental->save(ed); diff --git a/src/map/unit.h b/src/map/unit.h index f0933aa9a..0279d73c1 100644 --- a/src/map/unit.h +++ b/src/map/unit.h @@ -93,7 +93,8 @@ struct view_data { head_bottom, hair_style, hair_color, - cloth_color; + cloth_color, + body_style; char sex; unsigned dead_sit : 2; }; diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc index aefb3aa93..dd6b3d5d6 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc index 3c442c4ab..34a9e4005 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc @@ -1,7 +1,7 @@ /** * This file is part of Hercules. * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc index 3e9e6e1d2..b1554aefd 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc index 92623f516..d14117add 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc index 5540e15b3..3a8bb2a5f 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc index 27e0f857d..959bb076f 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc @@ -1,7 +1,7 @@ /** * This file is part of Hercules. * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc index 012240bb3..2e2d9e619 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.sources.inc b/src/plugins/HPMHooking/HPMHooking_login.sources.inc index 38500f0ee..bbc1cecbc 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index c725cdf4a..e5ec573a9 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -3034,16 +3034,24 @@ struct { struct HPMHookPoint *HP_map_vforeachininstance_post; struct HPMHookPoint *HP_map_id2sd_pre; struct HPMHookPoint *HP_map_id2sd_post; - struct HPMHookPoint *HP_map_id2md_pre; - struct HPMHookPoint *HP_map_id2md_post; struct HPMHookPoint *HP_map_id2nd_pre; struct HPMHookPoint *HP_map_id2nd_post; + struct HPMHookPoint *HP_map_id2md_pre; + struct HPMHookPoint *HP_map_id2md_post; + struct HPMHookPoint *HP_map_id2fi_pre; + struct HPMHookPoint *HP_map_id2fi_post; + struct HPMHookPoint *HP_map_id2cd_pre; + struct HPMHookPoint *HP_map_id2cd_post; + struct HPMHookPoint *HP_map_id2su_pre; + struct HPMHookPoint *HP_map_id2su_post; + struct HPMHookPoint *HP_map_id2pd_pre; + struct HPMHookPoint *HP_map_id2pd_post; struct HPMHookPoint *HP_map_id2hd_pre; struct HPMHookPoint *HP_map_id2hd_post; struct HPMHookPoint *HP_map_id2mc_pre; struct HPMHookPoint *HP_map_id2mc_post; - struct HPMHookPoint *HP_map_id2cd_pre; - struct HPMHookPoint *HP_map_id2cd_post; + struct HPMHookPoint *HP_map_id2ed_pre; + struct HPMHookPoint *HP_map_id2ed_post; struct HPMHookPoint *HP_map_id2bl_pre; struct HPMHookPoint *HP_map_id2bl_post; struct HPMHookPoint *HP_map_blid_exists_pre; @@ -4262,6 +4270,8 @@ struct { struct HPMHookPoint *HP_pc_follow_timer_post; struct HPMHookPoint *HP_pc_read_skill_tree_pre; struct HPMHookPoint *HP_pc_read_skill_tree_post; + struct HPMHookPoint *HP_pc_clear_skill_tree_pre; + struct HPMHookPoint *HP_pc_clear_skill_tree_post; struct HPMHookPoint *HP_pc_isUseitem_pre; struct HPMHookPoint *HP_pc_isUseitem_post; struct HPMHookPoint *HP_pc_show_steal_pre; @@ -8861,16 +8871,24 @@ struct { int HP_map_vforeachininstance_post; int HP_map_id2sd_pre; int HP_map_id2sd_post; - int HP_map_id2md_pre; - int HP_map_id2md_post; int HP_map_id2nd_pre; int HP_map_id2nd_post; + int HP_map_id2md_pre; + int HP_map_id2md_post; + int HP_map_id2fi_pre; + int HP_map_id2fi_post; + int HP_map_id2cd_pre; + int HP_map_id2cd_post; + int HP_map_id2su_pre; + int HP_map_id2su_post; + int HP_map_id2pd_pre; + int HP_map_id2pd_post; int HP_map_id2hd_pre; int HP_map_id2hd_post; int HP_map_id2mc_pre; int HP_map_id2mc_post; - int HP_map_id2cd_pre; - int HP_map_id2cd_post; + int HP_map_id2ed_pre; + int HP_map_id2ed_post; int HP_map_id2bl_pre; int HP_map_id2bl_post; int HP_map_blid_exists_pre; @@ -10089,6 +10107,8 @@ struct { int HP_pc_follow_timer_post; int HP_pc_read_skill_tree_pre; int HP_pc_read_skill_tree_post; + int HP_pc_clear_skill_tree_pre; + int HP_pc_clear_skill_tree_post; int HP_pc_isUseitem_pre; int HP_pc_isUseitem_post; int HP_pc_show_steal_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 456f2985f..67fb2ce19 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -1,7 +1,7 @@ /** * This file is part of Hercules. * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1555,11 +1555,15 @@ struct HookingPointData HookingPoints[] = { { HP_POP(map->vforeachinmap, HP_map_vforeachinmap) }, { HP_POP(map->vforeachininstance, HP_map_vforeachininstance) }, { HP_POP(map->id2sd, HP_map_id2sd) }, - { HP_POP(map->id2md, HP_map_id2md) }, { HP_POP(map->id2nd, HP_map_id2nd) }, + { HP_POP(map->id2md, HP_map_id2md) }, + { HP_POP(map->id2fi, HP_map_id2fi) }, + { HP_POP(map->id2cd, HP_map_id2cd) }, + { HP_POP(map->id2su, HP_map_id2su) }, + { HP_POP(map->id2pd, HP_map_id2pd) }, { HP_POP(map->id2hd, HP_map_id2hd) }, { HP_POP(map->id2mc, HP_map_id2mc) }, - { HP_POP(map->id2cd, HP_map_id2cd) }, + { HP_POP(map->id2ed, HP_map_id2ed) }, { HP_POP(map->id2bl, HP_map_id2bl) }, { HP_POP(map->blid_exists, HP_map_blid_exists) }, { HP_POP(map->mapindex2mapid, HP_map_mapindex2mapid) }, @@ -2181,6 +2185,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(pc->autosave, HP_pc_autosave) }, { HP_POP(pc->follow_timer, HP_pc_follow_timer) }, { HP_POP(pc->read_skill_tree, HP_pc_read_skill_tree) }, + { HP_POP(pc->clear_skill_tree, HP_pc_clear_skill_tree) }, { HP_POP(pc->isUseitem, HP_pc_isUseitem) }, { HP_POP(pc->show_steal, HP_pc_show_steal) }, { HP_POP(pc->checkcombo, HP_pc_checkcombo) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index ad9d96f03..d7e798637 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -5499,11 +5499,11 @@ void HP_chrif_skillid2idx(int fd) { } return; } -bool HP_chrif_sd_to_auth(TBL_PC *sd, enum sd_state state) { +bool HP_chrif_sd_to_auth(struct map_session_data *sd, enum sd_state state) { int hIndex = 0; bool retVal___ = false; if( HPMHooks.count.HP_chrif_sd_to_auth_pre ) { - bool (*preHookFunc) (TBL_PC *sd, enum sd_state *state); + bool (*preHookFunc) (struct map_session_data *sd, enum sd_state *state); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_chrif_sd_to_auth_pre[hIndex].func; @@ -5518,7 +5518,7 @@ bool HP_chrif_sd_to_auth(TBL_PC *sd, enum sd_state state) { retVal___ = HPMHooks.source.chrif.sd_to_auth(sd, state); } if( HPMHooks.count.HP_chrif_sd_to_auth_post ) { - bool (*postHookFunc) (bool retVal___, TBL_PC *sd, enum sd_state *state); + bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum sd_state *state); for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_sd_to_auth_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_chrif_sd_to_auth_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &state); @@ -5553,11 +5553,11 @@ int HP_chrif_check_connect_char_server(int tid, int64 tick, int id, intptr_t dat } return retVal___; } -bool HP_chrif_auth_logout(TBL_PC *sd, enum sd_state state) { +bool HP_chrif_auth_logout(struct map_session_data *sd, enum sd_state state) { int hIndex = 0; bool retVal___ = false; if( HPMHooks.count.HP_chrif_auth_logout_pre ) { - bool (*preHookFunc) (TBL_PC *sd, enum sd_state *state); + bool (*preHookFunc) (struct map_session_data *sd, enum sd_state *state); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_chrif_auth_logout_pre[hIndex].func; @@ -5572,7 +5572,7 @@ bool HP_chrif_auth_logout(TBL_PC *sd, enum sd_state state) { retVal___ = HPMHooks.source.chrif.auth_logout(sd, state); } if( HPMHooks.count.HP_chrif_auth_logout_post ) { - bool (*postHookFunc) (bool retVal___, TBL_PC *sd, enum sd_state *state); + bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum sd_state *state); for(hIndex = 0; hIndex < HPMHooks.count.HP_chrif_auth_logout_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_chrif_auth_logout_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &state); @@ -27865,11 +27865,11 @@ int HP_guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) { } return retVal___; } -TBL_PC* HP_guild_sd_check(int guild_id, int account_id, int char_id) { +struct map_session_data* HP_guild_sd_check(int guild_id, int account_id, int char_id) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_guild_sd_check_pre ) { - TBL_PC* (*preHookFunc) (int *guild_id, int *account_id, int *char_id); + struct map_session_data* (*preHookFunc) (int *guild_id, int *account_id, int *char_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_guild_sd_check_pre[hIndex].func; @@ -27884,7 +27884,7 @@ TBL_PC* HP_guild_sd_check(int guild_id, int account_id, int char_id) { retVal___ = HPMHooks.source.guild.sd_check(guild_id, account_id, char_id); } if( HPMHooks.count.HP_guild_sd_check_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, int *guild_id, int *account_id, int *char_id); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int *guild_id, int *account_id, int *char_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_guild_sd_check_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_guild_sd_check_post[hIndex].func; retVal___ = postHookFunc(retVal___, &guild_id, &account_id, &char_id); @@ -40093,6 +40093,33 @@ struct map_session_data* HP_map_id2sd(int id) { } return retVal___; } +struct npc_data* HP_map_id2nd(int id) { + int hIndex = 0; + struct npc_data* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2nd_pre ) { + struct npc_data* (*preHookFunc) (int *id); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2nd_pre[hIndex].func; + retVal___ = preHookFunc(&id); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.map.id2nd(id); + } + if( HPMHooks.count.HP_map_id2nd_post ) { + struct npc_data* (*postHookFunc) (struct npc_data* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2nd_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &id); + } + } + return retVal___; +} struct mob_data* HP_map_id2md(int id) { int hIndex = 0; struct mob_data* retVal___ = NULL; @@ -40120,14 +40147,14 @@ struct mob_data* HP_map_id2md(int id) { } return retVal___; } -struct npc_data* HP_map_id2nd(int id) { +struct flooritem_data* HP_map_id2fi(int id) { int hIndex = 0; - struct npc_data* retVal___ = NULL; - if( HPMHooks.count.HP_map_id2nd_pre ) { - struct npc_data* (*preHookFunc) (int *id); + struct flooritem_data* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2fi_pre ) { + struct flooritem_data* (*preHookFunc) (int *id); *HPMforce_return = false; - for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_pre; hIndex++ ) { - preHookFunc = HPMHooks.list.HP_map_id2nd_pre[hIndex].func; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2fi_pre[hIndex].func; retVal___ = preHookFunc(&id); } if( *HPMforce_return ) { @@ -40136,12 +40163,93 @@ struct npc_data* HP_map_id2nd(int id) { } } { - retVal___ = HPMHooks.source.map.id2nd(id); + retVal___ = HPMHooks.source.map.id2fi(id); } - if( HPMHooks.count.HP_map_id2nd_post ) { - struct npc_data* (*postHookFunc) (struct npc_data* retVal___, int *id); - for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2nd_post; hIndex++ ) { - postHookFunc = HPMHooks.list.HP_map_id2nd_post[hIndex].func; + if( HPMHooks.count.HP_map_id2fi_post ) { + struct flooritem_data* (*postHookFunc) (struct flooritem_data* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2fi_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2fi_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &id); + } + } + return retVal___; +} +struct chat_data* HP_map_id2cd(int id) { + int hIndex = 0; + struct chat_data* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2cd_pre ) { + struct chat_data* (*preHookFunc) (int *id); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2cd_pre[hIndex].func; + retVal___ = preHookFunc(&id); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.map.id2cd(id); + } + if( HPMHooks.count.HP_map_id2cd_post ) { + struct chat_data* (*postHookFunc) (struct chat_data* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2cd_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &id); + } + } + return retVal___; +} +struct skill_unit* HP_map_id2su(int id) { + int hIndex = 0; + struct skill_unit* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2su_pre ) { + struct skill_unit* (*preHookFunc) (int *id); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2su_pre[hIndex].func; + retVal___ = preHookFunc(&id); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.map.id2su(id); + } + if( HPMHooks.count.HP_map_id2su_post ) { + struct skill_unit* (*postHookFunc) (struct skill_unit* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2su_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2su_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &id); + } + } + return retVal___; +} +struct pet_data* HP_map_id2pd(int id) { + int hIndex = 0; + struct pet_data* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2pd_pre ) { + struct pet_data* (*preHookFunc) (int *id); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2pd_pre[hIndex].func; + retVal___ = preHookFunc(&id); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.map.id2pd(id); + } + if( HPMHooks.count.HP_map_id2pd_post ) { + struct pet_data* (*postHookFunc) (struct pet_data* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2pd_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2pd_post[hIndex].func; retVal___ = postHookFunc(retVal___, &id); } } @@ -40201,14 +40309,14 @@ struct mercenary_data* HP_map_id2mc(int id) { } return retVal___; } -struct chat_data* HP_map_id2cd(int id) { +struct elemental_data* HP_map_id2ed(int id) { int hIndex = 0; - struct chat_data* retVal___ = NULL; - if( HPMHooks.count.HP_map_id2cd_pre ) { - struct chat_data* (*preHookFunc) (int *id); + struct elemental_data* retVal___ = NULL; + if( HPMHooks.count.HP_map_id2ed_pre ) { + struct elemental_data* (*preHookFunc) (int *id); *HPMforce_return = false; - for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_pre; hIndex++ ) { - preHookFunc = HPMHooks.list.HP_map_id2cd_pre[hIndex].func; + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_map_id2ed_pre[hIndex].func; retVal___ = preHookFunc(&id); } if( *HPMforce_return ) { @@ -40217,12 +40325,12 @@ struct chat_data* HP_map_id2cd(int id) { } } { - retVal___ = HPMHooks.source.map.id2cd(id); + retVal___ = HPMHooks.source.map.id2ed(id); } - if( HPMHooks.count.HP_map_id2cd_post ) { - struct chat_data* (*postHookFunc) (struct chat_data* retVal___, int *id); - for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2cd_post; hIndex++ ) { - postHookFunc = HPMHooks.list.HP_map_id2cd_post[hIndex].func; + if( HPMHooks.count.HP_map_id2ed_post ) { + struct elemental_data* (*postHookFunc) (struct elemental_data* retVal___, int *id); + for(hIndex = 0; hIndex < HPMHooks.count.HP_map_id2ed_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_map_id2ed_post[hIndex].func; retVal___ = postHookFunc(retVal___, &id); } } @@ -51048,11 +51156,11 @@ void HP_party_fill_member(struct party_member *member, struct map_session_data * } return; } -TBL_PC* HP_party_sd_check(int party_id, int account_id, int char_id) { +struct map_session_data* HP_party_sd_check(int party_id, int account_id, int char_id) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_party_sd_check_pre ) { - TBL_PC* (*preHookFunc) (int *party_id, int *account_id, int *char_id); + struct map_session_data* (*preHookFunc) (int *party_id, int *account_id, int *char_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_party_sd_check_pre[hIndex].func; @@ -51067,7 +51175,7 @@ TBL_PC* HP_party_sd_check(int party_id, int account_id, int char_id) { retVal___ = HPMHooks.source.party.sd_check(party_id, account_id, char_id); } if( HPMHooks.count.HP_party_sd_check_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, int *party_id, int *account_id, int *char_id); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, int *party_id, int *account_id, int *char_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_party_sd_check_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_party_sd_check_post[hIndex].func; retVal___ = postHookFunc(retVal___, &party_id, &account_id, &char_id); @@ -56817,6 +56925,32 @@ void HP_pc_read_skill_tree(void) { } return; } +void HP_pc_clear_skill_tree(void) { + int hIndex = 0; + if( HPMHooks.count.HP_pc_clear_skill_tree_pre ) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_pc_clear_skill_tree_pre[hIndex].func; + preHookFunc(); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.pc.clear_skill_tree(); + } + if( HPMHooks.count.HP_pc_clear_skill_tree_post ) { + void (*postHookFunc) (void); + for(hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_skill_tree_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_pc_clear_skill_tree_post[hIndex].func; + postHookFunc(); + } + } + return; +} int HP_pc_isUseitem(struct map_session_data *sd, int n) { int hIndex = 0; int retVal___ = 0; @@ -58796,11 +58930,11 @@ struct quest_db* HP_quest_db(int quest_id) { } return retVal___; } -int HP_quest_pc_login(TBL_PC *sd) { +int HP_quest_pc_login(struct map_session_data *sd) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_pc_login_pre ) { - int (*preHookFunc) (TBL_PC *sd); + int (*preHookFunc) (struct map_session_data *sd); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_pc_login_pre[hIndex].func; @@ -58815,7 +58949,7 @@ int HP_quest_pc_login(TBL_PC *sd) { retVal___ = HPMHooks.source.quest.pc_login(sd); } if( HPMHooks.count.HP_quest_pc_login_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd); + int (*postHookFunc) (int retVal___, struct map_session_data *sd); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_pc_login_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_pc_login_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd); @@ -58823,11 +58957,11 @@ int HP_quest_pc_login(TBL_PC *sd) { } return retVal___; } -int HP_quest_add(TBL_PC *sd, int quest_id) { +int HP_quest_add(struct map_session_data *sd, int quest_id) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_add_pre ) { - int (*preHookFunc) (TBL_PC *sd, int *quest_id); + int (*preHookFunc) (struct map_session_data *sd, int *quest_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_add_pre[hIndex].func; @@ -58842,7 +58976,7 @@ int HP_quest_add(TBL_PC *sd, int quest_id) { retVal___ = HPMHooks.source.quest.add(sd, quest_id); } if( HPMHooks.count.HP_quest_add_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd, int *quest_id); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int *quest_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_add_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_add_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &quest_id); @@ -58850,11 +58984,11 @@ int HP_quest_add(TBL_PC *sd, int quest_id) { } return retVal___; } -int HP_quest_change(TBL_PC *sd, int qid1, int qid2) { +int HP_quest_change(struct map_session_data *sd, int qid1, int qid2) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_change_pre ) { - int (*preHookFunc) (TBL_PC *sd, int *qid1, int *qid2); + int (*preHookFunc) (struct map_session_data *sd, int *qid1, int *qid2); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_change_pre[hIndex].func; @@ -58869,7 +59003,7 @@ int HP_quest_change(TBL_PC *sd, int qid1, int qid2) { retVal___ = HPMHooks.source.quest.change(sd, qid1, qid2); } if( HPMHooks.count.HP_quest_change_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd, int *qid1, int *qid2); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int *qid1, int *qid2); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_change_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_change_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &qid1, &qid2); @@ -58877,11 +59011,11 @@ int HP_quest_change(TBL_PC *sd, int qid1, int qid2) { } return retVal___; } -int HP_quest_delete(TBL_PC *sd, int quest_id) { +int HP_quest_delete(struct map_session_data *sd, int quest_id) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_delete_pre ) { - int (*preHookFunc) (TBL_PC *sd, int *quest_id); + int (*preHookFunc) (struct map_session_data *sd, int *quest_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_delete_pre[hIndex].func; @@ -58896,7 +59030,7 @@ int HP_quest_delete(TBL_PC *sd, int quest_id) { retVal___ = HPMHooks.source.quest.delete(sd, quest_id); } if( HPMHooks.count.HP_quest_delete_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd, int *quest_id); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int *quest_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_delete_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_delete_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &quest_id); @@ -58937,10 +59071,10 @@ int HP_quest_update_objective_sub(struct block_list *bl, va_list ap) { } return retVal___; } -void HP_quest_update_objective(TBL_PC *sd, int mob_id) { +void HP_quest_update_objective(struct map_session_data *sd, int mob_id) { int hIndex = 0; if( HPMHooks.count.HP_quest_update_objective_pre ) { - void (*preHookFunc) (TBL_PC *sd, int *mob_id); + void (*preHookFunc) (struct map_session_data *sd, int *mob_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_update_objective_pre[hIndex].func; @@ -58955,7 +59089,7 @@ void HP_quest_update_objective(TBL_PC *sd, int mob_id) { HPMHooks.source.quest.update_objective(sd, mob_id); } if( HPMHooks.count.HP_quest_update_objective_post ) { - void (*postHookFunc) (TBL_PC *sd, int *mob_id); + void (*postHookFunc) (struct map_session_data *sd, int *mob_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_objective_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_update_objective_post[hIndex].func; postHookFunc(sd, &mob_id); @@ -58963,11 +59097,11 @@ void HP_quest_update_objective(TBL_PC *sd, int mob_id) { } return; } -int HP_quest_update_status(TBL_PC *sd, int quest_id, enum quest_state qs) { +int HP_quest_update_status(struct map_session_data *sd, int quest_id, enum quest_state qs) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_update_status_pre ) { - int (*preHookFunc) (TBL_PC *sd, int *quest_id, enum quest_state *qs); + int (*preHookFunc) (struct map_session_data *sd, int *quest_id, enum quest_state *qs); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_update_status_pre[hIndex].func; @@ -58982,7 +59116,7 @@ int HP_quest_update_status(TBL_PC *sd, int quest_id, enum quest_state qs) { retVal___ = HPMHooks.source.quest.update_status(sd, quest_id, qs); } if( HPMHooks.count.HP_quest_update_status_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd, int *quest_id, enum quest_state *qs); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int *quest_id, enum quest_state *qs); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_update_status_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_update_status_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &quest_id, &qs); @@ -58990,11 +59124,11 @@ int HP_quest_update_status(TBL_PC *sd, int quest_id, enum quest_state qs) { } return retVal___; } -int HP_quest_check(TBL_PC *sd, int quest_id, enum quest_check_type type) { +int HP_quest_check(struct map_session_data *sd, int quest_id, enum quest_check_type type) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_quest_check_pre ) { - int (*preHookFunc) (TBL_PC *sd, int *quest_id, enum quest_check_type *type); + int (*preHookFunc) (struct map_session_data *sd, int *quest_id, enum quest_check_type *type); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_quest_check_pre[hIndex].func; @@ -59009,7 +59143,7 @@ int HP_quest_check(TBL_PC *sd, int quest_id, enum quest_check_type type) { retVal___ = HPMHooks.source.quest.check(sd, quest_id, type); } if( HPMHooks.count.HP_quest_check_post ) { - int (*postHookFunc) (int retVal___, TBL_PC *sd, int *quest_id, enum quest_check_type *type); + int (*postHookFunc) (int retVal___, struct map_session_data *sd, int *quest_id, enum quest_check_type *type); for(hIndex = 0; hIndex < HPMHooks.count.HP_quest_check_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_quest_check_post[hIndex].func; retVal___ = postHookFunc(retVal___, sd, &quest_id, &type); @@ -59444,11 +59578,11 @@ const char* HP_script_conv_str(struct script_state *st, struct script_data *data } return retVal___; } -TBL_PC* HP_script_rid2sd(struct script_state *st) { +struct map_session_data* HP_script_rid2sd(struct script_state *st) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_script_rid2sd_pre ) { - TBL_PC* (*preHookFunc) (struct script_state *st); + struct map_session_data* (*preHookFunc) (struct script_state *st); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_script_rid2sd_pre[hIndex].func; @@ -59463,7 +59597,7 @@ TBL_PC* HP_script_rid2sd(struct script_state *st) { retVal___ = HPMHooks.source.script.rid2sd(st); } if( HPMHooks.count.HP_script_rid2sd_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st); for(hIndex = 0; hIndex < HPMHooks.count.HP_script_rid2sd_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_script_rid2sd_post[hIndex].func; retVal___ = postHookFunc(retVal___, st); @@ -59471,11 +59605,11 @@ TBL_PC* HP_script_rid2sd(struct script_state *st) { } return retVal___; } -TBL_PC* HP_script_id2sd(struct script_state *st, int account_id) { +struct map_session_data* HP_script_id2sd(struct script_state *st, int account_id) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_script_id2sd_pre ) { - TBL_PC* (*preHookFunc) (struct script_state *st, int *account_id); + struct map_session_data* (*preHookFunc) (struct script_state *st, int *account_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_script_id2sd_pre[hIndex].func; @@ -59490,7 +59624,7 @@ TBL_PC* HP_script_id2sd(struct script_state *st, int account_id) { retVal___ = HPMHooks.source.script.id2sd(st, account_id); } if( HPMHooks.count.HP_script_id2sd_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, int *account_id); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, int *account_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_script_id2sd_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_script_id2sd_post[hIndex].func; retVal___ = postHookFunc(retVal___, st, &account_id); @@ -59498,11 +59632,11 @@ TBL_PC* HP_script_id2sd(struct script_state *st, int account_id) { } return retVal___; } -TBL_PC* HP_script_charid2sd(struct script_state *st, int char_id) { +struct map_session_data* HP_script_charid2sd(struct script_state *st, int char_id) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_script_charid2sd_pre ) { - TBL_PC* (*preHookFunc) (struct script_state *st, int *char_id); + struct map_session_data* (*preHookFunc) (struct script_state *st, int *char_id); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_script_charid2sd_pre[hIndex].func; @@ -59517,7 +59651,7 @@ TBL_PC* HP_script_charid2sd(struct script_state *st, int char_id) { retVal___ = HPMHooks.source.script.charid2sd(st, char_id); } if( HPMHooks.count.HP_script_charid2sd_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, int *char_id); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, int *char_id); for(hIndex = 0; hIndex < HPMHooks.count.HP_script_charid2sd_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_script_charid2sd_post[hIndex].func; retVal___ = postHookFunc(retVal___, st, &char_id); @@ -59525,11 +59659,11 @@ TBL_PC* HP_script_charid2sd(struct script_state *st, int char_id) { } return retVal___; } -TBL_PC* HP_script_nick2sd(struct script_state *st, const char *name) { +struct map_session_data* HP_script_nick2sd(struct script_state *st, const char *name) { int hIndex = 0; - TBL_PC* retVal___ = NULL; + struct map_session_data* retVal___ = NULL; if( HPMHooks.count.HP_script_nick2sd_pre ) { - TBL_PC* (*preHookFunc) (struct script_state *st, const char *name); + struct map_session_data* (*preHookFunc) (struct script_state *st, const char *name); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_script_nick2sd_pre[hIndex].func; @@ -59544,7 +59678,7 @@ TBL_PC* HP_script_nick2sd(struct script_state *st, const char *name) { retVal___ = HPMHooks.source.script.nick2sd(st, name); } if( HPMHooks.count.HP_script_nick2sd_post ) { - TBL_PC* (*postHookFunc) (TBL_PC* retVal___, struct script_state *st, const char *name); + struct map_session_data* (*postHookFunc) (struct map_session_data* retVal___, struct script_state *st, const char *name); for(hIndex = 0; hIndex < HPMHooks.count.HP_script_nick2sd_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_script_nick2sd_post[hIndex].func; retVal___ = postHookFunc(retVal___, st, name); @@ -61545,11 +61679,11 @@ void HP_script_errorwarning_sub(StringBuf *buf, const char *src, const char *fil } return; } -int HP_script_set_reg(struct script_state *st, TBL_PC *sd, int64 num, const char *name, const void *value, struct reg_db *ref) { +int HP_script_set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref) { int hIndex = 0; int retVal___ = 0; if( HPMHooks.count.HP_script_set_reg_pre ) { - int (*preHookFunc) (struct script_state *st, TBL_PC *sd, int64 *num, const char *name, const void *value, struct reg_db *ref); + int (*preHookFunc) (struct script_state *st, struct map_session_data *sd, int64 *num, const char *name, const void *value, struct reg_db *ref); *HPMforce_return = false; for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_pre; hIndex++ ) { preHookFunc = HPMHooks.list.HP_script_set_reg_pre[hIndex].func; @@ -61564,7 +61698,7 @@ int HP_script_set_reg(struct script_state *st, TBL_PC *sd, int64 num, const char retVal___ = HPMHooks.source.script.set_reg(st, sd, num, name, value, ref); } if( HPMHooks.count.HP_script_set_reg_post ) { - int (*postHookFunc) (int retVal___, struct script_state *st, TBL_PC *sd, int64 *num, const char *name, const void *value, struct reg_db *ref); + int (*postHookFunc) (int retVal___, struct script_state *st, struct map_session_data *sd, int64 *num, const char *name, const void *value, struct reg_db *ref); for(hIndex = 0; hIndex < HPMHooks.count.HP_script_set_reg_post; hIndex++ ) { postHookFunc = HPMHooks.list.HP_script_set_reg_post[hIndex].func; retVal___ = postHookFunc(retVal___, st, sd, &num, name, value, ref); diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc index bab4f3931..1af35ab21 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2015 Hercules Dev Team + * Copyright (C) 2013-2016 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by |