diff --git a/.gitignore b/.gitignore index 145a4df399..7547a111eb 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,9 @@ /3rdparty/mt19937ar/Makefile /3rdparty/mt19937ar/*.o +# /db/ +/db/import + # /conf/ /conf/import /conf/msg_conf/import diff --git a/Makefile.in b/Makefile.in index 57918824ce..7cb5236dde 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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" diff --git a/db/import-tmpl/abra_db.txt b/db/import-tmpl/abra_db.txt new file mode 100644 index 0000000000..f2c24e2bbc --- /dev/null +++ b/db/import-tmpl/abra_db.txt @@ -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. diff --git a/db/import-tmpl/attr_fix.txt b/db/import-tmpl/attr_fix.txt new file mode 100644 index 0000000000..fb7e5dd01d --- /dev/null +++ b/db/import-tmpl/attr_fix.txt @@ -0,0 +1,6 @@ +// Elemental Attribute Damage Adjustment Tables +// +// Structure of Database: +// Columns - attacker's weapon element +// Rows - target's defense element + diff --git a/db/import-tmpl/castle_db.txt b/db/import-tmpl/castle_db.txt new file mode 100644 index 0000000000..5eb55e84a7 --- /dev/null +++ b/db/import-tmpl/castle_db.txt @@ -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). diff --git a/db/import-tmpl/create_arrow_db.txt b/db/import-tmpl/create_arrow_db.txt new file mode 100644 index 0000000000..a2dfa2ca53 --- /dev/null +++ b/db/import-tmpl/create_arrow_db.txt @@ -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. + diff --git a/db/import-tmpl/elemental_db.txt b/db/import-tmpl/elemental_db.txt new file mode 100644 index 0000000000..a835ecde3d --- /dev/null +++ b/db/import-tmpl/elemental_db.txt @@ -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 Elemental’s STATs are affected by the Caster’s 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. + diff --git a/db/import-tmpl/elemental_skill_db.txt b/db/import-tmpl/elemental_skill_db.txt new file mode 100644 index 0000000000..c2235af140 --- /dev/null +++ b/db/import-tmpl/elemental_skill_db.txt @@ -0,0 +1,7 @@ +// Elemental Summons Skill Database +// +// Structure of Database: +// ElementalID,SkillID,SkillLevel,ReqMode +// +// Spirit Modes: +// 1 = Passive, 2 = Defensive, 4 = Aggressive diff --git a/db/import-tmpl/exp_guild.txt b/db/import-tmpl/exp_guild.txt new file mode 100644 index 0000000000..f9a1a23e88 --- /dev/null +++ b/db/import-tmpl/exp_guild.txt @@ -0,0 +1,2 @@ +// Guild Experience Tables + diff --git a/db/import-tmpl/exp_homun.txt b/db/import-tmpl/exp_homun.txt new file mode 100644 index 0000000000..2da0c7a7cc --- /dev/null +++ b/db/import-tmpl/exp_homun.txt @@ -0,0 +1 @@ +// Homunculus Experience Tables diff --git a/db/import-tmpl/guild_skill_tree.txt b/db/import-tmpl/guild_skill_tree.txt new file mode 100644 index 0000000000..6d2c48c216 --- /dev/null +++ b/db/import-tmpl/guild_skill_tree.txt @@ -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. + diff --git a/db/import-tmpl/homun_skill_tree.txt b/db/import-tmpl/homun_skill_tree.txt new file mode 100644 index 0000000000..3966e03d3f --- /dev/null +++ b/db/import-tmpl/homun_skill_tree.txt @@ -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. diff --git a/db/import-tmpl/homunculus_db.txt b/db/import-tmpl/homunculus_db.txt new file mode 100644 index 0000000000..66cff6cc0b --- /dev/null +++ b/db/import-tmpl/homunculus_db.txt @@ -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) + diff --git a/db/import-tmpl/instance_db.txt b/db/import-tmpl/instance_db.txt new file mode 100644 index 0000000000..cd085a2c4c --- /dev/null +++ b/db/import-tmpl/instance_db.txt @@ -0,0 +1,5 @@ +// Instance Database +// +// Structure of Database: +// ID,Name,LimitTime,EnterMap,EnterX,EnterY,Map1,Map2,Map3,Map4,Map5,Map6,Map7,Map8 + diff --git a/db/import-tmpl/item_avail.txt b/db/import-tmpl/item_avail.txt new file mode 100644 index 0000000000..22c4be29e1 --- /dev/null +++ b/db/import-tmpl/item_avail.txt @@ -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. diff --git a/db/import-tmpl/item_buyingstore.txt b/db/import-tmpl/item_buyingstore.txt new file mode 100644 index 0000000000..939785c557 --- /dev/null +++ b/db/import-tmpl/item_buyingstore.txt @@ -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. + diff --git a/db/import-tmpl/item_cash_db.txt b/db/import-tmpl/item_cash_db.txt new file mode 100644 index 0000000000..f6a62d9b82 --- /dev/null +++ b/db/import-tmpl/item_cash_db.txt @@ -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). diff --git a/db/import-tmpl/item_combo_db.txt b/db/import-tmpl/item_combo_db.txt new file mode 100644 index 0000000000..2f4fa6aca1 --- /dev/null +++ b/db/import-tmpl/item_combo_db.txt @@ -0,0 +1,5 @@ +// Item Combos Database +// +// Structure of Database: +// ID:ID:ID:ID,{ Script } + diff --git a/db/import-tmpl/item_db.txt b/db/import-tmpl/item_db.txt new file mode 100644 index 0000000000..7dd38edcf4 --- /dev/null +++ b/db/import-tmpl/item_db.txt @@ -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; } diff --git a/db/import-tmpl/item_delay.txt b/db/import-tmpl/item_delay.txt new file mode 100644 index 0000000000..26aaec19c6 --- /dev/null +++ b/db/import-tmpl/item_delay.txt @@ -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. + diff --git a/db/import-tmpl/item_group_db.txt b/db/import-tmpl/item_group_db.txt new file mode 100644 index 0000000000..8d9e285b40 --- /dev/null +++ b/db/import-tmpl/item_group_db.txt @@ -0,0 +1,2 @@ +//import: db/import/item_groupid.txt + diff --git a/db/import-tmpl/item_noequip.txt b/db/import-tmpl/item_noequip.txt new file mode 100644 index 0000000000..6d426aa5c5 --- /dev/null +++ b/db/import-tmpl/item_noequip.txt @@ -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 ' 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) + diff --git a/db/import-tmpl/item_nouse.txt b/db/import-tmpl/item_nouse.txt new file mode 100644 index 0000000000..ba9efec012 --- /dev/null +++ b/db/import-tmpl/item_nouse.txt @@ -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 diff --git a/db/import-tmpl/item_stack.txt b/db/import-tmpl/item_stack.txt new file mode 100644 index 0000000000..37fbcd8c97 --- /dev/null +++ b/db/import-tmpl/item_stack.txt @@ -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. diff --git a/db/import-tmpl/item_trade.txt b/db/import-tmpl/item_trade.txt new file mode 100644 index 0000000000..172d79b193 --- /dev/null +++ b/db/import-tmpl/item_trade.txt @@ -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. + diff --git a/db/import-tmpl/job_basehpsp_db.txt b/db/import-tmpl/job_basehpsp_db.txt new file mode 100644 index 0000000000..64755502bc --- /dev/null +++ b/db/import-tmpl/job_basehpsp_db.txt @@ -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 +//=============================== + diff --git a/db/import-tmpl/job_db1.txt b/db/import-tmpl/job_db1.txt new file mode 100644 index 0000000000..3a65bf7e7f --- /dev/null +++ b/db/import-tmpl/job_db1.txt @@ -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 +// diff --git a/db/import-tmpl/job_db2.txt b/db/import-tmpl/job_db2.txt new file mode 100644 index 0000000000..624b4c5286 --- /dev/null +++ b/db/import-tmpl/job_db2.txt @@ -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 + diff --git a/db/import-tmpl/job_exp.txt b/db/import-tmpl/job_exp.txt new file mode 100644 index 0000000000..31f78710c6 --- /dev/null +++ b/db/import-tmpl/job_exp.txt @@ -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 + diff --git a/db/import-tmpl/job_param_db.txt b/db/import-tmpl/job_param_db.txt new file mode 100644 index 0000000000..b0e56d7b86 --- /dev/null +++ b/db/import-tmpl/job_param_db.txt @@ -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). diff --git a/db/import-tmpl/level_penalty.txt b/db/import-tmpl/level_penalty.txt new file mode 100644 index 0000000000..343a732f55 --- /dev/null +++ b/db/import-tmpl/level_penalty.txt @@ -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 diff --git a/db/import-tmpl/magicmushroom_db.txt b/db/import-tmpl/magicmushroom_db.txt new file mode 100644 index 0000000000..687a597362 --- /dev/null +++ b/db/import-tmpl/magicmushroom_db.txt @@ -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 diff --git a/db/import-tmpl/map_index.txt b/db/import-tmpl/map_index.txt new file mode 100644 index 0000000000..84a7d835e2 --- /dev/null +++ b/db/import-tmpl/map_index.txt @@ -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: +//mapnameindex <- 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 diff --git a/db/import-tmpl/mercenary_db.txt b/db/import-tmpl/mercenary_db.txt new file mode 100644 index 0000000000..88d543e364 --- /dev/null +++ b/db/import-tmpl/mercenary_db.txt @@ -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 + diff --git a/db/import-tmpl/mercenary_skill_db.txt b/db/import-tmpl/mercenary_skill_db.txt new file mode 100644 index 0000000000..ad925f0dbe --- /dev/null +++ b/db/import-tmpl/mercenary_skill_db.txt @@ -0,0 +1,4 @@ +// Mercenary Skill Database +// +// Structure of Database: +// MercenryID,SkillID,SkillLevel diff --git a/db/import-tmpl/mob_avail.txt b/db/import-tmpl/mob_avail.txt new file mode 100644 index 0000000000..414d7a3518 --- /dev/null +++ b/db/import-tmpl/mob_avail.txt @@ -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. + diff --git a/db/import-tmpl/mob_boss.txt b/db/import-tmpl/mob_boss.txt new file mode 100644 index 0000000000..84ae8ced7f --- /dev/null +++ b/db/import-tmpl/mob_boss.txt @@ -0,0 +1,5 @@ +// Bloody Branch Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import-tmpl/mob_branch.txt b/db/import-tmpl/mob_branch.txt new file mode 100644 index 0000000000..9d7256db3e --- /dev/null +++ b/db/import-tmpl/mob_branch.txt @@ -0,0 +1,5 @@ +// Dead Branch Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import-tmpl/mob_chat_db.txt b/db/import-tmpl/mob_chat_db.txt new file mode 100644 index 0000000000..403aa28ba0 --- /dev/null +++ b/db/import-tmpl/mob_chat_db.txt @@ -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 !! + diff --git a/db/import-tmpl/mob_classchange.txt b/db/import-tmpl/mob_classchange.txt new file mode 100644 index 0000000000..d44d527f3a --- /dev/null +++ b/db/import-tmpl/mob_classchange.txt @@ -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 diff --git a/db/import-tmpl/mob_db.txt b/db/import-tmpl/mob_db.txt new file mode 100644 index 0000000000..3ab8fb9cfc --- /dev/null +++ b/db/import-tmpl/mob_db.txt @@ -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 diff --git a/db/import-tmpl/mob_item_ratio.txt b/db/import-tmpl/mob_item_ratio.txt new file mode 100644 index 0000000000..226460a86a --- /dev/null +++ b/db/import-tmpl/mob_item_ratio.txt @@ -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. diff --git a/db/import-tmpl/mob_poring.txt b/db/import-tmpl/mob_poring.txt new file mode 100644 index 0000000000..47b8926448 --- /dev/null +++ b/db/import-tmpl/mob_poring.txt @@ -0,0 +1,5 @@ +// Poring Box Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import-tmpl/mob_pouch.txt b/db/import-tmpl/mob_pouch.txt new file mode 100644 index 0000000000..6361e52bb6 --- /dev/null +++ b/db/import-tmpl/mob_pouch.txt @@ -0,0 +1,4 @@ +// Red Pouch of Surprise Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate diff --git a/db/import-tmpl/mob_race2_db.txt b/db/import-tmpl/mob_race2_db.txt new file mode 100644 index 0000000000..820674545a --- /dev/null +++ b/db/import-tmpl/mob_race2_db.txt @@ -0,0 +1,6 @@ +// Monster Racial Groups Database +// +// Structure of Database: +// Race2ID,MobID1,MobID2,MobID3,...,MobID9 + + diff --git a/db/import-tmpl/mob_skill_db.txt b/db/import-tmpl/mob_skill_db.txt new file mode 100644 index 0000000000..708d7099a8 --- /dev/null +++ b/db/import-tmpl/mob_skill_db.txt @@ -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 diff --git a/db/import-tmpl/packet_db.txt b/db/import-tmpl/packet_db.txt new file mode 100644 index 0000000000..de90db50e0 --- /dev/null +++ b/db/import-tmpl/packet_db.txt @@ -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) diff --git a/db/import-tmpl/pet_db.txt b/db/import-tmpl/pet_db.txt new file mode 100644 index 0000000000..cf39171e8c --- /dev/null +++ b/db/import-tmpl/pet_db.txt @@ -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. + diff --git a/db/import-tmpl/produce_db.txt b/db/import-tmpl/produce_db.txt new file mode 100644 index 0000000000..d3f591485c --- /dev/null +++ b/db/import-tmpl/produce_db.txt @@ -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). + diff --git a/db/import-tmpl/quest_db.txt b/db/import-tmpl/quest_db.txt new file mode 100644 index 0000000000..e67b40feb4 --- /dev/null +++ b/db/import-tmpl/quest_db.txt @@ -0,0 +1,5 @@ +// Quest Database +// +// Structure of Database: +// Quest ID,Time Limit,Target1,Val1,Target2,Val2,Target3,Val3,Quest Title + diff --git a/db/import-tmpl/refine_db.txt b/db/import-tmpl/refine_db.txt new file mode 100644 index 0000000000..fcc13be56b --- /dev/null +++ b/db/import-tmpl/refine_db.txt @@ -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) + diff --git a/db/import-tmpl/size_fix.txt b/db/import-tmpl/size_fix.txt new file mode 100644 index 0000000000..2532744590 --- /dev/null +++ b/db/import-tmpl/size_fix.txt @@ -0,0 +1,7 @@ +// Size Fix Tables +// Contains size fixes for weapon damage. +// +// Struture of Database: +// Columns - Weapon type +// Rows - Target size + diff --git a/db/import-tmpl/skill_cast_db.txt b/db/import-tmpl/skill_cast_db.txt new file mode 100644 index 0000000000..c80e8bfd77 --- /dev/null +++ b/db/import-tmpl/skill_cast_db.txt @@ -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. diff --git a/db/import-tmpl/skill_castnodex_db.txt b/db/import-tmpl/skill_castnodex_db.txt new file mode 100644 index 0000000000..2156842593 --- /dev/null +++ b/db/import-tmpl/skill_castnodex_db.txt @@ -0,0 +1,16 @@ +// ,, +// +// 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. + diff --git a/db/import-tmpl/skill_changematerial_db.txt b/db/import-tmpl/skill_changematerial_db.txt new file mode 100644 index 0000000000..37a8b7c089 --- /dev/null +++ b/db/import-tmpl/skill_changematerial_db.txt @@ -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% diff --git a/db/import-tmpl/skill_copyable_db.txt b/db/import-tmpl/skill_copyable_db.txt new file mode 100644 index 0000000000..6988430a9a --- /dev/null +++ b/db/import-tmpl/skill_copyable_db.txt @@ -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. diff --git a/db/import-tmpl/skill_damage_db.txt b/db/import-tmpl/skill_damage_db.txt new file mode 100644 index 0000000000..db229ba23f --- /dev/null +++ b/db/import-tmpl/skill_damage_db.txt @@ -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 ' 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. diff --git a/db/import-tmpl/skill_db.txt b/db/import-tmpl/skill_db.txt new file mode 100644 index 0000000000..1c4aa636e4 --- /dev/null +++ b/db/import-tmpl/skill_db.txt @@ -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 diff --git a/db/import-tmpl/skill_improvise_db.txt b/db/import-tmpl/skill_improvise_db.txt new file mode 100644 index 0000000000..0dfab6d45a --- /dev/null +++ b/db/import-tmpl/skill_improvise_db.txt @@ -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 diff --git a/db/import-tmpl/skill_nocast_db.txt b/db/import-tmpl/skill_nocast_db.txt new file mode 100644 index 0000000000..5f81ea4ec2 --- /dev/null +++ b/db/import-tmpl/skill_nocast_db.txt @@ -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 ' 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) + diff --git a/db/import-tmpl/skill_nonearnpc_db.txt b/db/import-tmpl/skill_nonearnpc_db.txt new file mode 100644 index 0000000000..1b86ee17dd --- /dev/null +++ b/db/import-tmpl/skill_nonearnpc_db.txt @@ -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.) + diff --git a/db/import-tmpl/skill_require_db.txt b/db/import-tmpl/skill_require_db.txt new file mode 100644 index 0000000000..702f1d3edf --- /dev/null +++ b/db/import-tmpl/skill_require_db.txt @@ -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) + diff --git a/db/import-tmpl/skill_tree.txt b/db/import-tmpl/skill_tree.txt new file mode 100644 index 0000000000..8be9e20eac --- /dev/null +++ b/db/import-tmpl/skill_tree.txt @@ -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# diff --git a/db/import-tmpl/skill_unit_db.txt b/db/import-tmpl/skill_unit_db.txt new file mode 100644 index 0000000000..6918ec767a --- /dev/null +++ b/db/import-tmpl/skill_unit_db.txt @@ -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 +// + diff --git a/db/import-tmpl/spellbook_db.txt b/db/import-tmpl/spellbook_db.txt new file mode 100644 index 0000000000..96da1485e4 --- /dev/null +++ b/db/import-tmpl/spellbook_db.txt @@ -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. + diff --git a/db/import-tmpl/statpoint.txt b/db/import-tmpl/statpoint.txt new file mode 100644 index 0000000000..929ccb7a3f --- /dev/null +++ b/db/import-tmpl/statpoint.txt @@ -0,0 +1 @@ +//statpoint per lvl diff --git a/db/import/item_combo_db.txt b/db/import/item_combo_db.txt index e69de29bb2..2f4fa6aca1 100644 --- a/db/import/item_combo_db.txt +++ b/db/import/item_combo_db.txt @@ -0,0 +1,5 @@ +// Item Combos Database +// +// Structure of Database: +// ID:ID:ID:ID,{ Script } + diff --git a/db/import/mob_boss.txt b/db/import/mob_boss.txt index e69de29bb2..84ae8ced7f 100644 --- a/db/import/mob_boss.txt +++ b/db/import/mob_boss.txt @@ -0,0 +1,5 @@ +// Bloody Branch Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import/mob_branch.txt b/db/import/mob_branch.txt index e69de29bb2..9d7256db3e 100644 --- a/db/import/mob_branch.txt +++ b/db/import/mob_branch.txt @@ -0,0 +1,5 @@ +// Dead Branch Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import/mob_classchange.txt b/db/import/mob_classchange.txt index e69de29bb2..d44d527f3a 100644 --- a/db/import/mob_classchange.txt +++ b/db/import/mob_classchange.txt @@ -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 diff --git a/db/import/mob_poring.txt b/db/import/mob_poring.txt index e69de29bb2..47b8926448 100644 --- a/db/import/mob_poring.txt +++ b/db/import/mob_poring.txt @@ -0,0 +1,5 @@ +// Poring Box Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate + diff --git a/db/import/mob_pouch.txt b/db/import/mob_pouch.txt index e69de29bb2..6361e52bb6 100644 --- a/db/import/mob_pouch.txt +++ b/db/import/mob_pouch.txt @@ -0,0 +1,4 @@ +// Red Pouch of Surprise Summonable Monsters Database +// +// Structure of Database: +// MobID,DummyName,Rate diff --git a/db/packet_db.txt b/db/packet_db.txt index e8e1977ff1..3ff9a34f33 100644 --- a/db/packet_db.txt +++ b/db/packet_db.txt @@ -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 diff --git a/src/char/int_guild.c b/src/char/int_guild.c index 54137600d2..571a2e3d04 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -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 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(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)) diff --git a/src/map/pc.c b/src/map/pc.c index a83f0e9ca7..bd46a58afc 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -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; } diff --git a/src/map/pet.c b/src/map/pet.c index 4026b0afad..eb466629ff 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -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; } diff --git a/src/map/quest.c b/src/map/quest.c index e38aaf756c..e2ddaba11f 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -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