Przeglądaj źródła

- Added Flavius Battleground scripts.
- Fixed the last commit about Assumptio, it's only player to monsters, but it can be used on mercenaries.
- Added new JapanRO pets.
- Fixed Valorous Assaulter's Katzbalger missing str bonus.
- Medal of Mage (battleground reward) can also be used by Soul linkers.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13631 54d463be-8e91-2dee-dedb-b68131a5f0ec

zephyrus 16 lat temu
rodzic
commit
fc959075f5

+ 86 - 3
db/item_db.txt

@@ -543,7 +543,7 @@
 1181,Tae_Goo_Lyeon,Tae Goo Lyeon,4,20,,2000,250,,1,2,0x00004082,2,2,34,4,79,1,3,{ bonus bFlee2,10; if (JobLevel>=70) bonusautoscript "{ sc_start SC_INCBASEATK,5000,50; }",10; if (getrefine() > 8) { bonus bCastrate,-20; bonus bDelayRate,-20; } },{},{}
 1182,Bloody_Eater,Bloody Eater,4,20,,2000,250,,1,2,0x00004082,2,2,34,4,79,1,3,{ bonusautoscript "{ sc_start SC_INCCRI,15000,100; sc_start SC_INCBASEATK,15000,100; }",10; bonus bHPGainValue,100; },{},{}
 1183,Brave_Assaulter's_Katzbalger,Brave Assaulter's Katzbalger,4,,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
-1184,Valorous_Assaulter's_Katzbalger,Valorous Assaulter's Katzbalger,4,,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
+1184,Valorous_Assaulter's_Katzbalger,Valorous Assaulter's Katzbalger,4,,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
 1185,Violet_Fear,Violet Fear,4,,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,10; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,10; },{},{}
 //1186#Invoker_Of_Death#
 1187,Glorious_Claymore,Glorious Claymore,4,0,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine() > 5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; if(getrefine() > 8) { bonus3 bAutoSpell,"LK_CONCENTRATION",1,50; bonus3 bAutoSpell,"LK_AURABLADE",1,50; } },{},{}
@@ -1479,7 +1479,7 @@
 2720,Medal_Swordman,Medal of Honor,5,0,,0,,1,,0,0x00004082,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bHit,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus2 bAddEff,Eff_Stun,1000; },{},{}
 2721,Medal_Thief,Medal of Honor,5,0,,0,,1,,0,0x00021040,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bFlee,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus2 bAddEff,Eff_Poison,1000; },{},{}
 2722,Medal_Acolyte,Medal of Honor,5,0,,0,,1,,0,0x00008110,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus2 bAddEff,Eff_Silence,1000; },{},{}
-2723,Medal_Mage,Medal of Honor,5,0,,0,,1,,0,0x00010204,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus2 bAddEffWhenHit,Eff_Stone,1000; },{},{}
+2723,Medal_Mage,Medal of Honor,5,0,,0,,1,,0,0x00810204,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus2 bAddEffWhenHit,Eff_Stone,1000; },{},{}
 2724,Medal_Archer,Medal of Honor,5,0,,0,,1,,0,0x00080808,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus2 bAddEff,Eff_Blind,1000; },{},{}
 2725,Medal_Merchant,Medal of Honor,5,0,,0,,1,,0,0x00040420,7,2,136,,70,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bAspd,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus2 bAddEff,Eff_Curse,1000; },{},{}
 2726,Icarus_Wing,Icarus Wings,5,20,,100,,0,,0,0x00000800,2,2,136,,70,0,0,{ bonus bMaxSP,50; bonus bDex,3; },{},{}
@@ -2514,6 +2514,31 @@
 6047,Clothing_Dye_Coupon_II,Clothing Dye Coupon_II,3,0,,10,,,,,,,,,,,,,{},{},{}
 6048,Unidentified_Ore,Unidentified Ore,3,0,,10,,,,,,,,,,,,,{},{},{}
 6049,Blue_Marlin,Blue_Marlin,3,0,,10,,,,,,,,,,,,,{},{},{}
+
+// More Pet Food
+// 6094,Traditional_Sweets,Traditional Sweets,3,0,,10,,,,,,,,,,,,,{},{},{}
+6095,Fragance_Liquor,Fragance Liquor,3,0,,10,,,,,,,,,,,,,{},{},{}
+6096,Blue_Fish,Blue Fish,3,0,,10,,,,,,,,,,,,,{},{},{}
+6097,Pumpkin_Pie,Pumpkin Pie,3,0,,10,,,,,,,,,,,,,{},{},{}
+6098,Small_Snow,Small Snow,3,0,,10,,,,,,,,,,,,,{},{},{}
+6099,Roast_Rice_Cake,Roast Rice Cake,3,0,,10,,,,,,,,,,,,,{},{},{}
+6100,Chunks_Of_Darkness,Chunks of Darkness,3,0,,10,,,,,,,,,,,,,{},{},{}
+6104,Big_Cell,Big Cell,3,0,,10,,,,,,,,,,,,,{},{},{}
+6105,Morning_Dew,Morning Dew,3,0,,10,,,,,,,,,,,,,{},{},{}
+6106,Well_Ripened_Strawberry,Well Ripened Strawberry,3,0,,10,,,,,,,,,,,,,{},{},{}
+6107,Sunset_Cocktail,Sunset Cocktail,3,0,,10,,,,,,,,,,,,,{},{},{}
+6108,Apple_Pudding,Apple Pudding,3,0,,10,,,,,,,,,,,,,{},{},{}
+6109,Plant_Nutrition,Plant Nutrition,3,0,,10,,,,,,,,,,,,,{},{},{}
+6110,Flower_Of_Life,Flower of Life,3,0,,10,,,,,,,,,,,,,{},{},{}
+6111,Magic_Of_Stone, Magic of Stone,3,0,,10,,,,,,,,,,,,,{},{},{}
+6112,Fresh_Grass,Fresh Grass,3,0,,10,,,,,,,,,,,,,{},{},{}
+6113,Flower_Of_Life,Flower of Life,3,0,,10,,,,,,,,,,,,,{},{},{}
+6114,Gemstone_Of_Fire,Gemstone of Fire,3,0,,10,,,,,,,,,,,,,{},{},{}
+6115,Child_Dumpling,Child Dumpling,3,0,,10,,,,,,,,,,,,,{},{},{}
+6116,Succubus_Pet_Exchange_Coupon,Succubus Pet Exchange Coupon,3,0,,10,,,,,,,,,,,,,{},{},{}
+6117,Imp_Pet_Exchange_Coupon,Imp Pet Exchange Coupon,3,0,,10,,,,,,,,,,,,,{},{},{}
+6118,Chung_E_Exchange_Coupon,Chung E Exchange Coupon,3,0,,10,,,,,,,,,,,,,{},{},{}
+
 7001,Mould_Powder,Mould Powder,3,466,,10,,,,,,,,,,,,,{},{},{}
 7002,Ogre_Tooth,Ogre Tooth,3,658,,10,,,,,,,,,,,,,{},{},{}
 7003,Anolian_Skin,Anolian Skin,3,968,,10,,,,,,,,,,,,,{},{},{}
@@ -3387,6 +3412,25 @@
 9036,Diabolic_Egg,Diabolic Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
 9037,Wanderer_Egg,Wanderer Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
 9038,Chung_E_Egg_,New year Doll Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+// 9039,Bacsojin_Egg,Bacsojin Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9040,Civil_Servant_Egg,Civil Servant Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9041,Leaf_Cat_Egg,Leaf Cat Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9042,Loli_Ruri_Egg,Loli Ruri Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9043,Marionette_Egg,Marionette Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9044,Shinobi_Egg,Shinobi Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9045,Whisper_Egg,Whisper Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9046,Goblin_Leader_Egg,Goblin Leader Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9047,Wicked_Nymph_Egg,Wicked Nymph Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9048,Miyabi_Ningyo_Egg,Miyabi Ningyo Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9049,Dullahan_Egg,Dullahan Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9050,Medusa_Egg,Medusa Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9051,Stone_Shooter_Egg,Stone Shooter Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9052,Incubus_Egg,Incubus Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9053,Golem_Egg,Golem Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9054,Nightmare_Terror_Egg,Nightmare Terror Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9055,Succubus_Egg,Succubus Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+9056,Imp_Egg,Imp Egg,7,20,,0,,,,,,,,,,,,,{},{},{}
+
 // Pet Accessories
 //===================================================================
 10001,Skull_Helm,Skull Helm,8,20,,0,,,,,,,,,,,,,{},{},{}
@@ -3409,6 +3453,25 @@
 10018,Monkey_Circlet,Monkey Circlet,8,20,,0,,,,,,,,,,,,,{},{},{}
 10019,Red_Muffler,Red Scarf,8,20,,0,,,,,,,,,,,,,{},{},{}
 10020,Sword_Of_Grave_Keeper,Grave Keeper's Sword,8,20,,0,,,,,,,,,,,,,{},{},{}
+// 10021,Circular_Headgear,Circular Headgear,8,20,,0,,,,,,,,,,,,,{},{},{}
+10022,Gold_Earring,Gold Earring,8,20,,0,,,,,,,,,,,,,{},{},{}
+10023,Green_Jewel_Bag,Green Jewel Bag,8,20,,0,,,,,,,,,,,,,{},{},{}
+10024,Fashion_Glasses,Fashion Glasses,8,20,,0,,,,,,,,,,,,,{},{},{}
+10025,Hairband_Of_Stars,Hairband Of Stars,8,20,,0,,,,,,,,,,,,,{},{},{}
+10026,Tassel_for_Durumagi,Tassel for Durumagi,8,20,,0,,,,,,,,,,,,,{},{},{}
+10027,Pet_Soul_Ring,Pet Soul Ring,8,20,,0,,,,,,,,,,,,,{},{},{}
+10028,Beautiful_Badges,Beautiful Badges,8,20,,0,,,,,,,,,,,,,{},{},{}
+10029,Jade_Trinket,Jade Trinket,8,20,,0,,,,,,,,,,,,,{},{},{}
+10030,Summer_Fan,Summer Fan,8,20,,0,,,,,,,,,,,,,{},{},{}
+10031,Ring_Of_Death,Ring Of Death,8,20,,0,,,,,,,,,,,,,{},{},{}
+10032,Queen's_Coronet,Queen's Coronet,8,20,,0,,,,,,,,,,,,,{},{},{}
+10033,Afro,Afro,8,20,,0,,,,,,,,,,,,,{},{},{}
+10034,Masked_Ball,Masked Ball,8,20,,0,,,,,,,,,,,,,{},{},{}
+10035,Spring,Spring,8,20,,0,,,,,,,,,,,,,{},{},{}
+10036,Horn_Of_Hell,Horn Of Hell,8,20,,0,,,,,,,,,,,,,{},{},{}
+10037,Black_Butterfly_Mask,Black Butterfly Mask,8,20,,0,,,,,,,,,,,,,{},{},{}
+10038,Horn_Barrier,Horn Barrier,8,20,,0,,,,,,,,,,,,,{},{},{}
+
 // Misc "Etc" Books
 //===================================================================
 11000,Prontera_Book_01,History book of Prontera,3,8000,,0,,,,,,,,,,,,,{},{},{}
@@ -3757,7 +3820,27 @@
 12323,Novice_Wing_Of_Fly,Novice Fly Wing,2,1,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "Random",0,0; },{},{}
 12324,Novice_Wing_Of_Butterfly,Novice Butterfly Wing,2,1,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "SavePoint",0,0; },{},{}
 12325,Novice_Spectacles,Novice Magnifier,11,1,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "MC_IDENTIFY",1; },{},{}
-//
+
+// More Pet Tamings
+// 12357,Shining_Winged_Cloth,Shining Winged Cloth,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1002; },{},{}
+12358,Wind_Fan,Wind Fan,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1513; },{},{}
+12359,Soft_Grass,Soft Grass,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1586; },{},{}
+12360,Red_Juice,Red Juice,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1505; },{},{}
+12361,Tasty_Sundae,Tasty Sundae,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1143; },{},{}
+12362,Len_Cross,Len Cross,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1401; },{},{}
+12363,Customized_Coffin,Customized Coffin,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1179; },{},{}
+12364,Staff_Of_Leader,Staff Of Leader,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1299; },{},{}
+12365,Lovely_Lotus,Lovely Lotus,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1416; },{},{}
+12366,Girl_Dolls,Girl Dolls,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1404; },{},{}
+12367,Liquor_Bottle,Liquor Bottle,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1504; },{},{}
+12368,Brilliant_Mirror,Brilliant Mirror,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1148; },{},{}
+12369,Oil_Palm_Fruit,Oil Palm Fruit,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1495; },{},{}
+12370,Romance_Of_Girl,Romance Of Girl,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1374; },{},{}
+12371,Lithograph_Of_Magic,Lithograph Of Magic,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1040; },{},{}
+12372,Contract_Of_Hell,Contract Of Hell,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1379; },{},{}
+12373,Romance_Of_Boy,Romance Of Boy,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1370; },{},{}
+12374,Flame_Ice,Flame Ice,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1837; },{},{}
+
 12701,Old_Blue_Box_F,Old Blue Box,2,,,200,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 //April Fools Day Event (2007)
 12702,Old_Bleu_Box,Old Bleu Box,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_BleuBox),1; getitem groupranditem(IG_BleuBox),1; },{},{}

+ 26 - 6
db/pet_db.txt

@@ -37,8 +37,8 @@
 1049,PICKY,Picky,623,9005,10012,507,80,15,40,100,250,20,2000,200,1,0,500,600,50,{ petskillbonus bStr,3,10,50;},{ bonus bStr,1; bonus bAtk,5; }
 1011,CHONCHON,ChonChon,624,9006,10002,537,80,10,30,100,250,20,1500,200,1,0,500,500,250,{ petskillbonus bAgi,4,10,50; },{ bonus bAgi,1; bonus bFlee,2; }
 1167,SAVAGE_BABE,Savage Babe,627,9009,10015,537,80,9,40,100,250,20,1500,400,0,0,500,500,200,{ petskillbonus bVit,4,10,50; },{ bonus bVit,1; bonus bMaxHP,50; }
-1107,DESERT_WOLF_B,Baby Desert Wolf,628,9010,10003,537,80,10,40,100,250,20,1000,300,0,0,400,400,400,{ petskillattack "SM_PROVOKE",1,0,5;},{ bonus bInt,1; bonus bMaxSP,20; }
-1052,ROCKER,Rocker,629,9011,10014,537,80,60,30,100,250,20,1500,200,0,0,350,350,600,{ petskillbonus bAllStats,1,10,50; },{ bonus bHPrecovRate,5; bonus bMaxHP,25; }
+1107,DESERT_WOLF_B,Baby Desert Wolf,628,9010,10003,537,80,10,40,100,250,20,1000,300,0,0,400,400,400,{ petskillattack "SM_PROVOKE",1,0,5;},{ bonus bInt,1; bonus bMaxSP,50; }
+1052,ROCKER,Rocker,629,9011,10014,537,80,60,30,100,250,20,1500,200,0,0,350,350,600,{ petskillbonus bAllStats,1,10,50; },{ bonus bHPrecovRate,-5; bonus bMaxHP,25; }
 1014,SPORE,Spore,630,9012,10017,537,80,20,30,100,250,20,1500,200,0,0,350,500,500,{ petrecovery SC_Poison,60; },{ bonus bHit,5; bonus bAtk,-2; }
 1031,POPORING,Poporing,621,9003,10013,511,80,12,30,100,250,20,1000,300,1,0,300,500,400,{ petloot 15; },{ bonus bLuk,2; bonus2 bSubEle,Ele_Poison,10; }
 1042,STEEL_CHONCHON,Steel ChonChon,625,9007,10002,1002,80,12,20,100,250,20,1000,150,1,0,500,500,200,{ petskillbonus bAgiVit,4,20,40; },{ bonus bFlee,6; bonus bAgi,-1; }
@@ -51,17 +51,18 @@
 1188,BON_GUN,Bon Gun,659,9025,10020,537,80,20,10,100,250,20,500,200,1,0,600,200,400,{ petskillattack2 "NPC_DARKNESSATTACK",555,1,1,1; },{ bonus bVit,1; bonus2 bResEff,Eff_Stun,100; }
 1110,DOKEBI,Dokebi,637,9019,10005,537,80,15,20,100,250,20,500,250,0,0,300,300,800,{ petskillattack "BS_HAMMERFALL",1,0,10; },{ bonus bMatkRate,1; bonus bAtkRate,-1; }
 1029,ISIS,Isis,639,9021,10006,537,80,20,10,100,250,20,500,200,0,0,650,450,150,{ petskillsupport "PR_MAGNIFICAT",2,60,50,50; },{ bonus bMatkRate,-1; bonus bAtkRate,1; }
-1155,PETIT,Petit,640,9022,10011,537,80,15,20,100,250,20,500,200,0,0,800,400,100,{ petskillattack2 "WZ_HEAVENDRIVE",500,1,0,10; },{ bonus bDef,-2; bonus bMdef,-2; bonus bAspdRate,1; }
+1155,PETIT,Petit,640,9022,10011,537,80,15,20,100,250,20,500,200,0,0,800,400,100,{ petskillattack2 "WZ_HEAVENDRIVE",500,1,0,10; },{ bonus bDef,-2; bonus bMdef,-2; bonus bAspd,1; }
 1170,SOHEE,Sohee,638,9020,10016,537,80,20,10,100,250,20,500,300,0,0,100,1000,200,{ petheal 400,60,33,100; },{ bonus bStr,1; bonus bDex,1; }
 1035,HUNTER_FLY,Hunter Fly,626,9008,10002,716,80,12,10,100,250,20,500,150,1,0,500,500,200,{ petskillattack2 "NPC_WINDATTACK",888,2,0,10; },{ bonus bFlee,-5; bonus bFlee2,2; }
 1109,DEVIRUCHI,Deviruchi,641,9023,10004,711,80,30,10,100,250,20,500,150,0,0,800,200,100,{ petskillbonus bAgiDexStr,6,20,40; },{ bonus bMatkRate,1; bonus bAtkRate,1; bonus bMaxHPrate,-3; bonus bMaxSPrate,-3; }
 1275,ALICE,Alice,661,9027,0,504,80,20,10,100,250,20,100,200,0,0,100,1000,200,{ petskillsupport "AL_HEAL",5,60,25,100; },{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; }
-1200,ZHERLTHSH,Zherlthsh,660,9026,0,929,80,20,10,100,250,20,50,200,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,3; },{ bonus2 bAddRace,RC_DemiHuman,2; bonus2 bMagicAddRace,RC_DemiHuman,2; }
+1200,ZHERLTHSH,Zherlthsh,660,9026,0,929,80,20,10,100,250,20,50,200,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,3; },{ bonus bMatkRate,2; bonus2 bMagicAddRace,RC_DemiHuman,2; }
 1101,BAPHOMET_Jr,Baphomet Jr.,642,9024,10001,518,80,30,10,100,250,20,200,100,0,0,1000,100,200,{ petskillattack2 "NPC_DARKNESSATTACK",1776,4,0,5; },{ bonus bDef,1; bonus bMdef,1; bonus2 bResEff,Eff_Stun,-100; }
 1815,EVENT_RICECAKE,Rice Cake,0,9028,0,511,80,20,50,100,250,20,2000,150,1,0,500,500,200,{ petskillsupport "CR_DEFENDER",3,240,50,100; },{ bonus2 bSubEle,Ele_Neutral,1; bonus bMaxHPrate,-1; }
-1245,GOBLINE_XMAS,Christmas Goblin,12225,9029,0,911,80,20,50,100,250,20,2000,100,0,0,300,300,800,{ petskillattack "MG_SIGHT",5,5,5; },{ bonus bMaxHP,30; bonus2 bResEff,Eff_Freeze,500; }
+1245,GOBLINE_XMAS,Christmas Goblin,12225,9029,0,911,80,20,50,100,250,20,2000,100,0,0,300,300,800,{ petskillattack "MG_SIGHT",5,5,5; },{ bonus bMaxHP,30; bonus2 bSubEle,Ele_Water,1; }
+
 // Newest pets. un-official data
-1519,CHUNG_E,Green Maiden,0,9030,0,7767,80,20,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,5,5; },{}
+1519,CHUNG_E,Green Maiden,0,9030,0,7767,80,20,10,100,250,20,100,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,5,5; },{ bonus bDef,1; bonus2 bSubRace,RC_DemiHuman,1; }
 1879,ECLIPSE_P,Spring Rabbit,0,9031,0,7766,80,20,50,100,250,20,2000,160,0,0,300,300,800,{ petskillattack "TF_THROWSTONE",1,5,5; },{}
 1122,GOBLIN_1,Goblin,14569,9032,0,7821,80,20,50,100,250,20,2000,100,0,0,300,300,800,{ petskillattack "NPC_WINDATTACK",5,5,5; },{}
 1123,GOBLIN_2,Goblin,14570,9033,0,7821,80,20,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "NPC_FIREATTACK",5,5,5; },{}
@@ -70,3 +71,22 @@
 1382,DIABOLIC,Diabolic,14573,9036,0,7823,80,20,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "WZ_METEOR",2,5,5; },{}
 1208,WANDER_MAN,Wanderer,14574,9037,0,7824,80,20,50,100,250,20,2000,100,0,0,300,300,800,{ petskillattack "NPC_UNDEADATTACK",5,5,5; },{}
 1963,P_CHUNG_E,New Year Doll,0,9038,0,554,80,20,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,5,5; },{}
+
+// New pets JapanRO Mobile
+1040,GOLEM,Golem,12371,9053,10035,6111,80,20,10,100,250,20,500,300,0,0,300,300,800,{},{ bonus bMaxHP,100; bonus bFlee,-5; }
+1143,MARIONETTE,Marionette,12361,9043,10025,6098,80,20,10,100,250,20,500,300,0,0,300,300,800,{},{ bonus bSPrecovRate,3; }
+1148,MEDUSA,Medusa,12368,9050,10032,6108,80,20,10,100,250,20,200,180,0,0,300,300,800,{},{ bonus bVit,1; bonus2 bResEff,Eff_Stone,500; }
+1179,WHISPER,Whisper,12363,9045,10027,6100,80,20,10,100,250,20,500,150,0,0,300,300,800,{},{ bonus bFlee,7; bonus bDef,-3; }
+1299,GOBLIN_LEADER,Goblin Leader,12364,9046,10028,6104,80,20,10,100,250,20,50,120,0,0,300,300,800,{},{ bonus2 bAddRace,RC_DemiHuman,3; }
+1370,SUCCUBUS,Succubus,12373,9055,10037,6113,80,20,10,100,250,20,200,155,0,0,300,300,800,{},{ bonus2 bHpDrainRate,50,5; }
+1374,INCUBUS,Incubus,12370,9052,10034,6110,80,20,10,100,250,20,50,165,0,0,300,300,800,{},{ bonus bMaxSPRate,5; }
+1379,NIGHTMARE_TERROR,Nightmare Terror,12372,9054,10036,6112,80,20,10,100,250,20,200,165,0,0,300,300,800,{},{ bonus2 bResEff,Eff_Sleep,10000; }
+1401,SHINOBI,Shinobi,12362,9044,10026,6099,80,20,10,100,250,20,500,150,0,0,300,300,800,{},{ bonus bAgi,2; }
+1404,MIYABI_NINGYO,Miyabi Doll,12366,9048,10030,6106,80,20,10,100,250,20,200,250,0,0,300,300,800,{},{ bonus bInt,1; bonus bCastrate,-3; }
+1416,WICKED_NYMPH,Wicked Nymph,12365,9047,10029,6105,80,20,10,100,250,20,500,200,0,0,300,300,800,{},{ bonus bMaxSP,30; bonus bSPrecovRate,5; }
+1495,STONE_SHOOTER,Stone Shooter,12369,9051,10033,6109,80,20,10,100,250,20,500,175,0,0,300,300,800,{},{ bonus2 bSubEle,Ele_Fire,3; }
+1504,DULLAHAN,Dullahan,12367,9049,10031,6107,80,20,10,100,250,20,200,155,0,0,300,300,800,{},{ bonus bCritAtkRate,5; }
+1505,LOLI_RURI,Loli Ruri,12360,9042,10024,6097,80,20,10,100,250,20,200,125,0,0,300,300,800,{},{ bonus bMaxHPRate,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,50; }
+1513,CIVIL_SERVANT,Civil Servant,12358,9040,10022,6095,80,20,10,100,250,20,500,200,0,0,300,300,800,{},{ bonus bMaxSP,10; }
+1586,LEAF_CAT,Leaf Cat,12359,9041,10023,6096,80,20,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bSubRace,RC_Brute,3; }
+1837,IMP,Fire Imp,12374,9056,10038,6114,80,20,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bSubEle,Ele_Fire,2; bonus2 bAddEle,Ele_Fire,2; }

+ 453 - 0
npc/battleground/bg_flavius_01.txt

@@ -0,0 +1,453 @@
+// ==============================================================================
+// BattleGround System - Flavius 1
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,253,97,4	script	Registration::Fl1R_Guillaume	418,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
+	end;
+OnEnterBG:
+	set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,0,"Flavius_BG1::OnGuillaumeQuit","");
+	end;
+}
+
+bat_room,253,74,0	script	Registration::Fl1R_Croix	414,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
+	end;
+OnEnterBG:
+	set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,1,"Flavius_BG1::OnCroixQuit","");
+	end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+-	script	Flavius_BG1	-1,{
+	end;
+
+OnInit:
+	disablenpc "Guillaume Vintenar#fl1";
+	disablenpc "Croix Vintenar#fl1";
+	disablenpc "Therapist in battle#fl11";
+	disablenpc "Therapist in battle#fl12";
+	end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+	set BG_Delay_Tick, gettimetick(2) + 1200;
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	if( $@FlaviusBG1 == 0 )
+		donpcevent "Flavius_BG1::OnReadyCheck";
+	end;
+
+OnReadyCheck:
+	if( $@FlaviusBG1 )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"Fl1R_Croix");
+	
+	if( .@Guillaume < 10 || .@Croix < 10 )
+	{
+		mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400;
+		end;
+	}
+
+	// BG Variables
+	set $@FlaviusBG1, 1;
+	set $@FlaviusBG1_Victory, 0;
+	set .Guillaume_Score, 0;
+	set .Guillaume_Loss, 0;
+	set .Croix_Score, 0;
+	set .Croix_Loss, 0;
+	set .Match, 0;
+	// Prepare NPC
+	donpcevent "#gfl1_respawn::OnBGStart";
+	donpcevent "#cfl1_respawn::OnBGStart";
+	enablenpc "Therapist in battle#fl11";
+	enablenpc "Therapist in battle#fl12";
+	disablenpc "Guillaume Vintenar#fl1";
+	disablenpc "Croix Vintenar#fl1";
+	// Build and Warp Teams
+	donpcevent "Fl1R_Guillaume::OnEnterBG";
+	donpcevent "Fl1R_Croix::OnEnterBG";
+	announce "Battleground -- Flavius [80-99] has started!",0,0x006400;
+	initnpctimer;
+	// Start Match!!
+
+OnRoundStart:
+	sleep 2000;
+	if( $@FlaviusBG1 != 1 ) end;
+
+	areapercentheal "bat_b01",382,2,397,17,100,100;
+	areapercentheal "bat_b01",2,282,17,297,100,100;
+	bg_warp $@FlaviusBG1_id1,"bat_b01",311,224;
+	bg_warp $@FlaviusBG1_id2,"bat_b01",87,75;
+
+	sleep 2000;
+	if( $@FlaviusBG1 != 1 ) end;
+
+	set .Match, .Match + 1;
+	// Crystal Spawn
+	set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak");
+	setwall "bat_b01",327,149,2,6,0,"gui_wall1-1";
+	setwall "bat_b01",329,149,2,0,0,"gui_wall1-2";
+	setwall "bat_b01",329,151,2,2,0,"gui_wall1-3";
+	setwall "bat_b01",327,151,2,4,0,"gui_wall1-4";
+
+	set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak");
+	setwall "bat_b01",61,149,2,6,0,"cro_wall1-1";
+	setwall "bat_b01",63,149,2,0,0,"cro_wall1-2";
+	setwall "bat_b01",63,151,2,2,0,"cro_wall1-3";
+	setwall "bat_b01",61,151,2,4,0,"cro_wall1-4";
+
+	// Guardian Spawns
+	bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian";
+	bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian";
+	set .Guillaume_Guardian, 2;
+	bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian";
+	bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian";
+	set .Croix_Guardian, 2;
+	// Announces
+	mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400;
+	end;
+
+OnRoundStop:
+	// Remove Monsters
+	killmonster "bat_b01","Flavius_BG1::OnGuiGuardian";
+	killmonster "bat_b01","Flavius_BG1::OnCroGuardian";
+	delwall "gui_wall1-1";
+	delwall "gui_wall1-2";
+	delwall "gui_wall1-3";
+	delwall "gui_wall1-4";
+	killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak";
+	delwall "cro_wall1-1";
+	delwall "cro_wall1-2";
+	delwall "cro_wall1-3";
+	delwall "cro_wall1-4";
+	killmonster "bat_b01","Flavius_BG1::OnCroixBreak";
+	end;
+
+OnGuiGuardian:
+	if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
+	{
+		delwall "gui_wall1-1";
+		delwall "gui_wall1-2";
+		delwall "gui_wall1-3";
+		delwall "gui_wall1-4";
+		mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
+	}
+	end;
+
+OnCroGuardian:
+	if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
+	{
+		delwall "cro_wall1-1";
+		delwall "cro_wall1-2";
+		delwall "cro_wall1-3";
+		delwall "cro_wall1-4";
+		mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
+	}
+	end;
+
+OnGuillaumeBreak:
+	donpcevent "Flavius_BG1::OnRoundStop";
+	set .Guillaume_Loss, .Guillaume_Loss + 1;
+	if( set(.Croix_Score, .Croix_Score + 1) < 2 )
+	{
+		bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF;
+		donpcevent "Flavius_BG1::OnRoundStart";
+	}
+	else
+	{
+		bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+		set $@FlaviusBG1_Victory, 2;
+		donpcevent "Flavius_BG1::OnMatchEnd";
+	}
+	end;
+
+OnCroixBreak:
+	donpcevent "Flavius_BG1::OnRoundStop";
+	set .Croix_Loss, .Croix_Loss + 1;
+	if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
+	{
+		bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000;
+		donpcevent "Flavius_BG1::OnRoundStart";
+	}
+	else
+	{
+		bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+		set $@FlaviusBG1_Victory, 1;
+		donpcevent "Flavius_BG1::OnMatchEnd";
+	}
+	end;
+
+OnTimer2400000:
+	mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400;
+	end;
+OnTimer2640000:
+	mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400;
+	end;
+
+OnTimer2700000:
+	if( .Croix_Score > .Guillaume_Score )
+	{
+		mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+		set $@FlaviusBG1_Victory, 2;
+	}
+	else if( .Croix_Score < .Guillaume_Score )
+	{
+		mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+		set $@FlaviusBG1_Victory, 1;
+	}
+	else
+	{
+		mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400;
+		set $@FlaviusBG1_Victory, 3;
+	}
+
+OnMatchEnd:
+	set $@FlaviusBG1, 2;
+	stopnpctimer;
+	donpcevent "#gfl1_respawn::OnBGStop";
+	donpcevent "#cfl1_respawn::OnBGStop";
+	disablenpc "Therapist in battle#fl11";
+	disablenpc "Therapist in battle#fl12";
+	enablenpc "Guillaume Vintenar#fl1";
+	enablenpc "Croix Vintenar#fl1";
+	sleep 2000;
+	bg_warp $@FlaviusBG1_id1,"bat_b01",390,10;
+	bg_warp $@FlaviusBG1_id2,"bat_b01",10,290;
+	sleep 3000;
+	mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400;
+	initnpctimer;
+	end;
+
+OnTimer30000:
+	if( $@FlaviusBG1 == 2 )
+		mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400;
+	end;
+OnTimer50000:
+	if( $@FlaviusBG1 == 2 )
+		mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400;
+	end;
+
+OnTimer60000:
+	if( $@FlaviusBG1 != 2 )
+		end;
+OnReset:
+	stopnpctimer;
+	donpcevent "Flavius_BG1::OnRoundStop";
+	set .Guillaume_Score, 0;
+	set .Guillaume_Crystal, 0;
+	set .Guillaume_Loss, 0;
+	set .Croix_Score, 0;
+	set .Croix_Crystal, 0;
+	set .Croix_Loss, 0;
+	set .Match, 0;
+	set $@FlaviusBG1_Victory, 0;
+	// NPC's
+	disablenpc "Guillaume Vintenar#fl1";
+	disablenpc "Croix Vintenar#fl1";
+	disablenpc "Therapist in battle#fl11";
+	disablenpc "Therapist in battle#fl12";
+
+	if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
+	if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
+	sleep 1000;
+	mapwarp "bat_b01","bat_room",155,150;
+	sleep 2000;
+	maprespawnguildid "bat_b01",0,3; // Just in case someone else
+	sleep 2000;
+	bg_updatescore "bat_b01",0,0;
+	set $@FlaviusBG1, 0;
+	donpcevent "Flavius_BG1::OnReadyCheck";
+	end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_b01,390,13,5	script	Guillaume Vintenar#fl1	419,{
+	if( $@FlaviusBG1_Victory )
+	{
+		if( $@FlaviusBG1_Victory == Bat_Team )
+		{ // Victory
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+			set .@Reward, 9;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "You lost, but you're dedicated to this battle.";
+			mes "This is a reward for your great dedication by Guillaume Marollo!";
+			mes "Just take this defeat a lesson, and later you would definitely learn.";
+			close2;
+			set .@Reward, 3;
+		}
+
+		set Flavius_BG_Tick, gettimetick(2) + 300;
+		getitem 7829, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+bat_b01,10,293,5	script	Croix Vintenar#fl1	415,{
+	if( $@FlaviusBG1_Victory )
+	{
+		if( $@FlaviusBG1_Victory == Bat_Team )
+		{ // Victory
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+			set .@Reward, 9;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
+			mes "Even though we didn't win, we did our best.";
+			mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
+			close2;
+			set .@Reward, 3;
+		}
+
+		set Flavius_BG_Tick, gettimetick(2) + 300;
+		getitem 7829, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_b01,390,13,5	script	Therapist in battle#fl12	95,{
+	mes "[Therapist in battle]";
+	mes "Just close your eyes, and take a deep breathe.";
+	mes "You can be free from pain.";
+	specialeffect2 312;
+	close;
+}
+
+bat_b01,10,293,5	script	Therapist in battle#fl11	95,{
+	mes "[Therapist in battle]";
+	mes "Just close your eyes, and take a deep breathe.";
+	mes "You can be free from pain.";
+	specialeffect2 312;
+	close;
+}
+
+// Battleground Respawn
+// *********************************************************************
+
+bat_b01,390,10,0	script	#gfl1_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_b01",382,2,397,17,100,100;
+	areawarp "bat_b01",382,2,397,17,"bat_b01",311,224;
+	initnpctimer;
+	end;
+}
+
+bat_b01,10,290,0	script	#cfl1_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_b01",2,282,17,297,100,100;
+	areawarp "bat_b01",2,282,17,297,"bat_b01",87,75;
+	initnpctimer;
+	end;
+}
+
+// Flags
+// *********************************************************************
+
+bat_b01,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat1	973
+bat_b01,319,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat2	973
+bat_b01,304,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat3	973
+bat_b01,319,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat4	973
+bat_b01,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat5	973
+bat_b01,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat6	973
+bat_b01,335,142,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat7	973
+bat_b01,335,157,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat8	973
+bat_b01,390,16,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat9	973
+bat_b01,292,163,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat19	973
+bat_b01,292,136,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat20	973
+bat_b01,241,185,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat21	973
+bat_b01,247,179,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat22	973
+
+bat_b01,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat1	974
+bat_b01,96,68,1	duplicate(Croix camp#bat)	Croix camp#bat2	974
+bat_b01,79,81,1	duplicate(Croix camp#bat)	Croix camp#bat3	974
+bat_b01,79,68,1	duplicate(Croix camp#bat)	Croix camp#bat4	974
+bat_b01,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat5	974
+bat_b01,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat6	974
+bat_b01,59,164,1	duplicate(Croix camp#bat)	Croix camp#bat7	974
+bat_b01,59,137,1	duplicate(Croix camp#bat)	Croix camp#bat8	974
+bat_b01,10,296,1	duplicate(Croix camp#bat)	Croix camp#bat9	974
+bat_b01,110,162,1	duplicate(Croix camp#bat)	Croix camp#bat18	974
+bat_b01,110,137,1	duplicate(Croix camp#bat)	Croix camp#bat19	974
+bat_b01,152,120,1	duplicate(Croix camp#bat)	Croix camp#bat20	974
+bat_b01,158,114,1	duplicate(Croix camp#bat)	Croix camp#bat21	974
+
+// MapFlags
+// *********************************************************************
+
+bat_b01	mapflag	battleground	2
+bat_b01	mapflag	nomemo
+bat_b01	mapflag	nosave	SavePoint
+bat_b01	mapflag	noteleport
+bat_b01	mapflag	nowarp
+bat_b01	mapflag	nowarpto
+bat_b01	mapflag	noreturn
+bat_b01	mapflag	nobranch
+bat_b01	mapflag	nopenalty

+ 453 - 0
npc/battleground/bg_flavius_02.txt

@@ -0,0 +1,453 @@
+// ==============================================================================
+// BattleGround System - Flavius 2
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,57,97,4	script	Registration::Fl2R_Guillaume	418,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
+	end;
+OnEnterBG:
+	set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,0,"Flavius_BG2::OnGuillaumeQuit","");
+	end;
+}
+
+bat_room,57,74,0	script	Registration::Fl2R_Croix	414,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
+	end;
+OnEnterBG:
+	set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,1,"Flavius_BG2::OnCroixQuit","");
+	end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+-	script	Flavius_BG2	-1,{
+	end;
+
+OnInit:
+	disablenpc "Guillaume Vintenar#fl2";
+	disablenpc "Croix Vintenar#fl2";
+	disablenpc "Therapist in battle#fl21";
+	disablenpc "Therapist in battle#fl22";
+	end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+	set BG_Delay_Tick, gettimetick(2) + 1200;
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	if( $@FlaviusBG2 == 0 )
+		donpcevent "Flavius_BG2::OnReadyCheck";
+	end;
+
+OnReadyCheck:
+	if( $@FlaviusBG2 )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
+	
+	if( .@Guillaume < 10 || .@Croix < 10 )
+	{
+		mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
+		end;
+	}
+
+	// BG Variables
+	set $@FlaviusBG2, 1;
+	set $@FlaviusBG2_Victory, 0;
+	set .Guillaume_Score, 0;
+	set .Guillaume_Loss, 0;
+	set .Croix_Score, 0;
+	set .Croix_Loss, 0;
+	set .Match, 0;
+	// Prepare NPC
+	donpcevent "#gfl2_respawn::OnBGStart";
+	donpcevent "#cfl2_respawn::OnBGStart";
+	enablenpc "Therapist in battle#fl21";
+	enablenpc "Therapist in battle#fl22";
+	disablenpc "Guillaume Vintenar#fl2";
+	disablenpc "Croix Vintenar#fl2";
+	// Build and Warp Teams
+	donpcevent "Fl2R_Guillaume::OnEnterBG";
+	donpcevent "Fl2R_Croix::OnEnterBG";
+	announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
+	initnpctimer;
+	// Start Match!!
+
+OnRoundStart:
+	sleep 2000;
+	if( $@FlaviusBG2 != 1 ) end;
+
+	areapercentheal "bat_b02",382,2,397,17,100,100;
+	areapercentheal "bat_b02",2,282,17,297,100,100;
+	bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
+	bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;
+
+	sleep 2000;
+	if( $@FlaviusBG2 != 1 ) end;
+
+	set .Match, .Match + 1;
+	// Crystal Spawn
+	set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
+	setwall "bat_b02",327,149,2,6,0,"gui_wall2-1";
+	setwall "bat_b02",329,149,2,0,0,"gui_wall2-2";
+	setwall "bat_b02",329,151,2,2,0,"gui_wall2-3";
+	setwall "bat_b02",327,151,2,4,0,"gui_wall2-4";
+
+	set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
+	setwall "bat_b02",61,149,2,6,0,"cro_wall2-1";
+	setwall "bat_b02",63,149,2,0,0,"cro_wall2-2";
+	setwall "bat_b02",63,151,2,2,0,"cro_wall2-3";
+	setwall "bat_b02",61,151,2,4,0,"cro_wall2-4";
+
+	// Guardian Spawns
+	bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
+	bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
+	set .Guillaume_Guardian, 2;
+	bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
+	bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
+	set .Croix_Guardian, 2;
+	// Announces
+	mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
+	end;
+
+OnRoundStop:
+	// Remove Monsters
+	killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
+	killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
+	delwall "gui_wall2-1";
+	delwall "gui_wall2-2";
+	delwall "gui_wall2-3";
+	delwall "gui_wall2-4";
+	killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
+	delwall "cro_wall2-1";
+	delwall "cro_wall2-2";
+	delwall "cro_wall2-3";
+	delwall "cro_wall2-4";
+	killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
+	end;
+
+OnGuiGuardian:
+	if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
+	{
+		delwall "gui_wall2-1";
+		delwall "gui_wall2-2";
+		delwall "gui_wall2-3";
+		delwall "gui_wall2-4";
+		mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
+	}
+	end;
+
+OnCroGuardian:
+	if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
+	{
+		delwall "cro_wall2-1";
+		delwall "cro_wall2-2";
+		delwall "cro_wall2-3";
+		delwall "cro_wall2-4";
+		mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
+	}
+	end;
+
+OnGuillaumeBreak:
+	donpcevent "Flavius_BG2::OnRoundStop";
+	set .Guillaume_Loss, .Guillaume_Loss + 1;
+	if( set(.Croix_Score, .Croix_Score + 1) < 2 )
+	{
+		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF;
+		donpcevent "Flavius_BG2::OnRoundStart";
+	}
+	else
+	{
+		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+		set $@FlaviusBG2_Victory, 2;
+		donpcevent "Flavius_BG2::OnMatchEnd";
+	}
+	end;
+
+OnCroixBreak:
+	donpcevent "Flavius_BG2::OnRoundStop";
+	set .Croix_Loss, .Croix_Loss + 1;
+	if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
+	{
+		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000;
+		donpcevent "Flavius_BG2::OnRoundStart";
+	}
+	else
+	{
+		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+		mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+		set $@FlaviusBG2_Victory, 1;
+		donpcevent "Flavius_BG2::OnMatchEnd";
+	}
+	end;
+
+OnTimer2400000:
+	mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
+	end;
+OnTimer2640000:
+	mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
+	end;
+
+OnTimer2700000:
+	if( .Croix_Score > .Guillaume_Score )
+	{
+		mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+		set $@FlaviusBG2_Victory, 2;
+	}
+	else if( .Croix_Score < .Guillaume_Score )
+	{
+		mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+		set $@FlaviusBG2_Victory, 1;
+	}
+	else
+	{
+		mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
+		set $@FlaviusBG2_Victory, 3;
+	}
+
+OnMatchEnd:
+	set $@FlaviusBG2, 2;
+	stopnpctimer;
+	donpcevent "#gfl2_respawn::OnBGStop";
+	donpcevent "#cfl2_respawn::OnBGStop";
+	disablenpc "Therapist in battle#fl21";
+	disablenpc "Therapist in battle#fl22";
+	enablenpc "Guillaume Vintenar#fl2";
+	enablenpc "Croix Vintenar#fl2";
+	sleep 2000;
+	bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
+	bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
+	sleep 3000;
+	mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
+	initnpctimer;
+	end;
+
+OnTimer30000:
+	if( $@FlaviusBG2 == 2 )
+		mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
+	end;
+OnTimer50000:
+	if( $@FlaviusBG2 == 2 )
+		mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
+	end;
+
+OnTimer60000:
+	if( $@FlaviusBG2 != 2 )
+		end;
+OnReset:
+	stopnpctimer;
+	donpcevent "Flavius_BG2::OnRoundStop";
+	set .Guillaume_Score, 0;
+	set .Guillaume_Crystal, 0;
+	set .Guillaume_Loss, 0;
+	set .Croix_Score, 0;
+	set .Croix_Crystal, 0;
+	set .Croix_Loss, 0;
+	set .Match, 0;
+	set $@FlaviusBG2_Victory, 0;
+	// NPC's
+	disablenpc "Guillaume Vintenar#fl2";
+	disablenpc "Croix Vintenar#fl2";
+	disablenpc "Therapist in battle#fl21";
+	disablenpc "Therapist in battle#fl22";
+
+	if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
+	if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
+	sleep 1000;
+	mapwarp "bat_b02","bat_room",155,150;
+	sleep 2000;
+	maprespawnguildid "bat_b02",0,3; // Just in case someone else
+	sleep 2000;
+	bg_updatescore "bat_b02",0,0;
+	set $@FlaviusBG2, 0;
+	donpcevent "Flavius_BG2::OnReadyCheck";
+	end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_b02,390,13,5	script	Guillaume Vintenar#fl2	419,{
+	if( $@FlaviusBG2_Victory )
+	{
+		if( $@FlaviusBG2_Victory == Bat_Team )
+		{ // Victory
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+			set .@Reward, 9;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "You lost, but you're dedicated to this battle.";
+			mes "This is a reward for your great dedication by Guillaume Marollo!";
+			mes "Just take this defeat a lesson, and later you would definitely learn.";
+			close2;
+			set .@Reward, 3;
+		}
+
+		set Flavius_BG_Tick, gettimetick(2) + 300;
+		getitem 7829, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+bat_b02,10,293,5	script	Croix Vintenar#fl2	415,{
+	if( $@FlaviusBG2_Victory )
+	{
+		if( $@FlaviusBG2_Victory == Bat_Team )
+		{ // Victory
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+			set .@Reward, 9;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
+			mes "Even though we didn't win, we did our best.";
+			mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
+			close2;
+			set .@Reward, 3;
+		}
+
+		set Flavius_BG_Tick, gettimetick(2) + 300;
+		getitem 7829, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_b02,390,13,5	script	Therapist in battle#fl22	95,{
+	mes "[Therapist in battle]";
+	mes "Just close your eyes, and take a deep breathe.";
+	mes "You can be free from pain.";
+	specialeffect2 312;
+	close;
+}
+
+bat_b02,10,293,5	script	Therapist in battle#fl21	95,{
+	mes "[Therapist in battle]";
+	mes "Just close your eyes, and take a deep breathe.";
+	mes "You can be free from pain.";
+	specialeffect2 312;
+	close;
+}
+
+// Battleground Respawn
+// *********************************************************************
+
+bat_b02,390,10,0	script	#gfl2_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_b02",382,2,397,17,100,100;
+	areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
+	initnpctimer;
+	end;
+}
+
+bat_b02,10,290,0	script	#cfl2_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_b02",2,282,17,297,100,100;
+	areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
+	initnpctimer;
+	end;
+}
+
+// Flags
+// *********************************************************************
+
+bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat32	973
+bat_b02,319,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat33	973
+bat_b02,304,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat34	973
+bat_b02,319,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat35	973
+bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat36	973
+bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat37	973
+bat_b02,335,142,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat38	973
+bat_b02,335,157,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat39	973
+bat_b02,390,16,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat40	973
+bat_b02,292,163,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat41	973
+bat_b02,292,136,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat42	973
+bat_b02,241,185,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat43	973
+bat_b02,247,179,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat44	973
+
+bat_b02,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat30	974
+bat_b02,96,68,1	duplicate(Croix camp#bat)	Croix camp#bat31	974
+bat_b02,79,81,1	duplicate(Croix camp#bat)	Croix camp#bat32	974
+bat_b02,79,68,1	duplicate(Croix camp#bat)	Croix camp#bat33	974
+bat_b02,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat34	974
+bat_b02,96,81,1	duplicate(Croix camp#bat)	Croix camp#bat35	974
+bat_b02,59,164,1	duplicate(Croix camp#bat)	Croix camp#bat36	974
+bat_b02,59,137,1	duplicate(Croix camp#bat)	Croix camp#bat37	974
+bat_b02,10,296,1	duplicate(Croix camp#bat)	Croix camp#bat38	974
+bat_b02,110,162,1	duplicate(Croix camp#bat)	Croix camp#bat39	974
+bat_b02,110,137,1	duplicate(Croix camp#bat)	Croix camp#bat40	974
+bat_b02,152,120,1	duplicate(Croix camp#bat)	Croix camp#bat41	974
+bat_b02,158,114,1	duplicate(Croix camp#bat)	Croix camp#bat42	974
+
+// MapFlags
+// *********************************************************************
+
+bat_b02	mapflag	battleground
+bat_b02	mapflag	nomemo
+bat_b02	mapflag	nosave	SavePoint
+bat_b02	mapflag	noteleport
+bat_b02	mapflag	nowarp
+bat_b02	mapflag	nowarpto
+bat_b02	mapflag	noreturn
+bat_b02	mapflag	nobranch
+bat_b02	mapflag	nopenalty

+ 2 - 0
npc/scripts_custom.conf

@@ -74,6 +74,8 @@
 //npc: npc/battleground/bg_common.txt
 //npc: npc/battleground/bg_tierra_01.txt
 //npc: npc/battleground/bg_tierra_02.txt
+//npc: npc/battleground/bg_flavius_01.txt
+//npc: npc/battleground/bg_flavius_02.txt
 
 // --------------------------------------------------------------
 // Lance's Scripts (coded before joining eA Dev team)

Plik diff jest za duży
+ 121 - 122
src/map/skill.c


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików