DB Import2

Add db/import-tmpl/ and add all file that could currently be
overwritten, (please add note if a db is missing)

db/import folder is created by "make import" just like conf/import and
msg_conff/import, (didn't found the visual equivalent)
This commit is contained in:
lighta 2014-01-01 21:33:08 -05:00
parent dd24149060
commit ff29c234cc
82 changed files with 2463 additions and 101 deletions

3
.gitignore vendored
View File

@ -40,6 +40,9 @@
/3rdparty/mt19937ar/Makefile
/3rdparty/mt19937ar/*.o
# /db/
/db/import
# /conf/
/conf/import
/conf/msg_conf/import

View File

@ -64,13 +64,16 @@ import:
# 1) create conf/import folder
# 2) add missing files
# 3) remove remaining .svn folder
@echo "building conf/import and conf/msg_conf/import folder..."
@echo "building conf/import, conf/msg_conf/import and db/import folder..."
@if test ! -d conf/import ; then mkdir conf/import ; fi
@for f in $$(ls conf/import-tmpl) ; do if test ! -e conf/import/$$f ; then cp conf/import-tmpl/$$f conf/import ; fi ; done
@rm -rf conf/import/.svn
@if test ! -d conf/msg_conf/import ; then mkdir conf/msg_conf/import ; fi
@for f in $$(ls conf/msg_conf/import-tmpl) ; do if test ! -e conf/msg_conf/import/$$f ; then cp conf/msg_conf/import-tmpl/$$f conf/msg_conf/import ; fi ; done
@rm -rf conf/msg_conf/import/.svn
@if test ! -d db/import ; then mkdir db/import ; fi
@for f in $$(ls db/import-tmpl) ; do if test ! -e db/import/$$f ; then cp db/import-tmpl/$$f db/import ; fi ; done
@rm -rf db/import/.svn
clean:
@$(MAKE) -C src/common $@
@ -92,7 +95,7 @@ help:
@echo "'char' - builds char server"
@echo "'map' - builds map server"
@echo "'tools' - builds all the tools in src/tools"
@echo "'import' - builds conf/import folder from the template conf/import-tmpl"
@echo "'import' - builds conf/import, conf/msg_conf/import and db/import folders from their template folders (x-tmpl)"
@echo "'all' - builds all the above targets"
@echo "'sql' - builds servers (targets 'common_sql' 'login' 'char' 'map' and 'import')"
@echo "'test' - builds tests"

View File

@ -0,0 +1,14 @@
// Hocus-Pocus (Abracadabra) Castable Skills Database
//
// Structure of Database:
// SkillID,DummyName,RatePerLvl
//
// 01. SkillID Skill ID to be casted by hocus pocus.
// 02. DummyName Name of the skill (informative, not used by server).
// 03. RatePerLvl Chance at which the skill is selected (1 = 0.01%, 10000 = 100%).
//
// NOTE: The skill is picked at random from the entire database and then tested for rate. If it
// does not succeed at that rate, another skill is picked and tested. This continues
// until a skill succeeds. Abracadabra-specific skills have a different chance to occur
// depending on skill level used. All other skills have an equal chance and appear from
// level 1 onward.

View File

@ -0,0 +1,6 @@
// Elemental Attribute Damage Adjustment Tables
//
// Structure of Database:
// Columns - attacker's weapon element
// Rows - target's defense element

View File

@ -0,0 +1,11 @@
// Guild Castles Database
//
// Structure of Database:
// CastleID,MapName,CastleName,OnGuildBreakEventName,Flag
//
// 01. CastleID Unique ID of the castle. Must remain unique across all map-servers.
// 02. MapName Map name to be considered as the castle map.
// 03. CastleName Name of the castle (used by scripts and guardian name tags).
// 04. OnGuildBreakEventName NPC unique name to invoke ::OnGuildBreak on, when a occupied
// castle is abandoned during guild break.
// 05. Flag Switch flag (reserved as of athena-dev mod0796~0801, not used by server).

View File

@ -0,0 +1,12 @@
// Arrow Crafting Database
//
// Structure of Database:
// SourceID,MakeID1,MakeAmount1,...,MakeID5,MakeAmount5
//
// 01. SourceID ID of the item, that is consumed by Arrow Crafting.
// 02. MakeID ID of the item received from Arrow Crafting.
// 03. MakeAmount Amount of MakeID item received from Arrow Crafting.
// ...
//
// NOTE: Up to MAX_ARROW_RESOURCE (typically 5) ID/Amount pairs can be specified.

View File

@ -0,0 +1,9 @@
// Elemental Summons Database
//
// Structure of Database:
// ID,Sprite_Name,Name,LV,HP,SP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Speed,aDelay,aMotion,dMotion
//
// Notes:
// Summoned Elementals STATs are affected by the Casters Base Level and STATs.
// In other words, all values specified will be added to (and will not override) the calculated STATs of the summoned elemental.

View File

@ -0,0 +1,7 @@
// Elemental Summons Skill Database
//
// Structure of Database:
// ElementalID,SkillID,SkillLevel,ReqMode
//
// Spirit Modes:
// 1 = Passive, 2 = Defensive, 4 = Aggressive

View File

@ -0,0 +1,2 @@
// Guild Experience Tables

View File

@ -0,0 +1 @@
// Homunculus Experience Tables

View File

@ -0,0 +1,13 @@
// Guild Skill Tree Database
//
// Structure of Database:
// SkillID,MaxLv,Prerequisite SkillID1,Prerequisite SkillLv1,PrereqSkillID2,PrereqSkillLv2,PrereqSkillID3,PrereqSkillLv3,PrereqSkillID4,PrereqSkillLv4,PrereqSkillID5,PrereqSkillLv5 //GUILD SKILLNAME#Skill Name#
//
// 01. SkillID Skill ID of the guild skill.
// 02. MaxLv Maximum level of the guild skill.
// 03. Prerequisite SkillID Guild skill required for the skill to become available.
// 04. Prerequisite SkillLv Level of the required guild skill.
// ...
//
// NOTE: MAX_GUILD_SKILL_REQUIRE (typically 5) ID/Lv pairs must be specified.

View File

@ -0,0 +1,15 @@
// Homunculus Skill Tree Database
//
// Structure of Database:
// Class,SkillID,MaxLv[,JobLevel],Prerequisite SkillID1,Prerequisite SkillLv1,PrereqSkillID2,PrereqSkillLv2,PrereqSkillID3,PrereqSkillLv3,PrereqSkillID4,PrereqSkillLv4,PrereqSkillID5,PrereqSkillLv5,IntimacyLvReq //SKILLNAME#Skill Name#
//
// 01. Class Homunculus ID.
// 02. SkillID Skill ID of the homunuculus skill.
// 03. MaxLv Maximum level of the homunuculus skill.
// 04. JobLevel Job level required for the skill to become available (optional, reserved, not used by server).
// 05. Prerequisite SkillID Homunculus skill required for the skill to become available.
// 06. Prerequisite SkillLv Level of the required homunculus skill.
// ...
// 15. IntimacyLvReq Minimum level of intimacy to unlock skill.
//
// NOTE: MAX_PC_SKILL_REQUIRE (typically 5) ID/Lv pairs must be specified.

View File

@ -0,0 +1,20 @@
// Homunculus Database
//
// Structure of Database:
// Class,EvoClass,Name,FoodID,HungryDelay,BaseSize,EvoSize,Race,Element,bASPD,bHP,bSP,bSTR,bAGI,bVIT,bINT,bDEX,bLUK,gnHP,gxHP,gnSP,gxSP,gnSTR,gxSTR,gnAGI,gxAGI,gnVIT,gxVIT,gnINT,gxINT,gnDEX,gxDEX,gnLUK,gxLUK,enHP,exHP,enSP,exSP,enSTR,exSTR,enAGI,exAGI,enVIT,exVIT,enINT,exINT,enDEX,exDEX,enLUK,exLUK
//
// 01. Class Homunculus ID.
// 02. EvoClass Homunculus ID of the evolved version.
// 03. Name Name of the homunculus.
// 04. FoodID Item ID of the homunuclus food.
// 05. HungryDelay Time interval in milliseconds after which the homunculus' hunger value is altered.
// 06. BaseSize Size of the base homunculus class (0 = small, 1 = normal, 2 = large).
// 07. EvoSize Size of the evolved homunculus class (0 = small, 1 = normal, 2 = large).
// 08. Race Race of the homunculus (0 = formless, 1 = undead, 2 = brute, 3 = plant, 4 = insect, 5 = fish, 6 = demon, 7 = demi-human, 8 = angel, 9 = dragon).
// 09. Element Element of the homunculus (0 = neutral, 1 = water, 2 = earth, 3 = fire, 4 = wind, 5 = poison, 6 = holy, 7 = dark, 8 = ghost, 9 = undead).
// The element level is always 1.
// ...
//
// Legend: b: base, gn: growth min, gx: growth max, en: evolution min, ex: evolution max
// NOTE: Only the growth values are in a 1/10 scale, the other stats are 1/1 (eg: 5 gmAGI means 0.5 agi)

View File

@ -0,0 +1,5 @@
// Instance Database
//
// Structure of Database:
// ID,Name,LimitTime,EnterMap,EnterX,EnterY,Map1,Map2,Map3,Map4,Map5,Map6,Map7,Map8

View File

@ -0,0 +1,11 @@
// Item Availability and Alias Database
//
// Structure of Database:
// ItemID,SpriteID
//
// 01. ItemID Item ID to change.
// 02. SpriteID Item ID which will be sent to the client instead of ItemID.
// If 0, the item becomes unavailable for use. If item_check is enabled and a player owns such an item, it will be removed upon next login/teleport.
//
// NOTE: Replaces an item client-side while keeping them separate server-side.
// Think of it as a way to disguise items.

View File

@ -0,0 +1,10 @@
// Buying Store Item List
// List of items that can be sold to buying stores.
//
// Structure of Database:
// ItemID
//
// Note:
// Items are in same order as data\buyingstoreitemlist.txt, which
// must be edited as well for the client to accept added items.

View File

@ -0,0 +1,18 @@
// Cash Shop Database
// Contains the items sold in the ingame cash shop.
//
// Structure of Database:
// Type,ItemID,Price
//
// Type:
// 0: New
// 1: Hot
// 2: Limited
// 3: Rental
// 4: Gear
// 5: Buff
// 6: Heal
// 7: Other
//
// Price:
// Item cost, in cash points (#CASHPOINTS).

View File

@ -0,0 +1,5 @@
// Item Combos Database
//
// Structure of Database:
// ID:ID:ID:ID,{ Script }

View File

@ -0,0 +1,63 @@
// Items Additional Database
//
// Structure of Database:
// ID,Name,Name,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Class,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }
//
// THQ Quest Items
//=============================================================
//7950,THG_Membership,THG Membership,3,,10,10,,,,,,,,,,,,,{},{},{}
//7951,Token_Bag,Token Bag,3,,10,10,,,,,,,,,,,,,{},{},{}
//1998,Jeramiah's_Jur,Jeramiah's Jur,3,,10,10,,,,,,,,,,,,,{},{},{}
//1999,Zed's_Staff,Zed's Staff,3,,10,10,,,,,,,,,,,,,{},{},{}
// Official Event Items that had their Effects removed after the event was completed
//585,Wurst,Brusti,11,2,,40,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(15,20),0; itemskill "PR_MAGNIFICAT",3; },{},{}
//679,Gold_Pill,Pilule,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 50,50; },{},{}
//2681,Republic_Ring,Republic Anniversary Ring,4,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,3; },{},{}
//5134,Pumpkin_Hat,Pumpkin-Head,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; },{},{}
//5136,Santa's_Hat_,Louise's Santa Hat,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,20,{ bonus bMdef,1; bonus bLuk,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,50; bonus3 bAutoSpellWhenHit,"AL_BLESSING",10,50; },{},{}
//5145,Carnival_Joker_Jester,Carnival Jester,4,10,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,89,{ bonus bAllStats,3; },{},{}
//5147,Baseball_Cap,Baseball Cap,4,0,,200,,3,,0,0xFFFFFFFF,7,2,256,,0,1,216,{ bonus2 bExpAddRace,RC_Boss,50; bonus2 bExpAddRace,RC_NonBoss,50; },{},{}
//5201,Party_Hat_B,2nd Anniversary Party Hat,4,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,0,1,144,{ bonus bAllStats,3; },{},{}
//5202,Pumpkin_Hat_,Pumpkin Hat,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus bAllStats,2; bonus2 bSubRace,RC_Demon,5; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,1500; },{},{}
//5204,Event_Pierrot_Nose,Rudolf's Red Nose,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,49,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bAddMonsterDropItem,12130,30; },{},{}
//5264,Aussie_Flag_Hat,Australian Flag Hat,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,0,1,304,{ bonus bAllStats,2; },{},{}
//5356,Pumpkin_Hat_H,Pumpkin Hat,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus bAllStats,2; bonus2 bSubRace,RC_Demon,5; bonus2 bMagicAddRace,RC_Demon,5; },{},{}
//5811,Santa_Beard,Santa Beard,4,20,,100,,5,,0,0xFFFFFFFF,7,2,1,,0,0,25,{ bonus2 bSubRace,RC_Brute,5; },{},{}
//11702,Moon_Cookie,Moon Cookie,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; sc_end SC_Hallucination; itemskill "AL_BLESSING",7; },{},{}
//12131,Lucky_Potion,Lucky Potion,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LUKFood,180000,15; },{},{}
//12143,Red_Can,Red Can,2,50000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 25,25; },{},{}
//Event effect: Summon monster? Probably Rice_Cake. x_x
//12199,Rice_Scroll,Rice Scroll,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
//12200,Event_Cake,Event Cake,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "PR_MAGNIFICAT",3; },{},{}
//12238,New_Year_Rice_Cake_1,New Year Rice Cake,0,20,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 20,15; sc_start SC_STRFood,1200000,3; sc_start SC_INTFood,1200000,3; sc_start SC_LUKFood,1200000,3; sc_start SC_SpeedUp1,5000,0; },{},{}
//12239,New_Year_Rice_Cake_2,New Year Rice Cake,0,20,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 20,15; sc_start SC_DEXFood,1200000,3; sc_start SC_AGIFood,1200000,3; sc_start SC_VITFood,1200000,3; sc_start SC_SpeedUp1,5000,0; },{},{}
// iRO St. Patrick's Day Event 2008
//=============================================================
//12715,Black_Treasure_Chest,Black Treasure Chest,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_08stpattyseventbox"; },{},{}
// iRO Valentine's Day Event 2009
//=============================================================
//12742,Valentine_Gift_Box_M,Valentine Gift Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7946,1; },{},{}
//12743,Valentine_Gift_Box_F,Valentine Gift Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7947,1; },{},{}
//12744,Chocolate_Box,Chocolate Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 558,1; },{},{}
//14466,Valentine's_Emblem_Box,Valentine's Emblem Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5817,1; },{},{}
//7946,Gold_Ring_Of_Valentine,Gold Ring Of Valentine,3,10,,0,,,,,,,,,,,,,{},{},{}
//7947,Silver_Ring_Of_Valentine,Silver Ring Of Valentine,3,10,,0,,,,,,,,,,,,,{},{},{}
//7948,Box,Box,3,10,,10,,,,,,,,,,,,,{},{},{}
//5817,Valentine's_Emblem,Valentine's Emblem,4,10,,0,,3,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAtkRate,3; bonus bMatkRate,3; bonus bAllStats,2; bonus bFlee,10; bonus bAspd,1; bonus bMdef,3; bonus2 bSkillAtk,"AL_HEAL",10; bonus2 bSkillHeal,"AL_HEAL",10; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bAddItemHealRate,IG_Potion,10; },{},{}
// iRO Halloween Event 2009
//=============================================================
//5668,Weird_Pumpkin_Hat,Weird Pumpkin Hat,4,20,,0,,5,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus bMdef,5; bonus2 bAddMonsterDropItem,12192,2500; },{},{}
//6298,Crushed_Pumpkin,Crushed Pumpkin,3,0,,0,,,,,,,,,,,,,{},{},{}
//6299,Worn_Fabric,Worn Fabric,3,0,,0,,,,,,,,,,,,,{},{},{}
// Old Tuxedo and Wedding Dress, will display the outfit when worn.
//==================================================================
//2338,Wedding_Dress,Wedding Dress,4,43000,,500,,0,,0,0xFFFFFFFE,7,0,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }
//7170,Tuxedo,Tuxedo,4,43000,,10,,0,,0,0xFFFFFFFE,7,1,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }

View File

@ -0,0 +1,8 @@
// Item Delay Database
//
// Structure of Database:
// Item ID,Delay in Milliseconds
//
// NOTE:
// There is a max concurrent number of entries set in src/map/itemdb.h as MAX_ITEMDELAYS.

View File

@ -0,0 +1,2 @@
//import: db/import/item_groupid.txt

View File

@ -0,0 +1,27 @@
// Forbidden Items Database
// Defines restrictions on equipment, items, and cards in map types and zones.
//
// Structure of Database:
// ItemID,Flag
//
// Legend for 'Flag' field (bitmask):
// 1 - restricted in normal maps
// 2 - restricted in PVP
// 4 - restricted in GVG
// 8 - restricted in Battlegrounds
// Restricted zones - configured by 'restricted <number>' mapflag
// 32 - restricted in zone 1
// 64 - restricted in zone 2
// 128 - restricted in zone 3
// 256 - restricted in zone 4
// 512 - restricted in zone 5
// 1024 - restricted in zone 6
// 2048 - restricted in zone 7
//
// Examples:
// 1201,1 // Knife can't be worn on normal maps
// 608,4 // Yggdrasil Seed can't be consumed in both GvG and WoE Castles
// 4174,6 // Deviling Card has no effect in every PVP or GVG map, and during WoE
// 501,32 // Red Potion can't be consumed on maps marked as 'restricted zone 1'
// 519,322 // Milk can't be consumed in PVP and maps marked as 'restricted zone 2' or 'restricted zone 4' (256+64+2)

View File

@ -0,0 +1,137 @@
// Item Usage Restriction Configuration File
// Defines if an item cannot be used under special circumstances.
//
// Structure of Database:
// ItemID,Flag,Group ID Override
//
// Flag:
// 1 = Cannot use item while sitting
// ... [more to come]
//
// Group ID Override:
// Group ID necessary to override this setting.
619,1,100 // Unripe_Apple
620,1,100 // Orange_Juice
621,1,100 // Bitter_Herb
622,1,100 // Rainbow_Carrot
623,1,100 // Earthworm_The_Dude
624,1,100 // Rotten_Fish
625,1,100 // Lusty_Iron
626,1,100 // Monster_Juice
627,1,100 // Sweet_Milk
628,1,100 // Well_Dried_Bone
629,1,100 // Singing_Flower
630,1,100 // Dew_Laden_Moss
631,1,100 // Deadly_Noxious_Herb
632,1,100 // Fatty_Chubby_Earthworm
633,1,100 // Baked_Yam
634,1,100 // Tropical_Banana
635,1,100 // Horror_Of_Tribe
636,1,100 // No_Recipient
637,1,100 // Old_Broom
638,1,100 // Silver_Knife_Of_Chaste
639,1,100 // Armlet_Of_Obedience
640,1,100 // Shining_Stone
641,1,100 // Contracts_In_Shadow
642,1,100 // Book_Of_Devil
659,1,100 // Heart_Of_Her
660,1,100 // Prohibition_Red_Candle
661,1,100 // Sway_Apron
686,1,100 // Earth_Scroll_1_3
687,1,100 // Earth_Scroll_1_5
688,1,100 // Cold_Scroll_1_3
689,1,100 // Cold_Scroll_1_5
690,1,100 // Fire_Scroll_1_3
691,1,100 // Fire_Scroll_1_5
692,1,100 // Wind_Scroll_1_3
693,1,100 // Wind_Scroll_1_5
694,1,100 // Ghost_Scroll_1_3
695,1,100 // Ghost_Scroll_1_5
696,1,100 // Fire_Scroll_2_1
697,1,100 // Fire_Scroll_2_5
698,1,100 // Fire_Scroll_3_1
699,1,100 // Fire_Scroll_3_5
700,1,100 // Cold_Scroll_2_1
11702,1,100 // Moon_Cookie
12000,1,100 // Cold_Scroll_2_5
12001,1,100 // Holy_Scroll_1_3
12002,1,100 // Holy_Scroll_1_5
12027,1,100 // Giggling_Box
12028,1,100 // Box_Of_Thunder
12029,1,100 // Gloomy_Box
12030,1,100 // Box_Of_Grudge
12031,1,100 // Sleepy_Box
12032,1,100 // Box_Of_Storm
12033,1,100 // Box_Of_Sunlight
12034,1,100 // Painting_Box
12215,1,100 // Blessing_10_Scroll
12216,1,100 // Inc_Agi_10_Scroll
12217,1,100 // Aspersio_5_Scroll
12218,1,100 // Assumptio_5_Scroll
12219,1,100 // Wind_Walk_10_Scroll
12220,1,100 // Adrenaline_Scroll
12225,1,100 // Sweet_Candy_Striper
12235,1,100 // Strawberry_Choco
12236,1,100 // Choco_Tart
12237,1,100 // Choco_Lump
12290,1,100 // Mysterious_Can
12291,1,100 // Mysterious_PET_Bottle
12310,1,100 // Spray_Of_Flowers
12311,1,100 // Large_Spray_Of_Flowers
12313,1,100 // Protection_Of_Angel
12323,1,100 // N_Fly_Wing
12324,1,100 // N_Butterfly_Wing
12325,1,100 // N_Magnifier
12340,1,100 // Mysterious_Rice_Powder
12347,1,100 // Acorn_Jelly
12350,1,100 // Angeling_Potion
12358,1,100 // Fan_Of_Wind
12359,1,100 // Very_Soft_Plant
12360,1,100 // Very_Red_Juice
12361,1,100 // Delicious_Shaved_Ice
12362,1,100 // Kuloren
12363,1,100 // Fit_Pipe
12364,1,100 // Staff_Of_Leader
12365,1,100 // Charming_Lotus
12366,1,100 // Gril_Doll
12367,1,100 // Luxury_Whisky_Bottle
12368,1,100 // Splendid_Mirror
12369,1,100 // Oilpalm_Coconut
12370,1,100 // Gril's_Naivety
12371,1,100 // Magical_Lithography
12372,1,100 // Hell_Contract
12373,1,100 // Boy's_Naivety
12374,1,100 // Flaming_Ice
12376,1,100 // Mysterious_Can2
12377,1,100 // Mysterious_PET_Bottle2
12388,1,100 // Runstone_Crush
12389,1,100 // Runstone_Storm
12390,1,100 // Runstone_Millennium
12396,1,100 // Fools_Day_Box
12397,1,100 // Fools_Day_Box2
12415,1,100 // Siege_Teleport_Scroll2
12473,1,100 // RWC_Parti_Box
12474,1,100 // RWC_Final_Comp_Box
12706,1,100 // Lucky_Cookie01
12707,1,100 // Lucky_Cookie02
12708,1,100 // Lucky_Cookie03
12725,1,100 // Runstone_Nosiege
12726,1,100 // Runstone_Rhydo
12727,1,100 // Runstone_Verkana
12728,1,100 // Runstone_Isia
12729,1,100 // Runstone_Asir
12730,1,100 // Runstone_Urj
12731,1,100 // Runstone_Turisus
12732,1,100 // Runstone_Pertz
12733,1,100 // Runstone_Hagalas
14521,1,100 // Repair_Scroll
14529,1,100 // Greed_Scroll
14532,1,100 // Battle_Manual25
14587,1,100 // Repair_Scroll_
14591,1,100 // Siege_Teleport_Scroll
14592,1,100 // Job_Manual50
14593,1,100 // Magic_Power_Scroll
14594,1,100 // Quagmire_Scroll
14599,1,100 // Greed_Scroll_C
14606,1,100 // Job_Manual25

View File

@ -0,0 +1,18 @@
// Item Stacking Restriction File
// Prevents an item to be stacked more than x times in given
// inventory types. Generally used by 3rd class related skill items.
//
// Structure of Database:
// ItemID,MaxStackAmount,Type
//
// MaxStackAmount:
// Stack limit for the item. Use 0 to disable a restriction.
//
// Type mask values:
// &1: Character inventory restriction
// &2: Character cart restriction
// &4: Account storage restriction
// &8: Guild storage restriction
//
// Example:
// 512,4,12 // Will not allow more than 4 Apples in storages.

View File

@ -0,0 +1,22 @@
// Item Trade Restrictions Database
// Defines special trade rules for individual items.
//
// Structure of Database:
// Item ID, TradeMask,Group Level Override
//
// Legend for 'TradeMask' field (bitmask):
// 1 - item can't be dropped
// 2 - item can't be traded (nor vended)
// 4 - wedded partner can override restriction 2
// 8 - item can't be sold to npcs
// 16 - item can't be placed in the cart
// 32 - item can't be placed in the storage
// 64 - item can't be placed in the guild storage
// 128 - item can't be attached to mail
// 256 - item can't be auctioned
//
// Example:
// 1161,67,50
// Balmung cannot be dropped, traded, or placed in Guild Storage (1+2+64).
// Only groups of group-level 50 and up can override this setting.

View File

@ -0,0 +1,14 @@
// Base HP/SP Tables
// Supports up to base level 500.
//
// Structure of Database:
// StartLevel,EndLevel,JobID,Type,Base value for Lv 1,2,...,Base value for 'Max level'
//
// Type:
// 0 = BaseHP, 1 = BaseSP
//===============================
// Base HP Table
// According to base HP calculation on http://irowiki.org/wiki/Max_HP
//===============================

View File

@ -0,0 +1,5 @@
// Job-specific Values Database
//
// Structure of Database:
// JobID,Weight,HPFactor,HPMultiplicator,SPFactor,Unarmed,Dagger,1HSword,2HSword,1HSpear,2HSpear,1HAxe,2HAxe,1HMace,2HMace(unused),Rod,Bow,Knuckle,Instrument,Whip,Book,Katar,Revolver,Rifle,Gatling Gun,Shotgun,Grenade Launcher,Fuuma Shuriken,2HStaff,Shield
//

View File

@ -0,0 +1,14 @@
// Job-specific Stat Bonuses Database
//
// Structure of Database:
// JobID,JobLv1,JobLv2,JobLv3,...
//
// Legend for 'JobLvN' fields:
// 0 = No stat bonus at this job level
// 1 = STR increased by 1 at this job level
// 2 = AGI increased by 1 at this job level
// 3 = VIT increased by 1 at this job level
// 4 = INT increased by 1 at this job level
// 5 = DEX increased by 1 at this job level
// 6 = LUK increased by 1 at this job level

View File

@ -0,0 +1,9 @@
// Experience Tables [Renewal]
// Supports up to base level 1000 and job level 255 (excluding Novice/High Novice).
//
// Structure of Database:
// Max Level,Class list,Type,Exp for Lv 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98
//
// Type:
// 0 = Base Exp, 1 = Job Exp

View File

@ -0,0 +1,15 @@
// Max Parameter Database
// Sets maximum stat parameters for specific jobs.
//
// Structure of Database:
// JobID,MaxParam
// OR
// JobID,MaxStr,MaxAgi,MaxVit,MaxInt,MaxDex,MaxLuk
//
// JobID: Job constants in 'db/const.txt'
// MaxParams: Value between 10 ~ 32767 (SHRT_MAX)
//
// Examples:
// Job_Novice,60
// Normally, Novice's max. param uses 'max_parameter' in 'conf/battle/player.conf'.
// With this config, Novice's max. param will be 60 (for all stats).

View File

@ -0,0 +1,13 @@
// Experience & Drop Rate Modifier Database
//
// Structure of Database:
// Type,Class,Level difference,Rate
//
// TYPE:
// 1=experience, 2=item drop
// CLASS:
// 0=Normal monsters, 1=Boss monsters, 2=Guardians
//
// Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
// EXP modifiers due to level difference

View File

@ -0,0 +1,29 @@
// Magic Mushroom Database
// List of skills that are randomly used through Magic Mushroom status change.
//
// Structure of Database:
// SkillID
7 //SM_MAGNUM
8 //SM_ENDURE
10 //MG_SIGHT
24 //AL_RUWACH
32 //AL_CRUCIS
33 //AL_ANGELUS
45 //AC_CONCENTRATION
61 //KN_AUTOCOUNTER
74 //PR_MAGNIFICAT
110 //BS_HAMMERFALL
114 //BS_MAXIMIZE
142 //NV_FIRSTAID
150 //TF_BACKSLIDING
151 //TF_PICKSTONE
157 //MG_ENERGYCOAT
249 //CR_AUTOGUARD
256 //CR_PROVIDENCE
261 //MO_CALLSPIRITS
270 //MO_EXPLOSIONSPIRITS
326 //DC_SCREAM
500 //GS_GLITTERING
527 //NJ_TATAMIGAESHI
531 //NJ_UTSUSEMI

View File

@ -0,0 +1,987 @@
//======================================================================================
// Map Index
//======================================================================================
//Contains the list of maps with their respective IDs for inter-server use.
//IDs must never change, therefore any new maps need to be added at the end,
//and old ones must not be removed, but may be replaced.
//Format:
//mapname<tab>index <- specifies index for this map
//mapname <- map will use index of previous map +1
//Note that map index 0 is special and reserved for "error" status.
alb_ship 1
alb2trea
alberta
alberta_in
alde_dun01
alde_dun02
alde_dun03
alde_dun04
aldeba_in
aldebaran
anthell01
anthell02
arena_room
c_tower1
c_tower2
c_tower3
c_tower4
force_1-1
force_1-2
force_1-3
force_2-1
force_2-2
force_2-3
force_3-1
force_3-2
force_3-3
gef_dun00
gef_dun01
gef_dun02
gef_dun03
gef_fild00
gef_fild01
gef_fild02
gef_fild03
gef_fild04
gef_fild05
gef_fild06
gef_fild07
gef_fild08
gef_fild09
gef_fild10
gef_fild11
gef_fild12
gef_fild13
gef_fild14
gef_tower
geffen
geffen_in
gl_cas01
gl_cas02
gl_church
gl_chyard
gl_dun01
gl_dun02
gl_in01
gl_knt01
gl_knt02
gl_prison
gl_prison1
gl_sew01
gl_sew02
gl_sew03
gl_sew04
gl_step
glast_01
hunter_1-1
hunter_2-1
hunter_3-1
in_hunter
in_moc_16
in_orcs01
in_sphinx1
in_sphinx2
in_sphinx3
in_sphinx4
in_sphinx5
iz_dun00
iz_dun01
iz_dun02
iz_dun03
iz_dun04
job_sword1
izlu2dun
izlude
izlude_in
job_thief1
knight_1-1
knight_2-1
knight_3-1
mjo_dun01
mjo_dun02
mjo_dun03
mjolnir_01
mjolnir_02
mjolnir_03
mjolnir_04
mjolnir_05
mjolnir_06
mjolnir_07
mjolnir_08
mjolnir_09
mjolnir_10
mjolnir_11
mjolnir_12
moc_castle
moc_fild01
moc_fild02
moc_fild03
moc_fild04
moc_fild05
moc_fild06
moc_fild07
moc_fild08
moc_fild09
moc_fild10
moc_fild11
moc_fild12
moc_fild13
moc_fild14
moc_fild15
moc_fild16
moc_fild17
moc_fild18
moc_fild19
moc_pryd01
moc_pryd02
moc_pryd03
moc_pryd04
moc_pryd05
moc_pryd06
moc_prydb1
moc_ruins
monk_in
morocc
morocc_in
new_1-1
new_1-2
new_1-3
new_1-4
new_2-1
new_2-2
new_2-3
new_2-4
new_3-1
new_3-2
new_3-3
new_3-4
new_4-1
new_4-2
new_4-3
new_4-4
new_5-1
new_5-2
new_5-3
new_5-4
orcsdun01
orcsdun02
ordeal_1-1
ordeal_1-2
//ordeal_1-3
//ordeal_1-4
ordeal_2-1
ordeal_2-2
//ordeal_2-3
//ordeal_2-4
ordeal_3-1
ordeal_3-2
//ordeal_3-3
//ordeal_3-4
pay_arche
pay_dun00
pay_dun01
pay_dun02
pay_dun03
pay_dun04
pay_fild01
pay_fild02
pay_fild03
pay_fild04
pay_fild05
pay_fild06
pay_fild07
pay_fild08
pay_fild09
pay_fild10
pay_fild11
payon
payon_in01
payon_in02
priest_1-1
priest_2-1
priest_3-1
prontera
prt_are_in
prt_are01
pvp_room
prt_castle
prt_church
prt_fild00
prt_fild01
prt_fild02
prt_fild03
prt_fild04
prt_fild05
prt_fild06
prt_fild07
prt_fild08
prt_fild09
prt_fild10
prt_fild11
prt_in
prt_maze01
prt_maze02
prt_maze03
prt_monk
prt_sewb1
prt_sewb2
prt_sewb3
prt_sewb4
pvp_2vs2
pvp_c_room
pvp_n_1-1
pvp_n_1-2
pvp_n_1-3
pvp_n_1-4
pvp_n_1-5
pvp_n_2-1
pvp_n_2-2
pvp_n_2-3
pvp_n_2-4
pvp_n_2-5
pvp_n_3-1
pvp_n_3-2
pvp_n_3-3
pvp_n_3-4
pvp_n_3-5
pvp_n_4-1
pvp_n_4-2
pvp_n_4-3
pvp_n_4-4
pvp_n_4-5
pvp_n_5-1
pvp_n_5-2
pvp_n_5-3
pvp_n_5-4
pvp_n_5-5
pvp_n_6-1
pvp_n_6-2
pvp_n_6-3
pvp_n_6-4
pvp_n_6-5
pvp_n_7-1
pvp_n_7-2
pvp_n_7-3
pvp_n_7-4
pvp_n_7-5
pvp_n_8-1
pvp_n_8-2
pvp_n_8-3
pvp_n_8-4
pvp_n_8-5
pvp_n_room
pvp_y_1-1
pvp_y_1-2
pvp_y_1-3
pvp_y_1-4
pvp_y_1-5
pvp_y_2-1
pvp_y_2-2
pvp_y_2-3
pvp_y_2-4
pvp_y_2-5
pvp_y_3-1
pvp_y_3-2
pvp_y_3-3
pvp_y_3-4
pvp_y_3-5
pvp_y_4-1
pvp_y_4-2
pvp_y_4-3
pvp_y_4-4
pvp_y_4-5
pvp_y_5-1
pvp_y_5-2
pvp_y_5-3
pvp_y_5-4
pvp_y_5-5
pvp_y_6-1
pvp_y_6-2
pvp_y_6-3
pvp_y_6-4
pvp_y_6-5
pvp_y_7-1
pvp_y_7-2
pvp_y_7-3
pvp_y_7-4
pvp_y_7-5
pvp_y_8-1
pvp_y_8-2
pvp_y_8-3
pvp_y_8-4
pvp_y_8-5
pvp_y_room
sword_1-1
sword_2-1
sword_3-1
treasure01
treasure02
wizard_1-1
wizard_2-1
wizard_3-1
xmas
xmas_dun01
xmas_dun02
xmas_fild01
xmas_in
beach_dun
beach_dun2
beach_dun3
cmd_fild01
cmd_fild02
cmd_fild03
cmd_fild04
cmd_fild05
cmd_fild06
cmd_fild07
cmd_fild08
cmd_fild09
cmd_in01
cmd_in02
comodo
quiz_00
quiz_01
g_room1-1
g_room1-2
g_room1-3
g_room2
tur_dun01
tur_dun02
tur_dun03
tur_dun04
tur_dun05
tur_dun06
alde_gld
aldeg_cas01
aldeg_cas02
aldeg_cas03
aldeg_cas04
aldeg_cas05
gefg_cas01
gefg_cas02
gefg_cas03
gefg_cas04
gefg_cas05
gld_dun01
gld_dun02
gld_dun03
gld_dun04
guild_room
guild_vs1
guild_vs2
guild_vs3
guild_vs4
guild_vs5
guild_vs1-1
guild_vs1-2
guild_vs1-3
guild_vs1-4
guild_vs2-1
guild_vs2-2
job_hunte
job_knt
job_prist
job_wiz
pay_gld
payg_cas01
payg_cas02
payg_cas03
payg_cas04
payg_cas05
prt_gld
prtg_cas01
prtg_cas02
prtg_cas03
prtg_cas04
prtg_cas05
alde_alche
in_rogue
job_cru
job_duncer
job_monk
job_sage
mag_dun01
mag_dun02
monk_test
quiz_test
yuno
yuno_fild01
yuno_fild02
yuno_fild03
yuno_fild04
yuno_in01
yuno_in02
yuno_in03
yuno_in04
yuno_in05
ama_dun01
ama_dun02
ama_dun03
ama_fild01
ama_in01
ama_in02
ama_test
amatsu
gon_dun01
gon_dun02
gon_dun03
gon_fild01
gon_in
gon_test
gonryun
sec_in01
sec_in02
sec_pri
umbala
um_dun01
um_dun02
um_fild01
um_fild02
um_fild03
um_fild04
um_in
niflheim
nif_fild01
nif_fild02
nif_in
yggdrasil01
valkyrie
himinn
lou_in01
lou_in02
lou_dun03
lou_dun02
lou_dun01
lou_fild01
louyang
siege_test
n_castle
nguild_gef
nguild_prt
nguild_pay
nguild_alde
jawaii
jawaii_in
gefenia01
gefenia02
gefenia03
gefenia04
new_zone01
new_zone02
new_zone03
new_zone04
payon_in03
ayothaya
ayo_in01
ayo_in02
ayo_fild01
ayo_fild02
ayo_dun01
ayo_dun02
que_god01
que_god02
yuno_fild05
yuno_fild07
yuno_fild08
yuno_fild09
yuno_fild11
yuno_fild12
alde_tt02
turbo_n_1
turbo_n_4
turbo_n_8
turbo_n_16
turbo_e_4
turbo_e_8
turbo_e_16
turbo_room
airplane
airport
einbech
einbroch
ein_dun01
ein_dun02
ein_fild06
ein_fild07
ein_fild08
ein_fild09
ein_fild10
ein_in01
que_sign01
que_sign02
ein_fild03
ein_fild04
lhz_fild02
lhz_fild03
yuno_pre
lhz_fild01
lighthalzen
lhz_in01
lhz_in02
lhz_in03
lhz_que01
lhz_dun01
lhz_dun02
lhz_dun03
lhz_cube
juperos_01
juperos_02
jupe_area1
jupe_area2
jupe_core
jupe_ele
jupe_ele_r
jupe_gate
y_airport
lhz_airport
airplane_01
jupe_cave
quiz_02
hu_fild07
hu_fild05
hu_fild04
hu_fild01
yuno_fild06
job_soul
job_star
que_job01
que_job02
que_job03
abyss_01
abyss_02
abyss_03
thana_step
thana_boss
tha_scene01
tha_t01
tha_t02
tha_t03
tha_t04
tha_t07
tha_t05
tha_t06
tha_t08
tha_t09
tha_t10
tha_t11
tha_t12
auction_01
auction_02
hugel
hu_in01
que_bingo
que_hugel
p_track01
p_track02
odin_tem01
odin_tem02
odin_tem03
hu_fild02
hu_fild03
hu_fild06
ein_fild01
ein_fild02
ein_fild05
yuno_fild10
kh_kiehl02
kh_kiehl01
kh_dun02
kh_dun01
kh_mansion
kh_rossi
kh_school
kh_vila
force_map1
force_map2
force_map3
job_hunter
job_knight
job_priest
job_wizard
ve_in02
rachel
ra_in01
ra_fild01
ra_fild02
ra_fild03
ra_fild04
ra_fild05
ra_fild06
ra_fild07
ra_fild08
ra_fild09
ra_fild10
ra_fild11
ra_fild12
ra_fild13
ra_san01
ra_san02
ra_san03
ra_san04
ra_san05
ra_temin
ra_temple
ra_temsky
que_rachel
ice_dun01
ice_dun02
ice_dun03
ice_dun04
que_thor
thor_camp
thor_v01
thor_v02
thor_v03
veins
ve_in
ve_fild01
ve_fild02
ve_fild03
ve_fild04
ve_fild05
ve_fild06
ve_fild07
poring_c01
poring_c02
que_ng
nameless_i
nameless_n
nameless_in
abbey01
abbey02
abbey03
poring_w01
poring_w02
que_san04
moscovia
mosk_in
mosk_ship
mosk_fild01
mosk_fild02
mosk_dun01
mosk_dun02
mosk_dun03
mosk_que
force_4-1
force_5-1
06guild_r
06guild_01
06guild_02
06guild_03
06guild_04
06guild_05
06guild_06
06guild_07
06guild_08
z_agit
que_temsky
itemmall
bossnia_01
bossnia_02
bossnia_03
bossnia_04
schg_cas01
schg_cas02
schg_cas03
schg_cas04
schg_cas05
sch_gld
cave
moc_fild20
moc_fild21
moc_fild22
que_ba
que_moc_16
que_moon
arug_cas01
arug_cas02
arug_cas03
arug_cas04
arug_cas05
aru_gld
bat_room
bat_a01
bat_a02
bat_b01
bat_b02
que_qsch01
que_qsch02
que_qsch03
que_qsch04
que_qsch05
que_qaru01
que_qaru02
que_qaru03
que_qaru04
que_qaru05
1@cata
2@cata
e_tower
1@tower
2@tower
3@tower
4@tower
5@tower
6@tower
mid_camp
mid_campin
man_fild01
man_fild03
spl_fild02
spl_fild03
moc_fild22b
que_dan01
que_dan02
schg_que01
schg_dun01
arug_que01
arug_dun01
1@orcs
2@orcs
1@nyd
2@nyd
nyd_dun01
nyd_dun02
manuk
man_fild02
man_in01
splendide
spl_fild01
spl_in01
spl_in02
bat_c01
bat_c02
bat_c03
moc_para01
job3_arch01
job3_arch02
job3_arch03
job3_guil01
job3_guil02
job3_guil03
job3_rang01
job3_rang02
job3_rune01
job3_rune02
job3_rune03
job3_war01
job3_war02
jupe_core2
brasilis
bra_in01
bra_fild01
bra_dun01
bra_dun02
dicastes01
dicastes02
dic_in01
dic_fild01
dic_fild02
dic_dun01
dic_dun02
job3_gen01
s_atelier
job3_sha01
//evt_zombie
//evt_coke
//ac_sl_area
//ac_cl_hall
//ac_cl_room
//jp_s_dun11
mora
bif_fild01
bif_fild02
1@mist
dewata
dew_in01
dew_fild01
dew_dun01
dew_dun02
que_house_s
malangdo
mal_in01
mal_in02
mal_dun01
1@pump
2@pump
1@cash
iz_dun05
evt_mobroom
alde_tt03
dic_dun03
//mjolnir_04_1
1@lhz
lhz_dun04
que_lhz
evt_swar_b
evt_swar_r
evt_swar_s
evt_swar_t
gld2_ald
gld2_gef
gld2_pay
gld2_prt
gld_dun01_2
gld_dun02_2
gld_dun03_2
gld_dun04_2
malaya
job_ko
ma_scene01
1@ma_b
1@ma_c
1@ma_h
ma_in01
ma_dun01
ma_fild01
ma_fild02
ma_zif01
ma_zif02
ma_zif03
ma_zif04
ma_zif05
ma_zif06
ma_zif07
ma_zif08
ma_zif09
new_event
eclage
ecl_fild01
ecl_tdun01
ecl_tdun02
ecl_tdun03
ecl_tdun04
que_avan01
1@ecl
ecl_in01
ecl_in02
ecl_in03
ecl_in04
ecl_hub01
moc_prydn1
moc_prydn2
iz_ac01
iz_ac02
treasure_n1
treasure_n2
iz_int
iz_ng01
iz_int01
iz_int02
iz_int03
iz_int04
iz_ac01_a
iz_ac02_a
iz_ac01_b
iz_ac02_b
iz_ac01_c
iz_ac02_c
iz_ac01_d
iz_ac02_d
te_prtcas01
te_prtcas02
te_prtcas03
te_prtcas04
te_prtcas05
te_aldecas1
te_aldecas2
te_aldecas3
te_aldecas4
te_aldecas5
prt_fild08a
prt_fild08b
prt_fild08c
prt_fild08d
izlude_a
izlude_b
izlude_c
izlude_d
te_prt_gld
te_alde_gld
teg_dun01
teg_dun02
1@gl_k
2@gl_k
gl_chyard_
gl_cas02_
evt_bomb
1@def01
1@def02
1@def03
1@gef
1@face
1@sara
1@gef_in
dali
// Only add maps under this line if they are not standard maps!
//======================================================================================
// - Other/Extra maps -
//======================================================================================
//rwc01 1000
//rwc02
//rwc03
//2009rwc_f01
//2009rwc_01
//2009rwc_02
//2009rwc_03
//2009rwc_04
//2008rwc_04
//prontera_x
//alberta_x
//aldebaran_x
//geffen_x
//izlude_x
//prt_church_x
//prontera_s
//pay_arche_s
//xmas_old
//ordeal_a00
//ordeal_a02
//fay_vilg00
//fay_vilg01
//gef_vilg00
//gef_vilg01
//moc_dugn01
//moc_dugn02
//moc_fild01
//moc_fild02
//moc_fild03
//moc_fild04
//moc_intr00
//moc_intr01
//moc_intr02
//moc_intr04
//moc_vilg00
//moc_vilg01
//moc_vilg02
//probemap
//probemap02
//prt_cstl01
//prt_dugn00
//prt_dugn01
//prt_fild00
//prt_fild01
//prt_fild03
//prt_fild04
//prt_fild05
//prt_intr01
//prt_intr01_a
//prt_intr02
//prt_vilg00
//prt_vilg01
//prt_vilg02
//tank_test
//tank_test2
//test
//======================================================================================
//Place your custom maps with a starting ID here.
//======================================================================================
//Example:
//
//mymap 1250
//mymap-2

View File

@ -0,0 +1,5 @@
// Mercenary Database
//
// Structure of Database:
// ID,Sprite_Name,Name,LV,HP,SP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Speed,aDelay,aMotion,dMotion

View File

@ -0,0 +1,4 @@
// Mercenary Skill Database
//
// Structure of Database:
// MercenryID,SkillID,SkillLevel

View File

@ -0,0 +1,16 @@
// Mob Availability and Alias Database
//
// Structure of Database:
// MobID,SpriteID{,Equipment}
//
// 01. MobID Mob ID to change.
// 02. SpriteID Mob ID which will be sent to the client instead of MobID.
// If 0, the mob becomes unavailable for use.
// 03. Equipment Item ID of pet equipment (must be available for pet counterpart, or this will cause problems).
//
// To disguise a mob as a player:
// MobID,SpriteID,Sex,Hair_Style,Hair_Color,Weapon,Shield,Head_Top,Head_Middle,Head_Bottom,Option,Dye_Color
//
// SpriteID is a job class value.
// Weapon and Shield uses Item ID, while Head uses View ID.

View File

@ -0,0 +1,5 @@
// Bloody Branch Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,5 @@
// Dead Branch Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,46 @@
// Monster Chat Database
//
// Structure of Database:
// Line_ID#Color_Code#Dialog
1#0xFF0000#Weakling! Challenge me if you have any courage!
2#0xFF0000#Impressive! I wonder how far your recklessness will take you.
3#0xFF0000#I almost pity how outmatched you are against me. Now prepare for my attack!
4#0xFF0000#My loyal servants! Welcome them with a painful death!
5#0xFF0000#Don't you run away!
6#0xFF0000#You worthless humans. Your so-called holy powers have no effect on me!
7#0xFF0000#Useless underlings!...Well, that's fine, I have more weapons to use and dispose.
8#0xFF0000#Pray to your gods!
9#0xFF0000#Do you still think you're a match to me?!
10#0xFF0000#Vanish!
11#0xFF0000#Let's see how long you can endure my power!
12#0xFF0000#Is this all you've got?!
13#0xFF0000#You're tickling me!
14#0xFF0000#This is how you attack? Watch and learn, weaklings!
15#0xFF0000#It's time to finish the game!
16#0xFF0000#Oh, you're stronger than I thought!
17#0xFF0000#No, this can't be happening! I'm Satan Morroc, Demon King of Destruction!
18#0xFF0000#I can never die! I'll be coming back for you!
19#0xFF0000#I was born to conquer this world! None shall stop me!
20#0xFF0000#Your days are numbered!
21#0xFF0000#Pulse Strike! My fingers tear steel!
22#0xFF0000#Hahaha, tell me who I am! I'm Baphomet, the Heir of Hell!
23#0xFF0000#Enjoy your time on the mortal plane while you can, your hope will soon turn into despair!
24#0xFF0000#When are you going to learn your lesson? In death?
25#0xFF0000#No... I can't lose! I won't beg for my life! I'm not running away! I don't accept this as defeat!
26#0xFF0000#Argh... I... I'm weakening...
27#0xFF0000#What do you want from me?
28#0xFF0000#No! I didn't do this! He's the one who planned out all this!
29#0xFF0000#I just wanted to find peace..! That's why I have been fleeing away!
30#0xFF0000#Ahhhh!!! Now, I just have to kill you all!
31#0xFF0000#Annoying flies!! Get off of me!
32#0xFF0000#Suffer in Hell!
33#0xFF0000#Mwahahaha! Taste the anger of the earth!!!
34#0xFF0000#No... I won't accept this as defeat!
35#0xFF0000#Will it ease your loneliness to hit me? Why don't you stay here with me forever, human?
36#0xFF0000#You will forgot the meaning of time. I wonder how long can you last in here...
37#0xFF0000#Is there anyone waiting for you outside of here? Throw them all away, you are mine now...
38#0xFF0000#Discard your life and stay confined here. You will yearn for freedom in captivity !!
39#0xFF0000#How much will the outside world change if you stay here in solitude for one thousand years?
40#0xFF0000#Yes! Yearn for your freedom from this confined place, your captivity here will be permanent !!

View File

@ -0,0 +1,5 @@
// Class Change Summonable Monsters Database
// List of monsters generated through Abracadabra's SA_CLASSCHANGE ability.
//
// Structure of Database:
// MobID,DummyName,Rate

47
db/import-tmpl/mob_db.txt Normal file
View File

@ -0,0 +1,47 @@
// Monsters Additional Database
//
// Structure of Database :
// ID,Sprite_Name,kROName,iROName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,aDelay,aMotion,dMotion,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,Drop9id,Drop9per,DropCardid,DropCardper
// rAthena Dev Team
//1900,VALARIS,Valaris,Valaris,99,668000,0,107250,37895,2,3220,4040,35,45,1,152,96,85,120,95,10,10,2,6,67,0x1973,100,1068,768,576,13000,608,1000,750,400,923,3800,1466,200,2256,200,2607,800,714,500,617,3000,984,4300,985,5600,0,0,0,0,4147,1
//1901,VALARIS_WORSHIPPER,Valaris's Worshipper,Valaris's Worshipper,50,8578,0,2706,1480,1,487,590,15,25,1,75,55,1,93,45,10,12,0,6,27,0x1685,100,868,480,120,0,0,0,0,0,0,0,923,500,984,63,1464,2,607,50,610,100,503,300,2405,50,0,0,0,0,4129,1
//1902,MC_CAMERI,MC Cameri,MC Cameri,99,668000,0,107250,37895,2,3220,4040,35,45,1,152,96,85,120,95,10,10,2,6,67,0x1973,100,1068,768,576,13000,608,1000,750,400,923,3800,1466,200,2256,200,2607,800,714,500,617,3000,984,4300,985,5600,0,0,0,0,4147,1
//1903,POKI,Poki#3,Poki#3,99,1349000,0,4093000,1526000,9,4892,9113,22,35,1,180,39,67,193,130,10,12,1,7,64,0x1973,120,500,672,480,92100,603,5500,617,3000,1723,1000,1228,100,1236,500,617,2500,1234,75,1237,125,1722,250,1724,100,1720,50,0,0,0,0
//1904,SENTRY,Sentry,Sentry,99,668000,0,107250,37895,2,3220,4040,35,45,1,152,96,85,120,95,10,10,2,6,67,0x1973,100,1068,768,576,13000,608,1000,750,400,923,3800,1466,200,2256,200,2607,800,714,500,617,3000,984,4300,985,5600,0,0,0,0,4147,1
// Custom Hollow Poring (overrrides/collides with META_ANDRE)
//1237,HOLLOW_PORING,Hollow Poring,Hollow Poring,1,50,0,2,1,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,512,150,619,20,0,0,0,0,4001,10
// Custom Fire Poring. Warning, Colides with META_DENIRO
//1239,FIRE_PORING,Fire Poring,Fire Poring,1,50,0,2,1,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x131,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,741,5,619,20,0,0,0,0,4001,20
// Lunar New Year 2008 Event Monster overrides
// Uncomment if event is enabled, as these drops modifications are nessecary.
//1145,MARTIN,Martin,Martin,18,1109,0,134,86,1,52,63,0,5,12,18,30,15,15,5,10,12,0,2,42,0x81,300,1480,480,480,0,0,0,0,0,0,0,1017,9000,1018,500,1251,10,2225,5,5009,1,10010,10,2224,15,7869,1500,0,0,4046,1
//1175,TAROU,Tarou,Tarou,11,284,0,57,28,1,34,45,0,0,1,20,11,10,24,5,10,12,0,2,27,0x91,150,1744,1044,684,0,0,0,0,0,0,0,1016,9000,919,3000,949,800,528,1000,701,2,7869,2500,0,0,0,0,0,0,4028,1
//1209,CRAMP,Cramp,Cramp,56,4720,0,2300,1513,1,395,465,0,5,1,85,35,5,65,60,10,12,0,2,45,0x3095,100,1000,500,1000,0,0,0,0,0,0,0,7007,4656,528,1000,726,80,746,110,568,250,510,70,984,95,7869,1500,0,0,4296,1
// iRO St. Patricks Day 2008 Event Monster overrides
// Uncomment if event is enabled, as these drops modifications are nessecary.
//1841,G_SNAKE_,Snake Lord's Minon,Snake Lord's Minon,15,471,0,72,48,1,46,55,0,0,1,15,15,10,35,5,10,12,1,2,22,0x81,200,1576,576,576,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
//1842,G_ANACONDAQ_,Snake Lord's Minon,Snake Lord's Minon,23,1109,0,300,149,1,124,157,0,0,1,23,28,10,36,5,10,12,1,2,25,0x91,200,1576,576,576,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
//1843,SIDE_WINDER_,Snake Lord's Minon,Snake Lord's Minon,43,4929,0,1996,993,1,240,320,5,10,38,43,40,15,115,20,10,12,1,2,25,0x3095,200,1576,576,576,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
//1844,G_ISIS_,Snake Lord's Minon,Snake Lord's Minon,47,7003,0,3709,1550,1,423,507,10,35,38,65,43,50,66,15,10,12,2,6,27,0x3195,200,1384,768,336,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,8,0,0,0,0,0,0,0,0,0,0,0,0
// iRO Christmas 2008 Event
// Uncomment if event is enabled, as these drops modifications are nessecary.
//1244,JAKK_XMAS,Christmas Jakk,Christmas Jakk,38,3581,0,1113,688,1,315,382,5,30,1,38,38,43,75,45,10,12,1,0,43,0x81,200,1180,480,648,0,0,0,0,0,0,0,529,1000,530,1000,14546,1000,14550,1000,7174,1000,7175,1000,6092,1000,12355,1250,0,0,0,0
//1245,GOBLINE_XMAS,Christmas Goblin,Christmas Goblin,25,1176,0,282,171,1,118,140,10,5,1,53,25,20,38,45,10,12,1,7,24,0x81,100,1120,620,240,0,0,0,0,0,0,0,529,1000,530,1000,14546,1000,14550,1000,7174,1000,7175,1000,6092,1000,12355,1250,0,0,0,0
//1246,COOKIE_XMAS,Christmas Cookie,Christmas Cookie,28,2090,0,461,284,1,140,170,0,50,1,24,30,53,45,100,10,12,0,7,46,0x91,400,1248,1248,240,0,0,0,0,0,0,0,529,1000,530,1000,14546,1000,14550,1000,7174,1000,7175,1000,6092,1000,12355,1250,0,0,0,0
//1247,ANTONIO,Antonio,Antonio,10,10,0,3,2,1,13,20,100,0,1,1,1,50,100,100,10,12,1,3,66,0xC1,100,720,720,432,0,0,0,0,0,0,0,604,500,12354,500,14550,500,5136,500,12132,500,12225,500,5811,500,0,0,0,0,4243,1
// iRO Halloween 2009 Event
// Uncomment if event is enabled. Uncomment the skills for Halloween Whisper in mob_skill_db2.
//3014,HALLOWEEN_WHISPER,Halloween Whisper,Halloween Whisper,1,800,0,0,0,1,10,13,0,45,1,51,14,0,60,0,10,12,0,6,68,0x81,150,1960,960,504,0,0,0,0,0,0,0,12396,150,6299,5335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
//3015,HALLOWEEN_DARK_LORD,Halloween Dark Lord,Halloween Dark Lord,1,45,0,0,0,1,10,13,0,45,1,51,14,0,60,0,10,12,2,6,89,0x81,100,868,768,480,0,0,0,0,0,0,0,12396,800,12397,5335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
// iRO Halloween 2008 Event
// Uncomment if event is enabled.
//3000,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1
//3001,GHOUL,Ghoul,Ghoul,40,5418,0,1088,622,1,420,500,5,20,1,20,29,0,45,20,10,12,1,1,49,0x3885,250,2456,912,504,0,0,0,0,0,0,0,958,6000,756,110,509,700,511,800,2609,60,934,150,1260,1,0,0,0,0,4110,1
//3002,ZOMBIE_MASTER,Zombie Master,Zombie Master,62,14211,0,7610,2826,1,824,1084,37,26,25,20,30,5,77,35,10,12,1,1,29,0x3695,175,2612,912,288,0,0,0,0,0,0,0,7071,4413,938,1500,958,1500,723,200,727,100,1260,1,2324,2,0,0,0,0,4274,1

View File

@ -0,0 +1,30 @@
// Specific Item Drop Ratio Database
// Overrides for global item_rate* values from conf/battle/drops.conf
//
// Structure of Database:
// ItemID,Ratio{,MonsterID}
//
// Result:
// ItemID base drop rates defined in mob_db will not get multiplied
// by global item_rate* values (aka drop rates) from
// conf/battle/drops.conf. Instead Ratio will be used (100 = 1x).
// If no MonsterID is specified, all monsters will be affected,
// otherwise only listed ones.
//
// Examples:
// 909,100 // Jellopies from monsters will drop with 1x drop rate regardless of global drop rate
// 909,1000 // Jellopies from monsters will drop with 10x drop rate regardless of global drop rate
// 909,100,1002 // Jellopies from Porings will drop with 1x drop rate. Other monsters that drop Jellopies are unaffected (use global drop rate).
//
// Notes:
// - By default you can list up to 10 MonsterIDs per ItemID.
// It can be changed in src/map/mob.c by adjusting MAX_ITEMRATIO_MOBS.
// - Only ItemIDs up to MAX_ITEMDB are supported (default: 32768).
// - Does not override item_drop_*_min/max settings.
// - Does not affect card/item-granted drops. To adjust card/item-granted
// drops, edit them in item_db.
// - Does affect MVP prizes and Treasure Boxes.
// - You can add only ONE line per ItemID. If you need various ratios
// for different monsters, override drop rate with Ratio=100 and edit
// base drop rates in mob_db.
// - This file is reloaded by @reloadmobdb.

View File

@ -0,0 +1,5 @@
// Poring Box Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,4 @@
// Red Pouch of Surprise Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,6 @@
// Monster Racial Groups Database
//
// Structure of Database:
// Race2ID,MobID1,MobID2,MobID3,...,MobID9

View File

@ -0,0 +1,137 @@
// Custom Mob Skill Database
//
// Structure of Database:
// MobID,Dummy value (info only),State,SkillID,SkillLv,Rate,CastTime,Delay,Cancelable,Target,Condition type,Condition value,val1,val2,val3,val4,val5,Emotion,Chat
//
// RATE: the chance of the skill being casted when the condition is fulfilled (10000 = 100%).
// DELAY: the time (in milliseconds) before attempting to recast the same skill.
//
// STATE:
// any (except dead) / idle (in standby) / walk (in movement) / dead (on killed) /
// loot /attack / angry (like attack, except player has not attacked mob yet) /
// chase (following target, after being attacked) / follow (following target,
// without being attacked) / anytarget (attack+angry+chase+follow)
//
// TARGET:
// target (current target) / self / friend / master / randomtarget (any enemy within skill's range)
//
// The following are for ground-skills, a random target tile is selected from the specified area:
// around1 (3x3 area around self) / around2 (5x5 area around self) /
// around3 (7x7 area around self) / around4 (9x9 area around self) /
// around5 (3x3 area around target) / around6 (5x5 area around target) /
// around7 (7x7 area around target) / around8 (9x9 area around target) /
// around = around4
//
// CONDITION:
// always Unconditional (no condition value).
// onspawn When mob spawns/respawns (no condition value).
// myhpltmaxrate When mob's HP drops to the specified %.
// myhpinrate When mob's HP is in a certain % range (condition value = lower bound, val1 = upper bound).
// mystatuson If mob has the specified abnormality in status.
// mystatusoff If mob has ended the specified abnormality in status.
// friendhpltmaxrate When mob's friend's HP drops to the specified %.
// friendhpinrate When mob's friend's HP is in a certain % range (condition value = lower bound, val1 = upper bound).
// friendstatuson If friend has the specified abnormality in status.
// friendstatusoff If friend has ended the specified abnormality in status.
// attackpcgt When attack PCs become greater than specified number.
// attackpcge When attack PCs become greater than or equal to the specified number.
// slavelt When number of slaves is less than the original specified number.
// slavele When number of slaves is less than or equal to the original specified number.
// closedattacked When close range melee attacked (no condition value).
// longrangeattacked When long range attacked, ex. bows, guns, ranged skills (no condition value).
// skillused When the specified skill is used on the mob.
// afterskill After mob casts the specified skill.
// casttargeted When a target is in cast range (no condition value).
// rudeattacked When mob is rude attacked (no condition value).
//
// Status abnormalities specified through the statuson/statusoff system:
// anybad (any type of state change) / stone / freeze / stun / sleep /
// poison / curse / silence / confusion / blind / hiding / sight (unhidden)
//
// Note: if a negative MobID is provided, the skill will be treated as 'global':
// -1: added for all boss types.
// -2: added for all normal types.
// -3: added for all mobs.
// rAthena Dev Team
//1900,Valaris@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
//1900,Valaris@AL_TELEPORT,walk,26,1,500,0,5000,yes,self,rudeattacked,,,,,,,,
//1900,Valaris@KN_BRANDISHSPEAR,attack,57,10,2000,500,5000,no,target,always,0,,,,,,29,
//1900,Valaris@MO_BODYRELOCATION,chase,264,1,200,200,1000,yes,target,always,0,,,,,,,
//1900,Valaris@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,no,target,always,0,,,,,,,
//1900,Valaris@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,target,always,0,,,,,,,
//1900,Valaris@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,,
//1900,Valaris@NPC_DARKBREATH,attack,202,5,2000,800,5000,no,target,always,0,,,,,,29,
//1900,Valaris@NPC_DARKSTRIKE,chase,340,10,200,0,1000,yes,target,always,0,,,,,,,
//1900,Valaris@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,,
//1900,Valaris@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6,
//1900,Valaris@NPC_SUMMONSLAVE,attack,196,6,10000,700,10000,no,self,slavele,3,1902,,,,,,
//1900,Valaris@NPC_SUMMONSLAVE,idle,196,6,10000,700,10000,no,self,slavele,3,1902,,,,,,
//1900,Valaris@WZ_VERMILION,attack,85,10,2000,500,2000,no,target,always,0,,,,,,29,
//1900,Valaris@WZ_VERMILION,chase,85,10,200,500,2000,no,target,always,0,,,,,,29,
//1900,Valaris@WZ_VERMILION,chase,85,10,500,500,2000,no,target,skillused,18,,,,,,29,
//1901,Valaris's Worshipper@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
//1901,Valaris's Worshipper@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,0,,,,,,29,
//1901,Valaris's Worshipper@NPC_DARKNESSATTACK,attack,190,2,500,500,5000,no,target,always,0,,,,,,6,
//1901,Valaris's Worshipper@NPC_EMOTION,chase,197,1,20,0,5000,yes,self,always,0,19,129,,,,,
//1901,Valaris's Worshipper@NPC_EMOTION,idle,197,1,200,0,5000,yes,self,always,0,6,1173,,,,,
//1901,Valaris's Worshipper@NPC_EMOTION,walk,197,1,200,0,5000,yes,self,always,0,2,,,,,,
//1901,Valaris's Worshipper@NPC_HALLUCINATION,attack,207,1,500,500,5000,yes,target,always,0,,,,,,29,
//1901,Valaris's Worshipper@NPC_HALLUCINATION,chase,207,1,50,500,5000,yes,target,always,0,,,,,,29,
//1901,Valaris's Worshipper@SA_DISPELL,attack,289,1,0,0,30000,yes,target,always,0,,,,,,29,
//1902,MC Cameri@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
//1902,MC Cameri@AL_TELEPORT,walk,26,1,500,0,5000,yes,self,rudeattacked,,,,,,,,
//1902,MC Cameri@KN_BRANDISHSPEAR,attack,57,10,2000,500,5000,no,target,always,0,,,,,,29,
//1902,MC Cameri@MO_BODYRELOCATION,chase,264,1,200,200,1000,yes,target,always,0,,,,,,,
//1902,MC Cameri@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,no,target,always,0,,,,,,,
//1902,MC Cameri@NPC_DARKBREATH,attack,202,5,2000,800,5000,no,target,always,0,,,,,,29,
//1902,MC Cameri@NPC_DARKSTRIKE,chase,340,10,200,0,1000,yes,target,always,0,,,,,,,
//1902,MC Cameri@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,,
//1902,MC Cameri@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6,
//1902,MC Cameri@WZ_VERMILION,attack,85,10,2000,500,2000,no,target,always,0,,,,,,29,
//1902,MC Cameri@WZ_VERMILION,chase,85,10,200,500,2000,no,target,always,0,,,,,,29,
//1902,MC Cameri@WZ_VERMILION,chase,85,10,500,500,2000,no,target,skillused,18,,,,,,29,
//1903,Poki#3@AC_DOUBLE,attack,46,10,500,1000,5000,no,target,always,0,,,,,,,
//1903,Poki#3@AC_SHOWER,attack,47,8,2000,1000,5000,no,target,attackpcgt,2,,,,,,,
//1903,Poki#3@BS_MAXIMIZE,chase,114,5,500,1000,5000,no,self,always,0,,,,,,,
//1903,Poki#3@BS_MAXIMIZE,attack,114,5,500,1000,5000,no,self,always,0,,,,,,,
//1903,Poki#3@NPC_AGIUP,chase,350,5,2500,0,5000,no,self,always,0,,,,,,,
//1903,Poki#3@NPC_POWERUP,attack,349,5,500,0,30000,yes,self,myhpltmaxrate,30,,,,,,,
//1903,Poki#3@SN_SHARPSHOOTING,attack,382,5,500,1000,5000,no,target,always,0,,,,,,,
//1903,Poki#3@HT_SKIDTRAP,idle,115,5,50,0,5000,yes,self,always,0,,,,,,29,
//1903,Poki#3@HT_FREEZINGTRAP,idle,120,5,50,0,300000,yes,self,always,0,,,,,,,
//1903,Poki#3@HT_FREEZINGTRAP,idle,121,5,50,0,300000,yes,self,always,0,,,,,,,
//1903,Poki#3@AC_CHARGEARROW,attack,148,1,500,0,5000,yes,target,always,0,,,,,,,
//1903,Poki#3@HT_FLASHER,idle,120,5,50,0,300000,yes,self,always,0,,,,,,,
//1903,Poki#3@NPC_SUMMONSLAVE,idle,196,5,10000,2000,120000,no,self,slavele,1,1659,1660,1661,1662,1663,0,
//1903,Poki#3@NPC_CALLSLAVE,attack,352,1,2000,0,10000,yes,target,always,0,,,,,,,
//1903,Poki#3@NPC_CALLSLAVE,idle,352,1,2000,0,10000,yes,self,always,0,,,,,,,
//1903,Poki#3@NPC_CHANGEWATER,attack,162,1,10000,2000,600000,no,self,myhpltmaxrate,30,,,,,,,
//1903,Poki#3@NPC_CHANGETELEKINESIS,attack,169,1,500,2000,5000,no,self,myhpltmaxrate,10,,,,,,7,
//1903,Poki#3@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
// Easter Bunny (not in the db?? it's in db2!)
//1921,Easter Bunny@NPC_SUMMONSLAVE,attack,196,5,10000,3000,10000,no,self,slavele,2,1063,,,,,,
//1921,Easter Bunny@NPC_SUMMONSLAVE,idle,196,5,5000,2000,40000,no,self,always,2,1920,,,,,,
//Custom Fire Poring. Warning, Colides with META_DENIRO
//1239,Fire Poring@AL_HEAL,idle,28,10,10000,0,2000,yes,self,always,0,,,,,,4,
//1239,Fire Poring@AL_HEAL,walk,28,10,10000,0,2000,yes,self,always,0,,,,,,4,
//1239,Fire Poring@AL_TELEPORT,attack,26,1,1000,5000,60000,no,self,myhpltmaxrate,30,,,,,,,
//1239,Fire Poring@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
//1239,Fire Poring@NPC_DARKBLESSING,attack,203,1,1000,2000,5000,no,target,always,0,,,,,,18,
//1239,Fire Poring@NPC_SUMMONSLAVE,attack,196,16,10000,2000,10000,no,self,slavele,3,1491,1431,1433,,,18,
//1239,Fire Poring@NPC_SUMMONSLAVE,idle,196,16,10000,2000,10000,no,self,slavele,3,1491,1431,1433,,,18,
//1239,Fire Poring@RG_INTIMIDATE,attack,219,5,1000,0,3000,yes,target,always,0,,,,,,,
//1239,Fire Poring@RG_STRIPARMOR,attack,217,5,2000,0,3000,yes,target,always,0,,,,,,,
//1239,Fire Poring@RG_STRIPHELM,attack,218,5,2000,0,3000,yes,target,always,0,,,,,,,
//1239,Fire Poring@RG_STRIPSHIELD,attack,216,5,2000,0,3000,yes,target,always,0,,,,,,,
//1239,Fire Poring@RG_STRIPWEAPON,attack,215,5,2000,0,3000,yes,target,always,0,,,,,,,
//iRO Halloween Event 2009
//3014,Halloween Whisper@AS_CLOAKING,idle,135,1,2000,200,5000,yes,self,always,0,,,,,,,
//3014,Halloween Whisper@AS_CLOAKING,chase,135,1,2000,200,5000,yes,self,always,0,,,,,,,
//3014,Halloween Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,,,,,,
//3014,Halloween Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
// Here you can place your custom mob skills

View File

@ -0,0 +1,35 @@
// Client<->Map Packet Database
//
// Structure of Database:
// PacketType,PacketLength[,Name,FieldIndex1:FieldIndex2:FieldIndex3:...]
//
// 01. PacketType ID of the packet.
// 02. PacketLength Length of the packet. If 0, packet is disabled in current packet version. If -1, packet has variable size.
// 03. Name Name of the packet parser function (optional, for incoming packets only).
// 04. FieldIndex Specifies the offset of a packet field in bytes from the begin of the packet (only specified when Name is given).
// Can be 0, when the layout is not known.
// ...
//
// NOTE: Up to MAX_PACKET_POS (typically 20) field indexes may be used.
//
// The packet database allows you to add support for new clients,
// because packets change every release.
//
// Note: Every packet version needs a wanttoconnection specification, since
// that is the packet used to identify a client's version.
// If multiple versions have the same connection packet, the higher version
// will be used (unless the lower one is specified as the default)
//
// Incoming packets have their parser function and layout specified, which enables
// them for the current and all higher versions, unless explicitely disabled.
//
// Outgoing packets must be specified in order to enable them for the current
// and all higher versions, unless explicitely disabled. Packets that are not
// enabled for a packet version are silently discarded when sent as multicast.
//
// Every packet version inherits packet definitions from the previous (lower)
// packet version.
//
// Main packet version of the DB to use (default = max available version)
// Client detection is faster when all clients use this version.
// Version 23 is the latest Sakexe (above versions are for Renewal clients)

60
db/import-tmpl/pet_db.txt Normal file
View File

@ -0,0 +1,60 @@
// Pet Additional Database
//
// Structure of Database:
// MobID,Name,JName,LureID,EggID,EquipID,FoodID,Fullness,HungryDelay,R_Hungry,R_Full,Intimate,Die,Capture,Speed,S_Performance,talk_convert_class,attack_rate,defence_attack_rate,change_target_rate,pet_script,loyal_script
//
// 01. MobID Monster ID of the pet.
// 02. Name Name of the monster as defined in the database.
// 03. JName The display name of the monster when hatched.
// 04. LureID Pet Tame Item ID.
// 05. EggID Pet Egg ID.
// 06. EquipID Pet Accessory ID.
// 07. FoodID Pet Food ID.
// 08. Fullness The amount Hunger is decreased every [HungryDelay] seconds.
// 09. HungryDelay The amount of time it takes for hunger to decrease after feeding. (Default: 60 seconds)
// 10. R_Hungry Amount of Intimacy that is increased when fed.
// 11. R_Full Amount of Intimacy that is decreased when over-fed.
// 12. Intimate Amount of Intimacy the pet starts with.
// 13. Die Amount of Intimacy that is decreased when the pet owner dies.
// 14. Capture Capture succes rate (10000 = 100%)
// 15. Speed Pet's walk speed. (Defaul: 150)
// 16. S_Performance Special Performance. (Yes = 1, No = 0)
// 17. talk_convert_class Disables pet talk (instead of talking they emote with /!.)
// 18. attack_rate Rate of which the pet will attack (requires at least pet_support_min_friendly intimacy).
// 19. defence_attack_rate Rate of which the pet will retaliate when master is being attacked (requires at least pet_support_min_friendly intimacy).
// 20. change_target_rate Rate of which the pet will change its attack target.
// 21. pet_script Script to execute when the pet is hatched.
// 22. loyal_script Script to execute when the pet is hatched (requires at least pet_equip_min_friendly intimacy, independent of pet_script).
//NOTE: The max value (100%) of attack_rate, defense_rate & change_target_rate is 10000.
//In theory you can use any valid script, but it is run only once upon pet
//loading, so it is recommended you use the specific pet scripts:
//petskillattack skillid, skilllv, rate, bonusrate
//Skill attack that triggers while the pet is attacking. Rate is the base
//chance of execution per attack. Bonusrate is an additional success rate when
//intimacy reaches max.
//petskillattack2 skillid, damage, hits, rate, bonusrate
//Same as petskillattack, but the damage and number of hits is fixed
//the damage specified is total, not per hit.
//petskillsupport skillid, skilllv, delay, hp%, sp%
//Casts a support skill when the health levels are below the specified hp% and
//sp%. Delay is the minimum time in seconds before the skill can be cast again
//petheal amount, delay, hp%, sp%
//Similar to petskillsupport, but the skill is fixed to heal (28) and the
//heal-amount is fixed to the value given.
//petrecovery type, delay: Cures the "type" status effect after "delay" seconds
//petskillbonus type, value, duration, delay
//Gives bonus stats. Type is the stat to increase (bStr, bLuk), value is the
//amount by which it is increased, duration signals how long the bonus lasts
//delay is the time elapsed after the bonus ends and before it starts again.
//A single pet can have petloot, petskillbonus, petskillattack (or
//petskillattack2) and petskillsupport (or petheal) at the same time,
//but only one of each.

View File

@ -0,0 +1,9 @@
// Item Produce Database
//
// Structure of Database:
// ProduceItemID,ItemLV,RequireSkill,RequireSkillLv,MaterialID1,MaterialAmount1,......
//
// Notes:
// If MaterialAmount is 0, the player must have that item in their inventory (i.e. guides).
// For example, Mine Bottle requires 0x Marine Sphere Creation Guide (ID 7131).

View File

@ -0,0 +1,5 @@
// Quest Database
//
// Structure of Database:
// Quest ID,Time Limit,Target1,Val1,Target2,Val2,Target3,Val3,Quest Title

View File

@ -0,0 +1,32 @@
// Refine Database [Renewal]
//
// Structure of Database:
// Type,Stats per level,Random bonus start level,Random bonus value,Chance+1:Bonus+1,Chance+2:Bonus+2,Chance+3:Bonus+3,...
//
// For armors, values of 100 add 1 armor defense.
// For weapons, values of 100 add 1 ATK&MATK.
//
// Type:
// 0 - Armors
// 1 - Level 1 weapons
// 2 - Level 2 weapons
// 3 - Level 3 weapons
// 4 - Level 4 weapons
//
// Stats per level:
// This value is applied for every upgrade level.
//
// Random bonus start level:
// This value specifies the start point for those levels that give a random bonus value (usually the first unsafe upgrade).
//
// Random bonus value:
// A random number between 0 and (Random bonus start level - Upgrade level + 1) * this value is applied for all upgrades past
// Random bonus start level. This is only applied for weapons, and not displayed client-side.
//
// Chance:
// 100 = 100%
//
// Notes:
// Changing the number of upgrade levels requires modifying MAX_REFINE in src/map/status.h.
// For Renewal Armors, there may or may not be another bonus, according to iRO wiki: Every upgrade gives floor[( 3 + current upgrade ) / 4] equipment DEF)

View File

@ -0,0 +1,7 @@
// Size Fix Tables
// Contains size fixes for weapon damage.
//
// Struture of Database:
// Columns - Weapon type
// Rows - Target size

View File

@ -0,0 +1,17 @@
// Skill Times Database
//
// Structure of Database:
// SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2,Cool Down,Fixed Casting Time
//
// CastingTime: time to cast this skill, in miliseconds
// AfterCastActDelay: "normal" delay, character cannot use skills, in miliseconds
// AfterCastWalkDleay: amount of time before character can move again, in miliseconds
// Duration1/Duration2: usually the durations used by the skill, at special cases it is used to hold special data
// Cool Down: amount of time until character can re-use this skill, in miliseconds
// Fixed Casting Time: the skills fixed casting time (when 0, uses 20% of cast time and less than 0 means no fixed cast time)
//
// On all fields you can use ':' as a delimiter for level-specific values.
// For example:
// - Original: 6,0,0,0,30000,0,1000
// - Modified: 6,0,0,0,30000,0,1000:2500:3000:...
// Gives Level 1 1000ms cool down, Level 2 2500ms, Level 3 3000ms, and so on.

View File

@ -0,0 +1,16 @@
// <Skill id>,<Cast>,<Delay (optional)>
//
// Cast: 0 - everything affects the skill's cast time
// 1 - skill's cast time is not affected by dex
// 2 - skill's cast time is not affected by statuses (Suffragium, etc)
// 4 - skill's cast time is not affected by item bonuses (equip, cards)
//
// Delay: 0 - everything affects the skill's delay
// 1 - skill's delay is not affected by dex
// 2 - skill's delay is not affected by Magic Strings / Bragi
// 4 - skill's delay is not affected by item bonuses (equip, cards)
//
// Note: Values are bit fields, add them up to combine their effects.
// Note: Delay setting '1' only makes sense when delay_dependon_dex is enabled.
// Example: 46,1,1 = Double Strafe's cast time and delay is not affected by dex.

View File

@ -0,0 +1,8 @@
// Change Material Database
//
// Structure of Database:
// ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
//
// NOTE:
// Up to 5 ID/Amount pairs can be specified.
// Rate = n/10%

View File

@ -0,0 +1,51 @@
// Copyable Skills Database
// List of skills able to be copied by Intimidate/Plagiarism and Reproduce.
//
// Sources:
// http://irowiki.org/wiki/Intimidate
// -> "Intimidate will copy any 2nd class skill"
// http://irowiki.org/wiki/Reproduce/List_of_reproducible_skills
// -> "Players can reproduce 1-x, 2-x, and 3-x skills and Expanded Class,
// but cannot reproduce transcendent skills"
//
// Structure of Database:
// SkillName,Option{,JobAllowed{,RequirementRemoved}}
//
// Option (bitmask) determines how a skill can be copied.
// 1 = Plagiarism
// 2 = Reproduce
//
// JobAllowed (bitmask) restricts copying the skill to certain classes.
// By default, all jobs can copy the skill (0).
// 1 = Rogue
// 2 = Stalker
// 4 = Shadow Chaser
// 8 = Trans. Shadow Chaser
// 16 = Baby Rouge
// 32 = Baby Shadow Chaser
//
// RequirementRemoved (bitmask) removes requirements when casting a copied skill.
// See 'skill_require_db.txt' for specific skill requirements.
// 0 = uses original requirement(s)
// 1 = hp
// 2 = maxhptrigger
// 4 = sp
// 8 = hprate
// 16 = sprate
// 32 = zeny
// 64 = weapon type
// 128 = ammo (with the amount)
// 256 = state
// 512 = statuses
// 1024 = spirit sphere
// 2048 = items (with the amount)
// 4096 = equipments
//
// Examples:
// AS_SONICBLOW,2,63,64
// Sonic Blow can be copied by all jobs with only Plagiarism.
// To use the copied skill, a Katar is not needed (a Sonic Blow weapon type requirement).
//
// CR_ACIDDEMONSTRATION,3,10
// Acid Demonstration can only be copied by Stalker/Trans. Shadow Chaser with Plagiarism or Reproduce.
// This mode simulates the previous battle config, which allowed only Trans. classes to copy Trans. skills.

View File

@ -0,0 +1,36 @@
// Skill Damage Adjustment Database
//
// Structure of Database:
// SkillName,Caster,Map,Damage against Players{,Damage against Mobs{,Damage against Bosses{,Damage against Other}}}
//
// Caster: The groups for which the adjustment takes effect. (bitmask)
// 1 = Player
// 2 = Monster
// 4 = Pet
// 8 = Homunculus
// 16 = Mercenary
// 32 = Elemental
//
// Map:
// 1 - Normal (the maps that aren't classified as these maps below)
// 2 - PVP
// 4 - GVG
// 8 - Battlegrounds
// 16 - 'skill_damage' mapflag
// Restricted zones - they're configured by 'restricted <number>' mapflag
// 32 - Zone 1
// 64 - Zone 2
// 128 - Zone 3
// 256 - Zone 4
// 512 - Zone 5
// 1024 - Zone 6
// 2048 - Zone 7
//
// Notes:
// Damage is a percentage between -100 and 100000.
// Negative values decrease damage and positive values increase it (0 = no change).
//
// Examples:
// MC_MAMMONITE,1,1,50 // In normal maps, players deal +50% damage to other players with Mammonite.
// MO_EXTREMITYFIST,1,6,-50 // In PVP and GVG, players deal -50% (half) damage to other players with Asura Strike.
// AB_ADORAMUS,1,6,50,0,10,15 // In PVP and GVG, players deal +50% damage to other players, +0% to mobs, +10% to bosses, and +15% to other with Adoramus.

View File

@ -0,0 +1,66 @@
//id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,inf3,name,description
// 01 ID
// 02 range (combo skills do not check for range when used,
// if range is < 5, the skill is considered melee-range)
// 03 hit (8- repeated hitting, 6- single-hit)
// 04 inf (0- passive, 1- enemy, 2- place, 4- self, 16- friend, 32- trap)
// 05 element (0 - neutral, 1 - water, 2 - earth, 3 - fire, 4 - wind, 5 - poison,
// 6 - holy, 7 - dark, 8 - ghost, 9 - undead, -1 - use weapon element
// -2 - use endowed element, -3 - use random element.)
// 06 nk (skill damage properties):
// 0x01 - No damage skill
// 0x02 - Has splash area
// 0x04 - Damage should be split among targets
// 0x08 - Skill ignores caster's % damage cards (misc type always ignores)
// 0x10 - Skill ignores elemental adjustments
// 0x20 - Skill ignores target's defense (misc type always ignores)
// 0x40 - Skill ignores target's flee (magic type always ignores)
// 0x80 - Skill ignores target's def cards
// 07 splash/effect range (-1 for screen-wide)
// 08 MaxLv
// 09 Number of hits (when positive, damage is increased by hits,
// negative values just show number of hits without increasing total damage)
// 10 Cast interrupted when hit?
// 11 defense-reduction rate during cast.
// 12 inf2 (skill information 2):
// 0x00001- quest skill
// 0x00002- npc skill
// 0x00004- wedding skill
// 0x00008- spirit skill
// 0x00010- guild skill
// 0x00020- song/dance
// 0x00040- ensemble skill
// 0x00080- trap
// 0x00100- skill that damages/targets yourself
// 0x00200- cannot be casted on self (if inf = 4, auto-select target skill)
// 0x00400- usable only on party-members (and enemies if skill is offensive)
// 0x00800- usable only on guild-mates (and enemies if skill is offensive)
// 0x01000- disable usage on enemies (for non-offensive skills).
// 0x02000- free
// 0x04000- chorus skill
// 0x08000- spell that ignore bg reduction
// 0x10000- spell that ignore gvg reduction
// 0x20000- makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
// 13 maxcount: max amount of skill instances to place on the ground when
// player_land_skill_limit/monster_land_skill_limit is enabled. For skills
// that attack using a path, this is the path length to be used.
// 14 attack type (none, weapon, magic, misc)
// 15 Blowcount (amount of tiles skill knockbacks)
// 16 inf3 (skill information 3):
// 0x0001- skill ignores land protector (e.g. arrow shower)
// 0x0002- spell that doesn't end camouflage
// 0x0004- usable skills while hiding
// 0x0008- spell that can be use while in dancing state
// 0x0010- spell that could hit emperium
// 0x0020- spell blocked by statis
// 0x0040- spell blocked by kagehumi
// 0x0080- spell range affected by AC_VULTURE
// 0x0100- spell range affected by GS_SNAKEEYE
// 0x0200- spell range affected by NJ_SHADOWJUMP
// 0x0400- spell range affected by WL_RADIUS
// 0x0800- spell range affected by RA_RESEARCHTRAP
// 0x1000- spell that can't be copied
// 0x2000- spell that can be using while riding warg
// 0x4000- spell that can't be used while in mado
// 17 Name
// 18 Description

View File

@ -0,0 +1,5 @@
// Improvise Database
// Database for skills that can be summoned trough Randomize Spell/Improvised Song (Minstrel/Wanderer Skill).
//
// Structure of Database:
// SkillID,Rate

View File

@ -0,0 +1,24 @@
// Forbidden Skills Database
// Defines unusable skills in map types and zones.
//
// Structure of Database:
// SkillID,Flag
//
// Legend for 'Flag' field (bitmask):
// 1 - cannot be used in normal maps
// 2 - cannot be used in PvP maps (use this instead of 1 for PK-mode servers)
// 4 - cannot be used in GvG maps
// 8 - cannot be used in Battleground maps
// 16 - cannot be cloned (clones will not copy this skill)
// Restricted zones - configured by 'restricted <number>' mapflag
// 32 - cannot be used in zone 1 maps
// 64 - cannot be used in zone 2 maps
// 128 - cannot be used in zone 3 maps
// 256 - cannot be used in zone 4 maps
// 512 - cannot be used in zone 5 maps
// 1024 - cannot be used in zone 6 maps
// 2048 - cannot be used in zone 7 maps
//
// Example:
// 8,6 // Endure cannot be used in PvP and GvG maps (2+4)

View File

@ -0,0 +1,28 @@
// Skill Distance-to-NPC Database
// Prevents skills from being used near NPC types using INF2_NO_NEARNPC.
//
// Structure of Database:
// SkillName,AdditionalRange{,NPC Type}
//
// AdditionalRange:
// Number of cells from an NPC where the skill can be cast.
// If zero, this will read the splash range value from skill_db;
// if that is also zero, range+layout's range from skill_unit_db will be used.
//
// NPC Type (bitmask):
// 1 = warp portal, 2 = shop NPC, 4 = normal NPC script, 8 = tomb
//
// Examples:
// MG_SAFETYWALL,2
// Safety Wall can't be placed within 2 ground cells of an NPC.
// (MG_SAFETYWALL doesn't have splash, layout range, and range value,
// so we must add the 'additional_range', or it will be pointless.)
//
// GS_DESPERADO,2
// Desperado can't be casted if the caster is standing within 5 cells of an NPC.
// (Why? GS_DESPERADO has 3 cells of splash range +2 'additional_range' here.)
//
// SC_CHAOSPANIC,0,1
// Chaos Panic can't be placed within 2 ground cells of a warp portal.
// (Because SC_CHAOSPANIC doesn't have splash range, it uses layout range.)

View File

@ -0,0 +1,33 @@
// Skill Requirements Database
//
// Structure of Database:
// SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuses,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10,RequiredEquipment
//
// If HP/SPratecost is positive, it is a percent of your current life, otherwise it is a percent of your max life.
//
// Legend for 'RequiredState' field:
// none = Nothing special
// hidden = Requires on hidden status by using Hiding, Cloaking, or maybe Chasewalk
// riding = Requires to ride either a peco or a dragon
// falcon = Requires a Falcon
// cart = Requires a Pushcart (for renewal can replace this state by SC_PUSH_CART in 'RequiredStatuses' field)
// shield = Requires a 0,shield equipped
// recover_weight_rate = Requires to be less than 50% weight
// move_enable = Requires to be able to move
// water = Requires to be standing on a water cell
// dragon = Requires to ride a Dragon
// warg = Requires a Warg
// ridingwarg = Requires to ride a Warg
// mado = Requires to have an active mado
// elementalspirit = Requires to have an Elemental Spirit summoned.
// peco = Requires riding a peco
//
// 'RequiredStatuses'
// Fill the value only with SC_STATUS (see db/const.txt for more details)
// Usage for multiple status requirements: SC_STATUS1:SC_STATUS2:SC_STATUS3
// Max. multiple value is 3 (skill.h: MAX_SKILL_STATUS_REQUIRE)
// Use any number or SC_ALL will disable status requirements
// 'RequiredEquipment'
// Specified equipment to be equipped. For multiple values, use : as delimiter.
// Max. multiple value is 10 (skill.h: MAX_SKILL_EQUIP_REQUIRE)

View File

@ -0,0 +1 @@
//JobNo,Skill-ID,MaxLV{,JobLV},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#

View File

@ -0,0 +1,29 @@
// Skill Unit Database
//
// Structure of Database:
// ID,unit ID,unit ID 2,layout,range,interval,target,flag
//
// layout = -1:special, 0:1*1, 1:3*3, 2:5*5, up to 5:11*11
// target = friend (party +guildmates +neutral players) / party / guild
// ally (party +guildmates) / all / enemy
// flag 0x0001(UF_DEFNOTENEMY) If 'defunit_not_enemy' is set, the target is changed to 'friend'
// 0x0002(UF_NOREITERRATION) Spell cannot be stacked
// 0x0004(UF_NOFOOTSET) Spell cannot be cast near/on targets
// 0x0008(UF_NOOVERLAP) Spell effects do not overlap
// 0x0010(UF_PATHCHECK) Only cells with a shootable path will be placed
// 0x0020(UF_NOPC) Spell cannot affect players.
// 0x0040(UF_NOMOB) Spell cannot affect mobs.
// 0x0080(UF_SKILL) Spell CAN affect skills.
// 0x0100(UF_DANCE) Dance skill
// 0x0200(UF_ENSEMBLE) Ensemble skill
// 0x0400(UF_SONG) Song skill
// 0x0800(UF_DUALMODE) Spell has effects both at an interval and when you step in/out
// 0x2000(UF_RANGEDSINGLEUNIT) Layout hack, use layout range propriety but only display center.
// Example: 0x006 = 0x002+0x004 -> Cannot be stacked nor cast near targets
//
// Notes:
// 0x89,0x8a,0x8b without indication
//
// u1 u2 lay r intr target flag
//

View File

@ -0,0 +1,7 @@
// Reading Spellbook Preserve Points Database
//
// Structure of Database:
// SkillID,PreservePoints,Required Book
//
// NOTE: To add more entries, increase MAX_SKILL_SPELLBOOK_DB in skill.h.

View File

@ -0,0 +1 @@
//statpoint per lvl

View File

@ -0,0 +1,5 @@
// Item Combos Database
//
// Structure of Database:
// ID:ID:ID:ID,{ Script }

View File

@ -0,0 +1,5 @@
// Bloody Branch Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,5 @@
// Dead Branch Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,5 @@
// Class Change Summonable Monsters Database
// List of monsters generated through Abracadabra's SA_CLASSCHANGE ability.
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,5 @@
// Poring Box Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -0,0 +1,4 @@
// Red Pouch of Surprise Summonable Monsters Database
//
// Structure of Database:
// MobID,DummyName,Rate

View File

@ -33,7 +33,7 @@
// Main packet version of the DB to use (default = max available version)
// Client detection is faster when all clients use this version.
// Version 23 is the latest Sakexe (above versions are for Renewal clients)
//packet_db_ver: 25
//packet_db_ver: 45
packet_db_ver: default
packet_ver: 5

View File

@ -720,12 +720,16 @@ int inter_guild_CharOffline(int char_id, int guild_id)
// Initialize guild sql
int inter_guild_sql_init(void)
{
const char *filename[]={ DBPATH"exp_guild.txt","import/exp_guild.txt"};
int i;
//Initialize the guild cache
guild_db_= idb_alloc(DB_OPT_RELEASE_DATA);
castle_db = idb_alloc(DB_OPT_RELEASE_DATA);
//Read exp file
sv_readdb("db", DBPATH"exp_guild.txt", ',', 1, 1, 100, exp_guild_parse_row, 0);
for(i = 0; i<ARRAYLENGTH(filename); i++){
sv_readdb(db_path, filename[i], ',', 1, 1, 100, exp_guild_parse_row, i);
}
add_timer_func_list(guild_save_timer, "guild_save_timer");
add_timer(gettick() + 10000, guild_save_timer, 0, 0);

View File

@ -2181,6 +2181,12 @@ void guild_flags_clear(void) {
}
void do_init_guild(void) {
const char* dbsubpath[] = {
"",
"import/",
};
int i;
guild_db = idb_alloc(DB_OPT_RELEASE_DATA);
castle_db = idb_alloc(DB_OPT_BASE);
guild_expcache_db = idb_alloc(DB_OPT_BASE);
@ -2189,11 +2195,19 @@ void do_init_guild(void) {
guild_flags_count = 0;
sv_readdb(db_path, "castle_db.txt", ',', 4, 5, -1, &guild_read_castledb, 0);
memset(guild_skill_tree,0,sizeof(guild_skill_tree));
sv_readdb(db_path, "guild_skill_tree.txt", ',', 2+MAX_GUILD_SKILL_REQUIRE*2, 2+MAX_GUILD_SKILL_REQUIRE*2, -1, &guild_read_guildskill_tree_db, 0); //guild skill tree [Komurka]
for(i=0; i<ARRAYLENGTH(dbsubpath); i++){
int n1 = strlen(db_path)+strlen(dbsubpath[i])+1;
char* dbsubpath1 = aMalloc(n1+1);
safesnprintf(dbsubpath1,n1+1,"%s/%s",db_path,dbsubpath[i]);
sv_readdb(dbsubpath1, "castle_db.txt", ',', 4, 5, -1, &guild_read_castledb, i);
sv_readdb(dbsubpath1, "guild_skill_tree.txt", ',', 2+MAX_GUILD_SKILL_REQUIRE*2, 2+MAX_GUILD_SKILL_REQUIRE*2, -1, &guild_read_guildskill_tree_db, i); //guild skill tree [Komurka]
aFree(dbsubpath1);
}
add_timer_func_list(guild_payexp_timer,"guild_payexp_timer");
add_timer_func_list(guild_send_xy_timer, "guild_send_xy_timer");
add_timer_interval(gettick()+GUILD_PAYEXP_INVERVAL,guild_payexp_timer,0,0,GUILD_PAYEXP_INVERVAL);

View File

@ -1219,26 +1219,11 @@ static bool read_homunculusdb_sub(char* str[], int columns, int current)
int read_homunculusdb(void)
{
int i;
const char *filename[]={DBPATH"homunculus_db.txt","homunculus_db2.txt"};
const char *filename[]={DBPATH"homunculus_db.txt","import/homunculus_db.txt"};
memset(homunculus_db,0,sizeof(homunculus_db));
for(i = 0; i<ARRAYLENGTH(filename); i++)
{
if( i > 0 )
{
char path[256];
sprintf(path, "%s/%s", db_path, filename[i]);
if( !exists(path) )
{
continue;
}
}
sv_readdb(db_path, filename[i], ',', 50, 50, MAX_HOMUNCULUS_CLASS, &read_homunculusdb_sub, 0);
for(i = 0; i<ARRAYLENGTH(filename); i++){
sv_readdb(db_path, filename[i], ',', 50, 50, MAX_HOMUNCULUS_CLASS, &read_homunculusdb_sub, i);
}
return 0;
}
@ -1286,9 +1271,12 @@ static bool read_homunculus_skilldb_sub(char* split[], int columns, int current)
int read_homunculus_skilldb(void)
{
const char *filename[]={ "homun_skill_tree.txt","import/homun_skill_tree.txt"};
int i;
memset(hskill_tree,0,sizeof(hskill_tree));
sv_readdb(db_path, "homun_skill_tree.txt", ',', 13, 15, -1, &read_homunculus_skilldb_sub, 0);
for(i = 0; i<ARRAYLENGTH(filename); i++){
sv_readdb(db_path, filename[i], ',', 13, 15, -1, &read_homunculus_skilldb_sub, i);
}
return 0;
}
@ -1299,16 +1287,17 @@ void read_homunculus_expdb(void)
int i, j=0;
char *filename[]={
DBPATH"exp_homun.txt",
"exp_homun2.txt"};
"import/exp_homun.txt"
};
memset(hexptbl,0,sizeof(hexptbl));
for(i=0; i<2; i++){
for(i=0; i<ARRAYLENGTH(filename); i++){
sprintf(line, "%s/%s", db_path, filename[i]);
fp=fopen(line,"r");
if(fp == NULL){
if(i != 0)
continue;
ShowError("can't read %s\n",line);
if(i==0) ShowError("can't read %s\n",line);
return;
}
while(fgets(line, sizeof(line), fp) && j < MAX_LEVEL)
@ -1322,7 +1311,7 @@ void read_homunculus_expdb(void)
}
if (hexptbl[MAX_LEVEL - 1]) // Last permitted level have to be 0!
{
ShowWarning("read_hexptbl: Reached max level in exp_homun [%d]. Remaining lines were not read.\n ", MAX_LEVEL);
ShowWarning("read_hexptbl: Reached max level in %s [%d]. Remaining lines were not read.\n ",filename,MAX_LEVEL);
hexptbl[MAX_LEVEL - 1] = 0;
}
fclose(fp);

View File

@ -646,14 +646,14 @@ static bool itemdb_read_itemavail(char* str[], int columns, int current)
* read item group data
* GroupID,ItemID,Rate{,Amount,isMust,isAnnounced,Duration,isNamed,isBound}
*------------------------------------------*/
static void itemdb_read_itemgroup_sub(const char* filename)
static void itemdb_read_itemgroup_sub(const char* filename, bool silent)
{
FILE *fp;
int ln=0, entries=0;
char line[1024];
if ((fp=fopen(filename,"r")) == NULL) {
ShowError("can't read %s\n", filename);
if(silent == 0) ShowError("can't read %s\n", filename);
return;
}
@ -670,7 +670,7 @@ static void itemdb_read_itemgroup_sub(const char* filename)
if (sscanf(line,"%[^:]: %[^\r\n]",w1,w2) == 2 &&
strcmpi(w1,"import") == 0)
{
itemdb_read_itemgroup_sub(w2);
itemdb_read_itemgroup_sub(w2, 0);
continue;
}
}
@ -765,12 +765,12 @@ static void itemdb_read_itemgroup_sub(const char* filename)
return;
}
static void itemdb_read_itemgroup(void)
static void itemdb_read_itemgroup(const char* basedir, bool silent)
{
char path[256];
snprintf(path, 255, "%s/"DBPATH"item_group_db.txt", db_path);
char filepath[256];
sprintf(filepath, "%s/%s", basedir, "item_group_db.txt");
memset(&itemgroup_db, 0, sizeof(itemgroup_db));
itemdb_read_itemgroup_sub(path);
itemdb_read_itemgroup_sub(filepath, silent);
return;
}
@ -1538,7 +1538,7 @@ static void itemdb_read(void) {
itemdb_readdb();
itemdb_read_itemgroup();
for(i=0; i<ARRAYLENGTH(dbsubpath); i++){
int n1 = strlen(db_path)+strlen(dbsubpath[i])+1;
@ -1550,8 +1550,8 @@ static void itemdb_read(void) {
sv_readdb(dbsubpath2, "item_stack.txt", ',', 3, 3, -1, &itemdb_read_stack, i);
sv_readdb(dbsubpath2, "item_nouse.txt", ',', 3, 3, -1, &itemdb_read_nouse, i);
if(i==0)
safesnprintf(dbsubpath2,n2,"%s/%s%s",db_path,DBPATH,dbsubpath[i]);
if(i==0) safesnprintf(dbsubpath2,n2,"%s/%s%s",db_path,DBPATH,dbsubpath[i]);
itemdb_read_itemgroup(dbsubpath2, i);
itemdb_read_combos(dbsubpath2,i); //TODO change this to sv_read ? id#script ?
sv_readdb(dbsubpath2, "item_noequip.txt", ',', 2, 2, -1, &itemdb_read_noequip, i);
sv_readdb(dbsubpath2, "item_trade.txt", ',', 3, 3, -1, &itemdb_read_itemtrade, i);

View File

@ -462,8 +462,12 @@ static bool read_mercenarydb_sub(char* str[], int columns, int current)
int read_mercenarydb(void)
{
const char *filename[]={ "mercenary_db.txt","import/mercenary_db.txt"};
int i;
memset(mercenary_db,0,sizeof(mercenary_db));
sv_readdb(db_path, "mercenary_db.txt", ',', 26, 26, MAX_MERCENARY_CLASS, &read_mercenarydb_sub, 0);
for(i = 0; i<ARRAYLENGTH(filename); i++){
sv_readdb(db_path, filename[i], ',', 26, 26, MAX_MERCENARY_CLASS, &read_mercenarydb_sub, i);
}
return 0;
}
@ -501,7 +505,11 @@ static bool read_mercenary_skilldb_sub(char* str[], int columns, int current)
int read_mercenary_skilldb(void)
{
sv_readdb(db_path, "mercenary_skill_db.txt", ',', 3, 3, -1, &read_mercenary_skilldb_sub, 0);
const char *filename[]={ "mercenary_skill_db.txt","import/mercenary_skill_db.txt"};
int i;
for(i = 0; i<ARRAYLENGTH(filename); i++){
sv_readdb(db_path, filename[i], ',', 3, 3, -1, &read_mercenary_skilldb_sub, i);
}
return 0;
}

View File

@ -4052,7 +4052,7 @@ static int mob_read_randommonster(void)
sprintf(line, "%s/%s", db_path, mobfile[i]);
fp=fopen(line,"r");
if(fp==NULL){
if(i>=ARRAYLENGTH(mobfile)/2-1) ShowError("mob_read_randommonster: can't read %s\n",line);
if(i<=ARRAYLENGTH(mobfile)/2-1) ShowError("mob_read_randommonster: can't read %s\n",line);
return -1;
}
while(fgets(line, sizeof(line), fp))

View File

@ -10146,7 +10146,7 @@ int pc_read_statsdb(const char *basedir, bool silent){
entries++;
}
fclose(fp);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entries, DBPATH"statpoint.txt");
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s%s"CL_RESET"'.\n", entries, basedir,"statpoint.txt");
}
return i;
}

View File

@ -1213,7 +1213,7 @@ int pet_skill_support_timer(int tid, unsigned int tick, int id, intptr_t data)
*------------------------------------------*/
int read_petdb()
{
char* filename[] = {"pet_db.txt","pet_db2.txt"};
char* filename[] = {"pet_db.txt","import/pet_db.txt"};
FILE *fp;
int nameid,i,j,k;
@ -1243,10 +1243,8 @@ int read_petdb()
sprintf(line, "%s/%s", db_path, filename[i]);
fp=fopen(line,"r");
if( fp == NULL )
{
if( i == 0 )
ShowError("can't read %s\n",line);
if( fp == NULL ) {
if( i == 0 ) ShowError("can't read %s\n",line);
continue;
}

View File

@ -288,63 +288,70 @@ int quest_check(TBL_PC * sd, int quest_id, quest_check_type type) {
}
int quest_read_db(void) {
FILE *fp;
char line[1024];
int i,j,k = 0;
char *str[20],*p,*np;
const char* dbsubpath[] = {
"",
"import/",
};
int f;
sprintf(line, "%s/quest_db.txt", db_path);
if( (fp=fopen(line,"r"))==NULL ){
ShowError("can't read %s\n", line);
return -1;
}
for(f=0; f<ARRAYLENGTH(dbsubpath); f++){
FILE *fp;
char line[1024];
int i,j,k = 0;
char *str[20],*p,*np;
char filename[256];
while(fgets(line, sizeof(line), fp)) {
if (k == MAX_QUEST_DB) {
ShowError("quest_read_db: Too many entries specified in %s/quest_db.txt!\n", db_path);
break;
sprintf(filename, "%s/%s%s", db_path,dbsubpath[f],"quest_db.txt");
if( (fp=fopen(filename,"r"))==NULL ){
if(f==0) ShowError("can't read %s\n", filename);
return -1;
}
if(line[0]=='/' && line[1]=='/')
continue;
memset(str,0,sizeof(str));
for( j = 0, p = line; j < 8; j++ ) {
if( ( np = strchr(p,',') ) != NULL ) {
str[j] = p;
*np = 0;
p = np + 1;
}
else if (str[0] == NULL)
continue;
else {
ShowError("quest_read_db: insufficient columns in line %s\n", line);
continue;
}
}
if(str[0]==NULL)
continue;
memset(&quest_db[k], 0, sizeof(quest_db[0]));
quest_db[k].id = atoi(str[0]);
quest_db[k].time = atoi(str[1]);
for( i = 0; i < MAX_QUEST_OBJECTIVES; i++ ) {
quest_db[k].mob[i] = atoi(str[2*i+2]);
quest_db[k].count[i] = atoi(str[2*i+3]);
if( !quest_db[k].mob[i] || !quest_db[k].count[i] )
while(fgets(line, sizeof(line), fp)) {
if (k == MAX_QUEST_DB) {
ShowError("quest_read_db: Too many entries specified in %s/quest_db.txt!\n", db_path);
break;
}
quest_db[k].num_objectives = i;
}
if(line[0]=='/' && line[1]=='/')
continue;
memset(str,0,sizeof(str));
k++;
for( j = 0, p = line; j < 8; j++ ) {
if( ( np = strchr(p,',') ) != NULL ) {
str[j] = p;
*np = 0;
p = np + 1;
}
else if (str[0] == NULL)
continue;
else {
ShowError("quest_read_db: insufficient columns in line %s\n", line);
continue;
}
}
if(str[0]==NULL)
continue;
memset(&quest_db[k], 0, sizeof(quest_db[0]));
quest_db[k].id = atoi(str[0]);
quest_db[k].time = atoi(str[1]);
for( i = 0; i < MAX_QUEST_OBJECTIVES; i++ ) {
quest_db[k].mob[i] = atoi(str[2*i+2]);
quest_db[k].count[i] = atoi(str[2*i+3]);
if( !quest_db[k].mob[i] || !quest_db[k].count[i] )
break;
}
quest_db[k].num_objectives = i;
k++;
}
fclose(fp);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", k, filename);
}
fclose(fp);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", k, "quest_db.txt");
return 0;
}