Compare commits

..

56 Commits

Author SHA1 Message Date
Aleos
03dfba0dd8 Update src/map/pc.cpp
Co-authored-by: munkrej <schmunk@posteo.de>
2023-03-28 08:10:36 -04:00
Aleos
c8e44d2b68 Merge branch 'master' into hotfix/issue7111 2023-03-28 08:09:59 -04:00
Atemo
f8c5cd9552 Small correction on the attribute table (#7662)
Follow-up e4e8063ec3

* Defense Wind and Fire values have been reversed for Undead weapon element.
* There should be no negative defense according to the official tables.

Thanks to @vstumpf
2023-03-25 14:13:45 +01:00
Atemo
6673e1a786 Fixed an issue where normal NPC had no sprite when walking (#7652)
* Fixed an issue where normal NPC had no sprite when walking
* Added a note

Thannks to @vstumpf
2023-03-24 15:28:50 +01:00
Lemongrass3110
49ba072f3a Added returning to instances (#7622)
Fixes #5226

Thanks to @Forte22, @attackjom and @OptimusM

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2023-03-23 15:49:39 +01:00
Vincent Stumpf
8abf9960a0 Fix memory leak on map quit (#7657) 2023-03-23 12:11:15 +01:00
Vincent Stumpf
f0e374ea23 Fixes getrefine failing in OnEquip/OnUnequip scripts (#7592) 2023-03-20 10:08:04 -07:00
Vincent Stumpf
819b7cb361 Fix ASAN crashes and LSAN leaks (#7649) 2023-03-20 09:32:41 -07:00
Lemongrass3110
4d9b1a0b83 Deduplicate strlib code (#7651)
Follow up to 4e64623
2023-03-19 21:07:16 +01:00
Atemo
1ccdc17df5 Added some entries in instance_db.yml (#7654)
* Added some entries in instance_db.yml
2023-03-19 20:24:00 +01:00
Lemongrass3110
b95daa3041 Fixed wrong node usage for instance loading
Noticed because of #7654
2023-03-19 19:10:42 +01:00
Atemo
36972bf9ea Corrected the english name of several items in item DB (#7653) 2023-03-19 17:51:31 +01:00
Vincent Stumpf
4e646235d2 Fix builds that don't use the memory manager (#7648) 2023-03-18 23:57:44 -07:00
Jittapan Pluemsumran
b4f740ce18 Added a config for banking state check (#7646)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-03-16 20:24:13 +07:00
Atemo
19bbd82c55 Initial release of nif_dun quests (#7349)
* Added mobs db, mobs spawn and quests related to nif_dun01 and nif_dun02
* Some data after rebalance is missing but the base is there

Thanks to @aleos89 @Lemongrass3110 @Pokye @OptimusM @Tokeiburu for the reviews !
2023-03-16 13:24:32 +01:00
eppc0330
067c21b647 Implement NPC_DAMAGE_HEAL and NPC_IMMUNE_PROPERTY (#7638)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-03-15 21:36:47 +01:00
Jittapan Pluemsumran
22abdf8dbe Added missing state checks in banking functions (#7645)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-03-14 17:34:05 +07:00
Vincent Stumpf
7dd6eb5182 Add other player in mail transactions (#7568)
* Add other player's char_id in mail transactions

Thanks to @tokeiburu

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-03-14 02:30:23 -07:00
munkrej
cbb5380527 Adds skill NPC_KILLING_AURA (#7624) 2023-03-14 00:14:41 +01:00
Lemongrass3110
ae2ea3df10 Implemented NPC_WIDELEASH (#7643) 2023-03-13 22:46:23 +01:00
Lemongrass3110
6ff1ebfa98 Implemented NPC_LEASH (#7642) 2023-03-13 21:36:50 +01:00
Atemo
3f45df1025 Added news items - equipments up to 03022023 (#7625) 2023-03-13 13:50:21 +01:00
eppc0330
eb875d1af5 Implement NPC_MOVE_COORDINATE (#7636) 2023-03-13 06:55:50 +01:00
eppc0330
bee2c27d78 Implement NPC_ALL_STAT_DOWN (#7637) 2023-03-13 06:25:02 +01:00
eppc0330
b3881bd1fc Implement NPC_GRADUAL_GRAVITY (#7635) 2023-03-13 00:25:47 +01:00
Vincent Stumpf
1c35482ecf Change copied bl type to BL_NUL for delayed clif_clearunit (#7640)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-03-12 12:38:47 -07:00
idk-whoami
3998f7ed75 Corrected script for some item #17 (#7616)
Thanks to @Atemo
2023-03-08 15:10:50 +01:00
Vincent Stumpf
8f4a1d2932 Remove relative includes for 3rdparty imports (#7609)
This also changes the imports for config, custom to use the src include path
2023-03-07 16:21:28 -08:00
Vincent Stumpf
1b1164f91d Change memcpy for safestrncpy for char * (#7629) 2023-03-06 09:53:23 -08:00
Vincent Stumpf
6a0b7afd88 Fix possible out of bounds (#7630) 2023-03-06 09:37:26 -08:00
aoshfan
bb8c4a03c8 Fix Fire Pillar skill to not consume Gemstone if VIP or use Mistress card (#7623) 2023-03-05 17:04:24 -08:00
userid0
b22e186e77 Cleanup homun txt in map-server-generator (#7627) 2023-03-04 18:44:18 +01:00
idk-whoami
b56f11207c Update warper npc (#7617) 2023-02-28 19:48:34 +01:00
Lemongrass3110
839d378680 Added missing breaks to instance_warpall 2023-02-26 22:37:07 +01:00
Jittapan Pluemsumran
1985662045 Made debug ShowStatus calls easier to disable (#7618)
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2023-02-21 11:34:52 +07:00
Atemo
08d3467faa Updated item names and fix an issue with ignore_res_by_race / ignore_mres_by_race (#7613) 2023-02-16 22:41:15 +01:00
Aleos
240f71cbce Converts Homunculus Database to YAML (#4659)
* Converts the Homunculus Database and Homunculus Skill Tree Database into one YAML flat file.
* General cleanups and optimizations.
* Includes CSV2YAML converter.
Thanks to @Lemongrass3110 and @Atemo!
Co-authored-by: Atemo <capucrath@gmail.com>
2023-02-15 14:42:51 -05:00
Atemo
b2ceb30e30 Added missing items equipment up to 02/10/2023 (#7606)
* Added missing items equipment up to 02/10/2023
* Implemented the item bonuses bIgnoreResRaceRate and bIgnoreMResRaceRate

Thanks to @attackjom for the review!
2023-02-15 16:15:11 +01:00
Vincent Stumpf
a35063dfd6 Upgrade to c++14 (#7593) 2023-02-13 10:58:31 -08:00
Everade
56ae2174c0 Episode 16.2 - Weekend Memorial Dungeon (#7299)
* Implementation of Episode 16.2 Weekend Memorial Dungeon.

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2023-02-13 14:25:52 +01:00
munkrej
c6c9babb5e Homunculus updates as of 20220602 (#7586)
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2023-02-12 23:55:13 +01:00
Lemongrass3110
42d8c163b7 Added missing columns for yaml2sql (#7603)
Fixes #7602

Thanks to @Triedge
2023-02-12 23:04:46 +01:00
Vincent Stumpf
9d2bcc7a70 Change npc_src_files linked list to vector (#7598) 2023-02-12 13:38:12 -08:00
Vincent Stumpf
e235c9cab4 Change common and config includes to use <> (#7596) 2023-02-12 12:46:06 -08:00
Vincent Stumpf
eff6131087 Speed up loading of npcs and maps (#7597) 2023-02-12 11:01:14 -08:00
Atemo
bc7b9cdd2e Updated instance_warpall script command (#7591)
* Added a parameter to the instance_warpall script command to prevent dead players from being warped

Thanks to @aleos89, @Lemongrass3110 and @vstumpf for the reviews!
2023-02-12 16:09:20 +01:00
idk-whoami
36bcfaecee Corrected script for some items #16 (#7583)
Thanks to @Atemo
2023-02-12 15:33:11 +01:00
Lemongrass3110
98b3f2af52 Removed some useless strlib functions (#7600)
* Removed jstrescape

* Removed jstrescapecpy

* Removed jmemescapecpy

* Removed J_MAX_MALLOC_SIZE

* Removed trim2
2023-02-12 13:08:24 +01:00
Vincent Stumpf
7629ff4032 Speed up loading CachedYamlDBs (#7599)
Instead of iterating from the end to find the last item in the cache, just store the highest key we've found.
Then, resize the cache to that
2023-02-12 00:20:54 -08:00
Vincent Stumpf
ce8f053359 Speed up YAML DB loading by removing ShowStatus (#7595) 2023-02-10 16:04:35 -08:00
idk-whoami
56af701ade Corrected script for some item #15 (#7566)
Thanks to @Atemo
2023-02-10 15:14:26 +01:00
Aleos
1c02e5b253 Merge branch 'master' into hotfix/issue7111 2022-12-09 14:54:30 -05:00
aleos
b9aa1344e6 Fixes autobonuses not clearing on unequip 2022-12-07 10:31:31 -05:00
aleos
bb8d09dfca Fixes an issue with reloading the item database
* Fixes an issue where players prior autobonuses were not properly recalculated when reloading the item database.
2022-08-25 11:31:20 -04:00
aleos
920b57965c Resolves an issue with random crashes
* Reverts the order of combos after parsing of equipment.
* Moves the equipment bonuses to the very end of all equipment, combo, card, and random option parsing.
2022-08-02 13:26:42 -04:00
aleos
658d64abba Fixes some item bonuses not applying from combos
* Fixes #7111.
* Resolves an issue where combo items were not properly giving their bonuses if it applied to worn equipment.
Thanks to @Badarosk0!
2022-07-18 13:18:32 -04:00
237 changed files with 25352 additions and 2669 deletions

View File

@@ -30,7 +30,7 @@ Disk Space | 300 MB | 500 MB
Operating System | Compiler
------|------
Linux | [gcc-5 or newer](https://www.gnu.org/software/gcc/gcc-5/) / [Make](https://www.gnu.org/software/make/)
Windows | [MS Visual Studio 2013, 2015, 2017](https://www.visualstudio.com/downloads/)
Windows | [MS Visual Studio 2017 or newer](https://www.visualstudio.com/downloads/)
### Required Applications
Application | Name

View File

@@ -33,6 +33,11 @@ feature.warp_suggestions: off
// Requires: 2013-07-24aRagexe or later
feature.banking: on
// Should Banking strictly checks the UI state on zeny deposit and withdrawal? (Note 1)
// Note: Disabled by default because existing official clients do not report the banking UI state to the server.
// But this config could be useful in case of clients that actually report the UI state or custom clients.
feature.banking_state_enforce: no
// Autotrade persistency (Note 1)
// Should vendors that used @autotrade be restored after a restart?
feature.autotrade: on
@@ -163,3 +168,10 @@ feature.mesitemlink_dbname: no
// Stylist UI (Note 1)
// Requires: 2015-11-04 or later
feature.stylist: on
// Are players allowed to reconnect into instances? (Note 1)
// This is enabled by default in Renewal mode and
// disabled by default in Pre-Renewal mode.
// If this is allowed the "nosave" mapflag is still being respected
// and may prevent players from warping back into the instance.
//feature.instance_allow_reconnect: yes

View File

@@ -50,7 +50,7 @@ homunculus_auto_vapor: 80
homunculus_max_level: 99
// Max level for Homunculus S
homunculus_S_max_level: 175
homunculus_S_max_level: 250
// Growth level for Homunculus S
// This is the level at which homunculus S can use their growth tables

View File

@@ -620,7 +620,7 @@ if test "$enable_lto" != "no" ; then
)
CFLAGS="$OLD_CFLAGS"
LDFLAGS="$OLD_LDFLAGS"
CFLAGS="$CFLAGS -flto -fuse-linker-plugin"
LDFLAGS="$LDFLAGS -flto -fuse-linker-plugin"

View File

@@ -1,119 +0,0 @@
// Homunculus Skill Tree Database
//
// Structure of Database:
// Class,SkillID,MaxLv,NeedLevel,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. NeedLevel Homunculus level required for the skill to become available
// 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.
//Lif
6001,8001,5,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
6001,8002,5,0,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
6001,8003,5,0,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
//Amistr
6002,8005,5,0,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
6002,8006,5,0,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
6002,8007,5,0,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
//Filir
6003,8009,5,0,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
6003,8010,5,0,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
6003,8011,5,0,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
//Vanilmirth
6004,8013,5,0,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
6004,8014,5,0,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
6004,8015,5,0,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
//Lif2
6005,8001,5,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
6005,8002,5,0,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
6005,8003,5,0,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
//Amistr2
6006,8005,5,0,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
6006,8006,5,0,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
6006,8007,5,0,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
//Filir2
6007,8009,5,0,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
6007,8010,5,0,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
6007,8011,5,0,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
//Vanilmirth2
6008,8013,5,0,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
6008,8014,5,0,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
6008,8015,5,0,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
//Lif_H
6009,8001,5,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
6009,8002,5,0,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
6009,8003,5,0,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
6009,8004,3,0,0,0,0,0,0,0,0,0,0,0,910 //HLIF_CHANGE
//Amistr_H
6010,8005,5,0,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
6010,8006,5,0,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
6010,8007,5,0,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
6010,8008,3,0,0,0,0,0,0,0,0,0,0,0,910 //HAMI_BLOODLUST
//Filir_H
6011,8009,5,0,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
6011,8010,5,0,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
6011,8011,5,0,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
6011,8012,3,0,0,0,0,0,0,0,0,0,0,0,910 //HFLI_SBR44
//Vanilmirth_H
6012,8013,5,0,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
6012,8014,5,0,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
6012,8015,5,0,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
6012,8016,3,0,0,0,0,0,0,0,0,0,0,0,910 //HVAN_EXPLOSION
//Lif2_H
6013,8001,5,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
6013,8002,5,0,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
6013,8003,5,0,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
6013,8004,3,0,0,0,0,0,0,0,0,0,0,0,910 //HLIF_CHANGE
//Amistr2_H
6014,8005,5,0,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
6014,8006,5,0,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
6014,8007,5,0,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
6014,8008,3,0,0,0,0,0,0,0,0,0,0,0,910 //HAMI_BLOODLUST
//Filir2_H
6015,8009,5,0,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
6015,8010,5,0,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
6015,8011,5,0,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
6015,8012,3,0,0,0,0,0,0,0,0,0,0,0,910 //HFLI_SBR44
//Vanilmirth2_H
6016,8013,5,0,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
6016,8014,5,0,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
6016,8015,5,0,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
6016,8016,3,0,0,0,0,0,0,0,0,0,0,0,910 //HVAN_EXPLOSION
//Eira
6048,8022,5,128,0,0,0,0,0,0,0,0,0,0,0 //MH_LIGHT_OF_REGENE
6048,8023,5,114,0,0,0,0,0,0,0,0,0,0,0 //MH_OVERED_BOOST
6048,8024,10,106,0,0,0,0,0,0,0,0,0,0,0 //MH_ERASER_CUTTER
6048,8025,10,121,0,0,0,0,0,0,0,0,0,0,0 //MH_XENO_SLASHER
6048,8026,5,137,0,0,0,0,0,0,0,0,0,0,0 //MH_SILENT_BREEZE
//Bayeri
6049,8031,10,105,0,0,0,0,0,0,0,0,0,0,0 //MH_STAHL_HORN
6049,8032,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_GOLDENE_FERSE
6049,8033,5,121,0,0,0,0,0,0,0,0,0,0,0 //MH_STEINWAND
6049,8034,10,138,0,0,0,0,0,0,0,0,0,0,0 //MH_HEILIGE_STANGE
6049,8035,5,130,0,0,0,0,0,0,0,0,0,0,0 //MH_ANGRIFFS_MODUS
//Sera
6050,8018,5,132,0,0,0,0,0,0,0,0,0,0,0 //MH_SUMMON_LEGION
6050,8019,10,105,0,0,0,0,0,0,0,0,0,0,0 //MH_NEEDLE_OF_PARALYZE
6050,8020,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_POISON_MIST
6050,8021,10,123,0,0,0,0,0,0,0,0,0,0,0 //MH_PAIN_KILLER
//Dieter
6051,8039,5,122,0,0,0,0,0,0,0,0,0,0,0 //MH_MAGMA_FLOW
6051,8040,5,116,0,0,0,0,0,0,0,0,0,0,0 //MH_GRANITIC_ARMOR
6051,8041,10,109,0,0,0,0,0,0,0,0,0,0,0 //MH_LAVA_SLIDE
6051,8042,10,131,0,0,0,0,0,0,0,0,0,0,0 //MH_PYROCLASTIC
6051,8043,5,102,0,0,0,0,0,0,0,0,0,0,0 //MH_VOLCANIC_ASH
//Elanor
6052,8027,1,100,0,0,0,0,0,0,0,0,0,0,0 //MH_STYLE_CHANGE
6052,8028,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_SONIC_CRAW
6052,8029,10,114,0,0,0,0,0,0,0,0,0,0,0 //MH_SILVERVEIN_RUSH
6052,8030,10,128,0,0,0,0,0,0,0,0,0,0,0 //MH_MIDNIGHT_FRENZY
6052,8036,5,100,0,0,0,0,0,0,0,0,0,0,0 //MH_TINDER_BREAKER
6052,8037,5,112,0,0,0,0,0,0,0,0,0,0,0 //MH_CBC
6052,8038,5,133,0,0,0,0,0,0,0,0,0,0,0 //MH_EQC

65
db/homunculus_db.yml Normal file
View File

@@ -0,0 +1,65 @@
# This file is a part of rAthena.
# Copyright(C) 2023 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Homunculus Database
###########################################################################
#
# Homunculus Settings
#
###########################################################################
# - BaseClass Base class.
# Name Name of homunculus.
# EvolutionClass Evolution class.
# Food Homunculus food item. (Default: Pet_Food)
# HungryDelay Time interval in milliseconds after which the hunger value is altered. (Default: 60000)
# Race Race. (Default: Demihuman)
# Element Element. (Default: Neutral)
# Size Size. (Default: Small)
# EvolutionSize Evolution size. (Default: Medium)
# AttackDelay Base ASPD. (Default: 700)
# Status: Homunculus stats.
# - Type Type of status.
# Base Base value of this status. (Default: 1)
# GrowthMinimum Minimum growth of this status. (Default: 0)
# GrowthMaximum Maximum growth of this status. (Default: 0)
# EvolutionMinimum Minimum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# EvolutionMaximum Maximum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# SkillTree: Skill tree.
# - Skill Skill name.
# Clear True to remove the given skill name. (Optional)
# MaxLevel Maximum level of skill.
# RequiredLevel Required base level of homunculus to learn. (Default: 0)
# RequiredIntimacy Required intimacy of homunculus to learn. (Default: 0)
# RequireEvolution Require the homunculus to be evolved to be available. (Default: false)
# Required: Prerequisite skills. (Default: null)
# - Skill Prerequisite skill name.
# Level Level of prerequisite skill.
# Clear True to remove the given prerequisite skill name. (Optional)
###########################################################################
Header:
Type: HOMUNCULUS_DB
Version: 1
Footer:
Imports:
- Path: db/pre-re/homunculus_db.yml
Mode: Prerenewal
- Path: db/re/homunculus_db.yml
Mode: Renewal
- Path: db/import/homunculus_db.yml

View File

@@ -1,15 +0,0 @@
// Homunculus Skill Tree Database
//
// Structure of Database:
// Class,SkillID,MaxLv,NeedLevel,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. NeedLevel Homunculus level required for the skill to become available
// 05. Prerequisite SkillID Homunculus skill required for the skill to become available.
// 06. Prerequisite SkillLv Level of the required homunculus skill.
// ...
// 15. IntimacyLvReq Minimum level of intimacy to unlock skill.
//
// NOTE: MAX_PC_SKILL_REQUIRE (typically 5) ID/Lv pairs must be specified.

View File

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

View File

@@ -0,0 +1,57 @@
# This file is a part of rAthena.
# Copyright(C) 2023 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Homunculus Database
###########################################################################
#
# Homunculus Settings
#
###########################################################################
# - BaseClass Base class.
# Name Name of homunculus.
# EvolutionClass Evolution class.
# Food Homunculus food item. (Default: Pet_Food)
# HungryDelay Time interval in milliseconds after which the hunger value is altered. (Default: 60000)
# Race Race. (Default: Demihuman)
# Element Element. (Default: Neutral)
# Size Size. (Default: Small)
# EvolutionSize Evolution size. (Default: Medium)
# AttackDelay Base ASPD. (Default: 700)
# Status: Homunculus stats.
# - Type Type of status.
# Base Base value of this status. (Default: 1)
# GrowthMinimum Minimum growth of this status. (Default: 0)
# GrowthMaximum Maximum growth of this status. (Default: 0)
# EvolutionMinimum Minimum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# EvolutionMaximum Maximum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# SkillTree: Skill tree.
# - Skill Skill name.
# Clear True to remove the given skill name. (Optional)
# MaxLevel Maximum level of skill.
# RequiredLevel Required base level of homunculus to learn. (Default: 0)
# RequiredIntimacy Required intimacy of homunculus to learn. (Default: 0)
# RequireEvolution Require the homunculus to be evolved to be available. (Default: false)
# Required: Prerequisite skills. (Default: null)
# - Skill Prerequisite skill name.
# Level Level of prerequisite skill.
# Clear True to remove the given prerequisite skill name. (Optional)
###########################################################################
Header:
Type: HOMUNCULUS_DB
Version: 1

View File

@@ -1,33 +0,0 @@
// 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)
6001,6009,Lif,537,60000,0,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,1,10,10,20,1,5,1,4,1,5,4,10,1,10,1,3
6002,6010,Amistr,912,60000,0,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,10,20,1,10,1,10,1,5,4,10,1,3,1,4,1,5
6003,6011,Filir,910,60000,0,1,2,0,700,90,25,29,35,9,8,30,9,45,75,3,6,4,20,8,20,1,10,3,19,4,20,3,19,5,15,5,15,4,10,1,10,1,3,1,4,1,5,1,5
6004,6012,Vanilmirth,911,60000,0,1,0,0,700,80,11,11,11,11,11,11,11,30,150,0,7,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,10,1,10,1,10,1,10,1,10,1,10
6005,6013,Lif,537,60000,0,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,1,10,10,20,1,5,1,4,1,5,4,10,1,10,1,3
6006,6014,Amistr,912,60000,0,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,10,20,1,10,1,10,1,5,4,10,1,3,1,4,1,5
6007,6015,Filir,910,60000,0,1,2,0,700,90,25,29,35,9,8,30,9,45,75,3,6,4,20,8,20,1,10,3,19,4,20,3,19,5,15,5,15,4,10,1,10,1,3,1,4,1,5,1,5
6008,6016,Vanilmirth,911,60000,0,1,0,0,700,80,11,11,11,11,11,11,11,30,150,0,7,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,10,1,10,1,10,1,10,1,10,1,10
6048,6048,Eira,6098,60000,1,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,1,10,10,20,1,5,1,4,1,5,4,10,1,10,1,3
6049,6049,Bayeri,6112,60000,1,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,10,20,1,10,1,10,1,5,4,10,1,3,1,4,1,5
6050,6050,Sera,6108,60000,1,1,4,0,700,90,25,29,35,9,8,30,9,45,75,3,6,4,20,8,20,1,10,3,19,4,20,3,19,5,15,5,15,4,10,1,10,1,3,1,4,1,5,1,5
6051,6051,Dieter,6104,60000,1,1,0,0,700,80,11,11,11,11,11,11,11,30,150,0,7,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,10,1,10,1,10,1,10,1,10,1,10
6052,6052,Eleanor,6115,60000,1,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,10,20,1,10,1,10,1,5,4,10,1,3,1,4,1,5

623
db/pre-re/homunculus_db.yml Normal file
View File

@@ -0,0 +1,623 @@
# This file is a part of rAthena.
# Copyright(C) 2023 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Homunculus Database
###########################################################################
#
# Homunculus Settings
#
###########################################################################
# - BaseClass Base class.
# Name Name of homunculus.
# EvolutionClass Evolution class.
# Food Homunculus food item. (Default: Pet_Food)
# HungryDelay Time interval in milliseconds after which the hunger value is altered. (Default: 60000)
# Race Race. (Default: Demihuman)
# Element Element. (Default: Neutral)
# Size Size. (Default: Small)
# EvolutionSize Evolution size. (Default: Medium)
# AttackDelay Base ASPD. (Default: 700)
# Status: Homunculus stats.
# - Type Type of status.
# Base Base value of this status. (Default: 1)
# GrowthMinimum Minimum growth of this status. (Default: 0)
# GrowthMaximum Maximum growth of this status. (Default: 0)
# EvolutionMinimum Minimum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# EvolutionMaximum Maximum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# SkillTree: Skill tree.
# - Skill Skill name.
# Clear True to remove the given skill name. (Optional)
# MaxLevel Maximum level of skill.
# RequiredLevel Required base level of homunculus to learn. (Default: 0)
# RequiredIntimacy Required intimacy of homunculus to learn. (Default: 0)
# RequireEvolution Require the homunculus to be evolved to be available. (Default: false)
# Required: Prerequisite skills. (Default: null)
# - Skill Prerequisite skill name.
# Level Level of prerequisite skill.
# Clear True to remove the given prerequisite skill name. (Optional)
###########################################################################
Header:
Type: HOMUNCULUS_DB
Version: 1
Body:
- Class: Lif
Name: Lif
EvolutionClass: Lif_H
Status:
- Type: Hp
Base: 150
GrowthMinimum: 60
GrowthMaximum: 100
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Sp
Base: 40
GrowthMinimum: 4
GrowthMaximum: 9
EvolutionMinimum: 10
EvolutionMaximum: 20
- Type: Str
Base: 17
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Agi
Base: 20
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Vit
Base: 15
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Int
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Dex
Base: 24
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Luk
Base: 12
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 3
SkillTree:
- Skill: HLIF_HEAL
MaxLevel: 5
- Skill: HLIF_AVOID
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 3
- Skill: HLIF_BRAIN
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 5
- Skill: HLIF_CHANGE
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Amistr
Name: Amistr
EvolutionClass: Amistr_H
Food: Zargon
Race: Brute
Status:
- Type: Hp
Base: 320
GrowthMinimum: 80
GrowthMaximum: 130
EvolutionMinimum: 10
EvolutionMaximum: 20
- Type: Sp
Base: 10
GrowthMinimum: 1
GrowthMaximum: 4
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Str
Base: 20
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Agi
Base: 17
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Vit
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 1
EvolutionMaximum: 3
- Type: Dex
Base: 24
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Luk
Base: 12
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
SkillTree:
- Skill: HAMI_CASTLE
MaxLevel: 5
- Skill: HAMI_DEFENCE
MaxLevel: 5
Required:
- Skill: HAMI_CASTLE
Level: 5
- Skill: HAMI_SKIN
MaxLevel: 5
Required:
- Skill: HAMI_DEFENCE
Level: 3
- Skill: HAMI_BLOODLUST
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Filir
Name: Filir
EvolutionClass: Filir_H
Food: Garlet
Race: Brute
Status:
- Type: Hp
Base: 90
GrowthMinimum: 45
GrowthMaximum: 75
EvolutionMinimum: 5
EvolutionMaximum: 15
- Type: Sp
Base: 25
GrowthMinimum: 3
GrowthMaximum: 6
EvolutionMinimum: 5
EvolutionMaximum: 15
- Type: Str
Base: 29
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Agi
Base: 35
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Vit
Base: 9
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 1
EvolutionMaximum: 3
- Type: Int
Base: 8
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Dex
Base: 30
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Luk
Base: 9
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
SkillTree:
- Skill: HFLI_MOON
MaxLevel: 5
- Skill: HFLI_FLEET
MaxLevel: 5
Required:
- Skill: HFLI_MOON
Level: 3
- Skill: HFLI_SPEED
MaxLevel: 5
Required:
- Skill: HFLI_FLEET
Level: 3
- Skill: HFLI_SBR44
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Vanilmirth
Name: Vanilmirth
EvolutionClass: Vanilmirth_H
Food: Scell
Race: Formless
Status:
- Type: Hp
Base: 80
GrowthMinimum: 30
GrowthMaximum: 150
EvolutionMinimum: 1
EvolutionMaximum: 30
- Type: Sp
Base: 11
GrowthMinimum: 0
GrowthMaximum: 7
EvolutionMinimum: 1
EvolutionMaximum: 30
- Type: Str
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Agi
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Vit
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Dex
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Luk
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
SkillTree:
- Skill: HVAN_CAPRICE
MaxLevel: 5
- Skill: HVAN_CHAOTIC
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 3
- Skill: HVAN_INSTRUCT
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 5
- Skill: HVAN_EXPLOSION
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Lif2
Name: Lif
EvolutionClass: Lif_H2
Status:
- Type: Hp
Base: 150
GrowthMinimum: 60
GrowthMaximum: 100
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Sp
Base: 40
GrowthMinimum: 4
GrowthMaximum: 9
EvolutionMinimum: 10
EvolutionMaximum: 20
- Type: Str
Base: 17
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Agi
Base: 20
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Vit
Base: 15
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Int
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Dex
Base: 24
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Luk
Base: 12
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 3
SkillTree:
- Skill: HLIF_HEAL
MaxLevel: 5
- Skill: HLIF_AVOID
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 3
- Skill: HLIF_BRAIN
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 5
- Skill: HLIF_CHANGE
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Amistr2
Name: Amistr
EvolutionClass: Amistr_H2
Food: Zargon
Race: Brute
Status:
- Type: Hp
Base: 320
GrowthMinimum: 80
GrowthMaximum: 130
EvolutionMinimum: 10
EvolutionMaximum: 20
- Type: Sp
Base: 10
GrowthMinimum: 1
GrowthMaximum: 4
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Str
Base: 20
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Agi
Base: 17
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Vit
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 1
EvolutionMaximum: 3
- Type: Dex
Base: 24
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Luk
Base: 12
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
SkillTree:
- Skill: HAMI_CASTLE
MaxLevel: 5
- Skill: HAMI_DEFENCE
MaxLevel: 5
Required:
- Skill: HAMI_CASTLE
Level: 5
- Skill: HAMI_SKIN
MaxLevel: 5
Required:
- Skill: HAMI_DEFENCE
Level: 3
- Skill: HAMI_BLOODLUST
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Filir2
Name: Filir
EvolutionClass: Filir_H2
Food: Garlet
Race: Brute
Status:
- Type: Hp
Base: 90
GrowthMinimum: 45
GrowthMaximum: 75
EvolutionMinimum: 5
EvolutionMaximum: 15
- Type: Sp
Base: 25
GrowthMinimum: 3
GrowthMaximum: 6
EvolutionMinimum: 5
EvolutionMaximum: 15
- Type: Str
Base: 29
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 4
EvolutionMaximum: 10
- Type: Agi
Base: 35
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Vit
Base: 9
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 1
EvolutionMaximum: 3
- Type: Int
Base: 8
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 4
- Type: Dex
Base: 30
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 1
EvolutionMaximum: 5
- Type: Luk
Base: 9
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 1
EvolutionMaximum: 5
SkillTree:
- Skill: HFLI_MOON
MaxLevel: 5
- Skill: HFLI_FLEET
MaxLevel: 5
Required:
- Skill: HFLI_MOON
Level: 3
- Skill: HFLI_SPEED
MaxLevel: 5
Required:
- Skill: HFLI_FLEET
Level: 3
- Skill: HFLI_SBR44
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Vanilmirth2
Name: Vanilmirth
EvolutionClass: Vanilmirth_H2
Food: Scell
Race: Formless
Status:
- Type: Hp
Base: 80
GrowthMinimum: 30
GrowthMaximum: 150
EvolutionMinimum: 1
EvolutionMaximum: 30
- Type: Sp
Base: 11
GrowthMinimum: 0
GrowthMaximum: 7
EvolutionMinimum: 1
EvolutionMaximum: 30
- Type: Str
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Agi
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Vit
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Dex
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
- Type: Luk
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 1
EvolutionMaximum: 10
SkillTree:
- Skill: HVAN_CAPRICE
MaxLevel: 5
- Skill: HVAN_CHAOTIC
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 3
- Skill: HVAN_INSTRUCT
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 5
- Skill: HVAN_EXPLOSION
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true

View File

@@ -120,7 +120,7 @@ Body:
Holy: 125
Dark: 0
Ghost: 100
Undead: -25
Undead: 0
Ghost:
Neutral: 90
Water: 100
@@ -136,8 +136,8 @@ Body:
Neutral: 100
Water: 100
Earth: 100
Fire: 100
Wind: 90
Fire: 90
Wind: 100
Poison: 75
Holy: 125
Dark: 0
@@ -217,7 +217,7 @@ Body:
Fire: 100
Wind: 100
Poison: 75
Holy: -25
Holy: 0
Dark: 150
Ghost: 100
Undead: 150
@@ -229,9 +229,9 @@ Body:
Wind: 100
Poison: 75
Holy: 150
Dark: -25
Dark: 0
Ghost: 100
Undead: -50
Undead: 0
Ghost:
Neutral: 70
Water: 100
@@ -268,7 +268,7 @@ Body:
Undead: 100
Water:
Neutral: 100
Water: -25
Water: 0
Earth: 100
Fire: 200
Wind: 70
@@ -280,7 +280,7 @@ Body:
Earth:
Neutral: 100
Water: 100
Earth: -25
Earth: 0
Fire: 70
Wind: 200
Poison: 125
@@ -292,7 +292,7 @@ Body:
Neutral: 100
Water: 70
Earth: 200
Fire: -25
Fire: 0
Wind: 100
Poison: 125
Holy: 100
@@ -304,7 +304,7 @@ Body:
Water: 200
Earth: 70
Fire: 100
Wind: -25
Wind: 0
Poison: 125
Holy: 100
Dark: 100
@@ -328,7 +328,7 @@ Body:
Fire: 100
Wind: 100
Poison: 50
Holy: -50
Holy: 0
Dark: 175
Ghost: 100
Undead: 175
@@ -340,9 +340,9 @@ Body:
Wind: 100
Poison: 50
Holy: 175
Dark: -50
Dark: 0
Ghost: 100
Undead: -75
Undead: 0
Ghost:
Neutral: 50
Water: 100
@@ -379,7 +379,7 @@ Body:
Undead: 100
Water:
Neutral: 100
Water: -50
Water: 0
Earth: 100
Fire: 200
Wind: 60
@@ -391,7 +391,7 @@ Body:
Earth:
Neutral: 100
Water: 100
Earth: -50
Earth: 0
Fire: 60
Wind: 200
Poison: 125
@@ -403,7 +403,7 @@ Body:
Neutral: 100
Water: 60
Earth: 200
Fire: -50
Fire: 0
Wind: 100
Poison: 125
Holy: 100
@@ -415,7 +415,7 @@ Body:
Water: 200
Earth: 60
Fire: 100
Wind: -50
Wind: 0
Poison: 125
Holy: 100
Dark: 100
@@ -431,7 +431,7 @@ Body:
Holy: 50
Dark: 50
Ghost: 50
Undead: -100
Undead: 0
Holy:
Neutral: 100
Water: 100
@@ -439,7 +439,7 @@ Body:
Fire: 100
Wind: 100
Poison: 50
Holy: -100
Holy: 0
Dark: 200
Ghost: 100
Undead: 200
@@ -451,9 +451,9 @@ Body:
Wind: 100
Poison: 50
Holy: 200
Dark: -100
Dark: 0
Ghost: 100
Undead: -100
Undead: 0
Ghost:
Neutral: 0
Water: 100
@@ -471,7 +471,7 @@ Body:
Earth: 100
Fire: 60
Wind: 100
Poison: -25
Poison: 0
Holy: 200
Dark: 0
Ghost: 175

View File

@@ -379,3 +379,154 @@ Body:
Exp: 87140000
- Level: 174
Exp: 94875000
# TODO: unconfirmed values from here
- Level: 175
Exp: 104362500
- Level: 176
Exp: 112711500
- Level: 177
Exp: 121728420
- Level: 178
Exp: 131466693
- Level: 179
Exp: 141984028
- Level: 180
Exp: 153342750
- Level: 181
Exp: 165610170
- Level: 182
Exp: 178858983
- Level: 183
Exp: 193167701
- Level: 184
Exp: 208621117
- Level: 185
Exp: 225310806
- Level: 186
Exp: 243335670
- Level: 187
Exp: 262802523
- Level: 188
Exp: 283826724
- Level: 189
Exp: 306532861
- Level: 190
Exp: 331055489
- Level: 191
Exp: 357539928
- Level: 192
Exp: 386143122
- Level: 193
Exp: 417034571
- Level: 194
Exp: 450397336
- Level: 195
Exp: 486429122
- Level: 196
Exp: 525343451
- Level: 197
Exp: 567370927
- Level: 198
Exp: 612760601
- Level: 199
Exp: 661781449
- Level: 200
Exp: 714723964
- Level: 201
Exp: 771901881
- Level: 202
Exp: 833654031
- Level: 203
Exp: 900346353
- Level: 204
Exp: 972374061
- Level: 205
Exp: 1050163985
- Level: 206
Exp: 1134177103
- Level: 207
Exp: 1224911271
- Level: 208
Exp: 1322904172
- Level: 209
Exp: 1428736505
- Level: 210
Exp: 1543035425
- Level: 211
Exp: 1666478259
- Level: 212
Exp: 1799796519
- Level: 213
Exp: 1943780240
- Level: 214
Exp: 2099282659
- Level: 215
Exp: 2267225271
- Level: 216
Exp: 2448603292
- Level: 217
Exp: 2644491555
- Level: 218
Exp: 2856050879
- Level: 219
Exp: 3084534949
- Level: 220
Exp: 3331297744
- Level: 221
Exp: 3597801563
- Level: 222
Exp: 3885625688
- Level: 223
Exp: 4196475743
- Level: 224
Exp: 4532193802
- Level: 225
Exp: 4894769306
- Level: 226
Exp: 5286350850
- Level: 227
Exp: 5709258918
- Level: 228
Exp: 6165999631
- Level: 229
Exp: 6659279601
- Level: 230
Exp: 7192021969
- Level: 231
Exp: 7767383726
- Level: 232
Exp: 8388774424
- Level: 233
Exp: 9059876377
- Level: 234
Exp: 9784666487
- Level: 235
Exp: 10567439805
- Level: 236
Exp: 11412834989
- Level: 237
Exp: 12325861788
- Level: 238
Exp: 13311930731
- Level: 239
Exp: 14376885189
- Level: 240
Exp: 15527036004
- Level: 241
Exp: 16769198884
- Level: 242
Exp: 18110734794
- Level: 243
Exp: 19559593577
- Level: 244
Exp: 21124361063
- Level: 245
Exp: 22814309948
- Level: 246
Exp: 24639454743
- Level: 247
Exp: 26610611122
- Level: 248
Exp: 28739460011
- Level: 249
Exp: 31038616811

View File

@@ -1,33 +0,0 @@
// 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)
6001,6009,Lif,537,60000,0,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,800,2400,220,480,10,30,10,30,20,40,30,50,20,50,10,30
6002,6010,Amistr,912,60000,0,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,1600,3600,120,360,20,50,10,30,20,50,20,50,10,30,10,30
6003,6011,Filir,910,60000,0,1,2,0,700,90,25,29,35,9,8,30,9,45,75,3,6,4,20,8,20,1,10,3,19,4,20,3,19,1200,3200,200,400,20,50,10,30,20,50,20,50,10,30,10,30
6004,6012,Vanilmirth,911,60000,0,1,0,0,700,80,11,11,11,11,11,11,11,30,150,0,7,1,30,1,30,1,30,1,30,1,30,1,30,1200,4800,480,640,10,30,10,30,10,30,20,50,10,50,10,100
6005,6013,Lif,537,60000,0,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,800,2400,220,480,10,30,10,30,20,40,30,50,20,50,10,30
6006,6014,Amistr,912,60000,0,1,2,0,700,320,10,20,17,35,11,24,12,80,130,1,4,8,20,4,20,4,20,1,10,3,19,3,19,1600,3600,120,360,20,50,10,30,20,50,20,50,10,30,10,30
6007,6015,Filir,910,60000,0,1,2,0,700,90,25,29,35,9,8,30,9,45,75,3,6,4,20,8,20,1,10,3,19,4,20,3,19,1200,3200,200,400,20,50,10,30,20,50,20,50,10,30,10,30
6008,6016,Vanilmirth,911,60000,0,1,0,0,700,80,11,11,11,11,11,11,11,30,150,0,7,1,30,1,30,1,30,1,30,1,30,1,30,1200,4800,480,640,10,30,10,30,10,30,20,50,10,50,10,100
6048,6048,Eira,6098,60000,1,1,8,4,700,150,40,17,20,15,35,24,12,40,160,20,42,13,39,28,42,15,25,14,48,16,36,9,18,1000,2000,10,200,1,10,1,10,1,10,1,10,1,10,1,10
6049,6049,Bayeri,6112,60000,1,1,2,6,700,320,10,20,17,35,11,24,12,90,360,48,52,18,36,8,36,16,32,22,44,12,24,20,36,1000,2000,10,200,1,10,1,10,1,10,1,10,1,10,1,10
6050,6050,Sera,6108,60000,1,1,4,2,700,90,25,29,35,9,8,30,9,60,240,36,64,10,25,16,32,5,25,7,35,28,40,20,40,1000,2000,10,200,1,10,1,10,1,10,1,10,1,10,1,10
6051,6051,Dieter,6104,60000,1,1,0,3,700,80,11,11,11,11,11,11,11,240,480,40,120,20,40,13,26,18,36,15,40,16,32,4,16,1000,2000,10,200,1,10,1,10,1,10,1,10,1,10,1,10
6052,6052,Eleanor,6115,60000,1,1,7,5,700,320,10,20,17,35,11,24,12,60,300,10,20,20,40,10,50,24,48,5,15,12,36,2,10,1000,2000,10,200,1,10,1,10,1,10,1,10,1,10,1,10

948
db/re/homunculus_db.yml Normal file
View File

@@ -0,0 +1,948 @@
# This file is a part of rAthena.
# Copyright(C) 2023 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Homunculus Database
###########################################################################
#
# Homunculus Settings
#
###########################################################################
# - BaseClass Base class.
# Name Name of homunculus.
# EvolutionClass Evolution class.
# Food Homunculus food item. (Default: Pet_Food)
# HungryDelay Time interval in milliseconds after which the hunger value is altered. (Default: 60000)
# Race Race. (Default: Demihuman)
# Element Element. (Default: Neutral)
# Size Size. (Default: Small)
# EvolutionSize Evolution size. (Default: Medium)
# AttackDelay Base ASPD. (Default: 700)
# Status: Homunculus stats.
# - Type Type of status.
# Base Base value of this status. (Default: 1)
# GrowthMinimum Minimum growth of this status. (Default: 0)
# GrowthMaximum Maximum growth of this status. (Default: 0)
# EvolutionMinimum Minimum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# EvolutionMaximum Maximum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# SkillTree: Skill tree.
# - Skill Skill name.
# Clear True to remove the given skill name. (Optional)
# MaxLevel Maximum level of skill.
# RequiredLevel Required base level of homunculus to learn. (Default: 0)
# RequiredIntimacy Required intimacy of homunculus to learn. (Default: 0)
# RequireEvolution Require the homunculus to be evolved to be available. (Default: false)
# Required: Prerequisite skills. (Default: null)
# - Skill Prerequisite skill name.
# Level Level of prerequisite skill.
# Clear True to remove the given prerequisite skill name. (Optional)
###########################################################################
Header:
Type: HOMUNCULUS_DB
Version: 1
Body:
- Class: Lif
Name: Lif
EvolutionClass: Lif_H
Status:
- Type: Hp
Base: 150
GrowthMinimum: 60
GrowthMaximum: 100
EvolutionMinimum: 800
EvolutionMaximum: 2400
- Type: Sp
Base: 40
GrowthMinimum: 4
GrowthMaximum: 9
EvolutionMinimum: 220
EvolutionMaximum: 480
- Type: Str
Base: 17
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Agi
Base: 20
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 15
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 20
EvolutionMaximum: 40
- Type: Int
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 30
EvolutionMaximum: 50
- Type: Dex
Base: 24
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Luk
Base: 12
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HLIF_HEAL
MaxLevel: 5
- Skill: HLIF_AVOID
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 3
- Skill: HLIF_BRAIN
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 5
- Skill: HLIF_CHANGE
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Amistr
Name: Amistr
EvolutionClass: Amistr_H
Food: Zargon
Race: Brute
Status:
- Type: Hp
Base: 320
GrowthMinimum: 80
GrowthMaximum: 130
EvolutionMinimum: 1600
EvolutionMaximum: 3600
- Type: Sp
Base: 10
GrowthMinimum: 1
GrowthMaximum: 4
EvolutionMinimum: 120
EvolutionMaximum: 360
- Type: Str
Base: 20
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Agi
Base: 17
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 24
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Luk
Base: 12
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HAMI_CASTLE
MaxLevel: 5
- Skill: HAMI_DEFENCE
MaxLevel: 5
Required:
- Skill: HAMI_CASTLE
Level: 5
- Skill: HAMI_SKIN
MaxLevel: 5
Required:
- Skill: HAMI_DEFENCE
Level: 3
- Skill: HAMI_BLOODLUST
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Filir
Name: Filir
EvolutionClass: Filir_H
Food: Garlet
Race: Brute
Status:
- Type: Hp
Base: 90
GrowthMinimum: 45
GrowthMaximum: 75
EvolutionMinimum: 1200
EvolutionMaximum: 3200
- Type: Sp
Base: 25
GrowthMinimum: 3
GrowthMaximum: 6
EvolutionMinimum: 200
EvolutionMaximum: 400
- Type: Str
Base: 29
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Agi
Base: 35
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 9
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Int
Base: 8
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 30
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Luk
Base: 9
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HFLI_MOON
MaxLevel: 5
- Skill: HFLI_FLEET
MaxLevel: 5
Required:
- Skill: HFLI_MOON
Level: 3
- Skill: HFLI_SPEED
MaxLevel: 5
Required:
- Skill: HFLI_FLEET
Level: 3
- Skill: HFLI_SBR44
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Vanilmirth
Name: Vanilmirth
EvolutionClass: Vanilmirth_H
Food: Scell
Race: Formless
Status:
- Type: Hp
Base: 80
GrowthMinimum: 30
GrowthMaximum: 150
EvolutionMinimum: 1200
EvolutionMaximum: 4800
- Type: Sp
Base: 11
GrowthMinimum: 0
GrowthMaximum: 7
EvolutionMinimum: 480
EvolutionMaximum: 640
- Type: Str
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Agi
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 50
- Type: Luk
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 100
SkillTree:
- Skill: HVAN_CAPRICE
MaxLevel: 5
- Skill: HVAN_CHAOTIC
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 3
- Skill: HVAN_INSTRUCT
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 5
- Skill: HVAN_EXPLOSION
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Lif2
Name: Lif
EvolutionClass: Lif_H2
Status:
- Type: Hp
Base: 150
GrowthMinimum: 60
GrowthMaximum: 100
EvolutionMinimum: 800
EvolutionMaximum: 2400
- Type: Sp
Base: 40
GrowthMinimum: 4
GrowthMaximum: 9
EvolutionMinimum: 220
EvolutionMaximum: 480
- Type: Str
Base: 17
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Agi
Base: 20
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 15
GrowthMinimum: 5
GrowthMaximum: 19
EvolutionMinimum: 20
EvolutionMaximum: 40
- Type: Int
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 30
EvolutionMaximum: 50
- Type: Dex
Base: 24
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Luk
Base: 12
GrowthMinimum: 6
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HLIF_HEAL
MaxLevel: 5
- Skill: HLIF_AVOID
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 3
- Skill: HLIF_BRAIN
MaxLevel: 5
Required:
- Skill: HLIF_HEAL
Level: 5
- Skill: HLIF_CHANGE
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Amistr2
Name: Amistr
EvolutionClass: Amistr_H2
Food: Zargon
Race: Brute
Status:
- Type: Hp
Base: 320
GrowthMinimum: 80
GrowthMaximum: 130
EvolutionMinimum: 1600
EvolutionMaximum: 3600
- Type: Sp
Base: 10
GrowthMinimum: 1
GrowthMaximum: 4
EvolutionMinimum: 120
EvolutionMaximum: 360
- Type: Str
Base: 20
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Agi
Base: 17
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 35
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 24
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Luk
Base: 12
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HAMI_CASTLE
MaxLevel: 5
- Skill: HAMI_DEFENCE
MaxLevel: 5
Required:
- Skill: HAMI_CASTLE
Level: 5
- Skill: HAMI_SKIN
MaxLevel: 5
Required:
- Skill: HAMI_DEFENCE
Level: 3
- Skill: HAMI_BLOODLUST
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Filir2
Name: Filir
EvolutionClass: Filir_H2
Food: Garlet
Race: Brute
Status:
- Type: Hp
Base: 90
GrowthMinimum: 45
GrowthMaximum: 75
EvolutionMinimum: 1200
EvolutionMaximum: 3200
- Type: Sp
Base: 25
GrowthMinimum: 3
GrowthMaximum: 6
EvolutionMinimum: 200
EvolutionMaximum: 400
- Type: Str
Base: 29
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Agi
Base: 35
GrowthMinimum: 8
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 9
GrowthMinimum: 1
GrowthMaximum: 10
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Int
Base: 8
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 30
GrowthMinimum: 4
GrowthMaximum: 20
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Luk
Base: 9
GrowthMinimum: 3
GrowthMaximum: 19
EvolutionMinimum: 10
EvolutionMaximum: 30
SkillTree:
- Skill: HFLI_MOON
MaxLevel: 5
- Skill: HFLI_FLEET
MaxLevel: 5
Required:
- Skill: HFLI_MOON
Level: 3
- Skill: HFLI_SPEED
MaxLevel: 5
Required:
- Skill: HFLI_FLEET
Level: 3
- Skill: HFLI_SBR44
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Vanilmirth2
Name: Vanilmirth
EvolutionClass: Vanilmirth_H2
Food: Scell
Race: Formless
Status:
- Type: Hp
Base: 80
GrowthMinimum: 30
GrowthMaximum: 150
EvolutionMinimum: 1200
EvolutionMaximum: 4800
- Type: Sp
Base: 11
GrowthMinimum: 0
GrowthMaximum: 7
EvolutionMinimum: 480
EvolutionMaximum: 640
- Type: Str
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Agi
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Vit
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 30
- Type: Int
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 20
EvolutionMaximum: 50
- Type: Dex
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 50
- Type: Luk
Base: 11
GrowthMinimum: 1
GrowthMaximum: 30
EvolutionMinimum: 10
EvolutionMaximum: 100
SkillTree:
- Skill: HVAN_CAPRICE
MaxLevel: 5
- Skill: HVAN_CHAOTIC
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 3
- Skill: HVAN_INSTRUCT
MaxLevel: 5
Required:
- Skill: HVAN_CAPRICE
Level: 5
- Skill: HVAN_EXPLOSION
MaxLevel: 3
RequiredIntimacy: 910
RequireEvolution: true
- Class: Eira
Name: Eira
Food: Small_Snow_Flower
Race: Angel
Element: Wind
Size: Medium
Status:
- Type: Hp
Base: 150
GrowthMinimum: 40
GrowthMaximum: 160
- Type: Sp
Base: 40
GrowthMinimum: 20
GrowthMaximum: 42
- Type: Str
Base: 17
GrowthMinimum: 13
GrowthMaximum: 39
- Type: Agi
Base: 20
GrowthMinimum: 28
GrowthMaximum: 42
- Type: Vit
Base: 15
GrowthMinimum: 15
GrowthMaximum: 25
- Type: Int
Base: 35
GrowthMinimum: 14
GrowthMaximum: 48
- Type: Dex
Base: 24
GrowthMinimum: 16
GrowthMaximum: 36
- Type: Luk
Base: 12
GrowthMinimum: 9
GrowthMaximum: 18
SkillTree:
- Skill: MH_LIGHT_OF_REGENE
MaxLevel: 5
RequiredLevel: 128
- Skill: MH_OVERED_BOOST
MaxLevel: 5
RequiredLevel: 114
- Skill: MH_ERASER_CUTTER
MaxLevel: 10
RequiredLevel: 106
- Skill: MH_XENO_SLASHER
MaxLevel: 10
RequiredLevel: 121
- Skill: MH_SILENT_BREEZE
MaxLevel: 5
RequiredLevel: 137
- Skill: MH_CLASSY_FLUTTER
MaxLevel: 10
RequiredLevel: 210
- Skill: MH_TWISTER_CUTTER
MaxLevel: 10
RequiredLevel: 215
- Skill: MH_ABSOLUTE_ZEPHYR
MaxLevel: 10
RequiredLevel: 230
- Class: Bayeri
Name: Bayeri
Food: Fresh_Plant
Race: Brute
Element: Holy
Size: Medium
Status:
- Type: Hp
Base: 320
GrowthMinimum: 90
GrowthMaximum: 360
- Type: Sp
Base: 10
GrowthMinimum: 48
GrowthMaximum: 52
- Type: Str
Base: 20
GrowthMinimum: 18
GrowthMaximum: 36
- Type: Agi
Base: 17
GrowthMinimum: 8
GrowthMaximum: 36
- Type: Vit
Base: 35
GrowthMinimum: 16
GrowthMaximum: 32
- Type: Int
Base: 11
GrowthMinimum: 22
GrowthMaximum: 44
- Type: Dex
Base: 24
GrowthMinimum: 12
GrowthMaximum: 24
- Type: Luk
Base: 12
GrowthMinimum: 20
GrowthMaximum: 36
SkillTree:
- Skill: MH_STAHL_HORN
MaxLevel: 10
RequiredLevel: 105
- Skill: MH_GOLDENE_FERSE
MaxLevel: 5
RequiredLevel: 112
- Skill: MH_STEINWAND
MaxLevel: 5
RequiredLevel: 121
- Skill: MH_HEILIGE_STANGE
MaxLevel: 10
RequiredLevel: 138
- Skill: MH_ANGRIFFS_MODUS
MaxLevel: 5
RequiredLevel: 130
- Skill: MH_LICHT_GEHORN
MaxLevel: 10
RequiredLevel: 210
- Skill: MH_GLANZEN_SPIES
MaxLevel: 10
RequiredLevel: 215
- Skill: MH_HEILIGE_PFERD
MaxLevel: 10
RequiredLevel: 230
- Skill: MH_GOLDENE_TONE
MaxLevel: 10
RequiredLevel: 230
- Class: Sera
Name: Sera
Food: Apple_Pudding
Race: Insect
Element: Earth
Size: Medium
Status:
- Type: Hp
Base: 90
GrowthMinimum: 60
GrowthMaximum: 240
- Type: Sp
Base: 25
GrowthMinimum: 36
GrowthMaximum: 64
- Type: Str
Base: 29
GrowthMinimum: 10
GrowthMaximum: 25
- Type: Agi
Base: 35
GrowthMinimum: 16
GrowthMaximum: 32
- Type: Vit
Base: 9
GrowthMinimum: 5
GrowthMaximum: 25
- Type: Int
Base: 8
GrowthMinimum: 7
GrowthMaximum: 35
- Type: Dex
Base: 30
GrowthMinimum: 28
GrowthMaximum: 40
- Type: Luk
Base: 9
GrowthMinimum: 20
GrowthMaximum: 40
SkillTree:
- Skill: MH_SUMMON_LEGION
MaxLevel: 5
RequiredLevel: 132
- Skill: MH_NEEDLE_OF_PARALYZE
MaxLevel: 10
RequiredLevel: 105
- Skill: MH_POISON_MIST
MaxLevel: 5
RequiredLevel: 116
- Skill: MH_PAIN_KILLER
MaxLevel: 10
RequiredLevel: 123
- Skill: MH_POLISHING_NEEDLE
MaxLevel: 10
RequiredLevel: 210
- Skill: MH_TOXIN_OF_MANDARA
MaxLevel: 10
RequiredLevel: 215
- Skill: MH_NEEDLE_STINGER
MaxLevel: 10
RequiredLevel: 230
- Class: Dieter
Name: Dieter
Food: Big_Cell
Race: Formless
Element: Fire
Size: Medium
Status:
- Type: Hp
Base: 80
GrowthMinimum: 240
GrowthMaximum: 480
- Type: Sp
Base: 11
GrowthMinimum: 40
GrowthMaximum: 120
- Type: Str
Base: 11
GrowthMinimum: 20
GrowthMaximum: 40
- Type: Agi
Base: 11
GrowthMinimum: 13
GrowthMaximum: 26
- Type: Vit
Base: 11
GrowthMinimum: 18
GrowthMaximum: 36
- Type: Int
Base: 11
GrowthMinimum: 15
GrowthMaximum: 40
- Type: Dex
Base: 11
GrowthMinimum: 16
GrowthMaximum: 32
- Type: Luk
Base: 11
GrowthMinimum: 4
GrowthMaximum: 16
SkillTree:
- Skill: MH_MAGMA_FLOW
MaxLevel: 5
RequiredLevel: 122
- Skill: MH_GRANITIC_ARMOR
MaxLevel: 5
RequiredLevel: 116
- Skill: MH_LAVA_SLIDE
MaxLevel: 10
RequiredLevel: 109
- Skill: MH_PYROCLASTIC
MaxLevel: 10
RequiredLevel: 131
- Skill: MH_VOLCANIC_ASH
MaxLevel: 5
RequiredLevel: 102
- Skill: MH_BLAST_FORGE
MaxLevel: 10
RequiredLevel: 215
- Skill: MH_TEMPERING
MaxLevel: 10
RequiredLevel: 230
- Skill: MH_BLAZING_LAVA
MaxLevel: 10
RequiredLevel: 210
- Class: Eleanor
Name: Eleanor
Food: Bun_
Element: Poison
Size: Medium
Status:
- Type: Hp
Base: 320
GrowthMinimum: 60
GrowthMaximum: 300
- Type: Sp
Base: 10
GrowthMinimum: 10
GrowthMaximum: 20
- Type: Str
Base: 20
GrowthMinimum: 20
GrowthMaximum: 40
- Type: Agi
Base: 17
GrowthMinimum: 10
GrowthMaximum: 50
- Type: Vit
Base: 35
GrowthMinimum: 24
GrowthMaximum: 48
- Type: Int
Base: 11
GrowthMinimum: 5
GrowthMaximum: 15
- Type: Dex
Base: 24
GrowthMinimum: 12
GrowthMaximum: 36
- Type: Luk
Base: 12
GrowthMinimum: 2
GrowthMaximum: 10
SkillTree:
- Skill: MH_STYLE_CHANGE
MaxLevel: 1
RequiredLevel: 100
- Skill: MH_SONIC_CRAW
MaxLevel: 5
RequiredLevel: 100
- Skill: MH_SILVERVEIN_RUSH
MaxLevel: 10
RequiredLevel: 114
- Skill: MH_MIDNIGHT_FRENZY
MaxLevel: 10
RequiredLevel: 128
- Skill: MH_TINDER_BREAKER
MaxLevel: 5
RequiredLevel: 100
- Skill: MH_CBC
MaxLevel: 5
RequiredLevel: 112
- Skill: MH_EQC
MaxLevel: 5
RequiredLevel: 133
- Skill: MH_BRUSHUP_CLAW
MaxLevel: 10
RequiredLevel: 210
- Skill: MH_BLAZING_AND_FURIOUS
MaxLevel: 10
RequiredLevel: 215
- Skill: MH_THE_ONE_FIGHTER_RISES
MaxLevel: 10
RequiredLevel: 230

View File

@@ -375,3 +375,204 @@ Body:
Map: 1@begi
X: 100
Y: 22
- Id: 49
Name: Old Glast Heim (Challenge Mode)
Enter:
Map: 1@gl_he
X: 150
Y: 28
- Id: 50
Name: Old Glast Heim (Beginner)
Enter:
Map: 1@gl_k2
X: 150
Y: 20
- Id: 51
Name: Fall of Glast Heim (Normal)
Enter:
Map: 1@gl_prq
X: 299
Y: 19
- Id: 52
Name: Fall of Glast Heim (Advanced)
Enter:
Map: 1@gl_prq
X: 79
Y: 22
- Id: 53
Name: Twilight Garden
Enter:
Map: 1@bamn
X: 100
Y: 320
AdditionalMaps:
1@bamq: true
- Id: 54
Name: Hey! Sweety
Enter:
Map: 1@bamq
X: 16
Y: 39
AdditionalMaps:
1@bamn: true
- Id: 55
Name: Farm Lost in Time
Enter:
Map: 1@lost
X: 161
Y: 42
- Id: 56
Name: Water Garden
Enter:
Map: 1@ghg
X: 64
Y: 69
- Id: 57
Name: Water Garden Hard
Enter:
Map: 1@ghg
X: 64
Y: 69
- Id: 58
Name: Hidden Flower Garden
Enter:
Map: 1@herbs
X: 51
Y: 273
- Id: 59
Name: Security Area 1
Enter:
Map: 1@herbs
X: 45
Y: 208
- Id: 60
Name: Security Area 2
Enter:
Map: 1@herbs
X: 59
Y: 214
- Id: 61
Name: Sunken Tower
Enter:
Map: 1@ch_u
X: 13
Y: 59
- Id: 62
Name: Constellation Tower
Enter:
Map: 1@ch_t
X: 48
Y: 183
AdditionalMaps:
2@ch_t: true
3@ch_t: true
- Id: 63
Name: Tomb of Remorse
Enter:
Map: 1@spa2
X: 51
Y: 197
- Id: 64
Name: Geffen Night Arena
Enter:
Map: 1@ge_sn
X: 89
Y: 48
- Id: 65
Name: Airship Crash
Enter:
Map: 1@mjo1
X: 219
Y: 379
AdditionalMaps:
1@mjo2: true
- Id: 66
Name: Thanatos Tower
Enter:
Map: 1@thts
X: 74
Y: 371
AdditionalMaps:
2@thts: true
3@thts: true
4@thts: true
5@thts: true
6@thts: true
7@thts: true
8@thts: true
- Id: 67
Name: The Maze of Oz
Enter:
Map: 1@oz
X: 284
Y: 167
- Id: 68
Name: Thor Gunsu Base
Enter:
Map: 1@tcamp
X: 103
Y: 237
- Id: 69
Name: A Gathering Place of Wolves
Enter:
Map: 1@nyr
X: 194
Y: 30
AdditionalMaps:
2@nyr: true
- Id: 70
Name: Sanctuary Purification
Enter:
Map: 1@nyr
X: 194
Y: 30
AdditionalMaps:
2@nyr: true
- Id: 71
Name: Villa of High Priest
Enter:
Map: 1@adv
X: 123
Y: 17
- Id: 72
Name: Villa of Deception
Enter:
Map: 1@advs
X: 111
Y: 19
- Id: 73
Name: Villa of Deception Advanced
Enter:
Map: 1@advs
X: 111
Y: 19
- Id: 74
Name: Bagot Laboratory
Enter:
Map: 1@jorlab
X: 57
Y: 45
- Id: 75
Name: Confused Snake's Nest
Enter:
Map: 1@jorchs
X: 272
Y: 20
- Id: 76
Name: Iwin Patrol
Enter:
Map: 1@iwp
X: 380
Y: 229
- Id: 77
Name: Airship Destruction
Enter:
Map: 1@whl
X: 32
Y: 53
- Id: 78
Name: Simulation Battle
Enter:
Map: 1@jorlab
X: 57
Y: 45

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2866,6 +2866,23 @@ Body:
getitem 12796,10;
getitem 12684,5;
getitembound 23919,1,Bound_Account;
- Id: 9991
AegisName: Boarding_Halter_Box_7d
Name: "[Not for Sale] Boarding Halter 7D Box"
Type: Cash
Weight: 10
Flags:
Container: true
Trade:
NoDrop: true
NoTrade: true
NoSell: true
NoCart: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
getgroupitem(IG_Boarding_Halter_Box);
- Id: 9999
AegisName: Season_Evt_Reward_2
Name: Sweets Snack Pack
@@ -40363,6 +40380,13 @@ Body:
Container: true
Script: |
getgroupitem(IG_Libra_Scroll);
- Id: 16674
AegisName: New_Insurance_Box
Name: 10 New Life Insurance Box
Type: Usable
Weight: 10
Script: |
getitem 6413,10;
- Id: 16675
AegisName: Splash_Scroll
Name: Splash Scroll
@@ -48610,21 +48634,6 @@ Body:
NoAuction: true
Script: |
getgroupitem(IG_Blessing_Scarlet_Scroll);
- Id: 17780
AegisName: Cash_Can_Box
Name: Cash Can Box
Type: Cash
Weight: 10
Trade:
NoDrop: true
NoTrade: true
NoSell: true
NoCart: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
getitem 25308,1;
- Id: 17712
AegisName: 3_Life_Potion_pack9
Name: Three Master Package IX
@@ -48947,6 +48956,21 @@ Body:
NoAuction: true
Script: |
getgroupitem(IG_3_LIFE_POTION_10PACK10);
- Id: 17780
AegisName: Cash_Can_Box
Name: Cash Can Box
Type: Cash
Weight: 10
Trade:
NoDrop: true
NoTrade: true
NoSell: true
NoCart: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
getitem 25308,1;
- Id: 17783
AegisName: Unlimited_10_Box6
Name: Unlimited Box VI (10)
@@ -61610,7 +61634,7 @@ Body:
Script: |
getgroupitem(IG_MD_AIRBOAT_REWARD);
- Id: 100465
AegisName: aegis_100465
AegisName: Stone_Robe_Box
Name: 3rd/Expanded Stone (Garment) Box
Type: Usable
Weight: 10
@@ -61739,7 +61763,7 @@ Body:
Script: |
laphine_upgrade();
- Id: 100495
AegisName: aegis_100495
AegisName: Stone_Robe2_Box
Name: 3rd/Expanded Stone II (Garment) Box
Type: Usable
Weight: 10
@@ -61748,7 +61772,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_GARMENT_BOX2);
- Id: 100496
AegisName: aegis_100496
AegisName: Stone_Top_Box
Name: Rebirth/Expanded Stone (Top) Box
Type: Usable
Weight: 10
@@ -61757,7 +61781,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_TOP_BOX);
- Id: 100497
AegisName: aegis_100497
AegisName: Stone_Top2_Box
Name: Rebirth/Expanded Stone II (Top) Box
Type: Usable
Weight: 10
@@ -61766,7 +61790,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_TOP_BOX2);
- Id: 100498
AegisName: aegis_100498
AegisName: Stone_Middle_Box
Name: Rebirth/Expanded Stone (Middle) Box
Type: Usable
Weight: 10
@@ -61775,7 +61799,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_MIDDLE_BOX);
- Id: 100499
AegisName: aegis_100499
AegisName: Stone_Middle2_Box
Name: Rebirth/Expanded Stone II (Middle) Box
Type: Usable
Weight: 10
@@ -61784,7 +61808,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_MIDDLE_BOX2);
- Id: 100500
AegisName: aegis_100500
AegisName: Stone_Bottom_Box
Name: Rebirth/Expanded Stone (Bottom) Box
Type: Usable
Weight: 10
@@ -61793,7 +61817,7 @@ Body:
Script: |
getgroupitem(IG_THIRD_JOB_STONE_BOTTOM_BOX);
- Id: 100501
AegisName: aegis_100501
AegisName: Stone_Bottom2_Box
Name: Rebirth/Expanded Stone II (Bottom) Box
Type: Usable
Weight: 10
@@ -65363,6 +65387,23 @@ Body:
BuyingStore: true
Script: |
laphine_synthesis();
- Id: 101352
AegisName: E_Bubble_Gum_Box10
Name: "[Not For Sale] Bubble Gum Box"
Type: Cash
Weight: 100
Flags:
UniqueId: true
Trade:
NoDrop: true
NoTrade: true
NoSell: true
NoCart: true
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
getitem 12264,10;
- Id: 101355
AegisName: OS_Weapon_Reform
Name: OS Weapon Modification Box
@@ -66034,6 +66075,15 @@ Body:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box29);
- Id: 102193
AegisName: aegis_102193
Name: Costume Enchant Stone Box 30
Type: Usable
Weight: 10
Flags:
Container: true
Script: |
getgroupitem(IG_Enchant_Stone_Box30);
- Id: 200003
AegisName: LI_HD_Oridecon_Box2
Name: (Limited) HD Oridecon Box(Blacksmith)(30)

File diff suppressed because it is too large Load Diff

View File

@@ -24036,9 +24036,9 @@ Body:
Rate: 160
- Item: ElectricEffect_Middle
Rate: 160
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: ReloadStone_Top
Rate: 240
@@ -24058,17 +24058,17 @@ Body:
Rate: 360
- Item: Critical_Stone_Bottom
Rate: 360
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Group: THIRD_JOB_STONE_GARMENT_BOX
SubGroups:
@@ -30431,9 +30431,9 @@ Body:
Rate: 250
- Item: CastingStone_Bottom
Rate: 250
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 250
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 250
- Item: Range_Stone_Top
Rate: 250
@@ -30457,17 +30457,17 @@ Body:
Rate: 380
- Item: Critical_Stone_Bottom
Rate: 380
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 560
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 560
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 560
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 560
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 560
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 560
- Group: ENCHANT_STONE_BOX23
SubGroups:
@@ -30527,9 +30527,9 @@ Body:
Rate: 140
- Item: ASPDStone_Top
Rate: 160
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: Range_Stone
Rate: 240
@@ -30567,17 +30567,17 @@ Body:
Rate: 360
- Item: Critical_Stone_Bottom
Rate: 360
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Group: ENCHANT_STONE_BOX24
SubGroups:
@@ -30671,9 +30671,9 @@ Body:
Rate: 160
- Item: WaterFieldEffect_Bottom
Rate: 160
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: Range_Stone
Rate: 240
@@ -30693,17 +30693,17 @@ Body:
Rate: 360
- Item: Critical_Stone_Bottom
Rate: 360
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Group: ENCHANT_STONE_BOX25
SubGroups:
@@ -30797,9 +30797,9 @@ Body:
Rate: 160
- Item: WaterFieldEffect_Bottom
Rate: 160
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: ReloadStone_Top
Rate: 240
@@ -30819,17 +30819,17 @@ Body:
Rate: 360
- Item: Critical_Stone_Bottom
Rate: 360
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Group: ENCHANT_STONE_BOX27
SubGroups:
@@ -30887,9 +30887,9 @@ Body:
Rate: 80
- Item: GuillcrossStone_Bottom3
Rate: 80
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: Magic_Stone_Top
Rate: 240
@@ -30933,17 +30933,17 @@ Body:
Rate: 150
- Item: AssacrossStone_Bottom2
Rate: 150
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Item: CastingStone_Top
Rate: 360
@@ -31102,9 +31102,9 @@ Body:
Rate: 80
- Item: ReaperStone_Bottom3
Rate: 80
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: Magic_Stone_Top
Rate: 240
@@ -31142,17 +31142,17 @@ Body:
Rate: 240
- Item: Range_Stone_Bottom
Rate: 240
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Item: CastingStone_Top
Rate: 360
@@ -31442,9 +31442,9 @@ Body:
Rate: 80
- Item: DoramStone_Bottom3
Rate: 80
- Item: aegis_100465
- Item: Stone_Robe_Box
Rate: 160
- Item: aegis_100495
- Item: Stone_Robe2_Box
Rate: 160
- Item: Magic_Stone_Top
Rate: 240
@@ -31482,17 +31482,17 @@ Body:
Rate: 240
- Item: EXPStone_Top
Rate: 240
- Item: aegis_100496
- Item: Stone_Top_Box
Rate: 360
- Item: aegis_100497
- Item: Stone_Top2_Box
Rate: 360
- Item: aegis_100498
- Item: Stone_Middle_Box
Rate: 360
- Item: aegis_100499
- Item: Stone_Middle2_Box
Rate: 360
- Item: aegis_100500
- Item: Stone_Bottom_Box
Rate: 360
- Item: aegis_100501
- Item: Stone_Bottom2_Box
Rate: 360
- Item: CastingStone_Top
Rate: 360
@@ -49192,3 +49192,195 @@ Body:
Rate: 1667
- Item: S_Archer_earring
Rate: 1667
- Group: ENCHANT_STONE_BOX30
SubGroups:
- SubGroup: 1
List:
- Item: Range_Stone_Robe_D
Rate: 10
- Item: Melee_Stone_Robe_D
Rate: 10
- Item: Magic_Stone_Robe_D
Rate: 10
- Item: SmatkStone_Robe
Rate: 10
- Item: M_PATKStone_Robe
Rate: 10
- Item: R_PATKStone_Robe
Rate: 10
- Item: ReloadStone_Robe_D
Rate: 10
- Item: CriticalStone_Robe_D
Rate: 10
- Item: Critical_Stone_Robe
Rate: 20
- Item: CastStone_Robe_D
Rate: 40
- Item: CastStone_Robe
Rate: 80
- Item: KagerouStone_Top3
Rate: 30
- Item: KagerouStone_Middle3
Rate: 30
- Item: KagerouStone_Bottom3
Rate: 30
- Item: OboroStone_Top3
Rate: 30
- Item: OboroStone_Middle3
Rate: 30
- Item: OboroStone_Bottom3
Rate: 30
- Item: DoramStone_Top3
Rate: 30
- Item: DoramStone_Middle3
Rate: 30
- Item: DoramStone_Bottom3
Rate: 30
- Item: StarStone_Top3
Rate: 30
- Item: StarStone_Middle3
Rate: 30
- Item: StarStone_Bottom3
Rate: 30
- Item: RebelStone_Top3
Rate: 30
- Item: RebelStone_Middle3
Rate: 30
- Item: RebelStone_Bottom3
Rate: 30
- Item: ReaperStone_Top3
Rate: 30
- Item: ReaperStone_Middle3
Rate: 30
- Item: ReaperStone_Bottom3
Rate: 30
- Item: SuraStone_Top3
Rate: 30
- Item: SuraStone_Middle3
Rate: 30
- Item: SuraStone_Bottom3
Rate: 30
- Item: MechanicStone_Top3
Rate: 30
- Item: MechanicStone_Middle3
Rate: 30
- Item: MechanicStone_Bottom3
Rate: 30
- Item: GuillcrossStone_Top3
Rate: 30
- Item: GuillcrossStone_Middle3
Rate: 30
- Item: GuillcrossStone_Bottom3
Rate: 30
- Item: ArchbishopStone_Top3
Rate: 30
- Item: ArchbishopStone_Middle3
Rate: 30
- Item: ArchbishopStone_Bottom3
Rate: 30
- Item: RangerStone_Top3
Rate: 30
- Item: RangerStone_Middle3
Rate: 30
- Item: RangerStone_Bottom3
Rate: 30
- Item: ShadowchasStone_Top3
Rate: 30
- Item: ShadowchasStone_Middle3
Rate: 30
- Item: ShadowchasStone_Bottom3
Rate: 30
- Item: WanderMinsStone_Top3
Rate: 30
- Item: WanderMinsStone_Middle3
Rate: 30
- Item: WanderMinsStone_Bottom3
Rate: 30
- Item: GeneticStone_Top3
Rate: 30
- Item: GeneticStone_Middle3
Rate: 30
- Item: GeneticStone_Bottom3
Rate: 30
- Item: SorcererStone_Top3
Rate: 30
- Item: SorcererStone_Middle3
Rate: 30
- Item: SorcererStone_Bottom3
Rate: 30
- Item: RuneknightStone_Top3
Rate: 30
- Item: RuneknightStone_Middle3
Rate: 30
- Item: RuneknightStone_Bottom3
Rate: 30
- Item: WarlockStone_Top3
Rate: 30
- Item: WarlockStone_Middle3
Rate: 30
- Item: WarlockStone_Bottom3
Rate: 30
- Item: RoyalguardStone_Top3
Rate: 30
- Item: RoyalguardStone_Middle3
Rate: 30
- Item: RoyalguardStone_Bottom3
Rate: 30
- Item: Stone_Robe_Box
Rate: 180
- Item: Stone_Robe2_Box
Rate: 180
- Item: Magic_Stone_Top
Rate: 200
- Item: Magic_Stone_Middle
Rate: 200
- Item: Magic_Stone_Bottom
Rate: 200
- Item: Range_Stone_Top
Rate: 200
- Item: Range_Stone
Rate: 200
- Item: Range_Stone_Bottom
Rate: 200
- Item: Melee_Stone_Top
Rate: 200
- Item: Melee_Stone_Middle
Rate: 200
- Item: Melee_Stone_Bottom
Rate: 200
- Item: ReloadStone_Top
Rate: 200
- Item: ReloadStone_Middle
Rate: 200
- Item: ReloadStone_Bottom
Rate: 200
- Item: EXPStone_Middle
Rate: 200
- Item: EXPStone_Bottom
Rate: 200
- Item: EXPStone_Top
Rate: 200
- Item: Stone_Top_Box
Rate: 400
- Item: Stone_Top2_Box
Rate: 400
- Item: Stone_Middle_Box
Rate: 400
- Item: Stone_Middle2_Box
Rate: 400
- Item: Stone_Bottom_Box
Rate: 400
- Item: Stone_Bottom2_Box
Rate: 400
- Item: CastingStone_Top
Rate: 400
- Item: CastingStone_Middle
Rate: 400
- Item: CastingStone_Bottom
Rate: 400
- Item: Critical_Stone
Rate: 400
- Item: Critical_Stone_Top
Rate: 400
- Item: Critical_Stone_Bottom
Rate: 400

View File

@@ -2560,17 +2560,17 @@ Body:
- Item: Up_Crimson_Rose
- Item: Up_OneSkyOneSun
- Item: Up_SoulWeight
- Item: aegis_2064
- Item: Comp_Iron_Staff
- Item: Comp_Undine_Spear_K
- Item: Comp_Royal_Bow_K
- Item: Comp_Shadow_Staff_K
- Item: aegis_1873
- Item: Comp_Iron_Nail_K
- Item: Comp_Sword_Of_Bluefire
- Item: Comp_Oriental_Sword
- Item: aegis_18202
- Item: aegis_1350
- Item: Comp_Narcis_Bow
- Item: Comp_Avenger
- Item: Comp_Magic_Sword
- Item: aegis_28646
- Item: Comp_D_Hunt_Bible_K
- Item: Comp_Shiver_Katar_K_TH
- Item: Comp_Demon_S_Shot
- Item: Comp_Sharp_Wind_Sword
@@ -2578,7 +2578,7 @@ Body:
- Item: Comp_Crimson_Rose
- Item: Comp_The_Black_Gatling
- Item: Comp_MeawFoxtail
- Item: aegis_21066
- Item: Comp_Dragonic_Slayer
- Item: Comp_Fatalist
- Item: Comp_Light_Blade
- Item: Comp_Scalet_DragonL_Bow
@@ -2656,17 +2656,17 @@ Body:
- Item: Up_Crimson_Rose
- Item: Up_OneSkyOneSun
- Item: Up_SoulWeight
- Item: aegis_2064
- Item: Comp_Iron_Staff
- Item: Comp_Undine_Spear_K
- Item: Comp_Royal_Bow_K
- Item: Comp_Shadow_Staff_K
- Item: aegis_1873
- Item: Comp_Iron_Nail_K
- Item: Comp_Sword_Of_Bluefire
- Item: Comp_Oriental_Sword
- Item: aegis_18202
- Item: aegis_1350
- Item: Comp_Narcis_Bow
- Item: Comp_Avenger
- Item: Comp_Magic_Sword
- Item: aegis_28646
- Item: Comp_D_Hunt_Bible_K
- Item: Comp_Shiver_Katar_K_TH
- Item: Comp_Demon_S_Shot
- Item: Comp_Sharp_Wind_Sword
@@ -2674,7 +2674,7 @@ Body:
- Item: Comp_Crimson_Rose
- Item: Comp_The_Black_Gatling
- Item: Comp_MeawFoxtail
- Item: aegis_21066
- Item: Comp_Dragonic_Slayer
- Item: Comp_Fatalist
- Item: Comp_Light_Blade
- Item: Comp_Scalet_DragonL_Bow

View File

@@ -97145,25 +97145,447 @@ Body:
- Item: R001_Bestia_Card
Rate: 1
StealProtected: true
# - Id: 20935
# AegisName: GAN_CEANN
# - Id: 20936
# AegisName: DISGUISER
# - Id: 20937
# AegisName: BRUTAL_MURDERER
# - Id: 20938
# AegisName: GHOST_CUBE
# - Id: 20939
# AegisName: LUDE_GAL
# - Id: 20940
# AegisName: BLUEMOON_LOLI_RURI
# - Id: 20941
# AegisName: GROTE
# - Id: 20942
# AegisName: PIERROTZOIST
# - Id: 20943
# AegisName: DEATH_WITCH
# DamageTaken: 10
- Id: 20935
AegisName: GAN_CEANN
Name: Gan Ceann
Level: 215
Hp: 11785610
BaseExp: 267854
JobExp: 188128
Attack: 7951
Attack2: 922
Defense: 380
MagicDefense: 99
MagicResistance: 130
Resistance: 130
Str: 278
Agi: 166
Vit: 121
Int: 121
Dex: 178
Luk: 123
AttackRange: 2
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 155
AttackDelay: 238
AttackMotion: 576
DamageMotion: 360
Ai: 04
Drops:
- Item: Broken_Armor_Piece
Rate: 2400
- Item: Broken_Steel_Piece
Rate: 1600
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Shadowdecon
Rate: 12
- Item: Zelunium
Rate: 12
- Item: Gan_Ceann_Card
Rate: 1
StealProtected: true
- Id: 20936
AegisName: DISGUISER
Name: Disguiser
Level: 254
Hp: 42303800
BaseExp: 335956
JobExp: 235169
Attack: 9874
Attack2: 1230
Defense: 542
MagicDefense: 168
MagicResistance: 171
Resistance: 187
Str: 314
Agi: 203
Vit: 147
Int: 135
Dex: 201
Luk: 198
AttackRange: 2
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Demon
Element: Undead
ElementLevel: 2
WalkSpeed: 150
AttackDelay: 384
AttackMotion: 768
DamageMotion: 384
Ai: 04
Drops:
- Item: Red_Scarf
Rate: 2500
- Item: Tangled_Chain
Rate: 1800
- Item: White_Powder
Rate: 50
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Zelunium
Rate: 25
- Item: Shadowdecon
Rate: 25
- Item: Disguiser_Card
Rate: 1
StealProtected: true
- Id: 20937
AegisName: BRUTAL_MURDERER
Name: Brutal Murderer
Level: 214
Hp: 13909270
BaseExp: 269952
JobExp: 188966
Attack: 8135
Attack2: 998
Defense: 470
MagicDefense: 80
MagicResistance: 143
Resistance: 187
Str: 277
Agi: 174
Vit: 175
Int: 134
Dex: 131
Luk: 130
AttackRange: 2
SkillRange: 10
ChaseRange: 12
Size: Large
Race: Demihuman
Element: Neutral
ElementLevel: 2
WalkSpeed: 175
AttackDelay: 336
AttackMotion: 672
DamageMotion: 288
Ai: 04
Drops:
- Item: Old_Manteau
Rate: 2400
- Item: Rusty_Cleaver
Rate: 1600
- Item: Mr_Scream
Rate: 20
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Shadowdecon
Rate: 12
- Item: Zelunium
Rate: 12
- Item: Brutal_Murderer_Card
Rate: 1
StealProtected: true
- Id: 20938
AegisName: GHOST_CUBE
Name: Ghost Cube
Level: 213
Hp: 12735150
BaseExp: 261542
JobExp: 183079
Attack: 8114
Attack2: 1032
Defense: 482
MagicDefense: 114
MagicResistance: 171
Resistance: 171
Str: 274
Agi: 185
Vit: 161
Int: 161
Dex: 177
Luk: 169
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Small
Race: Undead
Element: Undead
ElementLevel: 1
WalkSpeed: 150
AttackDelay: 624
AttackMotion: 1248
DamageMotion: 576
Ai: 04
Drops:
- Item: Piece_Of_Black_Cloth
Rate: 2400
- Item: Ectoplasm
Rate: 2000
- Item: Black_Powder
Rate: 250
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Shadowdecon
Rate: 12
- Item: Zelunium
Rate: 12
- Item: Ghost_Cube_Card
Rate: 1
StealProtected: true
- Id: 20939
AegisName: LUDE_GAL
Name: Lude Gal
Level: 213
Hp: 12840680
BaseExp: 259877
JobExp: 181914
Attack: 7925
Attack2: 1001
Defense: 410
MagicDefense: 105
MagicResistance: 151
Resistance: 179
Str: 274
Agi: 171
Vit: 168
Int: 142
Dex: 168
Luk: 134
AttackRange: 2
SkillRange: 10
ChaseRange: 12
Size: Small
Race: Undead
Element: Undead
ElementLevel: 2
WalkSpeed: 150
AttackDelay: 480
AttackMotion: 960
DamageMotion: 480
Ai: 04
Drops:
- Item: Pumpkin_Bucket
Rate: 2500
- Item: Ectoplasm
Rate: 2000
- Item: Transparent_Cloth
Rate: 500
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Shadowdecon
Rate: 12
- Item: Zelunium
Rate: 12
- Item: Lude_Gal_Card
Rate: 1
StealProtected: true
- Id: 20940
AegisName: BLUEMOON_LOLI_RURI
Name: Blue Moon Loli Ruri
Level: 255
Hp: 46338500
BaseExp: 339785
JobExp: 237850
Attack: 9325
Attack2: 1345
Defense: 457
MagicDefense: 191
MagicResistance: 260
Resistance: 238
Str: 301
Agi: 205
Vit: 187
Int: 204
Dex: 192
Luk: 205
AttackRange: 2
SkillRange: 10
ChaseRange: 12
Size: Large
Race: Demon
Element: Water
ElementLevel: 3
WalkSpeed: 125
AttackDelay: 510
AttackMotion: 1020
DamageMotion: 576
Ai: 04
Drops:
- Item: Black_Kitty_Doll
Rate: 500
- Item: Striped_Socks
Rate: 2400
- Item: Bat_Cage
Rate: 2000
- Item: Loki's_Whispers
Rate: 2
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Shadowdecon
Rate: 25
- Item: Bluemoon_Loli_Ruri_Card
Rate: 1
StealProtected: true
- Id: 20941
AegisName: GROTE
Name: Grote
Level: 253
Hp: 47842600
BaseExp: 346622
JobExp: 242635
Attack: 9354
Attack2: 1320
Defense: 456
MagicDefense: 117
MagicResistance: 153
Resistance: 237
Str: 311
Agi: 207
Vit: 187
Int: 121
Dex: 199
Luk: 207
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Large
Race: Demon
Element: Earth
ElementLevel: 2
WalkSpeed: 180
AttackDelay: 792
AttackMotion: 1584
DamageMotion: 576
Ai: 04
Drops:
- Item: Hanging_Doll
Rate: 1000
- Item: Rotten_Rope
Rate: 2500
- Item: Tree_Knot
Rate: 2000
- Item: Branch_Of_Dead_Tree
Rate: 5
- Item: Bloody_Dead_Branch
Rate: 2
- Item: Shadowdecon
Rate: 25
- Item: Zelunium
Rate: 25
- Item: Grote_Card
Rate: 1
StealProtected: true
- Id: 20942
AegisName: PIERROTZOIST
Name: Pierrotzoist
Level: 255
Hp: 38506310
BaseExp: 339451
JobExp: 237616
Attack: 9356
Attack2: 1247
Defense: 541
MagicDefense: 134
MagicResistance: 226
Resistance: 212
Str: 311
Agi: 177
Vit: 166
Int: 177
Dex: 201
Luk: 169
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Demon
Element: Dark
ElementLevel: 2
WalkSpeed: 155
AttackDelay: 768
AttackMotion: 1536
DamageMotion: 480
Ai: 04
Drops:
- Item: Broken_Needle
Rate: 2400
- Item: Needle_Pouch
Rate: 2000
- Item: Stuffed_Doll
Rate: 40
- Item: Ectoplasm
Rate: 150
- Item: Shadowdecon_Ore
Rate: 150
- Item: Zelunium_Ore
Rate: 150
- Item: Zelunium
Rate: 25
- Item: Pierrotzoist_Card
Rate: 1
StealProtected: true
- Id: 20943
AegisName: DEATH_WITCH
Name: Death Witch
Level: 255
Hp: 398856250
BaseExp: 9051055
JobExp: 6335739
Attack: 14658
Attack2: 2687
Defense: 687
MagicDefense: 210
MagicResistance: 539
Resistance: 273
Str: 424
Agi: 236
Vit: 214
Int: 423
Dex: 241
Luk: 174
AttackRange: 3
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Demihuman
Element: Dark
ElementLevel: 2
WalkSpeed: 150
AttackDelay: 517
AttackMotion: 1134
DamageMotion: 480
DamageTaken: 10
Ai: 21
Class: Boss
Modes:
Mvp: true
Drops:
- Item: Ectoplasm
Rate: 200
- Item: Yggdrasilberry
Rate: 1500
- Item: Seed_Of_Yggdrasil
Rate: 1500
- Item: Leaf_Of_Yggdrasil
Rate: 1500
- Item: Shadowdecon
Rate: 1000
- Item: Zelunium
Rate: 1000
- Item: Death_Witch_Card
Rate: 1
StealProtected: true
# - Id: 20944
# AegisName: JP_E_MONSTER_151
# - Id: 20945

View File

@@ -13239,6 +13239,108 @@
20934,R001_BESTIA@NPC_DRAGONFEAR,attack,659,5,10000,0,10000,no,self,always,0,,,,,,,
// 20934,R001_BESTIA@NPC_DAMAGE_HEAL,attack,753,1,3000,1500,40000,no,target,myhpltmaxrate,20,,,,,,,
// nif_dun
20935,GAN_CEANN@NPC_CRITICALSLASH,attack,170,1,1000,500,5000,no,target,always,0,,,,,,,
20935,GAN_CEANN@NPC_DARKNESSATTACK,attack,190,3,500,500,5000,no,target,always,0,,,,,,6,
20935,GAN_CEANN@NPC_BLINDATTACK,attack,177,3,2000,0,5000,yes,target,always,0,,,,,,,
20935,GAN_CEANN@NPC_DARKNESSATTACK,attack,190,3,1000,500,5000,no,target,always,0,,,,,,6,
20935,GAN_CEANN@NPC_BLEEDING2,attack,764,5,2000,0,60000,yes,target,always,0,,,,,,,
20935,GAN_CEANN@NPC_BLEEDING,attack,660,5,2000,0,60000,yes,target,always,0,,,,,,,
20935,GAN_CEANN@NPC_DARKCROSS,attack,338,3,300,0,5000,yes,target,always,0,,,,,,,
20936,DISGUISER@NPC_COMBOATTACK,attack,171,2,1000,700,5000,no,target,always,0,,,,,,19,
20936,DISGUISER@NPC_PIERCINGATT,attack,158,5,500,0,5000,yes,target,always,0,,,,,,,
20936,DISGUISER@AS_GRIMTOOTH,chase,137,5,2000,0,0,yes,target,always,0,,,,,,,
20936,DISGUISER@NPC_GUIDEDATTACK,attack,172,3,8000,500,600000,no,target,always,0,,,,,,,
20936,DISGUISER@NPC_COMBOATTACK,attack,171,3,1000,500,15000,no,target,always,0,,,,,,,
20936,DISGUISER@NPC_CHANGEWIND,attack,165,1,10000,500,100000,no,self,always,0,,,,,,,
20936,DISGUISER@NPC_CHANGEFIRE,attack,164,1,10000,500,100000,no,self,always,0,,,,,,,
20936,DISGUISER@NPC_CHANGEWATER,attack,162,1,10000,500,100000,no,self,always,0,,,,,,,
20936,DISGUISER@NPC_CHANGEGROUND,attack,163,1,10000,500,100000,no,self,always,0,,,,,,,
20937,BRUTAL_MURDERER@AS_SONICBLOW,attack,136,7,500,800,5000,no,target,always,0,,,,,,29,
20937,BRUTAL_MURDERER@NPC_CURSEATTACK,attack,181,5,500,800,5000,no,target,always,0,,,,,,29,
20937,BRUTAL_MURDERER@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,always,0,,,,,,,
20937,BRUTAL_MURDERER@NPC_IGNITIONBREAK,attack,740,2,1000,300,30000,no,self,always,0,,,,,,,
20937,BRUTAL_MURDERER@NPC_CRITICALWOUND,attack,673,1,8000,300,5000,no,target,always,0,,,,,,,
20938,GHOST_CUBE@MG_STONECURSE,attack,16,10,500,1500,5000,no,target,always,0,,,,,,6,
20938,GHOST_CUBE@NPC_MENTALBREAKER,attack,159,3,500,800,5000,no,target,always,0,,,,,,29,
20938,GHOST_CUBE@NPC_BLINDATTACK,attack,177,3,2000,0,5000,yes,target,always,0,,,,,,,
20938,GHOST_CUBE@NPC_SILENCEATTACK,attack,178,3,500,700,5000,no,target,always,0,,,,,,,
20938,GHOST_CUBE@NPC_SLEEPATTACK,attack,182,3,500,0,5000,yes,target,always,0,,,,,,,
20938,GHOST_CUBE@NPC_WINDATTACK,attack,187,3,2000,0,5000,yes,target,always,0,,,,,,,
20939,LUDE_GAL@NPC_CHEAL,idle,729,3,2500,500,5000,no,self,always,0,,,,,,5,
20939,LUDE_GAL@AL_HEAL,chase,28,9,10000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,18,
20939,LUDE_GAL@AL_HEAL,attack,28,9,10000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,18,
20939,LUDE_GAL@AL_HEAL,chase,28,9,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,18,
20939,LUDE_GAL@AL_HEAL,attack,28,9,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,18,
20939,LUDE_GAL@PR_LEXAETERNA,chase,78,1,1000,1000,5000,no,target,always,0,,,,,,6,
20939,LUDE_GAL@PR_LEXAETERNA,attack,78,1,1000,1000,5000,no,target,always,0,,,,,,6,
20939,LUDE_GAL@NPC_CHEAL,chase,729,3,2500,500,5000,no,self,always,0,,,,,,5,
20939,LUDE_GAL@AM_POTIONPITCHER,attack,231,4,10000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,5,
20939,LUDE_GAL@AM_POTIONPITCHER,attack,231,4,10000,500,5000,no,friend,myhpltmaxrate,30,,,,,,5,
20939,LUDE_GAL@NPC_GROUNDATTACK,attack,185,5,2000,500,5000,no,target,always,0,,,,,,6,
20939,LUDE_GAL@NPC_STUNATTACK,attack,179,5,2000,0,0,yes,target,always,0,,,,,,,
20940,BLUEMOON_LOLI_RURI@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,,
20940,BLUEMOON_LOLI_RURI@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,,
20940,BLUEMOON_LOLI_RURI@NPC_DARKSTRIKE,attack,340,5,500,700,5000,no,target,myhpltmaxrate,50,,,,,,6,
20940,BLUEMOON_LOLI_RURI@NPC_DARKSTRIKE,chase,340,5,500,700,5000,no,target,always,0,,,,,,6,
20940,BLUEMOON_LOLI_RURI@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,0,,,,,,3,
20940,BLUEMOON_LOLI_RURI@PR_LEXDIVINA,chase,76,10,500,1000,5000,no,target,always,0,,,,,,2,
20940,BLUEMOON_LOLI_RURI@PR_LEXDIVINA,attack,76,10,500,1000,5000,no,target,always,0,,,,,,2,
20940,BLUEMOON_LOLI_RURI@SA_REVERSEORCISH,chase,294,1,50,0,30000,yes,target,always,0,,,,,,18,
20940,BLUEMOON_LOLI_RURI@SA_REVERSEORCISH,attack,294,1,50,0,30000,yes,target,always,0,,,,,,18,
20941,GROTE@AS_GRIMTOOTH,chase,137,5,2000,0,5000,yes,target,always,0,,,,,,,
20941,GROTE@NPC_CURSEATTACK,attack,181,3,1000,800,5000,no,target,always,0,,,,,,6,
20941,GROTE@NPC_UNDEADATTACK,attack,347,3,500,500,5000,no,target,always,0,,,,,,6,
20941,GROTE@NPC_CHEAL,chase,729,3,2500,500,5000,no,self,always,0,,,,,,5,
20941,GROTE@NPC_COMBOATTACK,attack,171,5,1500,0,5000,yes,target,always,0,,,,,,,
20941,GROTE@NPC_WIDEBLEEDING2,attack,756,4,10000,0,15000,yes,self,always,0,,,,,,,
20941,GROTE@NPC_WIDEBLEEDING,attack,665,4,10000,0,15000,yes,self,always,0,,,,,,,
20941,GROTE@NPC_GROUNDATTACK,attack,185,5,2000,500,5000,no,target,always,0,,,,,,6,
20941,GROTE@NPC_STUNATTACK,attack,179,5,2000,0,0,yes,target,always,0,,,,,,,
20942,PIERROTZOIST@AL_DECAGI,attack,30,1,500,1000,5000,no,target,always,0,,,,,,29,
20942,PIERROTZOIST@NPC_HALLUCINATION,chase,207,1,500,500,5000,no,target,always,0,,,,,,9,
20942,PIERROTZOIST@NPC_HALLUCINATION,attack,207,1,500,500,5000,no,target,always,0,,,,,,9,
20942,PIERROTZOIST@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,0,,,,,,,
20942,PIERROTZOIST@KN_SPEARSTAB,chase,58,5,2500,0,5000,yes,target,groundattacked,0,,,,,,9,
20942,PIERROTZOIST@KN_SPEARSTAB,chase,58,5,5000,0,5000,yes,target,longrangeattacked,0,,,,,,,
20942,PIERROTZOIST@SM_MAGNUM,attack,7,4,500,500,5000,no,self,always,0,,,,,,,
20942,PIERROTZOIST@KN_TWOHANDQUICKEN,attack,60,5,2000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6,
20942,PIERROTZOIST@KN_BRANDISHSPEAR,attack,57,5,2000,0,10000,yes,target,always,0,,,,,,6,
20942,PIERROTZOIST@NPC_DARKNESSATTACK,attack,190,4,1000,0,5000,yes,target,always,0,,,,,,,
20943,DEATH_WITCH@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDESILENCE,chase,663,1,2000,1000,20000,no,self,always,0,,,,,,32,
20943,DEATH_WITCH@NPC_WIDESILENCE,attack,663,1,2000,700,25000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDEFREEZE,chase,664,1,2000,1000,20000,no,self,always,0,,,,,,36,
20943,DEATH_WITCH@NPC_WIDEFREEZE,attack,664,1,2000,1000,20000,no,self,always,0,,,,,,36,
20943,DEATH_WITCH@NPC_WIDESLEEP,chase,668,1,2000,700,25000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDESLEEP,attack,668,1,2000,700,25000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_DARKTHUNDER,chase,341,3,500,1500,15000,no,target,always,0,,,,,,,
20943,DEATH_WITCH@NPC_DARKTHUNDER,attack,341,3,500,1500,15000,no,target,always,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDESOULDRAIN,chase,680,1,1000,500,5000,no,self,always,0,,,,,,42,
20943,DEATH_WITCH@NPC_WIDESOULDRAIN,attack,680,1,1000,500,5000,no,self,always,0,,,,,,42,
20943,DEATH_WITCH@WZ_WATERBALL,attack,86,10,3000,500,25000,no,target,always,0,,,,,,0,
20943,DEATH_WITCH@WZ_WATERBALL,chase,86,10,3000,500,25000,no,target,always,0,,,,,,0,
20943,DEATH_WITCH@NPC_WIDECURSE,chase,677,1,500,800,5000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_SUMMONSLAVE,attack,196,1,10000,700,10000,no,self,slavele,3,,,,,,,
20943,DEATH_WITCH@NPC_SUMMONSLAVE,idle,196,1,10000,700,10000,no,self,slavele,3,,,,,,,
20943,DEATH_WITCH@NPC_WIDECURSE,attack,677,1,500,800,5000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDESTUN,chase,678,1,2000,1300,180000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_WIDESTUN,attack,678,1,2000,1300,180000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_DARKNESSATTACK,attack,190,5,2000,0,5000,yes,target,always,0,,,,,,29,
20943,DEATH_WITCH@NPC_DARKNESSATTACK,chase,190,5,2000,0,5000,yes,target,always,0,,,,,,29,
20943,DEATH_WITCH@WZ_FROSTNOVA,chase,88,10,3000,1000,10000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@WZ_FROSTNOVA,attack,88,10,3000,1000,10000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,32,
20943,DEATH_WITCH@HW_GANBANTEIN,attack,483,1,2000,0,5000,yes,target,always,0,,,,,,,
// 20943,DEATH_WITCH@NPC_EARTHQUAKE_K,attack,750,5,10000,1500,25000,no,target,myhpltmaxrate,20,,,,,,,
20943,DEATH_WITCH@NPC_EARTHQUAKE,attack,653,5,10000,1500,25000,no,target,myhpltmaxrate,20,,,,,,,
20943,DEATH_WITCH@NPC_HELLJUDGEMENT,chase,662,2,2000,500,5000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_HELLJUDGEMENT,attack,662,2,2000,500,5000,no,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_CLOUD_KILL,attack,739,5,2000,500,16000,no,target,always,0,,,,,,,
// 20943,DEATH_WITCH@NPC_DAMAGE_HEAL,attack,753,1,10000,1000,60000,no,target,myhpltmaxrate,10,,,,,,,
20943,DEATH_WITCH@NPC_CALLSLAVE,idle,352,1,5000,0,30000,yes,self,always,0,,,,,,,
20943,DEATH_WITCH@NPC_CALLSLAVE,attack,352,1,5000,0,30000,yes,self,always,0,,,,,,,
// Training Ground outside Prontera
21064,S_DUMMY_100_SMALL@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21064,S_DUMMY_100_SMALL@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,

View File

@@ -5704,24 +5704,75 @@ Body:
- Id: 8595
Title: Playing with Pitaya - Standby
TimeLimit: 4h
- Id: 8639
Title: Great banquet hall in the depths of the underworld
- Id: 8640
Title: Both the dead and the living are in high spirits
- Id: 8641
Title: He looks cute
Targets:
- Mob: GHOST_CUBE
Count: 15
- Mob: LUDE_GAL
Count: 15
- Id: 8642
Title: He looks cute - Standby
TimeLimit: 4h
- Id: 8644
Title: That's not an instrument
Targets:
- Mob: BRUTAL_MURDERER
Count: 10
- Mob: GAN_CEANN
Count: 10
- Id: 8645
Title: That's not an instrument - Standby
TimeLimit: 4h
- Id: 8647
Title: Playing the piano
- Id: 8648
Title: Playing the piano - Standby
TimeLimit: 4h
- Id: 8649
Title: It was a great performance
- Id: 8650
Title: Guys with messy hair
Targets:
- Mob: DISGUISER
Count: 15
- Mob: BLUEMOON_LOLI_RURI
Count: 15
- Id: 8651
Title: Guys with messy hair - Standby
TimeLimit: 4h
- Id: 8652
Title: Guys with messy hair
Targets:
- Mob: DISGUISER
Count: 15
- Mob: BLUEMOON_LOLI_RURI
Count: 15
- Id: 8653
Title: The ones with dolls
Targets:
- Mob: GROTE
Count: 10
- Mob: PIERROTZOIST
Count: 10
- Id: 8654
Title: The ones with dolls - Standby
TimeLimit: 4h
- Id: 8655
Title: The ones with dolls
- Id: 8656
Title: Wake them up
- Id: 8657
Title: Wake them up - Standby
TimeLimit: 4h
- Id: 8658
Title: Sorry for being sleepy (1)
- Id: 8659
Title: Sorry for being sleepy (2)
- Id: 8661
Title: "[Standby] Subjugation-Audumra Chowon-3"
TimeLimit: 4h

View File

@@ -17907,6 +17907,108 @@ Body:
NoReiteration: true
NoOverlap: true
Status: PropertyWalk
- Id: 747
Name: NPC_LEASH
Description: Leash
MaxLevel: 5
TargetType: Attack
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Range:
- Level: 1
Size: 5
- Level: 2
Size: 10
- Level: 3
Size: 15
- Level: 4
Size: 20
- Level: 5
Size: 25
Hit: Single
HitCount: 1
- Id: 748
Name: NPC_WIDELEASH
Description: Wide Leash
MaxLevel: 5
TargetType: Attack
DamageFlags:
NoDamage: true
Splash: true
Flags:
IsNpc: true
Range:
- Level: 1
Size: 5
- Level: 2
Size: 10
- Level: 3
Size: 15
- Level: 4
Size: 20
- Level: 5
Size: 25
Hit: Single
HitCount: 1
SplashArea: -1
- Id: 751
Name: NPC_ALL_STAT_DOWN
Description: Decrease All Stats
MaxLevel: 5
TargetType: Attack
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Range: 9
Duration1: 10000
Status: ALL_STAT_DOWN
- Id: 752
Name: NPC_GRADUAL_GRAVITY
Description: Increased Gravity
MaxLevel: 3
TargetType: Attack
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Range: 9
Duration1: 3000
Status: GRADUAL_GRAVITY
- Id: 753
Name: NPC_DAMAGE_HEAL
Description: Damage Heal
MaxLevel: 3
TargetType: Self
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Duration1: 30000
Status: DAMAGE_HEAL
- Id: 754
Name: NPC_IMMUNE_PROPERTY
Description: Property Immune
MaxLevel: 10
TargetType: Support
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Range: 14 #TODO: confirm
Duration1: 30000
- Id: 755
Name: NPC_MOVE_COORDINATE
Description: Change Location
MaxLevel: 1
TargetType: Attack
DamageFlags:
NoDamage: true
Flags:
IsNpc: true
Range: 14
- Id: 756
Name: NPC_WIDEBLEEDING2
Description: Wide Bleeding
@@ -18164,6 +18266,23 @@ Body:
SplashArea: 14
Duration2: 18000
Status: Curse
- Id: 783
Name: NPC_KILLING_AURA
Description: Killing Aura
MaxLevel: 5 #TODO unknown interactions with level
Type: Misc
TargetType: Support
Hit: Single
HitCount: 1
DamageFlags:
IgnoreFlee: true
IgnoreDefCard: true
Splash: true
Flags:
IsNpc: true
SplashArea: 5
Duration1: 30000
Status: Killing_Aura
- Id: 1001
Name: KN_CHARGEATK
Description: Charge Attack
@@ -42624,6 +42743,845 @@ Body:
PathCheck: true
RangedSingleUnit: true
Status: Ash
- Id: 8044
Name: MH_BLAST_FORGE
Description: Blast Forge
MaxLevel: 10
Type: Weapon
TargetType: Ground
DamageFlags:
Splash: true
Range: 1
Hit: Single
HitCount: 1
Element: Fire
ActiveInstance: 1
CastTime:
- Level: 1
Time: 5000
- Level: 2
Time: 5000
- Level: 3
Time: 5000
- Level: 4
Time: 4500
- Level: 5
Time: 4500
- Level: 6
Time: 4500
- Level: 7
Time: 4000
- Level: 8
Time: 4000
- Level: 9
Time: 4000
- Level: 10
Time: 3500
AfterCastActDelay: 1000
Duration1: 5000
FixedCastTime: 1000
Requires:
SpCost:
- Level: 1
Amount: 52
- Level: 2
Amount: 59
- Level: 3
Amount: 66
- Level: 4
Amount: 73
- Level: 5
Amount: 80
- Level: 6
Amount: 87
- Level: 7
Amount: 94
- Level: 8
Amount: 101
- Level: 9
Amount: 108
- Level: 10
Amount: 115
Unit:
Id: Lava_Slide
Layout:
- Level: 1
Size: 1
- Level: 2
Size: 1
- Level: 3
Size: 1
- Level: 4
Size: 1
- Level: 5
Size: 2
- Level: 6
Size: 2
- Level: 7
Size: 2
- Level: 8
Size: 2
- Level: 9
Size: 3
- Level: 10
Size: 3
Interval: 1000
Target: Enemy
Flag:
NoReiteration: true
NoOverlap: true
PathCheck: true
- Id: 8045
Name: MH_TEMPERING
Description: Tempering
MaxLevel: 10
TargetType: Self
DamageFlags:
NoDamage: true
CastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 1500
- Level: 3
Time: 2000
- Level: 4
Time: 2500
- Level: 5
Time: 3000
- Level: 6
Time: 3500
- Level: 7
Time: 4000
- Level: 8
Time: 4500
- Level: 9
Time: 5000
- Level: 10
Time: 5500
AfterCastActDelay: 1000
Duration1:
- Level: 1
Time: 45000
- Level: 2
Time: 60000
- Level: 3
Time: 75000
- Level: 4
Time: 90000
- Level: 5
Time: 105000
- Level: 6
Time: 120000
- Level: 7
Time: 135000
- Level: 8
Time: 150000
- Level: 9
Time: 165000
- Level: 10
Time: 180000
FixedCastTime: 200
Requires:
SpCost:
- Level: 1
Amount: 83
- Level: 2
Amount: 91
- Level: 3
Amount: 99
- Level: 4
Amount: 107
- Level: 5
Amount: 115
- Level: 6
Amount: 123
- Level: 7
Amount: 131
- Level: 8
Amount: 139
- Level: 9
Amount: 147
- Level: 10
Amount: 155
Status: Tempering
- Id: 8046
Name: MH_CLASSY_FLUTTER
Description: Classy Flutter
MaxLevel: 10
DamageFlags:
NoDamage: true
- Id: 8047
Name: MH_TWISTER_CUTTER
Description: Twister Cutter
MaxLevel: 10
Type: Magic
TargetType: Attack
DamageFlags:
IgnoreDefense: true
Range: 7
Element: Wind
Hit: Multi_Hit
HitCount: -2
CastCancel: true
CastTime: # !TODO: Confirm cast time
- Level: 1
Time: 600
- Level: 2
Time: 700
- Level: 3
Time: 800
- Level: 4
Time: 900
- Level: 5
Time: 1000
- Level: 6
Time: 1100
- Level: 7
Time: 1200
- Level: 8
Time: 1300
- Level: 9
Time: 1400
- Level: 10
Time: 1500
Requires:
SpCost:
- Level: 1
Amount: 106
- Level: 2
Amount: 112
- Level: 3
Amount: 118
- Level: 4
Amount: 124
- Level: 5
Amount: 130
- Level: 6
Amount: 136
- Level: 7
Amount: 142
- Level: 8
Amount: 148
- Level: 9
Amount: 154
- Level: 10
Amount: 160
- Id: 8048
Name: MH_ABSOLUTE_ZEPHYR
Description: Absolute Zephyr
MaxLevel: 10
Type: Magic
TargetType: Attack
DamageFlags:
Splash: true
IgnoreDefense: true
Range: 7
Hit: Multi_Hit
HitCount: -6
Element: Wind
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 1
- Level: 4
Area: 2
- Level: 5
Area: 2
- Level: 6
Area: 2
- Level: 7
Area: 3
- Level: 8
Area: 3
- Level: 9
Area: 3
- Level: 10
Area: 4
CastTime: # !TODO: Confirm cast time
- Level: 1
Time: 600
- Level: 2
Time: 700
- Level: 3
Time: 800
- Level: 4
Time: 900
- Level: 5
Time: 1000
- Level: 6
Time: 1100
- Level: 7
Time: 1200
- Level: 8
Time: 1300
- Level: 9
Time: 1400
- Level: 10
Time: 1500
Requires:
SpCost:
- Level: 1
Amount: 122
- Level: 2
Amount: 129
- Level: 3
Amount: 136
- Level: 4
Amount: 143
- Level: 5
Amount: 150
- Level: 6
Amount: 157
- Level: 7
Amount: 164
- Level: 8
Amount: 171
- Level: 9
Amount: 178
- Level: 10
Amount: 185
- Id: 8049
Name: MH_BRUSHUP_CLAW
Description: Brushup Claw
MaxLevel: 10
DamageFlags:
NoDamage: true
- Id: 8050
Name: MH_BLAZING_AND_FURIOUS
Description: Blazing And Furious
MaxLevel: 10
Type: Weapon
TargetType: Support
DamageFlags:
NoDamage: true
IgnoreDefense: true
Splash: true
Range: 7
Hit: Multi_Hit
HitCount: 1
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 1
- Level: 4
Area: 1
- Level: 5
Area: 2
- Level: 6
Area: 2
- Level: 7
Area: 2
- Level: 8
Area: 2
- Level: 9
Area: 3
- Level: 10
Area: 3
Requires:
SpCost:
- Level: 1
Amount: 103
- Level: 2
Amount: 108
- Level: 3
Amount: 113
- Level: 4
Amount: 118
- Level: 5
Amount: 123
- Level: 6
Amount: 128
- Level: 7
Amount: 133
- Level: 8
Amount: 138
- Level: 9
Amount: 143
- Level: 10
Amount: 148
SpiritSphereCost: 1
- Id: 8051
Name: MH_THE_ONE_FIGHTER_RISES
Description: The One Fighter Rises
MaxLevel: 10
Type: Weapon
TargetType: Self
DamageFlags:
IgnoreDefense: true
Splash: true
Range: 7
Hit: Single
HitCount: 1
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 1
- Level: 4
Area: 1
- Level: 5
Area: 2
- Level: 6
Area: 2
- Level: 7
Area: 2
- Level: 8
Area: 2
- Level: 9
Area: 3
- Level: 10
Area: 3
Requires:
SpCost:
- Level: 1
Amount: 100
- Level: 2
Amount: 106
- Level: 3
Amount: 112
- Level: 4
Amount: 118
- Level: 5
Amount: 124
- Level: 6
Amount: 130
- Level: 7
Amount: 136
- Level: 8
Amount: 142
- Level: 9
Amount: 148
- Level: 10
Amount: 154
- Id: 8052
Name: MH_POLISHING_NEEDLE
Description: Polishing Needle
MaxLevel: 10
DamageFlags:
NoDamage: true
- Id: 8053
Name: MH_TOXIN_OF_MANDARA
Description: Toxin Of Mandara
MaxLevel: 10
Type: Weapon
TargetType: Attack
DamageFlags:
IgnoreDefense: true
Splash: true
Range: 2
Hit: Single
HitCount: 1
Element: Neutral
CastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 1000
- Level: 3
Time: 1000
- Level: 4
Time: 1100
- Level: 5
Time: 1100
- Level: 6
Time: 1100
- Level: 7
Time: 1200
- Level: 8
Time: 1200
- Level: 9
Time: 1200
- Level: 10
Time: 1300
Duration1:
- Level: 1
Time: 2500
- Level: 2
Time: 3000
- Level: 3
Time: 3500
- Level: 4
Time: 4000
- Level: 5
Time: 4500
- Level: 6
Time: 5000
- Level: 7
Time: 5500
- Level: 8
Time: 6000
- Level: 9
Time: 6500
- Level: 10
Time: 7000
FixedCastTime:
- Level: 1
Time: 500
- Level: 2
Time: 500
- Level: 3
Time: 500
- Level: 4
Time: 400
- Level: 5
Time: 400
- Level: 6
Time: 400
- Level: 7
Time: 300
- Level: 8
Time: 300
- Level: 9
Time: 300
- Level: 10
Time: 200
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 1
- Level: 4
Area: 2
- Level: 5
Area: 2
- Level: 6
Area: 2
- Level: 7
Area: 3
- Level: 8
Area: 3
- Level: 9
Area: 3
- Level: 10
Area: 4
Requires:
SpCost:
- Level: 1
Amount: 60
- Level: 2
Amount: 65
- Level: 3
Amount: 70
- Level: 4
Amount: 75
- Level: 5
Amount: 80
- Level: 6
Amount: 85
- Level: 7
Amount: 90
- Level: 8
Amount: 95
- Level: 9
Amount: 100
- Level: 10
Amount: 105
Status: Toxin_of_Mandara
- Id: 8054
Name: MH_NEEDLE_STINGER
Description: Needle Stinger
MaxLevel: 10
Type: Weapon
TargetType: Attack
DamageFlags:
IgnoreDefense: true
Range: 7
Hit: Single
HitCount: 1
Element: Poison
CastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 1000
- Level: 3
Time: 1000
- Level: 4
Time: 1100
- Level: 5
Time: 1100
- Level: 6
Time: 1100
- Level: 7
Time: 1200
- Level: 8
Time: 1200
- Level: 9
Time: 1200
- Level: 10
Time: 1300
FixedCastTime:
- Level: 1
Time: 500
- Level: 2
Time: 500
- Level: 3
Time: 500
- Level: 4
Time: 400
- Level: 5
Time: 400
- Level: 6
Time: 400
- Level: 7
Time: 300
- Level: 8
Time: 300
- Level: 9
Time: 300
- Level: 10
Time: 200
Requires:
SpCost:
- Level: 1
Amount: 74
- Level: 2
Amount: 82
- Level: 3
Amount: 90
- Level: 4
Amount: 98
- Level: 5
Amount: 106
- Level: 6
Amount: 114
- Level: 7
Amount: 122
- Level: 8
Amount: 130
- Level: 9
Amount: 138
- Level: 10
Amount: 146
- Id: 8055
Name: MH_LICHT_GEHORN
Description: Licht Gehorn
MaxLevel: 10
DamageFlags:
NoDamage: true
- Id: 8056
Name: MH_GLANZEN_SPIES
Description: Glanzen Spies
MaxLevel: 10
Type: Weapon
TargetType: Attack
DamageFlags:
IgnoreDefense: true
Range: 3
Element: Holy
Hit: Single
HitCount: 1
FixedCastTime: 500
Requires:
SpCost:
- Level: 1
Amount: 60
- Level: 2
Amount: 65
- Level: 3
Amount: 70
- Level: 4
Amount: 75
- Level: 5
Amount: 80
- Level: 6
Amount: 85
- Level: 7
Amount: 90
- Level: 8
Amount: 95
- Level: 9
Amount: 100
- Level: 10
Amount: 105
- Id: 8057
Name: MH_HEILIGE_PFERD
Description: Heilige Pferd
MaxLevel: 10
Type: Magic
TargetType: Self
DamageFlags:
Splash: true
IgnoreDefense: true
Hit: Single
HitCount: 1
Element: Holy
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 1
- Level: 4
Area: 1
- Level: 5
Area: 2
- Level: 6
Area: 2
- Level: 7
Area: 2
- Level: 8
Area: 2
- Level: 9
Area: 3
- Level: 10
Area: 3
CastTime: # !TODO: Confirm cast time
- Level: 1
Time: 600
- Level: 2
Time: 700
- Level: 3
Time: 800
- Level: 4
Time: 900
- Level: 5
Time: 1000
- Level: 6
Time: 1100
- Level: 7
Time: 1200
- Level: 8
Time: 1300
- Level: 9
Time: 1400
- Level: 10
Time: 1500
FixedCastTime:
- Level: 1
Time: 2000
- Level: 2
Time: 1800
- Level: 3
Time: 1600
- Level: 4
Time: 1400
- Level: 5
Time: 1200
- Level: 6
Time: 1000
- Level: 7
Time: 800
- Level: 8
Time: 600
- Level: 9
Time: 400
- Level: 10
Time: 200
Requires:
SpCost:
- Level: 1
Amount: 122
- Level: 2
Amount: 129
- Level: 3
Amount: 136
- Level: 4
Amount: 143
- Level: 5
Amount: 150
- Level: 6
Amount: 157
- Level: 7
Amount: 164
- Level: 8
Amount: 171
- Level: 9
Amount: 178
- Level: 10
Amount: 185
- Id: 8058
Name: MH_GOLDENE_TONE
Description: Goldene Tone
MaxLevel: 10
TargetType: Self
DamageFlags:
NoDamage: true
CastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 1500
- Level: 3
Time: 2000
- Level: 4
Time: 2500
- Level: 5
Time: 3000
- Level: 6
Time: 3500
- Level: 7
Time: 4000
- Level: 8
Time: 4500
- Level: 9
Time: 5000
- Level: 10
Time: 5500
AfterCastActDelay: 1000
Duration1:
- Level: 1
Time: 30000
- Level: 2
Time: 40000
- Level: 3
Time: 50000
- Level: 4
Time: 60000
- Level: 5
Time: 70000
- Level: 6
Time: 80000
- Level: 7
Time: 90000
- Level: 8
Time: 100000
- Level: 9
Time: 110000
- Level: 10
Time: 120000
FixedCastTime: 200
Requires:
SpCost:
- Level: 1
Amount: 124
- Level: 2
Amount: 133
- Level: 3
Amount: 142
- Level: 4
Amount: 151
- Level: 5
Amount: 160
- Level: 6
Amount: 169
- Level: 7
Amount: 178
- Level: 8
Amount: 187
- Level: 9
Amount: 196
- Level: 10
Amount: 205
Status: Goldene_Tone
- Id: 8059
Name: MH_BLAZING_LAVA
Description: Blazing Lava
MaxLevel: 10
DamageFlags:
NoDamage: true
- Id: 8201
Name: MS_BASH
Description: Bash

View File

@@ -8530,3 +8530,216 @@ Body:
NoClearance: true
- Status: WeaponBreaker
DurationLookup: NPC_WEAPONBRAKER
- Status: Tempering
Icon: EFST_TEMPERING
DurationLookup: MH_TEMPERING
CalcFlags:
Patk: true
- Status: Goldene_Tone
Icon: EFST_GOLDENE_TONE
DurationLookup: MH_GOLDENE_TONE
CalcFlags:
Res: true
Mres: true
- Status: Toxin_of_Mandara
Icon: EFST_TOXIN_OF_MANDARA
DurationLookup: MH_TOXIN_OF_MANDARA
Flags:
Debuff: true
CalcFlags:
Res: true
- Status: GRADUAL_GRAVITY
Icon: EFST_GRADUAL_GRAVITY
DurationLookup: NPC_GRADUAL_GRAVITY
Flags:
BlEffect: true
DisplayPc: true
NoDispell: true
NoClearance: true
- Status: ALL_STAT_DOWN
Icon: EFST_ALL_STAT_DOWN
DurationLookup: NPC_ALL_STAT_DOWN
CalcFlags:
Str: true
Agi: true
Vit: true
Int: true
Dex: true
Luk: true
Flags:
NoDispell: true
NoClearance: true
- Status: Killing_Aura
Icon: EFST_KILLING_AURA
DurationLookup: NPC_KILLING_AURA
Flags:
BlEffect: true
DisplayPc: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: DAMAGE_HEAL
Icon: EFST_DAMAGE_HEAL
DurationLookup: NPC_DAMAGE_HEAL
Flags:
NoDispell: true
- Status: IMMUNE_PROPERTY_NOTHING
Icon: EFST_IMMUNE_PROPERTY_NOTHING
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_WATER
Icon: EFST_IMMUNE_PROPERTY_WATER
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_GROUND
Icon: EFST_IMMUNE_PROPERTY_GROUND
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_FIRE
Icon: EFST_IMMUNE_PROPERTY_FIRE
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_WIND
Icon: EFST_IMMUNE_PROPERTY_WIND
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_POISON
Icon: EFST_IMMUNE_PROPERTY_POISON
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_SAINT
Icon: EFST_IMMUNE_PROPERTY_SAINT
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_DARKNESS
Icon: EFST_IMMUNE_PROPERTY_DARKNESS
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_TELEKINESIS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_TELEKINESIS
Icon: EFST_IMMUNE_PROPERTY_TELEKINESIS
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_UNDEAD: true
- Status: IMMUNE_PROPERTY_UNDEAD
Icon: EFST_IMMUNE_PROPERTY_UNDEAD
DurationLookup: NPC_IMMUNE_PROPERTY
Flags:
BlEffect: true
DisplayPc: true
EndOnStart:
IMMUNE_PROPERTY_NOTHING: true
IMMUNE_PROPERTY_WATER: true
IMMUNE_PROPERTY_GROUND: true
IMMUNE_PROPERTY_FIRE: true
IMMUNE_PROPERTY_WIND: true
IMMUNE_PROPERTY_POISON: true
IMMUNE_PROPERTY_SAINT: true
IMMUNE_PROPERTY_DARKNESS: true
IMMUNE_PROPERTY_TELEKINESIS: true

View File

@@ -322,6 +322,11 @@ bonus bIgnoreMDefEle,e; Disregard MDEF against enemies of element e
bonus2 bIgnoreDefClassRate,c,n; Disregard n% of the target's DEF if the target belongs to class c
bonus2 bIgnoreMdefClassRate,c,n; Disregard n% of the target's MDEF if the target belongs to class c
Ignore Res
----------
bonus2 bIgnoreResRaceRate,r,n; Disregard n% of the target's Res if the target belongs to race r
bonus2 bIgnoreMResRaceRate,r,n; Disregard n% of the target's MRes if the target belongs to race r
Experience
----------
bonus2 bExpAddRace,r,x; Increase exp gained by x% against enemies of race r

View File

@@ -9697,12 +9697,18 @@ Examples:
---------------------------------------
*instance_warpall "<map name>",<x>,<y>{,<instance id>};
*instance_warpall "<map name>",<x>,<y>{,<instance id>,{<flag>}};
Warps all players in the <instance id> to <map name> to the given coordinates.
If no ID is specified, the IM_PARTY instance the invoking player is attached
to is used. If that fails, the script will come to a halt.
<flag> bitmask allows to add restrictions.
Available values for the <flag> bitmask:
IWA_NONE No restriction. (default)
IWA_NOTDEAD If dead players are warped or not
---------------------------------------
*instance_announce <instance id>,"<text>",<flag>{,<fontColor>{,<fontType>{,<fontSize>{,<fontAlign>{,<fontY>}}}}};

View File

@@ -0,0 +1,36 @@
###########################################################################
# Homunculus Database
###########################################################################
#
# Homunculus Settings
#
###########################################################################
# - BaseClass Base class.
# Name Name of homunculus.
# EvolutionClass Evolution class.
# Food Homunculus food item. (Default: Pet_Food)
# HungryDelay Time interval in milliseconds after which the hunger value is altered. (Default: 60000)
# Race Race. (Default: Demihuman)
# Element Element. (Default: Neutral)
# Size Size. (Default: Small)
# EvolutionSize Evolution size. (Default: Medium)
# AttackDelay Base ASPD. (Default: 700)
# Status: Homunculus stats.
# - Type Type of status.
# Base Base value of this status. (Default: 1)
# GrowthMinimum Minimum growth of this status. (Default: 0)
# GrowthMaximum Maximum growth of this status. (Default: 0)
# EvolutionMinimum Minimum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# EvolutionMaximum Maximum evolution growth of this status. Only applies for homunculus that can evolve. (Default: 0)
# SkillTree: Skill tree.
# - Skill Skill name.
# Clear True to remove the given skill name. (Optional)
# MaxLevel Maximum level of skill.
# RequiredLevel Required base level of homunculus to learn. (Default: 0)
# RequiredIntimacy Required intimacy of homunculus to learn. (Default: 0)
# RequireEvolution Require the homunculus to be evolved to be available. (Default: false)
# Required: Prerequisite skills. (Default: null)
# - Skill Prerequisite skill name.
# Level Level of prerequisite skill.
# Clear True to remove the given prerequisite skill name. (Optional)
###########################################################################

View File

@@ -39,6 +39,7 @@ CREATE TABLE `item_db2_re` (
`job_rogue` tinyint(1) unsigned DEFAULT NULL,
`job_sage` tinyint(1) unsigned DEFAULT NULL,
`job_soullinker` tinyint(1) unsigned DEFAULT NULL,
`job_spirit_handler` tinyint(1) unsigned DEFAULT NULL,
`job_stargladiator` tinyint(1) unsigned DEFAULT NULL,
`job_summoner` tinyint(1) unsigned DEFAULT NULL,
`job_supernovice` tinyint(1) unsigned DEFAULT NULL,
@@ -53,6 +54,7 @@ CREATE TABLE `item_db2_re` (
`class_third` tinyint(1) unsigned DEFAULT NULL,
`class_third_upper` tinyint(1) unsigned DEFAULT NULL,
`class_third_baby` tinyint(1) unsigned DEFAULT NULL,
`class_fourth` tinyint(1) unsigned DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`location_head_top` tinyint(1) unsigned DEFAULT NULL,
`location_head_mid` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -39,6 +39,7 @@ CREATE TABLE `item_db_re` (
`job_rogue` tinyint(1) unsigned DEFAULT NULL,
`job_sage` tinyint(1) unsigned DEFAULT NULL,
`job_soullinker` tinyint(1) unsigned DEFAULT NULL,
`job_spirit_handler` tinyint(1) unsigned DEFAULT NULL,
`job_stargladiator` tinyint(1) unsigned DEFAULT NULL,
`job_summoner` tinyint(1) unsigned DEFAULT NULL,
`job_supernovice` tinyint(1) unsigned DEFAULT NULL,
@@ -53,6 +54,7 @@ CREATE TABLE `item_db_re` (
`class_third` tinyint(1) unsigned DEFAULT NULL,
`class_third_upper` tinyint(1) unsigned DEFAULT NULL,
`class_third_baby` tinyint(1) unsigned DEFAULT NULL,
`class_fourth` tinyint(1) unsigned DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`location_head_top` tinyint(1) unsigned DEFAULT NULL,
`location_head_mid` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -345,6 +345,7 @@ D8: Restrict("RE",4,5);
Disp("Bio Lab 1:Bio Lab 2:Bio Lab 3:Bio Lab 4:Tomb of the Fallen"); Pick("","lhz_dun01","lhz_dun02","lhz_dun03","lhz_dun04","lhz_dun_n");
D9: Restrict("RE");
setarray @c[2],87,47,262,262;
Disp("Brasilis Dungeon",1,2); Pick("bra_dun");
D10: Restrict("RE",6);
setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187;
Disp("Byalan Dungeon",1,6); Pick("iz_dun",1);
@@ -382,7 +383,7 @@ D23: menu "Illusion of Abyss",SubD1, "Illusion of Frozen",SubD2, "Illusion of La
"Illusion of Luanda",SubD4, "Illusion of Moonlight",SubD5, "Illusion of Teddy Bear",SubD6,
"Illusion of Twins",SubD7, "Illusion of Underwater",SubD8, "Illusion of Vampire",SubD9;
SubD1: Restrict("RE");
setarray @c[2],132,189,100,192;
setarray @c[2],132,189,99,186;
Disp("Desolate Village:Bleak Turtle Palace"); Pick("","tur_d03_i","tur_d04_i");
SubD2: Restrict("RE");
Go("ice_d03_i",149,22);

View File

@@ -7,6 +7,7 @@
//= 1.7 Updated. [Lupus]
//= 1.8 Updated. [L0ne_W0lf]
//= 1.9 Renewal split. [Euphy]
//= 2.0 Moved instances to pre-renewal. [Lemongrass]
//============================================================
//============================================================
@@ -268,23 +269,6 @@ que_qaru03 mapflag nosave SavePoint
que_qaru04 mapflag nosave SavePoint
que_qaru05 mapflag nosave SavePoint
//============================================================
// Sealed Shrine
//============================================================
1@cata mapflag nosave SavePoint
2@cata mapflag nosave SavePoint
//============================================================
// Endless Tower
//============================================================
e_tower mapflag nosave SavePoint
1@tower mapflag nosave SavePoint
2@tower mapflag nosave SavePoint
3@tower mapflag nosave SavePoint
4@tower mapflag nosave SavePoint
5@tower mapflag nosave SavePoint
6@tower mapflag nosave SavePoint
//============================================================
// Battlegrounds
//============================================================
@@ -307,18 +291,6 @@ schg_dun01 mapflag nosave SavePoint
arug_que01 mapflag nosave SavePoint
arug_dun01 mapflag nosave SavePoint
//============================================================
// Orc's Memory
//============================================================
1@orcs mapflag nosave SavePoint
2@orcs mapflag nosave SavePoint
//============================================================
// Nidhoggr's Instance
//============================================================
1@nyd mapflag nosave SavePoint
2@nyd mapflag nosave SavePoint
//============================================================
// RWC
//============================================================

View File

@@ -0,0 +1,37 @@
//===== rAthena Script =======================================
//= Mapflag: Disable auto-save.
//===== Description: =========================================
//= Characters logging out on the specified map will be warped
//= to the map specified in the last field, or "SavePoint".
//===== Additional Comments: =================================
//= 1.0 Renewal Split. [Lemongrass]
//============================================================
//============================================================
// Endless Tower
//============================================================
e_tower mapflag nosave SavePoint
1@tower mapflag nosave SavePoint
2@tower mapflag nosave SavePoint
3@tower mapflag nosave SavePoint
4@tower mapflag nosave SavePoint
5@tower mapflag nosave SavePoint
6@tower mapflag nosave SavePoint
//============================================================
// Sealed Shrine
//============================================================
1@cata mapflag nosave SavePoint
2@cata mapflag nosave SavePoint
//============================================================
// Orc's Memory
//============================================================
1@orcs mapflag nosave SavePoint
2@orcs mapflag nosave SavePoint
//============================================================
// Nidhoggr's Instance
//============================================================
1@nyd mapflag nosave SavePoint
2@nyd mapflag nosave SavePoint

View File

@@ -0,0 +1,401 @@
//===== rAthena Script =======================================
//= Weekend Memorial Dungeon
//===== Description: =========================================
//= [Walkthrough Conversion]
//= Weekend Memorial Dungeon
//===== Changelogs: ==========================================
//= 1.0 Initial release [Everade]
//============================================================
pay_arche,44,124,5 script Marry Jae 4_F_JOB_BLACKSMITH,{
mes "[Marry Jae]";
if (BaseLevel < 60) {
mes "Your base level is too low, come back when you hit level 60+.";
close;
}
mes "^ff0000If you attempt to tame any monsters, it will not count as a kill. Please be careful.^000000";
next;
.@day = gettime(DT_DAYOFWEEK);
if (.@day != SATURDAY && .@day != SUNDAY) {
mes "[Marry Jae]";
mes "Oh, a curious onlooker? I'm Marry Jae, the person in charge of weekends among the days of the week.";
next;
mes "[Marry Jae]";
mes "What is the weekend dungeon? Actually, it's a specially designed space for new adventurers to train.";
next;
mes "^0000FFLooking around, it's obvious that Marry Jae is talking to you.^000000";
next;
mes "[Marry Jae]";
mes "For those who do not have a party on the weekends, this place is hunting and experience gaining grounds for lonely adventurers!";
next;
mes "[Marry Jae]";
mes "Besides, the experience gain here is very generous.";
next;
select( "When is the opening time?" );
mes "[Marry Jae]";
mes "The dungeon will be open during:";
mes "^0000FFSaturday 00:00 ~ Sunday 23:59^000000";
next;
mes "[Marry Jae]";
mes "I hope to see you when the weekend arrives~";
close;
}
.@md_name$ = "Weekend Dungeon";
if (is_party_leader() == false) {
mes "[Marry Jae]";
mes "You need to form a party of one member or more.";
close;
}
switch( checkquest(12378,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
switch( checkquest(12377,PLAYTIME) ) {
case -1:
case 2:
mes "[Marry Jae]";
mes "Sorry, but the entry period to the " + .@md_name$ + " has expired.";
mes "Take a rest while waiting for the dungeon to be available again.";
close;
case 0:
case 1:
break;
}
break;
case 2:
erasequest 12377;
erasequest 12378;
mes "[Marry Jae]";
mes "The cooldown has expired.";
mes "You may re-enter the Memorial Dungeon.";
close;
}
mes "[Marry Jae]";
mes "I think you're just about ready.";
mes "Now, would you like to enter it now?";
next;
switch( select( "Prepare Memorial Dungeon", "Enter Weekend Dungeon", "Cancel" ) ) {
case 1:
instance_create(.@md_name$);
mes "[Marry Jae]";
mes "The Memorial Dungeon has been created.";
mes "You may now enter.";
close;
case 2:
switch( instance_enter(.@md_name$) ) {
case IE_NOMEMBER:
end;
case IE_NOINSTANCE:
mes "There is no Memorial Dungeon registered.";
close;
case IE_OTHER:
mes "An unknown error has occurred.";
close;
case IE_OK:
mes "[Marry Jae]";
mes "Off you go!";
mapannounce "pay_arche", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0xFF99;
if (isbegin_quest(12377) == 0)
setquest 12377;
if (isbegin_quest(12378) == 0)
setquest 12378;
end;
}
end;
case 3:
mes "[Marry Jae]";
mes "You have not prepared?";
mes "Can't really help it I guess.";
close;
}
}
//Merchant
pay_arche,44,121,5 script Gift Supplies Clerk 4_F_02,{
.@zeny = 60000;
mes "[Gift Supplies Clerk]";
mes "I offer packaging services for those who wish to present a precious gift to a cherished one.";
next;
mes "[Gift Supplies Clerk]";
mes "If you have 5 units of <ITEM>" + getitemname(23143) + "<INFO>23143</INFO></ITEM> or <ITEM>" + getitemname(23142) + "<INFO>23142</INFO></ITEM>, I can pack it for just ^FF0000" + F_InsertComma(.@zeny) + "^000000 Zeny!";
mes "Do you want to pack it right now?";
next;
switch( select( "Cancel", "Growth Elixir Packing", "Job Elixir Packing" ) ) {
case 1:
mes "[Gift Supplies Clerk]";
mes "Come back whenever you need packaging services!";
close;
case 2:
.@item = 23142;
.@box = 23144;
break;
case 3:
.@item = 23143;
.@box = 23145;
break;
}
mes "[Gift Supplies Clerk]";
if (countitem(.@item) < 5) {
mes "Please come back when you have enough materials.";
close;
}
if (Zeny < .@zeny) {
mes "Please come back when you have enough Zeny.";
mes F_InsertComma(.@zeny) + "z to be specific.";
close;
}
if (checkweight(23144,1) == 0) {
mes "You have too many kinds of objects. Clear your inventory.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "Can't continue because you have too many heavy objects. Reduce your total weight by clearing your inventory.";
close;
}
mes "Confirm to spend " + F_InsertComma(.@zeny) + "z to package 5 <ITEM>" + getitemname(.@item) + "<INFO>" + .@item + "</INFO></ITEM> into <ITEM>" + getitemname(.@box) + "<INFO>" + .@box + "</INFO></ITEM>?";
next;
if (select( "Yes", "No" ) == 2) {
mes "[Gift Supplies Clerk]";
mes "Come back whenever you need packaging services!";
close;
}
Zeny -= .@zeny;
delitem .@item,5;
getitem .@box,1;
end;
}
//Instance
1@md_pay,239,30,6 script Marry Jae#0_1 4_F_JOB_BLACKSMITH,{
if (is_party_leader() == false)
end;
mes "[Marry Jae]";
mes "Before we start setting up the environment here, we'll give you the chance to choose an appropriate difficulty level.";
mes "I could make my own choice, but each person handles it differently based on their abilities.";
next;
switch( select( "Cancel", "Lv60 ~ 79", "Lv80 ~ 99", "Lv100 ~ 119", "Lv120 ~ 139", "Lv140 ~ 159", "Lv160 ~ " ) ) {
case 1:
end;
//Familiar, Skeleton, Zombie
case 2:
.@min_level = 60;
setarray 'mob[0],3643,3637,3649;
break;
case 3:
.@min_level = 80;
setarray 'mob[0],3644,3638,3650;
break;
case 4:
.@min_level = 100;
setarray 'mob[0],3645,3639,3651;
break;
case 5:
.@min_level = 120;
setarray 'mob[0],3646,3640,3652;
break;
case 6:
.@min_level = 140;
setarray 'mob[0],3647,3641,3653;
break;
case 7:
.@min_level = 160;
setarray 'mob[0],3648,3642,3654;
break;
}
mes "[Marry Jae]";
if (BaseLevel < .@min_level) {
mes "Your base level is too low to select this, you need to be level " + .@min_level + " + .";
close;
}
mes "Good luck finding the treasures!";
npctalk "Good luck~";
donpcevent instance_npcname("map_md_pay_spawn") + "::OnStart";
close;
}
1@md_pay,1,1,6 script map_md_pay_spawn -1,{
end;
OnStart:
sleep 2500;
disablenpc instance_npcname("Marry Jae#0_1");
.@event$ = instance_npcname("map_md_pay_spawn") + "::OnFarmiliarDead";
killmonster 'map_md_pay$, .@event$;
monster 'map_md_pay$,252,54,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,260,40,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,249,93,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,224,38,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,255,125,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,264,132,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,255,165,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,265,181,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,225,165,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,235,115,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,205,145,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,190,180,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,213,250,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,90,263,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,135,200,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,175,155,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,165,145,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,180,117,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,175,115,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,185,66,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,155,55,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,165,45,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,124,57,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,54,45,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,53,48,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,55,65,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,51,66,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,42,84,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,41,152,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,46,171,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,45,185,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,64,172,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,75,181,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,50,202,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,55,205,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,75,245,"Familiar",'mob[0],1,.@event$;
monster 'map_md_pay$,90,263,"Familiar",'mob[0],1,.@event$;
.@event$ = instance_npcname("map_md_pay_spawn") + "::OnSkelDead";
killmonster 'map_md_pay$, .@event$;
monster 'map_md_pay$,245,55,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,243,63,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,259,98,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,258,204,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,239,122,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,189,190,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,239,231,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,205,225,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,172,207,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,166,234,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,171,236,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,126,180,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,150,150,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,155,135,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,174,75,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,186,67,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,95,65,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,55,85,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,37,92,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,34,90,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,27,99,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,57,76,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,62,93,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,33,97,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,60,45,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,48,60,"Skeleton",'mob[1],1,.@event$;
monster 'map_md_pay$,73,51,"Skeleton",'mob[1],1,.@event$;
.@event$ = instance_npcname("map_md_pay_spawn") + "::OnZombieDead";
killmonster 'map_md_pay$, .@event$;
monster 'map_md_pay$,245,65,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,218,61,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,255,171,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,215,165,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,237,127,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,215,105,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,198,168,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,243,267,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,165,207,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,157,236,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,113,259,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,105,255,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,117,238,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,164,194,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,159,172,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,175,155,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,146,131,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,152,126,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,181,85,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,165,81,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,157,74,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,175,45,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,49,48,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,65,175,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,78,180,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,33,207,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,49,227,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,55,235,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,60,240,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,70,237,"Zombie",'mob[2],1,.@event$;
monster 'map_md_pay$,65,265,"Zombie",'mob[2],1,.@event$;
'rand_chest = rand(1,4);
end;
OnFarmiliarDead:
callsub( S_Mob, 'mob[0], "Familiar", "OnFarmiliarDead" );
OnSkelDead:
callsub( S_Mob, 'mob[1], "Skeleton", "OnSkelDead" );
OnZombieDead:
callsub( S_Mob, 'mob[2], "Zombie", "OnZombieDead" );
S_Mob:
if (rand(100) == 0) {
'rand_chest++;
if ('rand_chest > 4)
'rand_chest = 1;
// Treasure Chest Spawn
donpcevent instance_npcname("#WDbox" + 'rand_chest) + "::OnStart";
}
sleep 10000;
monster 'map_md_pay$,0,0, getarg(1), getarg(0),1, instance_npcname("map_md_pay_spawn") + "::" + getarg(2);
end;
OnInstanceInit:
'count = 0;
'rand_chest = 0;
'map_md_pay$ = instance_mapname("1@md_pay");
disablenpc instance_npcname("#WDbox1");
disablenpc instance_npcname("#WDbox2");
disablenpc instance_npcname("#WDbox3");
disablenpc instance_npcname("#WDbox4");
end;
}
// Treasure Chest Reward
1@md_pay,99,172,3 script #WDbox1 4_TREASURE_BOX,{
specialeffect EF_COIN;
disablenpc();
stopnpctimer;
sleep 500;
.@chestname$ = strnpcinfo(2);
if (.@chestname$ == "WDbox1") {
for ( .@i = 0; .@i < 3; ++.@i )
makeitem rand(23142,23143),1, 'map_md_pay$, rand(97,101), rand(170,174);
}
else if (.@chestname$ == "WDbox2") {
for ( .@i = 0; .@i < 3; ++.@i )
makeitem rand(23142,23143),1, 'map_md_pay$, rand(233,237), rand(58,62);
}
else if (.@chestname$ == "WDbox3") {
for ( .@i = 0; .@i < 3; ++.@i )
makeitem rand(23142,23143),1, 'map_md_pay$, rand(51,55), rand(265,269);
}
else if (.@chestname$ == "WDbox4") {
for ( .@i = 0; .@i < 3; ++.@i )
makeitem rand(23142,23143),1, 'map_md_pay$, rand(236,240), rand(250,254);
}
end;
OnStart:
enablenpc();
instance_announce -1, "A treasure chest appeared somewhere in the dungeon. It'll disappear after a while, so let's find it.", bc_map, "0xff5500";
initnpctimer;
end;
OnTimer180000: //3min before chest disappears
disablenpc();
stopnpctimer;
end;
}
1@md_pay,235,60,3 duplicate(#WDbox1) #WDbox2 4_TREASURE_BOX
1@md_pay,53,267,3 duplicate(#WDbox1) #WDbox3 4_TREASURE_BOX
1@md_pay,238,252,3 duplicate(#WDbox1) #WDbox4 4_TREASURE_BOX

View File

@@ -241,6 +241,12 @@ que_swat mapflag nobranch
har_in01 mapflag nobranch
rockmi2 mapflag nobranch
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag nobranch
1@md_pay mapflag nobranch
//============================================================
// Lasagna
//============================================================

View File

@@ -256,6 +256,12 @@ har_in01 mapflag nomemo
rockmi1 mapflag nomemo
rockmi2 mapflag nomemo
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag nomemo
1@md_pay mapflag nomemo
//============================================================
// Lasagna
//============================================================

View File

@@ -6,6 +6,7 @@
//===== Changelogs: ==========================================
//= 1.0 Renewal split. [Euphy]
//= 1.1 Added GVG TE Guild Dungeons. [Capuche]
//= 1.2 Removed instances. [Lemongrass]
//============================================================
//============================================================
@@ -60,27 +61,10 @@ te_aldecas3 mapflag nosave SavePoint
te_aldecas4 mapflag nosave SavePoint
te_aldecas5 mapflag nosave SavePoint
//============================================================
// Misty Forest Labyrinth
//============================================================
1@mist mapflag nosave SavePoint
//============================================================
// Octopus Cave
//============================================================
1@cash mapflag nosave SavePoint
//============================================================
// Drain
//============================================================
1@pump mapflag nosave SavePoint
2@pump mapflag nosave SavePoint
//============================================================
// Somatology Laboratory
//============================================================
que_lhz mapflag nosave SavePoint
1@lhz mapflag nosave SavePoint
//============================================================
// Port Malaya
@@ -95,240 +79,22 @@ ma_zif07 mapflag nosave SavePoint
ma_zif08 mapflag nosave SavePoint
ma_zif09 mapflag nosave SavePoint
//============================================================
// Bangungot Hospital F2
//============================================================
1@ma_h mapflag nosave SavePoint
//============================================================
// Buwaya Cave
//============================================================
1@ma_c mapflag nosave SavePoint
//============================================================
// Bakonawa Hideout
//============================================================
1@ma_b mapflag nosave SavePoint
//============================================================
// Inside Eclage
//============================================================
que_avan01 mapflag nosave SavePoint
1@ecl mapflag nosave SavePoint
//============================================================
// Glastheim Memorial Dungeon
//============================================================
1@gl_k mapflag nosave SavePoint
2@gl_k mapflag nosave SavePoint
//============================================================
// Wave Mode Memorial Dungeon
//============================================================
1@def01 mapflag nosave SavePoint
1@def02 mapflag nosave SavePoint
1@def03 mapflag nosave SavePoint
//============================================================
// Heroes' Trail - Part 1
//============================================================
1@face mapflag nosave SavePoint
1@sara mapflag nosave SavePoint
//============================================================
// Heroes' Trail - Part 2
//============================================================
1@ge_st mapflag nosave SavePoint
1@gef mapflag nosave SavePoint
1@gef_in mapflag nosave SavePoint
1@spa mapflag nosave SavePoint
1@tnm1 mapflag nosave SavePoint
1@tnm2 mapflag nosave SavePoint
1@tnm3 mapflag nosave SavePoint
//============================================================
// Horror Toy Factory Memorial Dungeon
//============================================================
1@xm_d mapflag nosave SavePoint
//============================================================
// Heroes' Trail - Part 3
//============================================================
1@glast mapflag nosave SavePoint
1@air1 mapflag nosave SavePoint
1@air2 mapflag nosave SavePoint
//============================================================
// Decisive Battle - Part 1
//============================================================
1@dth1 mapflag nosave SavePoint
1@dth2 mapflag nosave SavePoint
1@dth3 mapflag nosave SavePoint
1@rev mapflag nosave SavePoint
//============================================================
// Decisive Battle - Part 2
//============================================================
1@eom mapflag nosave SavePoint
1@jtb mapflag nosave SavePoint
//============================================================
// Episode 15 - Phantasmagorica
//============================================================
1@lab mapflag nosave SavePoint
1@uns mapflag nosave SavePoint
un_myst mapflag nosave SavePoint
1@mcd mapflag nosave SavePoint
//============================================================
// Infinite Space
//============================================================
1@infi mapflag nosave
//============================================================
// Episode 16.1 - Banquet of Heroes
//============================================================
que_swat mapflag nosave SavePoint
1@mir mapflag nosave SavePoint
2@mir mapflag nosave SavePoint
1@sthb mapflag nosave SavePoint
1@sthc mapflag nosave SavePoint
1@sthd mapflag nosave SavePoint
1@slw mapflag nosave SavePoint
1@swat mapflag nosave SavePoint
//============================================================
// Rockridge
//============================================================
rockmi2 mapflag nosave SavePoint
//============================================================
// Chicken Mode - Nightmare Glastheim
//============================================================
1@gl_k2 mapflag nosave SavePoint
2@gl_k2 mapflag nosave SavePoint
//============================================================
// Chicken Mode - Horror Toy Factory
//============================================================
1@xm_d2 mapflag nosave SavePoint
//============================================================
// Suspicious Shipwreck
//============================================================
1@tre mapflag nosave SavePoint
//============================================================
// Poring Village
//============================================================
1@begi mapflag nosave SavePoint
//============================================================
// Volcanic Island Korodo
//============================================================
1@crd mapflag nosave SavePoint
//============================================================
// Noodles Festival July
//============================================================
1@drdo mapflag nosave SavePoint
//============================================================
// Soul Reaper Job Change
//============================================================
1@soul mapflag nosave SavePoint
//============================================================
// Episode 17.1
//============================================================
1@cor mapflag nosave SavePoint
1@os_a mapflag nosave SavePoint
1@os_b mapflag nosave SavePoint
1@rgsr mapflag nosave SavePoint
//============================================================
// Episode 17.2
//============================================================
1@bamn mapflag nosave SavePoint
1@bamq mapflag nosave SavePoint
1@ghg mapflag nosave SavePoint
1@herbs mapflag nosave SavePoint
1@lost mapflag nosave SavePoint
1@odin mapflag nosave SavePoint
//============================================================
// 4th Jobs Change
//============================================================
1@4win mapflag nosave SavePoint
1@4mag mapflag nosave SavePoint
1@4mst mapflag nosave SavePoint
1@4sac mapflag nosave SavePoint
1@4tro mapflag nosave SavePoint
1@4inq mapflag nosave SavePoint
1@4cdn mapflag nosave SavePoint
1@4igd mapflag nosave SavePoint
1@4drk mapflag nosave SavePoint
//============================================================
// Geffen Night Arena
//============================================================
1@ge_sn mapflag nosave SavePoint
//============================================================
// Traces of Heroes
//============================================================
1@mjo1 mapflag nosave SavePoint
1@mjo2 mapflag nosave SavePoint
1@spa2 mapflag nosave SavePoint
//============================================================
// Thanatos Tower Memorial Dungeon
//============================================================
1@thts mapflag nosave SavePoint
2@thts mapflag nosave SavePoint
3@thts mapflag nosave SavePoint
4@thts mapflag nosave SavePoint
5@thts mapflag nosave SavePoint
6@thts mapflag nosave SavePoint
7@thts mapflag nosave SavePoint
8@thts mapflag nosave SavePoint
//============================================================
// Glastheim Challenge Mode
//============================================================
1@gl_he mapflag nosave SavePoint
1@gl_he2 mapflag nosave SavePoint
//============================================================
// EDDA
//============================================================
1@gl_prq mapflag nosave SavePoint
1@gol1 mapflag nosave SavePoint
1@gol2 mapflag nosave SavePoint
//============================================================
// 2018 Halloween
//============================================================
1@halo mapflag nosave SavePoint
//============================================================
// Constellation Tower
//============================================================
1@ch_t mapflag nosave SavePoint
2@ch_t mapflag nosave SavePoint
3@ch_t mapflag nosave SavePoint
//============================================================
// Episode 18 - Direction of Prayer
//============================================================
1@adv mapflag nosave SavePoint
1@advs mapflag nosave SavePoint
1@nyr mapflag nosave SavePoint
1@oz mapflag nosave SavePoint
1@tcamp mapflag nosave SavePoint
2@nyr mapflag nosave SavePoint
//============================================================
// Sunken Tower
//============================================================
1@ch_u mapflag nosave SavePoint

View File

@@ -246,6 +246,12 @@ rebel_in mapflag monster_noteleport
har_in01 mapflag noteleport
rockmi2 mapflag noteleport
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag noteleport
1@md_pay mapflag noteleport
//============================================================
// Lasagna
//============================================================

View File

@@ -189,6 +189,12 @@ har_in01 mapflag nowarpto
rockmi1 mapflag nowarpto
rockmi2 mapflag nowarpto
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag nowarpto
1@md_pay mapflag nowarpto
//============================================================
// Lasagna
//============================================================

View File

@@ -122,6 +122,12 @@
1@slw mapflag partylock
1@swat mapflag partylock
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag partylock
1@md_pay mapflag partylock
//============================================================
// Chicken Mode Nightmare Glastheim
//============================================================

View File

@@ -107,6 +107,12 @@ lhz_d_n2 mapflag restricted 6
1@slw mapflag restricted 6
1@swat mapflag restricted 6
//============================================================
// Memorial day
//============================================================
1@md_gef mapflag restricted 6
1@md_pay mapflag restricted 6
//============================================================
// Chicken Mode Nightmare Glastheim
//============================================================

View File

@@ -0,0 +1,18 @@
//===== rAthena Script =======================================
//= Niflheim dungeon Monsters Spawn Script
//===== Description: =========================================
//= Spawns monsters in nif_dun.
//===== Additional Comments: =================================
//= 1.0 First version. [Capuche]
//============================================================
nif_dun01 monster Gan Ceann GAN_CEANN,60
nif_dun01 monster Brutal Murderer BRUTAL_MURDERER,60
nif_dun01 monster Ghost Cube GHOST_CUBE,60
nif_dun01 monster Lude Gal LUDE_GAL,60
nif_dun02 monster Disguiser DISGUISER,80
nif_dun02 monster Grote GROTE,80
nif_dun02 monster Pierrotzoist PIERROTZOIST,80
nif_dun02 monster Blue Moon Loli Ruri BLUEMOON_LOLI_RURI,80
nif_dun02 boss_monster Death Witch DEATH_WITCH,1,21600000,600000,0

View File

@@ -4,6 +4,7 @@
//= [Walkthrough Conversion]
//===== Changelog: ===========================================
//= 1.0 Added sp_rudus4 quests. [Capuche]
//= 1.1 Added nif_dun01 and nif_dun02 quests. [Capuche]
//============================================================
// sp_rudus4
@@ -478,3 +479,829 @@ OnInit:
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(16528) == 1" );
end;
}
// nif_dun
moc_para01,14,19,7 script Old scholar#lv200 2_M_SAGE_OLD,{
if (BaseLevel < 200) {
mes "[Old scholar]";
mes "I would like to do more research, but if my life is really in danger...";
next;
mes "[Old scholar]";
mes "I have no choice but to hire a strong and sincere adventurer. Hmm...";
next;
mes "[Old scholar]";
mes "I think level 200 would be enough... It's easy to say, but that is not the type of person who can be easily found.";
close;
}
switch( isbegin_quest(8640) ) {
case 0:
if (isbegin_quest(8639) == 0) {
mes "[Old scholar]";
mes "Oh, oh my, my gosh. The strong and sincere adventurer I've been looking for has appeared here.";
mes "Would you like to help me with my research?";
next;
.@s = select( "Listen to the request", "Suspicious..." );
mes "[Old scholar]";
mes "Even if I look at you with my eyes I recognize your skills at a glance, please do something...!";
if (.@s == 2)
close;
mes "...?";
mes "What? Will you help me?";
next;
mes "[Old scholar]";
mes "No, that's it... Everyone refused, so the hanging words got stuck in my mouth.";
mes "Thank you for your cooperation.";
next;
select( "You're still cooperating..." );
mes "[Old scholar]";
mes "Come on, that's it. Of course someone as talented as you can go to Niflheim.";
mes "Of course I don't have many days left and it's not the right time for me to go and I can't come back in time.";
next;
mes "[Old scholar]";
mes "According to recent sources... Deep in the darkness of Niflheim, the dead hold a banquet,";
mes "in a form we cannot imagine.";
mes "But there is nowhere to hear more about it.";
next;
mes "[Old scholar]";
mes "You'll find out soon anyway, but I'm curious now.";
mes "Can you take a look? I'll give you plenty of examples.";
next;
if (select( "That's enough. Can I come back?", "What if I can't come back?" ) == 2) {
mes "[Old scholar]";
mes "You wouldn't even think that you wouldn't be able to come back at your level...";
mes "If you're still that careful, okay. Come back when you're ready.";
close;
}
setquest 8639;
mes "[Garim Springfield]";
mes "Thank you. Turns out I forgot to introduce myself.";
mes "My name is Garim Springfield.";
mes "I worked at Sage Castle for a long time... Now that I'm retired, I want to spend some leisure time here and also put in requests...";
next;
mes "[" + strcharinfo(0) + "]";
mes "Relax...";
next;
mes "[Garim Springfield]";
mes "Okay. It's worth it.";
mes "Grant an idle old man a wish.";
mes "Then I'll wait for the good news.";
close;
}
mes "[Garim Springfield]";
mes "What are you doing? Go fast.";
close;
case 1:
mes "[Garim Springfield]";
mes "Huh? Did you really visit the banquet hall deep in Niflheim?";
mes "You came back alive?";
mes "Okay then, tell me your story.";
next;
mes "[Garim Springfield]";
mes "Hmm hmm... I see!";
mes "I am prepared like this, so I won't be afraid if I go later!";
next;
mes "[Garim Springfield]";
mes "The research will last forever...!";
completequest 8640;
close;
case 2:
mes "[Garim Springfield]";
mes "I felt like I could do research even after dying, so I felt better.";
close;
}
end;
OnInit:
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "BaseLevel >= 200 && isbegin_quest(8639) == 0 && isbegin_quest(8640) == 0" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8640) == 1" );
end;
}
niflheim,164,102,3 script Tired looking dead#lv20 4_F_NFDEADMGCIAN,{
switch( isbegin_quest(8640) ) {
case 0:
switch( isbegin_quest(8639) ) {
case 0:
mes "[Tired looking dead]";
mes "Ha-am...";
mes "I can't sleep";
mes "What's the fuss that you can't sleep even after you're dead?";
mes "Let's get some sleep...";
mes "I'm going to die because of the noise.";
close;
case 1:
mes "[Tired looking dead]";
mes "Ha-am...";
mes "Huh? What? I don't deal with peddlers.";
next;
if (select( "You have a bad complexion", "Go back quietly" ) == 2) {
mes "[Tired looking dead]";
mes "Oh, I did mean to ask you if you had sleeping pills... But I'm dead... You won't hear me... Hmm.";
close;
}
mes "[Tired looking dead]";
mes "Uh, how did you know?";
mes "My complexion must look real bad...";
mes "Do you have a sleeping pill?";
next;
select("I'm not a junkie" );
mes "[Tired looking dead]";
mes "Ah... I'm sorry. I misunderstood. All the people who have come this far were weird kids or people who sold drugs, so I kicked them out.";
next;
mes "[Tired looking dead]";
mes "By the way... how did you know that I am tired? Does my complexion look that bad?";
next;
mes "[Tired looking dead]";
mes "Actually, I've been dead for a while, but I've only recently come to Niflheim. So I decided to sleep here in this house...";
mes "I can't sleep at night because it's so noisy next door.";
next;
mes "[Tired looking dead]";
mes "No, it's the pain of not being able to sleep because the next door is noisy even though I'm already dead..";
mes "Oh, not next door. They all ran away.";
mes "There's a reason why it is so cheap...";
next;
mes "[Tired looking dead]";
mes "Yes, <NAVI>[there]<INFO>niflheim,148,124,0,101,0</INFO></NAVI>";
mes "The crazy villagers over there... they have a banquet every day.";
next;
mes "[Tired looking dead]";
mes "I'm in there every day, every day!!";
next;
mes "[Tired looking dead]";
mes "Ha... I know, even if it's every day, there's a set time.";
mes "By the way... If you were a drinker, who would have gone home on time, while you were alive, would you do that even in death?";
next;
mes "[Tired looking dead]";
mes "I'm... dead, so I just want to sleep peacefully...";
mes "I hope they return to their senses after the banquet is over.";
next;
select( "Banquet is..." );
mes "[Tired looking dead]";
mes "Yeah... you look pretty strong and there's alcohol... they are dead, so it's magic.";
mes "If you can silence those who are drunk with magical powers all night long, I will reward you.";
mes "Yes, of course every day.";
next;
mes "[Milla]";
mes "I am Milla. I am now a resident of Niflheim.";
mes "Please help me sleep, my dear.";
erasequest 8639;
setquest 8640;
close;
case 2:
end;
}
end;
case 1:
case 2:
mes "[Milla]";
mes "Yes, thank you for coming back.";
mes "Ha-am...";
mes "For me and my neighbors... for a good night's sleep.";
next;
if (select( "Listen to the request.", "Reject." ) == 2) {
mes "[Milla]";
mes "You can't do this if you're busy...";
mes "Ah, after all, the living do not hear that sound. This is my agony only known to the dead...";
npctalk "Another Dead: Noisy! Get some sleep!", "#lv200althema", bc_self;
npctalk "Another Dead: He really can't sleep!", "#lv200althema2", bc_self;
close;
}
mes "[Milla]";
mes "Beloved living, thank you for your mercy.";
mes "It's a luxurious facility with a banquet hall and an Opera House, but each one is a little different.";
mes "I'll ask for that kind of skill based on your kindness...";
next;
switch( select( "He looks cute", "That's not an instrument", "Playing the piano", "Guys with messy hair", "The ones with dolls", "Wake them up", "Stop" ) ) {
case 1:
switch( checkquest(8642,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8642;
break;
}
switch( checkquest(8641,HUNTING) ) {
case -1:
mes "[Milla]";
mes "They look cute... but they're terribly noisy.";
mes "^0000FF" + getmonsterinfo("GHOST_CUBE", MOB_NAME) + "^000000,";
mes "^0000FF" + getmonsterinfo("LUDE_GAL", MOB_NAME) + "^000000";
next;
mes "[Milla]";
mes "I wish you could beat 15 " + getmonsterinfo("GHOST_CUBE", MOB_NAME) + "";
mes "and 15 of their mate " + getmonsterinfo("LUDE_GAL", MOB_NAME) + ", who haunted the banquet hall of the dead,";
mes "and make them holy for a day.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8641;
close;
case 0:
case 1:
mes "[Milla]";
mes "I wish you could beat 15 " + getmonsterinfo("GHOST_CUBE", MOB_NAME) + "";
mes "and 15 of their mate " + getmonsterinfo("LUDE_GAL", MOB_NAME) + ", who haunted the banquet hall of the dead,";
mes "and make them holy for a day.";
close;
case 2:
mes "[Milla]";
mes "Kya, did you hear them scream all the way here?";
mes "I think I can sleep a little deeper today thanks to you...";
mes "I have to make it through this commotion again tomorrow.";
mes "Thank you.";
erasequest 8641;
setquest 8642;
// getexp 15642570,10949790; // pre-rebalance
getexp 20300909,14210636; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
case 2:
switch( checkquest(8645,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8645;
break;
}
switch( checkquest(8644,HUNTING) ) {
case -1:
mes "[Milla]";
mes "It's called ^0000FF" + getmonsterinfo("BRUTAL_MURDERER", MOB_NAME) + "^000000.";
mes "They have knives in their hands... ";
mes "It's too loud to knock anywhere!";
next;
mes "[Milla]";
mes "I wish you could beat 10 " + getmonsterinfo("BRUTAL_MURDERER", MOB_NAME) + "";
mes "and 10 of their mate " + getmonsterinfo("GAN_CEANN", MOB_NAME) + ", who haunted the banquet hall of the dead,";
mes "and make them holy for a day.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead.";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8644;
close;
case 0:
case 1:
mes "[Milla]";
mes "I wish you could beat 10 " + getmonsterinfo("BRUTAL_MURDERER", MOB_NAME) + "";
mes "and 10 of their mate " + getmonsterinfo("GAN_CEANN", MOB_NAME) + ", who haunted the banquet hall of the dead,";
mes "and make them holy for a day.";
close;
case 2:
mes "[Milla]";
mes "Kya, did you hear the sound of their cleavers and their helmets flying all the way up to here?";
mes "I think I can sleep a little deeper today thanks to you...";
mes "Thank you.";
erasequest 8644;
setquest 8645;
// getexp 10756120,7541880; // pre-rebalance
getexp 14106860,9874802; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
case 3:
switch( checkquest(8648,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8648;
break;
}
switch( isbegin_quest(8647) ) {
case 0:
mes "[Milla]";
mes "If you go into the banquet hall of the dead there, there will be a piano.";
mes "It actually screams when a living person knocks on it.";
mes "Would it be fun?";
next;
mes "[Milla]";
mes "Play the <NAVI>[piano]<INFO>nif_dun01,140,202,0,101,0</INFO></NAVI>";
mes "of the banquet hall of the dead.";
mes "There is no such thing as a song request.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8647;
close;
case 1:
mes "[Milla]";
mes "Play the <NAVI>[piano]<INFO>nif_dun01,140,202,0,101,0</INFO></NAVI>";
mes "of the banquet hall of the dead.";
mes "There is no such thing as a song request.";
close;
case 2:
mes "[Milla]";
mes "Hahaha, did you hear that? It's like alcohol... No, it's like that if you drink magic and act like a hawk.";
mes "I think I can sleep a little deeper today thanks to you...";
mes "Thank you.";
erasequest 8647;
erasequest 8649;
setquest 8648;
getexp 10000000,7500000;
close;
}
end;
case 4:
if (BaseLevel < 240) {
mes "[Milla]";
mes "Hmm... no.";
mes "It's still too early to leave it to you...";
mes "I'll wait until you reach level 240.";
mes "I have time.";
close;
}
switch( checkquest(8651,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8651;
break;
}
switch( isbegin_quest(8650) ) {
case 0:
case 1:
switch( checkquest(8650,HUNTING) ) {
case -1:
mes "[Milla]";
mes "I mean, there are kids called ^0000FF" + getmonsterinfo("DISGUISER", MOB_NAME) + "^000000. ";
mes "They've got their hair as if a bomb hit, and they look so excited.";
mes "^0000FF" + getmonsterinfo("BLUEMOON_LOLI_RURI", MOB_NAME) + "^000000, it can't be that loud when you get together with guys with broom hair.";
next;
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 15 ^0000FF" + getmonsterinfo("DISGUISER", MOB_NAME) + "^000000 and the 15 ^0000FF" + getmonsterinfo("BLUEMOON_LOLI_RURI", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8650;
close;
case 0:
case 1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 15 ^0000FF" + getmonsterinfo("DISGUISER", MOB_NAME) + "^000000 and the 15 ^0000FF" + getmonsterinfo("BLUEMOON_LOLI_RURI", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
close;
case 2:
mes "[Milla]";
mes "Huh, huh, I can hear the bomb head dusting all the way up to here.";
mes "Thanks to you, I will sleep well today.";
mes "Thank you. See you again tomorrow.";
completequest 8650;
setquest 8651;
getexp 44984725,31489308; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
case 2:
switch( checkquest(8652,HUNTING) ) {
case -1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 15 ^0000FF" + getmonsterinfo("DISGUISER", MOB_NAME) + "^000000 and the 15 ^0000FF" + getmonsterinfo("BLUEMOON_LOLI_RURI", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8652;
close;
case 0:
case 1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 15 ^0000FF" + getmonsterinfo("DISGUISER", MOB_NAME) + "^000000 and the 15 ^0000FF" + getmonsterinfo("BLUEMOON_LOLI_RURI", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
close;
case 2:
mes "[Milla]";
mes "Huh, huh, I can hear the bomb head dusting all the way up to here.";
mes "Thanks to you, I will sleep well today.";
mes "Thank you. See you again tomorrow.";
erasequest 8652;
setquest 8651;
getexp 44984725,31489308; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
}
end;
case 5:
if (BaseLevel < 240) {
mes "[Milla]";
mes "Hmm... no.";
mes "It's still too early to leave it to you...";
mes "I'll wait until you reach level 240.";
mes "I have time.";
close;
}
switch( checkquest(8654,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8654;
break;
}
switch( isbegin_quest(8653) ) {
case 0:
case 1:
switch( checkquest(8653,HUNTING) ) {
case -1:
mes "[Milla]";
mes "If you look at the collapsed Opera House there,";
mes "you'll see the ones with dolls. There's " + getmonsterinfo("GROTE", MOB_NAME) + " and " + getmonsterinfo("PIERROTZOIST", MOB_NAME) + "^000000...";
mes "All the ones with dolls are so noisy.";
next;
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 10 ^0000FF" + getmonsterinfo("GROTE", MOB_NAME) + "^000000 and the 10 ^0000FF" + getmonsterinfo("PIERROTZOIST", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8653;
close;
case 0:
case 1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 10 ^0000FF" + getmonsterinfo("GROTE", MOB_NAME) + "^000000 and the 10 ^0000FF" + getmonsterinfo("PIERROTZOIST", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
close;
case 2:
mes "[Milla]";
mes "Kyak-kyak-kyak-kyak-kyak-kyak-kyak, what did you really do?";
mes "A while ago, " + getmonsterinfo("GROTE", MOB_NAME) + " and " + getmonsterinfo("PIERROTZOIST", MOB_NAME) + " went home saying they wouldn't make a noise again.";
mes "Of course not. They will come again tomorrow.";
mes "Thank you. See you tomorrow.";
completequest 8653;
setquest 8654;
getexp 29944101,20960871; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
case 2:
switch( checkquest(8655,HUNTING) ) {
case -1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 10 ^0000FF" + getmonsterinfo("GROTE", MOB_NAME) + "^000000 and the 10 ^0000FF" + getmonsterinfo("PIERROTZOIST", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8655;
close;
case 0:
case 1:
mes "[Milla]";
mes "I hope you show the hot taste to";
mes "the 10 ^0000FF" + getmonsterinfo("GROTE", MOB_NAME) + "^000000 and the 10 ^0000FF" + getmonsterinfo("PIERROTZOIST", MOB_NAME) + "^000000";
mes "that haunt the collapsed Opera House.";
close;
case 2:
mes "[Milla]";
mes "Kyak-kyak-kyak-kyak-kyak-kyak-kyak, what did you really do?";
mes "A while ago, " + getmonsterinfo("GROTE", MOB_NAME) + " and " + getmonsterinfo("PIERROTZOIST", MOB_NAME) + " went home saying they wouldn't make a noise again.";
mes "Of course not. They will come again tomorrow.";
mes "Thank you. See you tomorrow.";
erasequest 8655;
setquest 8654;
getexp 29944101,20960871; // rebalance (unknown jexp, 70% of baseexp)
close;
}
end;
}
end;
case 6:
if (BaseLevel < 240) {
mes "[Milla]";
mes "Hmm... no.";
mes "It's still too early to leave it to you...";
mes "I'll wait until you reach level 240.";
mes "I have time.";
close;
}
switch( checkquest(8657,PLAYTIME) ) {
case -1:
break;
case 0:
case 1:
mes "[Milla]";
mes "I think they've had enough today.";
mes "I hope you can help me tomorrow if you have time.";
close;
case 2:
erasequest 8657;
break;
}
switch( isbegin_quest(8656) ) {
case 0:
mes "[Milla]";
mes "The smashed... no, don't say that.";
mes "If you go to the collapsed Opera House, you will find ghosts in the frames.";
mes "But they don't even have a body...";
mes "Snoring, my dear.";
next;
mes "[Milla]";
mes "A <NAVI>[ghost talking]<INFO>nif_dun02,37,221,0,101,0</INFO></NAVI>";
mes "and <NAVI>[snoring]<INFO>nif_dun02,249,221,0,101,0</INFO></NAVI>";
mes "inside the banquet hall of the dead, twist your nose.";
mes "You need to calm them down.";
next;
if (select( "I accept", "I'm busy today" ) == 2) {
mes "[Milla]";
mes "Ummm...";
mes "Yeah... Well, I won't die just because I can't sleep...";
mes "I'm already dead";
close;
}
mes "[Milla]";
mes "Thank you for your kind heart.";
mes "Blessed be the mercy of the living!";
setquest 8656;
close;
case 1:
if (isbegin_quest(8658) == 0 || isbegin_quest(8659) == 0) {
mes "[Milla]";
mes "A <NAVI>[ghost talking]<INFO>nif_dun02,37,221,0,101,0</INFO></NAVI>";
mes "and <NAVI>[snoring]<INFO>nif_dun02,249,221,0,101,0</INFO></NAVI>";
mes "inside the banquet hall of the dead, twist your nose.";
mes "You need to calm them down.";
close;
}
mes "[Milla]";
mes "...I can't eat any more...";
mes "...hick.";
mes "Oh, have you been there? I fell asleep without realizing it.";
mes "It's really annoying to hear that snoring all the way...";
next;
mes "[Milla]";
mes "It seems that the living do not hear well.";
mes "Anyway, thank you for today.";
mes "Sleep is precious...";
mes "Sleep enough while you're alive.";
erasequest 8656;
erasequest 8658;
erasequest 8659;
setquest 8657;
getexp 13000000,9100000; // rebalance (unknown jexp, 70% of baseexp)
close;
case 2:
end;
}
end;
case 7:
mes "[Milla]";
mes "You can't do this if you're busy...";
mes "Ah, after all, the living do not hear that sound. This is my agony only known to the dead...";
npctalk "Another Dead: Noisy! Get some sleep!", "#lv200althema", bc_self;
npctalk "Another Dead: He really can't sleep!", "#lv200althema2", bc_self;
close;
}
end;
}
end;
OnInit:
// prerequisite
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8639) == 1" );
// daily
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8641,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8644,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8647) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8650,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8652,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8653,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(8655,HUNTING) == 2" );
questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(8656) == 1 && isbegin_quest(8658) == 1 && isbegin_quest(8659) == 1" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8642,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8645,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8648,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8651,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8654,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(8657,PLAYTIME) == 2" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 200 && (checkquest(8641,HUNTING) == -1 && checkquest(8642,PLAYTIME) == -1)" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 200 && (checkquest(8644,HUNTING) == -1 && checkquest(8645,PLAYTIME) == -1)" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 200 && (isbegin_quest(8647) == 0 && checkquest(8648,PLAYTIME) == -1)" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 240 && (checkquest(8650,HUNTING) == -1 && checkquest(8651,PLAYTIME) == -1)" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 240 && isbegin_quest(8650) == 2 && checkquest(8652,HUNTING) == -1 && checkquest(8651,PLAYTIME) == -1" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 240 && (checkquest(8653,HUNTING) == -1 && checkquest(8654,PLAYTIME) == -1)" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 240 && isbegin_quest(8653) == 2 && checkquest(8655,HUNTING) == -1 && checkquest(8654,PLAYTIME) == -1" );
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "BaseLevel >= 240 && (isbegin_quest(8656) == 0 && checkquest(8657,PLAYTIME) == -1)" );
end;
}
niflheim,160,106,3 duplicate(dummy_npc) #lv200althema CLEAR_NPC
niflheim,165,105,3 duplicate(dummy_npc) #lv200althema2 CLEAR_NPC
niflheim,143,125,6 script Funny Gatekeeper's Friend#lv20 LUDE_GAL,{
npctalk "Funny Gatekeeper's Friend: Sing~ All night~ or forever~", "", bc_self;
end;
}
niflheim,145,126,6 script Angry Gatekeeper#lv200 GHOST_CUBE,{
npctalk "Angry Gatekeeper: Kye-Look! Living! Play! No need to go!", "", bc_self;
npctalk "Funny Gatekeeper's Friend: No need to leave! Play with us!", "Funny Gatekeeper's Friend#lv20", bc_self;
end;
}
nif_dun01,140,202,3 script Piano#lv200 CLEAR_NPC,{
if (isbegin_quest(8647) == 1) {
mes "I couldn't hear anything, but the dead around me seem to be in an uproar.";
mes "Let's report to Milla.";
completequest 8647;
setquest 8649;
npctalk "Clink clink... Crackle!", "Piano#lv200", bc_self;
npctalk "Sleep alive! Kyaaak!", "Exciting Cello#lv200", bc_self;
npctalk "The living man plays the piano!", "Dancing Cello#lv200", bc_self;
npctalk "Oh my God, he can't really play...", "Quiet Cello#lv200", bc_self;
npctalk "How could that be...", "Stranger Cello#lv200", bc_self;
npctalk "You ruined the atmosphere!", "Happy Cello#lv200", bc_self;
npctalk "Piano Ooo!!!", "Serious Contrabass#lv2", bc_self;
npctalk "The piano is stunned...", "Sleek Harp#lv200", bc_self;
close;
}
// note: no text
end;
OnInit:
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8647) == 1" );
end;
}
nif_dun01,133,198,3 duplicate(dummy_npc) Exciting Cello#lv200 CLEAR_NPC
nif_dun01,138,195,3 duplicate(dummy_npc) Dancing Cello#lv200 CLEAR_NPC
nif_dun01,153,195,3 duplicate(dummy_npc) Quiet Cello#lv200 CLEAR_NPC
nif_dun01,152,198,3 duplicate(dummy_npc) Stranger Cello#lv200 CLEAR_NPC
nif_dun01,157,198,3 duplicate(dummy_npc) Happy Cello#lv200 CLEAR_NPC
nif_dun01,156,202,3 duplicate(dummy_npc) Serious Contrabass#lv2 CLEAR_NPC
nif_dun01,133,201,3 duplicate(dummy_npc) Sleek Harp#lv200 CLEAR_NPC
nif_dun01,148,43,3 script Helpful Gatekeeper#240 DISGUISER,{
if (BaseLevel < 240) {
npctalk "Helpful Gatekeeper: Uh-huh-huh. You don't have enough grooming to get through here.", "", bc_self;
npctalk "Silent Gatekeeper: ...means you are under-leveled.", "Silent Gatekeeper#240", bc_self;
end;
}
npctalk "Helpful Gatekeeper: Uh-huh-huh. Mountain, go up. Can't come down.", "", bc_self;
npctalk "Silent Gatekeeper: ...means welcome.", "Silent Gatekeeper#240", bc_self;
end;
}
nif_dun01,143,43,7 script Silent Gatekeeper#240 GROTE,{
npctalk "Silent Gatekeeper: ...", "", bc_self;
end;
}
nif_dun02,37,221,3 script Sleep Talking Ghost#lv240 CLEAR_NPC,3,3,{
if (isbegin_quest(8656) == 1) {
switch( isbegin_quest(8659) ) {
case 0:
setquest 8659;
mes "I twisted the nose of the ghost in the frame.";
mes "There was no touch, but the ghost stopped talking.";
npctalk "????????!", "", bc_self;
if (isbegin_quest(8658) == 1)
mes "Let's go report to Milla.";
close;
case 1:
mes "The ghost that was talking about is not seen, and another ghost is sleeping.";
close;
default:
end;
}
}
end;
OnTouch:
if (isbegin_quest(8659) == 0) {
npctalk "I want to eat it too... it looks delicious...", "", bc_self;
end;
}
end;
OnInit:
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8656) == 1 && isbegin_quest(8659) == 0" );
end;
}
nif_dun02,249,221,3 script Snoring Ghost#lv240 CLEAR_NPC,3,3,{
if (isbegin_quest(8656) == 1) {
switch( isbegin_quest(8658) ) {
case 0:
setquest 8658;
mes "I twisted the nose of the ghost in the frame.";
mes "There was no touch, but the ghost stopped snoring.";
npctalk "Nang!", "", bc_self;
if (isbegin_quest(8659) == 1)
mes "Let's go report to Milla.";
close;
case 1:
mes "The snoring ghost is nowhere to be seen, and another ghost is sleeping.";
close;
default:
end;
}
}
end;
OnTouch:
if (isbegin_quest(8658) == 0)
npctalk "Dorolong Dorolong...", "", bc_self;
end;
OnInit:
questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(8656) == 1 && isbegin_quest(8658) == 0" );
end;
}

View File

@@ -96,6 +96,7 @@ npc: npc/re/instances/SealedOs.txt
npc: npc/re/instances/SkyFortress.txt
npc: npc/re/instances/TempleOfDemonGod.txt
//npc: npc/re/instances/WaveMode.txt
npc: npc/re/instances/WeekendDungeon.txt
npc: npc/re/instances/WernerLaboratoryCentralRoom.txt
npc: npc/re/instances/WolfchevLaboratory.txt
//npc: npc/custom/official/GeffenMagicTournament.txt

View File

@@ -46,6 +46,7 @@ npc: npc/re/mobs/dungeons/mjo_dun.txt
npc: npc/re/mobs/dungeons/moc_pryd.txt
npc: npc/re/mobs/dungeons/moro_vol.txt
npc: npc/re/mobs/dungeons/mosk_dun.txt
npc: npc/re/mobs/dungeons/nif_dun.txt
npc: npc/re/mobs/dungeons/nyd_dun.txt
npc: npc/re/mobs/dungeons/odin.txt
npc: npc/re/mobs/dungeons/orcsdun.txt

View File

@@ -26,6 +26,7 @@ npc: npc/re/warps/dungeons/ecl_dun.txt
npc: npc/re/warps/dungeons/harboro2.txt
npc: npc/re/warps/dungeons/iz_dun.txt
npc: npc/re/warps/dungeons/moc_pryd.txt
npc: npc/re/warps/dungeons/nif_dun.txt
npc: npc/re/warps/dungeons/rockmi1.txt
npc: npc/re/warps/dungeons/sp_rudus.txt
npc: npc/re/warps/dungeons/slabw01.txt

View File

@@ -0,0 +1,34 @@
//===== rAthena Script =======================================
//= Niflheim dungeon warps script
//===== Changelogs: ==========================================
//= 1.0 First version. [Capuche]
//============================================================
niflheim,149,124,0 script nifla_nifdun01a WARPNPC,1,1,{
end;
OnTouch:
if (isbegin_quest(8640) == 0) {
npctalk "Angry Gatekeeper: How are you adventurer? Go in? Do you want to go in? Kick!", "Angry Gatekeeper#lv200", bc_self;
npctalk "Funny Gatekeeper's Friend: Awesome!", "Funny Gatekeeper's Friend#lv20", bc_self;
end;
}
warp "nif_dun01",145,85;
end;
}
nif_dun01,145,82,0 warp2 nifdun01a_nifla 1,1,niflheim,146,122
nif_dun01,146,36,0 script nifdun01a_nifdun02a WARPNPC,1,1,{
end;
OnTouch:
if (BaseLevel < 240) {
npctalk "Helpful Gatekeeper: Hey, look at how you look! How can you come all the way here!", "Helpful Gatekeeper#240", bc_self;
npctalk "Silent Gatekeeper: ...means lack of training.", "Silent Gatekeeper#240", bc_self;
end;
}
warp "nif_dun02",149,23;
end;
}
nif_dun02,162,15,0 warp2 nifdun02a_nifdun01a 1,1,nif_dun01,146,39
nif_dun02,137,15,0 warp2 nifdun02a_nifdun01a_ 1,1,nif_dun01,146,39

View File

@@ -1,8 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 12.0.40629.0
# Visual Studio Version 17
VisualStudioVersion = 17.0.0.0
MinimumVisualStudioVersion = 15.0.0.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdparty", "3rdparty", "{6ABA1767-6242-4CA0-BA22-A30972DC8918}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "src\common\common.vcxproj", "{F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559}"

View File

@@ -259,6 +259,7 @@ CREATE TABLE IF NOT EXISTS `char` (
`last_map` varchar(11) NOT NULL default '',
`last_x` smallint(4) unsigned NOT NULL default '53',
`last_y` smallint(4) unsigned NOT NULL default '111',
`last_instanceid` int(11) unsigned NOT NULL default '0',
`save_map` varchar(11) NOT NULL default '',
`save_x` smallint(4) unsigned NOT NULL default '53',
`save_y` smallint(4) unsigned NOT NULL default '111',

View File

@@ -0,0 +1,3 @@
ALTER TABLE `char`
ADD COLUMN `last_instanceid` int(11) unsigned NOT NULL default '0' AFTER `last_y`
;

View File

@@ -2,6 +2,14 @@
#
# setup and static libraries
#
set(RA_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
"rathena include directory"
)
mark_as_advanced( RA_INCLUDE_DIRS )
add_subdirectory( common )
if( HAVE_common )
option( BUILD_SERVERS "build server executables" ON )

View File

@@ -15,7 +15,7 @@ set(CHAR_SOURCES ${CHAR_SOURCES_C} ${CHAR_SOURCES_CXX})
#message( STATUS "CHAR_SOURCES="${CHAR_SOURCES})
set( DEPENDENCIES common )
set( LIBRARIES ${GLOBAL_LIBRARIES} )
set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} )
set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} ${RA_INCLUDE_DIRS} )
set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS}" )
set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ${CHAR_HEADERS} ${CHAR_SOURCES} )
source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} )

View File

@@ -3,6 +3,8 @@ COMMON_H = $(shell ls ../common/*.hpp)
COMMON_AR = ../common/obj/common.a
COMMON_INCLUDE = -I../common/
RA_INCLUDE = -I../
LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h)
LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a
LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig
@@ -65,7 +67,7 @@ obj:
obj/%.o: %.cpp $(CHAR_H) $(COMMON_H) $(LIBCONFIG_H) $(RAPIDYAML_H)
@echo " CXX $<"
@@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) $(RAPIDYAML_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(RA_INCLUDE) $(LIBCONFIG_INCLUDE) $(RAPIDYAML_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
# missing object files
$(COMMON_AR):

View File

@@ -109,8 +109,9 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp14</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -126,7 +127,8 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -144,7 +146,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -164,7 +167,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>

View File

@@ -13,19 +13,19 @@
#include <string.h>
#include <time.h>
#include "../common/cbasetypes.hpp"
#include "../common/cli.hpp"
#include "../common/core.hpp"
#include "../common/db.hpp"
#include "../common/malloc.hpp"
#include "../common/mapindex.hpp"
#include "../common/mmo.hpp"
#include "../common/random.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include "../common/utilities.hpp"
#include <common/cbasetypes.hpp>
#include <common/cli.hpp>
#include <common/core.hpp>
#include <common/db.hpp>
#include <common/malloc.hpp>
#include <common/mapindex.hpp>
#include <common/mmo.hpp>
#include <common/random.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include <common/utilities.hpp>
#include "char_clif.hpp"
#include "char_cnslif.hpp"
@@ -279,7 +279,7 @@ int char_mmo_char_tosql(uint32 char_id, struct mmo_charstatus* p){
(p->job_level != cp->job_level) || (p->job_exp != cp->job_exp) ||
(p->zeny != cp->zeny) ||
( strncmp( p->last_point.map, cp->last_point.map, sizeof( p->last_point.map ) ) != 0 ) ||
(p->last_point.x != cp->last_point.x) || (p->last_point.y != cp->last_point.y) ||
(p->last_point.x != cp->last_point.x) || (p->last_point.y != cp->last_point.y) || (p->last_point_instanceid != cp->last_point_instanceid) ||
( strncmp( p->save_point.map, cp->save_point.map, sizeof( p->save_point.map ) ) != 0 ) ||
( p->save_point.x != cp->save_point.x ) || ( p->save_point.y != cp->save_point.y ) ||
(p->max_hp != cp->max_hp) || (p->hp != cp->hp) ||
@@ -307,7 +307,8 @@ int char_mmo_char_tosql(uint32 char_id, struct mmo_charstatus* p){
"`str`='%d',`agi`='%d',`vit`='%d',`int`='%d',`dex`='%d',`luk`='%d',"
"`option`='%d',`party_id`='%d',`guild_id`='%d',`pet_id`='%d',`homun_id`='%d',`elemental_id`='%d',"
"`weapon`='%d',`shield`='%d',`head_top`='%d',`head_mid`='%d',`head_bottom`='%d',"
"`last_map`='%s',`last_x`='%d',`last_y`='%d',`save_map`='%s',`save_x`='%d',`save_y`='%d', `rename`='%d',"
"`last_map`='%s',`last_x`='%d',`last_y`='%d',`last_instanceid`='%d',"
"`save_map`='%s',`save_x`='%d',`save_y`='%d', `rename`='%d',"
"`delete_date`='%lu',`robe`='%d',`moves`='%d',`font`='%u',`uniqueitem_counter`='%u',"
"`hotkey_rowshift`='%d', `clan_id`='%d', `title_id`='%lu', `show_equip`='%d', `hotkey_rowshift2`='%d',"
"`max_ap`='%u',`ap`='%u',`trait_point`='%d',"
@@ -319,7 +320,7 @@ int char_mmo_char_tosql(uint32 char_id, struct mmo_charstatus* p){
p->str, p->agi, p->vit, p->int_, p->dex, p->luk,
p->option, p->party_id, p->guild_id, p->pet_id, p->hom_id, p->ele_id,
p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom,
p->last_point.map, p->last_point.x, p->last_point.y,
p->last_point.map, p->last_point.x, p->last_point.y, p->last_point_instanceid,
p->save_point.map, p->save_point.x, p->save_point.y, p->rename,
(unsigned long)p->delete_date, // FIXME: platform-dependent size
p->robe, p->character_moves, p->font, p->uniqueitem_counter,
@@ -1060,7 +1061,7 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
"`save_map`,`save_x`,`save_y`,`partner_id`,`father`,`mother`,`child`,`fame`,`rename`,`delete_date`,`robe`, `moves`,"
"`unban_time`,`font`,`uniqueitem_counter`,`sex`,`hotkey_rowshift`,`clan_id`,`title_id`,`show_equip`,`hotkey_rowshift2`,"
"`max_ap`,`ap`,`trait_point`,`pow`,`sta`,`wis`,`spl`,`con`,`crt`,"
"`inventory_slots`,`body_direction`,`disable_call`"
"`inventory_slots`,`body_direction`,`disable_call`,`last_instanceid`"
" FROM `%s` WHERE `char_id`=? LIMIT 1", schema_config.char_db)
|| SQL_ERROR == SqlStmt_BindParam(stmt, 0, SQLDT_INT, &char_id, 0)
|| SQL_ERROR == SqlStmt_Execute(stmt)
@@ -1138,7 +1139,8 @@ int char_mmo_char_fromsql(uint32 char_id, struct mmo_charstatus* p, bool load_ev
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 71, SQLDT_SHORT, &p->crt, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 72, SQLDT_UINT16, &p->inventory_slots, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 73, SQLDT_UINT8, &p->body_direction, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 74, SQLDT_UINT16, &p->disable_call, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 74, SQLDT_UINT8, &p->disable_call, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 75, SQLDT_INT, &p->last_point_instanceid, 0, NULL, NULL)
)
{
SqlStmt_ShowDebug(stmt);
@@ -1516,8 +1518,8 @@ int char_make_new_char( struct char_session_data* sd, char* name_, int str, int
//Insert the new char entry to the database
if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `status_point`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
"`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `sex`) VALUES ("
"'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%u', '%u', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%c')",
"`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `sex`, `last_instanceid`) VALUES ("
"'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%u', '%u', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%c', '0')",
schema_config.char_db, sd->account_id , slot, esc_name, start_job, charserv_config.start_zeny, status_points, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
tmp_start_point[start_point_idx].map, tmp_start_point[start_point_idx].x, tmp_start_point[start_point_idx].y, tmp_start_point[start_point_idx].map, tmp_start_point[start_point_idx].x, tmp_start_point[start_point_idx].y, sex ) )
@@ -2330,7 +2332,7 @@ bool char_checkdb(void){
"`moves`,`unban_time`,`font`,`sex`,`hotkey_rowshift`,`clan_id`,`last_login`,`title_id`,`show_equip`,"
"`hotkey_rowshift2`,"
"`max_ap`,`ap`,`trait_point`,`pow`,`sta`,`wis`,`spl`,`con`,`crt`,"
"`inventory_slots`,`body_direction`,`disable_call`"
"`inventory_slots`,`body_direction`,`disable_call`,`last_instanceid`"
" FROM `%s` LIMIT 1;", schema_config.char_db) ){
Sql_ShowDebug(sql_handle);
return false;

View File

@@ -8,11 +8,11 @@
#include <unordered_map>
#include <vector>
#include "../common/core.hpp" // CORE_ST_LAST
#include "../common/mmo.hpp"
#include "../common/msg_conf.hpp"
#include "../common/timer.hpp"
#include "../config/core.hpp"
#include <common/core.hpp> // CORE_ST_LAST
#include <common/mmo.hpp>
#include <common/msg_conf.hpp>
#include <common/timer.hpp>
#include <config/core.hpp>
#include "packets.hpp"

View File

@@ -10,17 +10,17 @@
#include <stdlib.h>
#include <string.h>
#include "../common/malloc.hpp"
#include "../common/mapindex.hpp"
#include "../common/mmo.hpp"
#include "../common/random.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include "../common/utilities.hpp"
#include "../common/utils.hpp"
#include <common/malloc.hpp>
#include <common/mapindex.hpp>
#include <common/mmo.hpp>
#include <common/random.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include <common/utilities.hpp>
#include <common/utils.hpp>
#include "char.hpp"
#include "char_logif.hpp"
@@ -920,8 +920,8 @@ int chclif_parse_select_accessible_map( int fd, struct char_session_data* sd, ui
// FIXME: is this case even possible? [ultramage]
if( ( map_fd = map_server[mapserver].fd ) < 1 || session[map_fd] == nullptr ){
ShowError( "parse_char: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", map_fd, mapserver );
map_server[mapserver] = {};
map_server[mapserver].fd = -1;
memset( &map_server[mapserver], 0, sizeof( struct mmo_map_server ) );
chclif_send_auth_result( fd, 1 ); // Send server closed.
return 1;
}
@@ -1090,8 +1090,8 @@ int chclif_parse_charselect(int fd, struct char_session_data* sd,uint32 ipl){
if ((map_fd = map_server[i].fd) < 1 || session[map_fd] == NULL)
{
ShowError("parse_char: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", map_fd, i);
map_server[i] = {};
map_server[i].fd = -1;
memset(&map_server[i], 0, sizeof(struct mmo_map_server));
chclif_send_auth_result(fd,1); //Send server closed.
return 1;
}

View File

@@ -4,8 +4,8 @@
#ifndef CHAR_CLIF_HPP
#define CHAR_CLIF_HPP
#include "../common/cbasetypes.hpp"
#include "../common/timer.hpp" //time_t
#include <common/cbasetypes.hpp>
#include <common/timer.hpp> //time_t
struct char_session_data;
enum pincode_state : uint8;

View File

@@ -6,11 +6,11 @@
#include <stdlib.h>
#include <string.h>
#include "../common/cli.hpp"
#include "../common/ers.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/timer.hpp"
#include <common/cli.hpp>
#include <common/ers.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/timer.hpp>
#include "char.hpp"

View File

@@ -8,13 +8,13 @@
#include <stdlib.h>
#include <string.h>
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include "../common/utilities.hpp"
#include "../common/utils.hpp"
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include <common/utilities.hpp>
#include <common/utils.hpp>
#include "char.hpp"
#include "char_clif.hpp"

View File

@@ -4,8 +4,8 @@
#ifndef CHAR_LOGIF_HPP
#define CHAR_LOGIF_HPP
#include "../common/cbasetypes.hpp"
#include "../common/timer.hpp"
#include <common/cbasetypes.hpp>
#include <common/timer.hpp>
struct char_session_data;

View File

@@ -8,13 +8,13 @@
#include <stdlib.h>
#include <string.h> //memcpy
#include "../common/malloc.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include "../common/utilities.hpp"
#include <common/malloc.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include <common/utilities.hpp>
#include "char.hpp"
#include "char_logif.hpp"
@@ -1480,7 +1480,7 @@ int chmapif_init(int fd){
* @param id: id of map-serv (should be >0, FIXME)
*/
void chmapif_server_init(int id) {
memset(&map_server[id], 0, sizeof(map_server[id]));
map_server[id] = {};
map_server[id].fd = -1;
}

View File

@@ -4,7 +4,7 @@
#ifndef CHAR_MAPIF_HPP
#define CHAR_MAPIF_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
int chmapif_sendall(unsigned char *buf, unsigned int len);
int chmapif_sendallwos(int sfd, unsigned char *buf, unsigned int len);

View File

@@ -7,13 +7,13 @@
#include <stdlib.h>
#include <string.h>
#include "../common/db.hpp"
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include <common/db.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -10,14 +10,14 @@
#include <stdlib.h>
#include <string.h>
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include "../common/utilities.hpp"
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include <common/utilities.hpp>
#include "char.hpp"
#include "char_mapif.hpp"

View File

@@ -10,12 +10,12 @@
#include <stdlib.h>
#include <string.h> //memset
#include "../common/cbasetypes.hpp"
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/strlib.hpp"
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/strlib.hpp>
#include "char.hpp"
#include "char_mapif.hpp"

View File

@@ -6,11 +6,11 @@
#include <stdlib.h>
#include <string.h>
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -10,13 +10,13 @@
#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
#include "../common/cbasetypes.hpp"
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include "char.hpp"
#include "char_mapif.hpp"

View File

@@ -5,8 +5,9 @@
#define INT_GUILD_HPP
#include <string>
#include "../common/cbasetypes.hpp"
#include "../common/database.hpp"
#include <common/cbasetypes.hpp>
#include <common/database.hpp>
enum e_guild_action : uint32 {
GS_BASIC = 0x0001,

View File

@@ -6,12 +6,12 @@
#include <stdlib.h>
#include <string.h>
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/utils.hpp"
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/utils.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -4,7 +4,7 @@
#ifndef INT_HOMUN_HPP
#define INT_HOMUN_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
struct s_homunculus;

View File

@@ -8,12 +8,12 @@
#include <stdlib.h>
#include <string.h>
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/utilities.hpp"
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/utilities.hpp>
#include "char.hpp"
#include "char_mapif.hpp"

View File

@@ -4,8 +4,8 @@
#ifndef INT_MAIL_HPP
#define INT_MAIL_HPP
#include "../common/cbasetypes.hpp"
#include "../common/timer.hpp"
#include <common/cbasetypes.hpp>
#include <common/timer.hpp>
struct mail_message;

View File

@@ -6,11 +6,11 @@
#include <stdlib.h>
#include <string.h>
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -4,7 +4,7 @@
#ifndef INT_MERCENARY_HPP
#define INT_MERCENARY_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
int inter_mercenary_sql_init(void);
void inter_mercenary_sql_final(void);

View File

@@ -9,14 +9,14 @@
#include <stdlib.h>
#include <string.h>
#include "../common/cbasetypes.hpp"
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/utilities.hpp"
#include <common/cbasetypes.hpp>
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/utilities.hpp>
#include "char.hpp"
#include "char_mapif.hpp"
@@ -536,7 +536,7 @@ int mapif_parse_CreateParty(int fd, char *name, int item, int item2, struct part
p = std::make_shared<struct party_data>();
memcpy(p->party.name,name,NAME_LENGTH);
safestrncpy(p->party.name,name,NAME_LENGTH);
p->party.exp=0;
p->party.item=(item?1:0)|(item2?2:0);

View File

@@ -4,7 +4,7 @@
#ifndef INT_PARTY_HPP
#define INT_PARTY_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
//Party Flags on what to save/delete.
enum e_PartySaveWhatFlag {

View File

@@ -6,13 +6,13 @@
#include <stdlib.h>
#include <string.h>
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include "../common/utils.hpp"
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include <common/utils.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -4,7 +4,7 @@
#ifndef INT_PET_HPP
#define INT_PET_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
struct s_pet;

View File

@@ -6,11 +6,11 @@
#include <stdlib.h>
#include <string.h>
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp"
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp>
#include "char.hpp"
#include "inter.hpp"

View File

@@ -7,12 +7,12 @@
#include <stdlib.h>
#include <string.h>
#include "../common/malloc.hpp"
#include "../common/mmo.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/sql.hpp"
#include "../common/strlib.hpp" // StringBuf
#include <common/malloc.hpp>
#include <common/mmo.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/sql.hpp>
#include <common/strlib.hpp> // StringBuf
#include "char.hpp"
#include "inter.hpp"

View File

@@ -4,7 +4,7 @@
#ifndef INT_STORAGE_HPP
#define INT_STORAGE_HPP
#include "../common/cbasetypes.hpp"
#include <common/cbasetypes.hpp>
struct s_storage;

View File

@@ -12,13 +12,13 @@
#include <string>
#include <sys/stat.h> // for stat/lstat/fstat - [Dekamaster/Ultimate GM Tool]
#include "../common/cbasetypes.hpp"
#include "../common/database.hpp"
#include "../common/malloc.hpp"
#include "../common/showmsg.hpp"
#include "../common/socket.hpp"
#include "../common/strlib.hpp"
#include "../common/timer.hpp"
#include <common/cbasetypes.hpp>
#include <common/database.hpp>
#include <common/malloc.hpp>
#include <common/showmsg.hpp>
#include <common/socket.hpp>
#include <common/strlib.hpp>
#include <common/timer.hpp>
#include "char.hpp"
#include "char_logif.hpp"

View File

@@ -8,9 +8,9 @@
#include <string>
#include <unordered_map>
#include "../common/cbasetypes.hpp"
#include "../common/database.hpp"
#include "../common/sql.hpp"
#include <common/cbasetypes.hpp>
#include <common/database.hpp>
#include <common/sql.hpp>
struct s_storage_table;

View File

@@ -4,7 +4,7 @@
#ifndef PACKETS_HPP
#define PACKETS_HPP
#include "../common/mmo.hpp"
#include <common/mmo.hpp>
#pragma warning( push )
#pragma warning( disable : 4200 )

View File

@@ -137,7 +137,7 @@ set( COMMON_BASE_DEFINITIONS
${LIBCONFIG_DEFINITIONS}
CACHE INTERNAL "common_base definitions" )
set( LIBRARIES ${GLOBAL_LIBRARIES} ${ZLIB_LIBRARIES} yaml-cpp ryml )
set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${YAML_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS}} )
set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${RA_INCLUDE_DIRS} ${YAML_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} )
set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS}" )
set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_BASE_SOURCES} )
source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_BASE_SOURCES} )

View File

@@ -6,6 +6,8 @@ COMMON_DIR_OBJ = $(COMMON_OBJ:%=obj/%)
COMMON_H = $(shell ls ../common/*.hpp)
COMMON_AR = obj/common.a
RA_INCLUDE = -I../
LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h)
LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a
LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig
@@ -68,11 +70,11 @@ common: obj $(COMMON_DIR_OBJ) $(LIBCONFIG_AR) $(YAML_CPP_AR) $(RAPIDYAML_AR) $(C
obj/%.o: %.cpp $(COMMON_H) $(LIBCONFIG_H) $(RAPIDYAML_H)
@echo " CXX $<"
@@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(LIBCONFIG_INCLUDE) $(RAPIDYAML_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(RA_INCLUDE) $(LIBCONFIG_INCLUDE) $(RAPIDYAML_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
obj/mini%.o: %.cpp $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H)
@echo " CXX $<"
@@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(RA_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
# missing object files
$(LIBCONFIG_AR):

View File

@@ -126,9 +126,9 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp14</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -143,8 +143,8 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -161,8 +161,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -181,8 +181,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>

View File

@@ -159,8 +159,9 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp14</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -178,7 +179,8 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -198,8 +200,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>Default</LanguageStandard>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -221,7 +223,8 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp14</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>

View File

@@ -4,7 +4,7 @@
#ifndef CONF_HPP
#define CONF_HPP
#include "../../3rdparty/libconfig/libconfig.h"
#include <libconfig.h>
#include "cbasetypes.hpp"

View File

@@ -3,7 +3,7 @@
#include "core.hpp"
#include "../config/core.hpp"
#include <config/core.hpp>
#ifndef MINICORE
#include "database.hpp"
@@ -28,8 +28,8 @@
#include "strlib.hpp"
#ifndef DEPRECATED_COMPILER_SUPPORT
#if defined( _MSC_VER ) && _MSC_VER < 1900
#error "Visual Studio versions older than Visual Studio 2015 are not officially supported anymore"
#if defined( _MSC_VER ) && _MSC_VER < 1910
#error "Visual Studio versions older than Visual Studio 2017 are not officially supported anymore"
#elif defined( __clang__ ) && __clang_major__ < 6
#error "clang versions older than clang 6.0 are not officially supported anymore"
#elif !defined( __clang__ ) && defined( __GNUC__ ) && __GNUC__ < 5

View File

@@ -114,6 +114,7 @@ bool YamlDatabase::load(const std::string& path) {
ShowError( "Failed to load %s database file from '" CL_WHITE "%s" CL_RESET "'.\n", this->type.c_str(), path.c_str() );
ShowError( "There is likely a syntax error in the file.\n" );
ShowError( "Error message: %s\n", e.what() );
aFree(buf);
return false;
}
@@ -154,13 +155,18 @@ void YamlDatabase::parse( const ryml::Tree& tree ){
if( this->nodeExists( tree.rootref(), "Body" ) ){
const ryml::NodeRef& bodyNode = tree["Body"];
size_t childNodesCount = bodyNode.num_children();
size_t childNodesProgressed = 0;
const char* fileName = this->currentFile.c_str();
#ifdef DEBUG
size_t childNodesProgressed = 0;
#endif
ShowStatus("Loading '" CL_WHITE "%" PRIdPTR CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'\n", childNodesCount, fileName);
for( const ryml::NodeRef &node : bodyNode ){
count += this->parseBodyNode( node );
#ifdef DETAILED_LOADING_OUTPUT
ShowStatus( "Loading [%" PRIdPTR "/%" PRIdPTR "] entries from '" CL_WHITE "%s" CL_RESET "'" CL_CLL "\r", ++childNodesProgressed, childNodesCount, fileName );
#endif
}
ShowStatus( "Done reading '" CL_WHITE "%" PRIu64 CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'" CL_CLL "\n", count, fileName );

View File

@@ -10,7 +10,7 @@
#include <ryml_std.hpp>
#include <ryml.hpp>
#include "../config/core.hpp"
#include <config/core.hpp>
#include "cbasetypes.hpp"
#include "core.hpp"
@@ -181,11 +181,11 @@ public:
}
void loadingFinished() override{
size_t max_key = 0;
// Cache all known values
for (auto &pair : *this) {
// Calculate the key that should be used
size_t key = this->calculateCacheKey(pair.first);
// Check if the key fits into the current cache size
if (this->cache.capacity() <= key) {
// Some keys compute to 0, so we allocate a minimum of 500 (250*2) entries
@@ -199,19 +199,15 @@ public:
// Insert the value into the cache
this->cache[key] = pair.second;
// keep track of highest known key for easy resize
max_key = std::max(max_key, key);
}
for( auto it = this->cache.rbegin(); it != this->cache.rend(); it++ ){
if( *it != nullptr ){
// Resize to only fit all existing non null entries
this->cache.resize( this->cache.rend() - it );
// Free the memory that was allocated too much
this->cache.shrink_to_fit();
break;
}
}
// Resize to only fit all existing non null entries
this->cache.resize(max_key);
// Free the memory that was allocated too much
this->cache.shrink_to_fit();
this->loaded = true;
}

View File

@@ -4,6 +4,8 @@
#ifndef MALLOC_HPP
#define MALLOC_HPP
#include <config/core.hpp>
#include "cbasetypes.hpp"
#define ALC_MARK __FILE__, __LINE__, __func__
@@ -39,6 +41,12 @@
# define aStrdup(p) _mstrdup(p,ALC_MARK)
# define aFree(p) _mfree(p,ALC_MARK)
# define aMalloc2(n,file,line,func) _mmalloc(n,file,line,func)
# define aCalloc2(m,n,file,line,func) _mcalloc(m,n,file,line,func)
# define aRealloc2(p,n,file,line,func) _mrealloc(p,n,file,line,func)
# define aStrdup2(p,file,line,func) _mstrdup(p,file,line,func)
# define aFree2(p,file,line,func) _mfree(p,file,line,func)
void* _mmalloc (size_t size, const char *file, int line, const char *func);
void* _mcalloc (size_t num, size_t size, const char *file, int line, const char *func);
void* _mrealloc (void *p, size_t size, const char *file, int line, const char *func);
@@ -53,6 +61,12 @@
# define aStrdup(p) aStrdup_(p,ALC_MARK)
# define aFree(p) aFree_(p,ALC_MARK)
# define aMalloc2(n,file,line,func) aMalloc_((n),file,line,func)
# define aCalloc2(m,n,file,line,func) aCalloc_((m),(n),file,line,func)
# define aRealloc2(p,n,file,line,func) aRealloc_(p,n,file,line,func)
# define aStrdup2(p,file,line,func) aStrdup_(p,file,line,func)
# define aFree2(p,file,line,func) aFree_(p,file,line,func)
void* aMalloc_ (size_t size, const char *file, int line, const char *func);
void* aCalloc_ (size_t num, size_t size, const char *file, int line, const char *func);
void* aRealloc_ (void *p, size_t size, const char *file, int line, const char *func);

View File

@@ -4,7 +4,7 @@
#ifndef MAPINDEX_HPP
#define MAPINDEX_HPP
#include "../common/mmo.hpp"
#include "mmo.hpp"
#define MAX_MAPINDEX 2000

View File

@@ -14,7 +14,7 @@
#include <stdio.h>
#include <string.h>
#include "../common/random.hpp"
#include "random.hpp"
#ifndef UINT_MAX
#define UINT_MAX 4294967295U

View File

@@ -6,7 +6,7 @@
#include <time.h>
#include "../config/core.hpp"
#include <config/core.hpp>
#include "cbasetypes.hpp"
#include "db.hpp"
@@ -89,7 +89,7 @@ typedef uint32 t_itemid;
#endif
#define MAX_FAME 1000000000 ///Max fame points
#define MAX_CART 100 ///Maximum item in cart
#define MAX_SKILL 1465 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
#define MAX_SKILL 1500 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
#define DEFAULT_WALK_SPEED 150 ///Default walk speed
#define MIN_WALK_SPEED 20 ///Min walk speed
#define MAX_WALK_SPEED 1000 ///Max walk speed
@@ -179,7 +179,7 @@ const t_itemid WEDDING_RING_F = 2635;
//Base Homun skill.
#define HM_SKILLBASE 8001
#define MAX_HOMUNSKILL 43
#define MAX_HOMUNSKILL 59
#define MAX_HOMUNCULUS_CLASS 52 //[orn], Increased to 60 from 16 to allow new Homun-S.
#define HM_CLASS_BASE 6001
#define HM_CLASS_MAX (HM_CLASS_BASE+MAX_HOMUNCULUS_CLASS-1)
@@ -595,6 +595,7 @@ struct mmo_charstatus {
uint16 mapport;
struct s_point_str last_point;
int32 last_point_instanceid;
struct s_point_str save_point;
struct s_point_str memo_point[MAX_MEMOPOINTS];
struct s_skill skill[MAX_SKILL];

Some files were not shown because too many files have changed in this diff Show More