diff options
37 files changed, 2537 insertions, 1976 deletions
diff --git a/Hercules.xcodeproj/project.pbxproj b/Hercules.xcodeproj/project.pbxproj index fc7aa8dc4..4609880aa 100644 --- a/Hercules.xcodeproj/project.pbxproj +++ b/Hercules.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 755495841FEE5A0000CE4B7D /* int_rodex.c in Sources */ = {isa = PBXBuildFile; fileRef = 755495831FEE5A0000CE4B7D /* int_rodex.c */; }; + 755495871FEE5A1F00CE4B7D /* rodex.c in Sources */ = {isa = PBXBuildFile; fileRef = 755495851FEE5A1F00CE4B7D /* rodex.c */; }; A5296FCD1CAC40CF001ABCAC /* lclif.c in Sources */ = {isa = PBXBuildFile; fileRef = A5296FCA1CAC40CF001ABCAC /* lclif.c */; }; A5380CD71856CE3C0090CBC4 /* mapcache.c in Sources */ = {isa = PBXBuildFile; fileRef = A5380CD61856CE3C0090CBC4 /* mapcache.c */; }; A5380CD81856CE8A0090CBC4 /* console.c in Sources */ = {isa = PBXBuildFile; fileRef = A56CC692185643BB009EB79C /* console.c */; }; @@ -219,6 +221,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 755495821FEE5A0000CE4B7D /* int_rodex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = int_rodex.h; path = src/char/int_rodex.h; sourceTree = SOURCE_ROOT; }; + 755495831FEE5A0000CE4B7D /* int_rodex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = int_rodex.c; path = src/char/int_rodex.c; sourceTree = SOURCE_ROOT; }; + 755495851FEE5A1F00CE4B7D /* rodex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rodex.c; path = src/map/rodex.c; sourceTree = SOURCE_ROOT; }; + 755495861FEE5A1F00CE4B7D /* rodex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rodex.h; path = src/map/rodex.h; sourceTree = SOURCE_ROOT; }; A5296FCA1CAC40CF001ABCAC /* lclif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lclif.c; path = src/login/lclif.c; sourceTree = SOURCE_ROOT; }; A5296FCB1CAC40CF001ABCAC /* lclif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lclif.h; path = src/login/lclif.h; sourceTree = SOURCE_ROOT; }; A5296FCC1CAC40CF001ABCAC /* lclif.p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lclif.p.h; path = src/login/lclif.p.h; sourceTree = SOURCE_ROOT; }; @@ -602,6 +608,8 @@ A56CC754185657D9009EB79C /* int_pet.h */, A56CC755185657D9009EB79C /* int_quest.c */, A56CC756185657D9009EB79C /* int_quest.h */, + 755495831FEE5A0000CE4B7D /* int_rodex.c */, + 755495821FEE5A0000CE4B7D /* int_rodex.h */, A56CC757185657D9009EB79C /* int_storage.c */, A56CC758185657D9009EB79C /* int_storage.h */, A56CC759185657D9009EB79C /* inter.c */, @@ -680,6 +688,8 @@ A56CC7A618565812009EB79C /* pet.h */, A56CC7A718565812009EB79C /* quest.c */, A56CC7A818565812009EB79C /* quest.h */, + 755495851FEE5A1F00CE4B7D /* rodex.c */, + 755495861FEE5A1F00CE4B7D /* rodex.h */, A56CC7A918565812009EB79C /* script.c */, A56CC7AA18565812009EB79C /* script.h */, A56CC7AB18565812009EB79C /* searchstore.c */, @@ -1229,6 +1239,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 755495841FEE5A0000CE4B7D /* int_rodex.c in Sources */, A56CC766185657D9009EB79C /* int_quest.c in Sources */, A56CC709185643BB009EB79C /* sql.c in Sources */, A56CC75E185657D9009EB79C /* int_auction.c in Sources */, @@ -1338,6 +1349,7 @@ A56CC73318564C05009EB79C /* libconfig.c in Sources */, A56CC74218564C23009EB79C /* mt19937ar.c in Sources */, A56CC7BD18565812009EB79C /* chat.c in Sources */, + 755495871FEE5A1F00CE4B7D /* rodex.c in Sources */, A56CC7CF18565812009EB79C /* mob.c in Sources */, A56CC7BB18565812009EB79C /* battleground.c in Sources */, A56CC73618564C05009EB79C /* scanctx.c in Sources */, diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf index 06c06dd16..4873012aa 100644 --- a/db/pre-re/skill_db.conf +++ b/db/pre-re/skill_db.conf @@ -74,6 +74,7 @@ FreeCastNormal: true/false (boolean, defaults to false) Works like FreeCastReduced, but not reduce speed. ShowSkillScale: true/false (boolean, defaults to false) + AllowReproduce: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") Types: "None", "Weapon", "Magic" or "Misc" @@ -291,6 +292,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" Requirements: { @@ -371,6 +375,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Fire" DamageType: { @@ -468,6 +475,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" DamageType: { @@ -583,6 +593,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" NumberOfHits: { @@ -637,6 +650,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: { @@ -702,6 +718,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -783,6 +802,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -829,6 +851,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -882,6 +907,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" NumberOfHits: { @@ -947,6 +975,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -1012,6 +1043,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -1092,6 +1126,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -1236,6 +1273,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -1581,6 +1621,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" Requirements: { @@ -1666,6 +1709,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: 2 @@ -1694,6 +1740,7 @@ skill_db: ( } SkillInfo: { IgnoreLandProtector: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -1801,6 +1848,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Poison" SkillData2: { @@ -1849,6 +1899,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2109,6 +2162,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -2236,6 +2292,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2288,6 +2347,7 @@ skill_db: ( } SkillInfo: { Ensemble: true + AllowReproduce: true } AttackType: "Magic" DamageType: { @@ -2324,6 +2384,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2598,6 +2661,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2645,6 +2711,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" NumberOfHits: { @@ -2716,6 +2785,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Fire" @@ -2801,6 +2871,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" SplashRange: 3 @@ -2836,6 +2909,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" SplashRange: { @@ -2913,6 +2989,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -2978,6 +3057,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: -10 @@ -3056,6 +3138,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -3139,6 +3224,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -3197,6 +3285,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -3242,6 +3333,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -3296,6 +3390,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -3852,6 +3949,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Earth" @@ -4132,6 +4230,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Water" @@ -4194,6 +4293,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Wind" @@ -4244,6 +4344,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Fire" @@ -4742,6 +4843,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -4911,6 +5015,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -5007,6 +5112,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Misc" DamageType: { @@ -5101,6 +5207,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Holy" @@ -6144,6 +6251,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -6520,6 +6630,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Fire" DamageType: { @@ -6568,6 +6681,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreCards: true @@ -6963,6 +7079,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" KnockBackTiles: { Lv1: 5 @@ -7004,6 +7123,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" AfterCastActDelay: 700 CoolDown: 0 @@ -7050,6 +7172,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Holy" NumberOfHits: -2 @@ -7093,6 +7218,7 @@ skill_db: ( } SkillInfo: { TargetSelf: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Holy" @@ -7342,6 +7468,9 @@ skill_db: ( MaxLevel: 10 Range: -1 Hit: "BDT_MULTIHIT" + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -3 @@ -7387,6 +7516,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreFlee: true @@ -7420,6 +7552,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: { @@ -7595,6 +7730,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreDefense: true @@ -7669,6 +7807,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -9795,6 +9934,7 @@ skill_db: ( } SkillInfo: { NPC: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12317,6 +12457,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -15706,6 +15849,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Misc" DamageType: { IgnoreElement: true @@ -15738,6 +15884,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" KnockBackTiles: 3 @@ -15769,6 +15918,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1000 @@ -15821,6 +15973,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -15880,6 +16035,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -15991,6 +16149,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" NumberOfHits: { @@ -16087,6 +16248,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -16126,6 +16290,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: { @@ -16258,6 +16425,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -16319,6 +16489,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -16373,6 +16546,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" DamageType: { @@ -16421,6 +16597,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" SplashRange: 3 @@ -17588,6 +17767,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -17646,6 +17826,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" DamageType: { @@ -17706,6 +17887,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Fire" @@ -17781,6 +17963,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" KnockBackTiles: 3 @@ -17924,6 +18107,7 @@ skill_db: ( SkillInfo: { Quest: true PartyOnly: true + AllowReproduce: true } AttackType: "Weapon" DamageType: { @@ -18108,6 +18292,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1000 @@ -18204,6 +18391,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Wind" DamageType: { @@ -18244,6 +18434,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -18671,6 +18864,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -7 @@ -18713,6 +18909,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1500 @@ -19010,6 +19209,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -19142,6 +19344,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -19200,6 +19405,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" NumberOfHits: -10 @@ -19657,6 +19865,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -19766,6 +19977,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } Element: "Ele_Holy" DamageType: { NoDamage: true @@ -19940,6 +20154,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" DamageType: { @@ -19986,6 +20203,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -20044,6 +20264,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -20341,6 +20564,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" InterruptCast: true CastTime: 4000 @@ -20370,6 +20596,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -20408,6 +20637,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -20451,6 +20683,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" NumberOfHits: -20 InterruptCast: true @@ -20508,6 +20743,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" SplashRange: 3 InterruptCast: true @@ -20566,6 +20804,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -21059,6 +21300,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -21182,6 +21426,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" InterruptCast: true @@ -21294,6 +21541,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" DamageType: { @@ -21704,6 +21952,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Fire" @@ -21744,6 +21993,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Water" @@ -22916,6 +23166,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -23085,6 +23338,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -3 @@ -23905,6 +24161,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" CastTime: 1000 @@ -24045,6 +24304,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" SkillData1: { Lv1: 5500 @@ -24172,6 +24434,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } Element: { Lv1: "Ele_Neutral" Lv2: "Ele_Holy" @@ -24210,6 +24475,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -24382,6 +24650,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -24537,6 +24808,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Earth" DamageType: { @@ -24727,6 +25001,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -2 @@ -24756,6 +25033,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -24790,6 +25070,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -24886,6 +25169,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -24980,6 +25266,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25163,6 +25452,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" KnockBackTiles: { @@ -25204,6 +25496,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25342,6 +25637,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" NumberOfHits: -7 InterruptCast: true @@ -25408,6 +25706,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" SkillData1: { @@ -25970,6 +26271,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Weapon" NumberOfHits: { @@ -26037,6 +26341,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } Element: "Ele_Weapon" DamageType: { @@ -26143,6 +26448,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -27212,6 +27520,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -27264,6 +27575,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" InterruptCast: true @@ -27358,6 +27672,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: -3 @@ -27435,6 +27752,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: -5 @@ -27512,6 +27832,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Poison" DamageType: { @@ -27569,6 +27892,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" InterruptCast: true CastTime: { @@ -27643,6 +27969,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Poison" InterruptCast: true @@ -27909,6 +28238,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" DamageType: { @@ -28746,6 +29078,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" InterruptCast: true @@ -28804,6 +29137,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Misc" DamageType: { NoDamage: true @@ -28853,6 +29189,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -28914,6 +29253,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { NoDamage: true @@ -28974,6 +29316,7 @@ skill_db: ( } SkillInfo: { IgnoreLandProtector: true + AllowReproduce: true } AttackType: "Weapon" DamageType: { @@ -29259,6 +29602,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } DamageType: { NoDamage: true @@ -29607,6 +29951,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -29675,6 +30022,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index 815442fd9..4863e4051 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -74,6 +74,7 @@ FreeCastNormal: true/false (boolean, defaults to false) Works like FreeCastReduced, but not reduce speed. ShowSkillScale: true/false (boolean, defaults to false) + AllowReproduce: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") Types: "None", "Weapon", "Magic" or "Misc" @@ -293,6 +294,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" Requirements: { @@ -373,6 +377,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Fire" DamageType: { @@ -472,6 +479,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" DamageType: { @@ -598,6 +608,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" NumberOfHits: { @@ -652,6 +665,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: { @@ -728,6 +744,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -809,6 +828,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -866,6 +888,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -930,6 +955,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" NumberOfHits: { @@ -1006,6 +1034,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -1082,6 +1113,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -1184,6 +1218,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -1327,6 +1364,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -1672,6 +1712,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" Requirements: { @@ -1757,6 +1800,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: 2 @@ -1786,6 +1832,7 @@ skill_db: ( } SkillInfo: { IgnoreLandProtector: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -1916,6 +1963,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Poison" SkillData2: { @@ -1964,6 +2014,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2235,6 +2288,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -2362,6 +2418,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2414,6 +2473,7 @@ skill_db: ( } SkillInfo: { Ensemble: true + AllowReproduce: true } AttackType: "Magic" DamageType: { @@ -2450,6 +2510,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2724,6 +2787,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -2771,6 +2837,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" NumberOfHits: { @@ -2840,6 +2909,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -2932,6 +3004,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" SplashRange: 3 @@ -2966,6 +3041,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" SplashRange: { @@ -3043,6 +3121,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -3119,6 +3200,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: -10 @@ -3208,6 +3292,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -3302,6 +3389,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -3371,6 +3461,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" InterruptCast: true @@ -3427,6 +3520,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -3503,6 +3599,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -4070,6 +4169,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Earth" @@ -4351,6 +4451,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Water" @@ -4413,6 +4514,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Wind" @@ -4464,6 +4566,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Fire" @@ -4962,6 +5065,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -5143,6 +5249,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -5237,6 +5344,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Misc" DamageType: { @@ -5332,6 +5440,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Holy" @@ -6374,6 +6483,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -6839,6 +6951,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Fire" DamageType: { @@ -6888,6 +7003,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreCards: true @@ -7284,6 +7402,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" KnockBackTiles: { Lv1: 5 @@ -7325,6 +7446,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" AfterCastActDelay: 700 FixedCastTime: 0 @@ -7371,6 +7495,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Holy" NumberOfHits: -2 @@ -7414,6 +7541,7 @@ skill_db: ( } SkillInfo: { TargetSelf: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Holy" @@ -7664,6 +7792,9 @@ skill_db: ( MaxLevel: 10 Range: -1 Hit: "BDT_MULTIHIT" + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -3 @@ -7708,6 +7839,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreFlee: true @@ -7741,6 +7875,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: { @@ -7917,6 +8054,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { IgnoreDefense: true @@ -8003,6 +8143,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -10121,6 +10262,7 @@ skill_db: ( } SkillInfo: { NPC: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12657,6 +12799,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -16087,6 +16232,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Misc" DamageType: { IgnoreElement: true @@ -16119,6 +16267,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" KnockBackTiles: 4 @@ -16150,6 +16301,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1000 @@ -16191,6 +16345,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -16238,6 +16395,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -16360,6 +16520,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" NumberOfHits: { @@ -16478,6 +16641,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -16517,6 +16683,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: { @@ -16661,6 +16830,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -16733,6 +16905,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" NumberOfHits: { @@ -16798,6 +16973,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" DamageType: { @@ -16868,6 +17046,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" SplashRange: 3 @@ -18135,6 +18316,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -18192,6 +18374,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" DamageType: { @@ -18252,6 +18435,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Magic" Element: "Ele_Fire" @@ -18326,6 +18510,7 @@ skill_db: ( } SkillInfo: { Quest: true + AllowReproduce: true } AttackType: "Weapon" KnockBackTiles: 3 @@ -18466,6 +18651,7 @@ skill_db: ( SkillInfo: { Quest: true PartyOnly: true + AllowReproduce: true } AttackType: "Weapon" DamageType: { @@ -18647,6 +18833,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1000 @@ -18746,6 +18935,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Wind" DamageType: { @@ -18787,6 +18979,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -19216,6 +19411,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -7 @@ -19258,6 +19456,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" AfterCastActDelay: 1500 @@ -19555,6 +19756,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -19688,6 +19892,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -19746,6 +19953,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" NumberOfHits: -10 @@ -20222,6 +20432,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Holy" DamageType: { @@ -20334,6 +20547,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } Element: "Ele_Holy" DamageType: { NoDamage: true @@ -20510,6 +20726,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Ghost" DamageType: { @@ -20556,6 +20775,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -20615,6 +20837,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" DamageType: { @@ -20915,6 +21140,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" InterruptCast: true CastTime: 4000 @@ -20945,6 +21173,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" DamageType: { @@ -20984,6 +21215,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -21027,6 +21261,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" NumberOfHits: -20 InterruptCast: true @@ -21096,6 +21333,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" SplashRange: 3 InterruptCast: true @@ -21155,6 +21395,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: { @@ -21650,6 +21893,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -21774,6 +22020,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" InterruptCast: true @@ -21886,6 +22135,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" DamageType: { @@ -22297,6 +22547,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Fire" @@ -22337,6 +22588,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" Element: "Ele_Water" @@ -23554,6 +23806,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -23723,6 +23978,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -3 @@ -24553,6 +24811,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" CastTime: 1000 @@ -24695,6 +24956,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" SkillData1: { Lv1: 5500 @@ -24824,6 +25088,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } Element: { Lv1: "Ele_Neutral" Lv2: "Ele_Holy" @@ -24863,6 +25130,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -25036,6 +25306,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25193,6 +25466,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Earth" DamageType: { @@ -25386,6 +25662,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" NumberOfHits: -2 @@ -25415,6 +25694,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25449,6 +25731,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25546,6 +25831,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25641,6 +25929,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -25828,6 +26119,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" KnockBackTiles: { @@ -25869,6 +26163,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -26010,6 +26307,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" NumberOfHits: -7 InterruptCast: true @@ -26076,6 +26376,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" SkillData1: { @@ -26654,6 +26957,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Weapon" NumberOfHits: { @@ -26722,6 +27028,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } Element: "Ele_Weapon" DamageType: { @@ -26828,6 +27135,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true } @@ -27912,6 +28222,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Fire" InterruptCast: true @@ -27964,6 +28277,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" InterruptCast: true @@ -28058,6 +28374,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Earth" NumberOfHits: -3 @@ -28147,6 +28466,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Water" NumberOfHits: -5 @@ -28236,6 +28558,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Poison" DamageType: { @@ -28305,6 +28630,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" InterruptCast: true CastTime: { @@ -28391,6 +28719,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Poison" InterruptCast: true @@ -28682,6 +29013,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Magic" Element: "Ele_Wind" DamageType: { @@ -29554,6 +29888,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } AttackType: "Misc" InterruptCast: true @@ -29612,6 +29947,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Misc" DamageType: { NoDamage: true @@ -29661,6 +29999,9 @@ skill_db: ( SkillType: { Enemy: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -29723,6 +30064,9 @@ skill_db: ( SkillType: { Friend: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" DamageType: { NoDamage: true @@ -29782,6 +30126,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } DamageType: { NoDamage: true SplashArea: true @@ -30069,6 +30416,7 @@ skill_db: ( } SkillInfo: { Trap: true + AllowReproduce: true } DamageType: { NoDamage: true @@ -30419,6 +30767,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -30488,6 +30839,9 @@ skill_db: ( SkillType: { Place: true } + SkillInfo: { + AllowReproduce: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { diff --git a/db/skill_reproduce_db.txt b/db/skill_reproduce_db.txt deleted file mode 100644 index eca500da2..000000000 --- a/db/skill_reproduce_db.txt +++ /dev/null @@ -1,204 +0,0 @@ -// Reproduce Copy Skills List -// -// ##TODO## screw this file and make it a new skill_info2 flag -// -// Structure of Database: -// SkillID -//================================= - -//Swordsman -5 //Bash -7 //Magnum Break - -//Mage -11 // Napalm Beat -13 // Soul Strike -14 // Cold Bolt -15 // Frost Diver -17 // Fire Ball -18 // Fire Wall -19 // Fire Bolt -20 // Lightning Bolt -21 // Thunderstorm - -//Acolyte -24 // Ruwach -28 // Heal - -//Merchant -42 // Mammonite - -//Archer -46 // Double Strafe -47 // Arrow Shower - -//Thief -52 // Envenom - -// Resurrection -54 // Resurrection - -// Knight -62 // Bowling Bash - -// Priest -68 // Asperio -69 // B.S Sacramenti -70 // Sanctuary -77 // Turn Undead -79 // Magnus Exorcismus - -// Wizard -80 // Fire Pillar -81 // Sightrasher -83 // Meteor Storm -84 // Jupitel Thunder -85 // Lord of Vermillion -86 // Water Ball -88 // Frost Nova -89 // Storm Gust -90 // Earth Spike -91 // Heaven's Drive - -// Hunter -116 // Land Mine -121 // Freezing Trap -122 // Blast Mine -123 // Claymore Trap - -// Assassin -141 // Venom Splasher - -// 1st Job Quest Skills -148 // Arrow Repel -152 // Stone Fling -156 // Holy Light - -// Rogue -212 // Backstab - -// Alchemist -229 // Bomb -230 // Acid Terror - -// Crusader -250 // Smite -251 // Shield Boomerang -253 // Holy Cross -254 // Grand Cross - -// Monk -263 // Raging Trifecta Blow -266 // Occult Impaction -267 // Throw Spirit Sphere -271 // Guillotine Fist -272 // Raging Quadruple Blow - -// Item Skill -337 // Tomahawk Throwing - -// TaeKwon Kid -421 // Flying Kick - -// Ninja -526 // Throw Coins -527 // Flip Tatami -528 // Haze Slasher -529 // Shadow Slash -531 // Blaze Shield -534 // Flaming Petals -536 // Exploding Dragon -537 // Freezing Spear -539 // Snow Flake Draft -540 // Wind Blade -541 // Lightning Jolt -542 // First Wind - -// 2nd Job Quest Skills -1001 // Charge Attack -1004 // Venom Knife -1006 // Sight Blaster -1009 // Phantasmic Arrow -1015 // Excruciating Palm - -// Rune Knight -2002 // Sonic Wave -2005 // Ignition Break -2006 // Wind Cutter - -// Guillotine Cross -2022 // Cross Impact -2023 // Dark Illusion -2034 // Phantom Menace - -// Arch Bishop -2038 // Judex -2040 // Adoramus -2051 // Highness Heal -2054 // Duple Light - -// Warlock -2202 // Soul Expansion -2203 // Frosty Misty -2204 // Jack Frost -2210 // Drain Life -2211 // Crimson Rock -2212 // Hell Inferno -2213 // Comet -2214 // Chain Lightning -2216 // Earth Strain - -// Ranger -2233 // Arrow Storm -2236 // Aimed Bolt -2239 // Cluster Bomb -2253 // Icebound Trap -2254 // Firing Trap - -// Shadow Chaser -2284 // Fatal Menace -2288 // Triangle Shot -2304 // Feint Bomb - -// Royal Guard -2310 // Shield Press -2315 // Shield Spell -2316 // Exceed Break -2320 // Moon Slasher -2323 // Earth Drive - -// Sura -2326 // Dragon Combo -2327 // Sky Net Blow -2328 // Earth Shaker -2330 // Tiger Cannon -2332 // Rampage Blaster -2336 // Knuckle Arrow -2337 // Windmill -2343 // Gate of Hell -2344 // Gentle Touch - Quiet -2517 // Howling of Lion -2518 // Riding Lightning - -// Minstrel/Wanderer -2413 // Metallic Sound -2414 // Reverberation -2418 // Severe Rainstorm - -// Sorcerer -2443 // Fire Walk -2444 // Electric Walk -2446 // Earth Grave -2447 // Diamond Dust -2448 // Poison Buster -2449 // Psychic Wave -2450 // Cloud Kill -2454 // Varetyr Spear - -// Genetic -2479 // Thorn Trap -2480 // Blood Sucker -2481 // Spore Explosion -2482 // Wall of Thorns -2483 // Crazy Weed -2490 // Hell's Plant diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 465804061..a91a212e7 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -6915,6 +6915,7 @@ Examples: --------------------------------------- *progressbar("<color>", <seconds>) +*progressbar_unit("<color>", <seconds>{, <GID>}) This command works almost like sleep2(), but displays a progress bar above the head of the currently attached character (like cast bar). Once the @@ -6923,6 +6924,11 @@ while the progress bar progresses, it is aborted and the script ends. The color format is in RGB (0xRRGGBB). The color is currently ignored by the client and appears always green. +progressbar_unit works only for PACKETVER >= 20130821 +The progressbar will show on the given unit id but it will not +put the unit in timeout (the progressbar would be just an animation). +if GID is not given use the attached player. + --------------------------------------- //===================================== 5.1 - End of Time-related commands diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt index 19627e6a0..46ffdaef3 100644 --- a/npc/instances/NydhoggsNest.txt +++ b/npc/instances/NydhoggsNest.txt @@ -35,1497 +35,1508 @@ nyd_dun02,100,201,3 script Yggdrasil Gatekeeper HIDDEN_NPC,8,8,{ if (ins_nyd == 0) { - mes "A great stone gate stands before you. The sculpture of a terrible dragon spreads its powerful looking wings."; - next; - mes "Near the bottom of the gate, Laphine tribeswomen have been turned to stone and now look like they are part of the great door."; - next; - switch(select("Move closer to look more carefully.", "Step back.")) { + mes("A great stone gate stands before you. The sculpture of a terrible dragon spreads its powerful looking wings."); + next(); + mes("Near the bottom of the gate, Laphine tribeswomen have been turned to stone and now look like they are part of the great door."); + next(); + switch (select("Move closer to look more carefully.", "Step back.")) { case 1: specialeffect(EF_HOLYHIT, AREA, playerattached()); - pushpc 3,3; + pushpc(3, 3); if (ep13_1_edq == 14) ep13_1_edq = 15; - mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."; - next; - mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation."; - next; - mes "It would be better to go back to camp and inform the others and ask for help."; + mes("A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."); + next(); + mes("Perhaps there's a great hidden secret beyond the gate, beyond expectation."); + next(); + mes("It would be better to go back to camp and inform the others and ask for help."); if (ep13_1_edq != 15) { - next; - mes "You'll have to obtain the others trust in the expendition camp by working hard."; + next(); + mes("You'll have to obtain the others trust in the expendition camp by working hard."); } ins_nyd = 1; - close; + close(); case 2: - close; + close(); } } else if (ins_nyd == 1) { - mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."; - next; - mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation."; - next; - mes "It would be better to go back to camp and inform the others and ask for help."; + mes("A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."); + next(); + mes("Perhaps there's a great hidden secret beyond the gate, beyond expectation."); + next(); + mes("It would be better to go back to camp and inform the others and ask for help."); if (ep13_1_edq == 14 || ep13_1_edq == 15) { ep13_1_edq = 15; - close; + close(); } - next; - mes "You'll have to obtain the others trust in the expendition camp by working hard."; - close; + next(); + mes("You'll have to obtain the others trust in the expendition camp by working hard."); + close(); } else if (ins_nyd == 111 || ins_nyd == 112) { specialeffect(EF_CHANGECOLD, AREA, playerattached()); - mes "The strange sensation surrounding your body has disappeared"; - next; - mes "When you touch the stone gate, you hear a commanding voice."; - next; - mes "[??????]"; - mes "Wingless one... Our promised words..."; - next; - switch(select("'Guardian's spell'!", "Take a step back.")) { + mes("The strange sensation surrounding your body has disappeared"); + next(); + mes("When you touch the stone gate, you hear a commanding voice."); + next(); + mes("[??????]"); + mes("Wingless one... Our promised words..."); + next(); + switch (select("'Guardian's spell'!", "Take a step back.")) { case 1: - mes "[??????]"; - mes "Promised words... Guardian's spell... proof of their existence."; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "In the name of Yggdrasiliad, I will accept you as a servant of the Guardian."; - next; + mes("[??????]"); + mes("Promised words... Guardian's spell... proof of their existence."); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("In the name of Yggdrasiliad, I will accept you as a servant of the Guardian."); + next(); specialeffect(EF_CHANGECOLD, AREA, playerattached()); ins_nyd = 200; - mes "[Yggdrasil Gatekeeper]"; - mes "I accept your entrance through the Guardian's gate. You are now considered a faithful servant of the Guardian Nidhoggur."; - next; - mes "The voice has disappeared, and the dark power is calming down from behind the stone gate."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("I accept your entrance through the Guardian's gate. You are now considered a faithful servant of the Guardian Nidhoggur."); + next(); + mes("The voice has disappeared, and the dark power is calming down from behind the stone gate."); + close(); case 2: - close; + close(); } } else if (ins_nyd == 131 || ins_nyd == 132 || ins_nyd > 199) { .@party_id = getcharid(CHAR_ID_PARTY); - .@md_name$ = "Nidhoggur's Nest"; + .@md_name$ = _("Nidhoggur's Nest"); - .@ins_nyd_check = questprogress(3135,PLAYTIME); // 3 Day cooldown - .@ins_nyd_check2 = questprogress(3136,PLAYTIME); // 4 Hour play limit + .@ins_nyd_check = questprogress(3135, PLAYTIME); // 3 Day cooldown + .@ins_nyd_check2 = questprogress(3136, PLAYTIME); // 4 Hour play limit - mes "As I put my hands on the stone gate, a voice sounded from the depth of my heart."; - next; + mes("As I put my hands on the stone gate, a voice sounded from the depth of my heart."); + next(); if (!.@ins_nyd_check && !.@ins_nyd_check2) { - if (!instance_check_party(.@party_id,2,70)) { - mes "[Yggdrasil Gatekeeper]"; - mes "Where are the other servants, so you can work together? Each servant cannot be admitted here individually..."; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "Come with at least 1 more servant... Only party leaders can accept admission to Nidhoggur's Nest."; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "And only 1 representative of you needs to talk to me, so don't annoy me..."; - close; + if (!instance_check_party(.@party_id, 2, 70)) { + mes("[Yggdrasil Gatekeeper]"); + mes("Where are the other servants, so you can work together? Each servant cannot be admitted here individually..."); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("Come with at least 1 more servant... Only party leaders can accept admission to Nidhoggur's Nest."); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("And only 1 representative of you needs to talk to me, so don't annoy me..."); + close(); } - if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2)) { - mes "[Yggdrasil Gatekeeper]"; - mes "The loyal servants of the Guardian... what can I do for you?"; - next; - switch(select("Please allow me to enter.", "I want to go in.", "I want to leave.")) { + if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2)) { + mes("[Yggdrasil Gatekeeper]"); + mes("The loyal servants of the Guardian... what can I do for you?"); + next(); + switch (select("Please allow me to enter.", "I want to go in.", "I want to leave.")) { case 1: .@instance = instance_create(.@md_name$, .@party_id); if (.@instance < 0) { - mes "[Yggdrasil Gatekeeper]"; - mes "The Guardian seems to wish to be alone. I will go in and check, please wait out here."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("The Guardian seems to wish to be alone. I will go in and check, please wait out here."); + close(); } for (.@i = 1; .@i <= 2; ++.@i) { - if( instance_attachmap(.@i + "@nyd", .@instance) == "" ) + if (instance_attachmap(.@i + "@nyd", .@instance) == "") break; } - if( .@i < 2 ) { + if (.@i < 2) { instance_destroy(.@instance); - close; + close(); } - instance_set_timeout 144000,300,.@instance; + instance_set_timeout(144000, 300, .@instance); instance_init(.@instance); - mes "[Yggdrasil Gatekeeper]"; - mes "I've recorded your request, are you ready to go inside?"; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "If you are ready, I will allow you to enter."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("I've recorded your request, are you ready to go inside?"); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("If you are ready, I will allow you to enter."); + close(); case 2: - callsub L_Enter; + callsub(L_Enter); case 3: - close; + close(); } } - mes "[Yggdrasil Gatekeeper]"; - mes "If you have the dungeon generated already, you can enter it."; - next; - if(select("I want to go in.", "I want to leave.") == 2) - close; - callsub L_Enter; + mes("[Yggdrasil Gatekeeper]"); + mes("If you have the dungeon generated already, you can enter it."); + next(); + if (select("I want to go in.", "I want to leave.") == 2) + close(); + callsub(L_Enter); } else { .@instance = has_instance2("1@nyd"); - if (.@instance >= 0) { + if (.@instance >= 0) instance_attach(.@instance); - } if (.@ins_nyd_check == 1) { if ('ins_nyd2 == 3 || 'ins_nyd2 == 4) { - mes "[Yggdrasil Gatekeeper]"; - mes "With the defeat of Nidhoggur's Shadow, the roots of the World Tree Yggdrasil are also affected."; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "After Nidhoggur's Shadow disappears, at least 3 days is needed for stabilizing."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("With the defeat of Nidhoggur's Shadow, the roots of the World Tree Yggdrasil are also affected."); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("After Nidhoggur's Shadow disappears, at least 3 days is needed for stabilizing."); + close(); } - mes "[Yggdrasil Gatekeeper]"; - mes "If you have the dungeon generated already, you can enter it."; - next; - if(select("I want to go in.", "I want to leave.") == 2) - close; - callsub L_Enter; + mes("[Yggdrasil Gatekeeper]"); + mes("If you have the dungeon generated already, you can enter it."); + next(); + if (select("I want to go in.", "I want to leave.") == 2) + close(); + callsub(L_Enter); } else if (.@ins_nyd_check == 2) { if (.@ins_nyd_check2 == 1) { - mes "[Yggdrasil Gatekeeper]"; - mes "The time limit to enter the dungeon has expired. You must wait for the World Tree to stabilize its power before trying to re-enter."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("The time limit to enter the dungeon has expired. You must wait for the World Tree to stabilize its power before trying to re-enter."); + close(); } else if (.@ins_nyd_check2 == 2) { - mes "[Yggdrasil Gatekeeper]"; - mes "The World Tree Yggdrasil has stabilized. Would you like to enter Nidhoggur's Nest again?"; - next; - mes "[Yggdrasil Gatekeeper]"; - mes "If you would like to enter again, please register with me."; - erasequest 3135; - erasequest 3136; + mes("[Yggdrasil Gatekeeper]"); + mes("The World Tree Yggdrasil has stabilized. Would you like to enter Nidhoggur's Nest again?"); + next(); + mes("[Yggdrasil Gatekeeper]"); + mes("If you would like to enter again, please register with me."); + erasequest(3135); + erasequest(3136); 'ins_nyd2 = 0; - close; + close(); } } } - close; + close(); } else { - mes "A great stone gate stands before you. The sculpture of a terrible dragon spreads its powerful looking wings."; - next; - mes "Near the bottom of the gate, Laphine tribeswomen have been turned to stone and now look like they are part of the great door."; - next; - switch(select("Move closer to look more carefully.", "Step back.")) { + mes("A great stone gate stands before you. The sculpture of a terrible dragon spreads its powerful looking wings."); + next(); + mes("Near the bottom of the gate, Laphine tribeswomen have been turned to stone and now look like they are part of the great door."); + next(); + switch (select("Move closer to look more carefully.", "Step back.")) { case 1: specialeffect(EF_HOLYHIT, AREA, playerattached()); - pushpc 3,3; - mes "A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."; - next; - mes "Perhaps there's a great hidden secret beyond the gate, beyond expectation."; - close; + pushpc(3, 3); + mes("A mysterious power prevents you from getting too close. It looks like there is something strong beyond the door..."); + next(); + mes("Perhaps there's a great hidden secret beyond the gate, beyond expectation."); + close(); case 2: - close; + close(); } } - close; + close(); L_Enter: if (has_instance("1@nyd") == "") { - mes "[Yggdrasil Gatekeeper]"; - mes "You did not request for entrance. Please let your leader request entrance."; - close; + mes("[Yggdrasil Gatekeeper]"); + mes("You did not request for entrance. Please let your leader request entrance."); + close(); } else { - mapannounce "nyd_dun02", getpartyname(getcharid(CHAR_ID_PARTY))+"'s party member "+strcharinfo(PC_NAME)+" has entered Nidhoggur's Nest.",bc_map,"0x00ff99"; - if (!questprogress(3135)) setquest 3135; - if (!questprogress(3136)) setquest 3136; - warp "1@nyd",32,37; - close; + mapannounce("nyd_dun02", sprintf(_$("%s's party member %s has entered Nidhoggur's Nest."), getpartyname(getcharid(CHAR_ID_PARTY)), strcharinfo(PC_NAME)), bc_map, C_SPRINGGREEN); + if (!questprogress(3135)) + setquest(3135); + if (!questprogress(3136)) + setquest(3136); + warp("1@nyd", 32, 37); + close(); } OnTouch_: if (ins_nyd == 0) { specialeffect(EF_CHANGECOLD, AREA, playerattached()); - specialeffect EF_CHANGECOLD; + specialeffect(EF_CHANGECOLD); } end; } mid_camp,271,299,3 script Historian Magnifier#edq 4_M_SAGE_C,3,3,{ - mes "[Historian Magniffer]"; + mes("[Historian Magniffer]"); if (ins_nyd == 1) { - mes "Sure, the mainland also has lots of interesting adventures... Hello, I am Magnifier, a historian dispatched from the Prontera royal court."; - next; - mes "[Historian Magniffer]"; - mes "Finding another line of work might make for a really worthy job, but only a historian gets to know the world over.."; - next; - mes "[Historian Magniffer]"; - mes "How this world is organized... and the way of the future! With our studies of the past and present we can predict what is to come."; - next; - mes "[Historian Magniffer]"; - mes "We are expecting a lot from you, expert adventurer. So, if you find anything... just tell me."; - close; + mes("Sure, the mainland also has lots of interesting adventures... Hello, I am Magnifier, a historian dispatched from the Prontera royal court."); + next(); + mes("[Historian Magniffer]"); + mes("Finding another line of work might make for a really worthy job, but only a historian gets to know the world over.."); + next(); + mes("[Historian Magniffer]"); + mes("How this world is organized... and the way of the future! With our studies of the past and present we can predict what is to come."); + next(); + mes("[Historian Magniffer]"); + mes("We are expecting a lot from you, expert adventurer. So, if you find anything... just tell me."); + close(); } else if (ins_nyd == 2) { - mes "Does Commander Agip want to talk to me? Let's listen to his story."; - next; - mes "[Historian Magniffer]"; - mes "Did you find the cave that the fairy tribes treat as a holy place? You are a really tough cookie. What did you find?"; - next; - mes "[Historian Magnifier]"; - mes "..."; - next; - mes "... ..."; - next; - mes "[Historian Magnifier]"; - mes "Wait a second... I have a brilliant idea."; - next; - mes "[Historian Magnifier]"; - mes "Let's see... This book... No... this one...? Hmm... Maybe this..."; - next; - mes "[Historian Magnifier]"; - mes "..."; - next; - mes "[Historian Magnifier]"; - mes "... ..."; - next; - mes "[Historian Magnifier]"; - mes "Oh, here it is! World Tree Yggdrasil and God's tribes... This is their book!"; - next; - mes "[Historian Magnifier]"; - mes "Maybe you found the central line to enter into the World Tree Yggdrasil!"; - next; - mes "[Historian Magnifier]"; - mes "If that's true, you've found the greatest discovery since the harnessing of mana. Isn't this exciting?"; - next; - mes "[Historian Magnifier]"; - mes "But we need a lot more information... Are they refusing you admission?"; - next; - mes "[Historian Magnifier]"; - mes "I will send a message to my assistant who is in the Prontera Library. So, help her find more information."; - next; - mes "[Historian Magnifier]"; - mes "I will definitely help you find a way to enter the World Tree directly so, just believe in me! Okay~!!"; + mes("Does Commander Agip want to talk to me? Let's listen to his story."); + next(); + mes("[Historian Magniffer]"); + mes("Did you find the cave that the fairy tribes treat as a holy place? You are a really tough cookie. What did you find?"); + next(); + mes("[Historian Magnifier]"); + mes("..."); + next(); + mes("... ..."); + next(); + mes("[Historian Magnifier]"); + mes("Wait a second... I have a brilliant idea."); + next(); + mes("[Historian Magnifier]"); + mes("Let's see... This book... No... this one...? Hmm... Maybe this..."); + next(); + mes("[Historian Magnifier]"); + mes("..."); + next(); + mes("[Historian Magnifier]"); + mes("... ..."); + next(); + mes("[Historian Magnifier]"); + mes("Oh, here it is! World Tree Yggdrasil and God's tribes... This is their book!"); + next(); + mes("[Historian Magnifier]"); + mes("Maybe you found the central line to enter into the World Tree Yggdrasil!"); + next(); + mes("[Historian Magnifier]"); + mes("If that's true, you've found the greatest discovery since the harnessing of mana. Isn't this exciting?"); + next(); + mes("[Historian Magnifier]"); + mes("But we need a lot more information... Are they refusing you admission?"); + next(); + mes("[Historian Magnifier]"); + mes("I will send a message to my assistant who is in the Prontera Library. So, help her find more information."); + next(); + mes("[Historian Magnifier]"); + mes("I will definitely help you find a way to enter the World Tree directly so, just believe in me! Okay~!!"); ins_nyd = 3; - close; + close(); } else if (ins_nyd == 3) { - mes "Why are you standing there? Go to my assistant in the Prontera Library!"; - close; + mes("Why are you standing there? Go to my assistant in the Prontera Library!"); + close(); } else if (ins_nyd == 4) { - mes "You've come back... Good, how's Naomi? Actually, I don't need to worry about her. She is always cheerful. Haha."; - next; - mes "[Historian Magnifier]"; - mes "You look like you have a lot on your mind... Your face is full of curiosity and questions."; - next; - mes "[Historian Magnifier]"; - mes "So, did you read the whole story that I have prepared?"; - next; - switch(select("Not yet.", "I read all the stories.")) { + mes("You've come back... Good, how's Naomi? Actually, I don't need to worry about her. She is always cheerful. Haha."); + next(); + mes("[Historian Magnifier]"); + mes("You look like you have a lot on your mind... Your face is full of curiosity and questions."); + next(); + mes("[Historian Magnifier]"); + mes("So, did you read the whole story that I have prepared?"); + next(); + switch (select("Not yet.", "I read all the stories.")) { case 1: - mes "[Historian Magnifier]"; - mes "Sheesh~ I prepared these stories for you carefully, but you didn't bother to check anything out did you?"; - next; - mes "[Historian Magnifier]"; - mes "It would be better if you returned after reading all of them. That's very basic data of what we should do for the future."; - close; + mes("[Historian Magnifier]"); + mes("Sheesh~ I prepared these stories for you carefully, but you didn't bother to check anything out did you?"); + next(); + mes("[Historian Magnifier]"); + mes("It would be better if you returned after reading all of them. That's very basic data of what we should do for the future."); + close(); case 2: - mes "[Historian Magnifier]"; - mes "Hm, good job. Maybe I don't need to check anything else, right?"; - next; - mes "[Historian Magnifier]"; - mes "I sent you to figure out which basic materials will be needed for the jobs ahead of us. You should bring research reports..."; - next; - mes "[Historian Magnifier]"; - mes "You might complain about why I didn't bring any myself... That's because I trust your abilities, don't ever take anything for granted."; - next; - mes "[Historian Magnifier]"; - mes "But a while ago, while you were tranferring reports from Commander Agip to the mainland, you lost those reports... remember?"; - next; - mes "[Historian Magnifier]"; - mes "So far, nothing's come up... Was it that somebody attacked you?"; - next; - mes "[Historian Magnifier]"; - mes "Somehow, the truth will come out, but we should be careful of shocking the natives if we go there unannounced and they're not prepared for our arrival."; - next; - mes "[Historian Magnifier]"; - mes "I've talked too much... Anyway, as you know through my report, you've found a great thing!"; - next; - mes "[Historian Magnifier]"; - mes "Firstly, we should find out more about the place. I expect we can, but... we can't do much without help from others."; - next; - mes "[Historian Magnifier]"; - mes "I have heard about recent expeditions of adventurers that have tried to contact the tribes... Have you heard anything about this?"; - next; - mes "[Historian Magnifier]"; - mes "Anyway, let's try to contact them first, to be clear about any caves or treasures."; - next; - mes "[Historian Magnifier]"; - mes "For now, you try to contact the Sapha and Laphine tribes, and try to extract information from them."; - next; - mes "[Historian Magnifier]"; - mes "I'll also keep searching here. If you find anything, come back and let me know."; + mes("[Historian Magnifier]"); + mes("Hm, good job. Maybe I don't need to check anything else, right?"); + next(); + mes("[Historian Magnifier]"); + mes("I sent you to figure out which basic materials will be needed for the jobs ahead of us. You should bring research reports..."); + next(); + mes("[Historian Magnifier]"); + mes("You might complain about why I didn't bring any myself... That's because I trust your abilities, don't ever take anything for granted."); + next(); + mes("[Historian Magnifier]"); + mes("But a while ago, while you were tranferring reports from Commander Agip to the mainland, you lost those reports... remember?"); + next(); + mes("[Historian Magnifier]"); + mes("So far, nothing's come up... Was it that somebody attacked you?"); + next(); + mes("[Historian Magnifier]"); + mes("Somehow, the truth will come out, but we should be careful of shocking the natives if we go there unannounced and they're not prepared for our arrival."); + next(); + mes("[Historian Magnifier]"); + mes("I've talked too much... Anyway, as you know through my report, you've found a great thing!"); + next(); + mes("[Historian Magnifier]"); + mes("Firstly, we should find out more about the place. I expect we can, but... we can't do much without help from others."); + next(); + mes("[Historian Magnifier]"); + mes("I have heard about recent expeditions of adventurers that have tried to contact the tribes... Have you heard anything about this?"); + next(); + mes("[Historian Magnifier]"); + mes("Anyway, let's try to contact them first, to be clear about any caves or treasures."); + next(); + mes("[Historian Magnifier]"); + mes("For now, you try to contact the Sapha and Laphine tribes, and try to extract information from them."); + next(); + mes("[Historian Magnifier]"); + mes("I'll also keep searching here. If you find anything, come back and let me know."); ins_nyd = 5; - close; + close(); } - } else if ((ins_nyd == 5) || (ins_nyd == 51) || (ins_nyd == 52)) { - mes "Okay, let's try to contact them first, to be clear about any caves or treasures."; - next; - mes "[Historian Magnifier]"; - mes "For now, you try to contact the Sapha and Laphine tribes, and try to extract more information."; - next; - mes "[Historian Magnifier]"; - mes "I'll also keep searching here. If you find anything, come back and let me know."; - close; - } else if ((ins_nyd == 61) || (ins_nyd == 62)) { - mes "Ah, you've come at a proper time. I found a curious thing while looking for reports from Arunafeltz."; - next; - mes "[Historian Magnifier]"; - mes "Right now, we are standing on part of one of the roots of the World Tree Yggdrasil."; - next; - mes "[Historian Magnifier]"; - mes "This spot is connected to World Tree by the root. I think we can expect confrontations between the Sapha and Laphine here eventually, don't you think?"; - next; - mes "[Historian Magnifier]"; - mes "As I expected, the cave is the entrance to go to one of Yggdrasil's roots..."; - next; - mes "[Historian Magnifier]"; - mes "Did you find anything about the Sapha and Laphine?"; - next; - mes "..."; - next; - mes "... ..."; - next; - mes "[Historian Magnifier]"; - mes "Both sides act ambiguously, so... I'm getting worried..."; - next; - mes "[Historian Magnifier]"; - mes "The two tribes have some trouble amongst their top leaders. It's not anything official, but..."; - next; - mes "[Historian Magnifier]"; - mes "Let's report to Commander Agip about the situation so far. Then, we wait on his decision."; + } else if (ins_nyd == 5 || ins_nyd == 51 || ins_nyd == 52) { + mes("Okay, let's try to contact them first, to be clear about any caves or treasures."); + next(); + mes("[Historian Magnifier]"); + mes("For now, you try to contact the Sapha and Laphine tribes, and try to extract more information."); + next(); + mes("[Historian Magnifier]"); + mes("I'll also keep searching here. If you find anything, come back and let me know."); + close(); + } else if (ins_nyd == 61 || ins_nyd == 62) { + mes("Ah, you've come at a proper time. I found a curious thing while looking for reports from Arunafeltz."); + next(); + mes("[Historian Magnifier]"); + mes("Right now, we are standing on part of one of the roots of the World Tree Yggdrasil."); + next(); + mes("[Historian Magnifier]"); + mes("This spot is connected to World Tree by the root. I think we can expect confrontations between the Sapha and Laphine here eventually, don't you think?"); + next(); + mes("[Historian Magnifier]"); + mes("As I expected, the cave is the entrance to go to one of Yggdrasil's roots..."); + next(); + mes("[Historian Magnifier]"); + mes("Did you find anything about the Sapha and Laphine?"); + next(); + mes("..."); + next(); + mes("... ..."); + next(); + mes("[Historian Magnifier]"); + mes("Both sides act ambiguously, so... I'm getting worried..."); + next(); + mes("[Historian Magnifier]"); + mes("The two tribes have some trouble amongst their top leaders. It's not anything official, but..."); + next(); + mes("[Historian Magnifier]"); + mes("Let's report to Commander Agip about the situation so far. Then, we wait on his decision."); ins_nyd = 7; - close; - } else if ((ins_nyd == 7) || (ins_nyd == 8)) { - mes "Report to Commander Hibba Agip about what we have discovered, since time is dependent on his decision."; - close; - } else if ((ins_nyd == 121) || (ins_nyd == 122) || (ins_nyd == 131) || (ins_nyd == 132) || (ins_nyd ==14)) { - mes "So that's how it is... we were right about some parts of it... it's called the Guardian's Nest."; - next; - mes "[Historian Magnifier]"; - mes "We have gained a large amount of knowledge today, but..."; - next; - mes "[Historian Magnifier]"; - mes "What we have figured out... how is it going to influence mankind? It's so unpredictable..."; - next; - mes "[Historian Magnifier]"; - mes "This is only the beginning...we will be quite busy from now on."; - next; - mes "[Historian Magnifier]"; - mes "First, report to Commander Agip, then act according to the situation. Let me organize my research findings..."; - close; + close(); + } else if (ins_nyd == 7 || ins_nyd == 8) { + mes("Report to Commander Hibba Agip about what we have discovered, since time is dependent on his decision."); + close(); + } else if (ins_nyd == 121 || ins_nyd == 122 || ins_nyd == 131 || ins_nyd == 132 || ins_nyd == 14) { + mes("So that's how it is... we were right about some parts of it... it's called the Guardian's Nest."); + next(); + mes("[Historian Magnifier]"); + mes("We have gained a large amount of knowledge today, but..."); + next(); + mes("[Historian Magnifier]"); + mes("What we have figured out... how is it going to influence mankind? It's so unpredictable..."); + next(); + mes("[Historian Magnifier]"); + mes("This is only the beginning...we will be quite busy from now on."); + next(); + mes("[Historian Magnifier]"); + mes("First, report to Commander Agip, then act according to the situation. Let me organize my research findings..."); + close(); } else { - mes "Sure, the mainland also has lots of interesting adventures... Hello, I am Magnifier, a historian dispatched from the Prontera royal court."; - next; - mes "[Historian Magnifier]"; - mes "Finding another line of work might make for a really worthy job, but only a historian gets to know the world over.."; - next; - mes "[Historian Magnifier]"; - mes "How this world is organized... and the way of the future! With our studies of the past and present we can predict what is to come."; - next; - mes "[Historian Magnifier]"; - mes "We are expecting a lot from you, expert adventurer. So, if you find anything... just tell me."; - close; + mes("Sure, the mainland also has lots of interesting adventures... Hello, I am Magnifier, a historian dispatched from the Prontera royal court."); + next(); + mes("[Historian Magnifier]"); + mes("Finding another line of work might make for a really worthy job, but only a historian gets to know the world over.."); + next(); + mes("[Historian Magnifier]"); + mes("How this world is organized... and the way of the future! With our studies of the past and present we can predict what is to come."); + next(); + mes("[Historian Magnifier]"); + mes("We are expecting a lot from you, expert adventurer. So, if you find anything... just tell me."); + close(); } } prt_in,171,94,3 script Assistant Naomi#edq 4_F_HUWOMAN,3,3,{ - mes "[Assistant Naomi]"; + mes("[Assistant Naomi]"); .@name$ = strcharinfo(PC_NAME); if (ins_nyd == 3) { - mes "The doctor never ever tries to come back, and there're too many things to do... How can I do it all..."; - next; - mes "[Assistant Naomi]"; - mes "Hey, you. Please move these books. Put them into shelf 3 row B."; - next; - mes "["+.@name$+"]"; - mes "Ah...um..I...am..."; - next; - mes "[Assistant Naomi]"; - mes "Don't you see I am too busy? Don't hesitate. Just do it."; - next; - switch(select("Look busy, and take a step back.", "Help her just this once.")) { + mes("The doctor never ever tries to come back, and there're too many things to do... How can I do it all..."); + next(); + mes("[Assistant Naomi]"); + mes("Hey, you. Please move these books. Put them into shelf 3 row B."); + next(); + mesf("[%s]", .@name$); + mes("Ah...um..I...am..."); + next(); + mes("[Assistant Naomi]"); + mes("Don't you see I am too busy? Don't hesitate. Just do it."); + next(); + switch (select("Look busy, and take a step back.", "Help her just this once.")) { case 1: - mes "[Assistant Naomi]"; - mes "Gosh! Where is-? Where did-? Ugh! It's so difficult!"; - close; + mes("[Assistant Naomi]"); + mes("Gosh! Where is-? Where did-? Ugh! It's so difficult!"); + close(); case 2: - mes "[Assistant Naomi]"; - mes "Ah... if you're done moving those, then these should go in shelf 3 row B."; - next; - mes "["+.@name$+"]"; - mes "Ah...I...see..."; - next; - mes "[Assistant Naomi]"; - mes "Now, I am almost done... Who are you? Are you a new assistant to Dr. Magnifier?"; - next; - mes "["+.@name$+"]"; - mes "He asked me to bring some reports. Didn't he say anything?"; - next; - mes "[Assistant Naomi]"; - mes "Hmm... I haven't seen him in over a year! What's he doing now?"; - next; - mes "["+.@name$+"]"; - mes "He said that he would send a message to you... didn't you get it?"; - next; - mes "[Assistant Naomi]"; - mes "Message? ...Let's see... I never expected him to write a message..."; - next; - mes "[Assistant Naomi]"; - mes "I will check the mailbox, wait a minute. If you get bored read those books."; - next; - mes "..."; - next; - mes "... ..."; - next; - mes "It's too messy due to lots of stacked books and files. Dr. Magnifier looks like he has a ton of reports."; - next; - mes "["+.@name$+"]"; - mes "'Birth of the World', 'The Fiction of Odin's Myth', 'God's Battle Then After', 'Dreams of the Tribes'. There are a variety of books..."; - next; - mes "..."; - next; - mes "[Assistant Naomi]"; - mes "Oh, sorry I took so long. There was too much mail, so it took me a while to find stuff."; - next; - mes "[Assistant Naomi]"; - mes "He has sent me mail over 20 times. I did not know that..."; - next; - mes "[Assistant Naomi]"; - mes "Ah, here's the message about you. He's said to share the information on research and reports."; - next; - mes "["+.@name$+"]"; - mes "What is the Doctor's area of expertise?"; - next; - mes "[Assistant Naomi]"; - mes "Ever since 5 years ago, he has been curious about how the world started, and so he began his search for the God of creation."; - next; - mes "[Assistant Naomi]"; - mes "He researches combat between Odin and the Gods, and about the Gods' origins and life."; - next; - mes "["+.@name$+"]"; - mes "So, did he already know that the Rebirth of Satan Morocc has occured before?"; - next; - mes "[Assistant Naomi]"; - mes "I can't be sure, but he thought someday it would occur. It broke out earlier than he expected though."; - next; - mes "["+.@name$+"]"; - mes "But Rune-Midgarts approved this research?"; - next; - mes "[Assistant Naomi]"; - mes "Our academics are not a religion. And they too have curiosity about this world's history."; - next; - mes "[Assistant Naomi]"; - mes "The combat of Odin vs. the Gods, and the God's sons and their purpose... The Doctor has researched this his whole life."; - next; - mes "["+.@name$+"]"; - mes "But those reports haven't come out yet. Have they?"; - next; - mes "[Assistant Naomi]"; - mes "That's why he sent you here. By the way, this isn't the first time I've heard this."; - next; - mes "[Assistant Naomi]"; - mes "After the establishment of the Rune-Midgarts Kingdom and Arunafeltz, the rumors have spread in secret about their tribes, myths, etc."; - next; - mes "[Assistant Naomi]"; - mes "Anyway, I should make sure that you read all these books, and I'll just keep doing my work."; - next; - mes "["+.@name$+"]"; - mes "Shouldn't I have filed the books?"; - next; - mes "[Assistant Naomi]"; - mes "The Doctor said he will pick up the books through another person. Besides, don't you need the basic information on what to do?"; - next; - mes "[Assistant Naomi]"; - mes "Before you go back to the Doctor, you had better read these books. So, I will go back to work."; + mes("[Assistant Naomi]"); + mes("Ah... if you're done moving those, then these should go in shelf 3 row B."); + next(); + mesf("[%s]", .@name$); + mes("Ah...I...see..."); + next(); + mes("[Assistant Naomi]"); + mes("Now, I am almost done... Who are you? Are you a new assistant to Dr. Magnifier?"); + next(); + mesf("[%s]", .@name$); + mes("He asked me to bring some reports. Didn't he say anything?"); + next(); + mes("[Assistant Naomi]"); + mes("Hmm... I haven't seen him in over a year! What's he doing now?"); + next(); + mesf("[%s]", .@name$); + mes("He said that he would send a message to you... didn't you get it?"); + next(); + mes("[Assistant Naomi]"); + mes("Message? ...Let's see... I never expected him to write a message..."); + next(); + mes("[Assistant Naomi]"); + mes("I will check the mailbox, wait a minute. If you get bored read those books."); + next(); + mes("..."); + next(); + mes("... ..."); + next(); + mes("It's too messy due to lots of stacked books and files. Dr. Magnifier looks like he has a ton of reports."); + next(); + mesf("[%s]", .@name$); + mes("'Birth of the World', 'The Fiction of Odin's Myth', 'God's Battle Then After', 'Dreams of the Tribes'. There are a variety of books..."); + next(); + mes("..."); + next(); + mes("[Assistant Naomi]"); + mes("Oh, sorry I took so long. There was too much mail, so it took me a while to find stuff."); + next(); + mes("[Assistant Naomi]"); + mes("He has sent me mail over 20 times. I did not know that..."); + next(); + mes("[Assistant Naomi]"); + mes("Ah, here's the message about you. He's said to share the information on research and reports."); + next(); + mesf("[%s]", .@name$); + mes("What is the Doctor's area of expertise?"); + next(); + mes("[Assistant Naomi]"); + mes("Ever since 5 years ago, he has been curious about how the world started, and so he began his search for the God of creation."); + next(); + mes("[Assistant Naomi]"); + mes("He researches combat between Odin and the Gods, and about the Gods' origins and life."); + next(); + mesf("[%s]", .@name$); + mes("So, did he already know that the Rebirth of Satan Morocc has occured before?"); + next(); + mes("[Assistant Naomi]"); + mes("I can't be sure, but he thought someday it would occur. It broke out earlier than he expected though."); + next(); + mesf("[%s]", .@name$); + mes("But Rune-Midgarts approved this research?"); + next(); + mes("[Assistant Naomi]"); + mes("Our academics are not a religion. And they too have curiosity about this world's history."); + next(); + mes("[Assistant Naomi]"); + mes("The combat of Odin vs. the Gods, and the God's sons and their purpose... The Doctor has researched this his whole life."); + next(); + mesf("[%s]", .@name$); + mes("But those reports haven't come out yet. Have they?"); + next(); + mes("[Assistant Naomi]"); + mes("That's why he sent you here. By the way, this isn't the first time I've heard this."); + next(); + mes("[Assistant Naomi]"); + mes("After the establishment of the Rune-Midgarts Kingdom and Arunafeltz, the rumors have spread in secret about their tribes, myths, etc."); + next(); + mes("[Assistant Naomi]"); + mes("Anyway, I should make sure that you read all these books, and I'll just keep doing my work."); + next(); + mesf("[%s]", .@name$); + mes("Shouldn't I have filed the books?"); + next(); + mes("[Assistant Naomi]"); + mes("The Doctor said he will pick up the books through another person. Besides, don't you need the basic information on what to do?"); + next(); + mes("[Assistant Naomi]"); + mes("Before you go back to the Doctor, you had better read these books. So, I will go back to work."); ins_nyd = 4; - close; + close(); } } else if (ins_nyd == 4) { - mes "Browse around, to take a look at the books."; - next; - switch(select("Discovery of Heterogeneity", "Report of Indigenous Tribes")) { + mes("Browse around, to take a look at the books."); + next(); + switch (select("Discovery of Heterogeneity", "Report of Indigenous Tribes")) { case 1: - mes "Satan Morocc has known that he didn't resurrect normally or by himself."; - next; - mes "Continuously, adventurers from Rune-Midgarts have attacked him and he is slowly losing his power. He would need more time to resurrect completely."; - next; - mes "Satan Morroc stopped to destroy the city of Morroc, turning it into a ruined desert, then started to rip the world apart."; - next; - mes "Satan Morroc was worried about those who would give chase, so he created Morocc clones to keep watch behind him."; - next; - mes "Modeled after Morocc, their appearance made it difficult to go around the time-space gap."; - next; - mes "Still the adventurers gave chase. They came from all over the world, trying to approach the Dimensional Gorge."; - next; - mes "The reports of these adventurers have been sent to representatives of all kingdoms, and an expedition team has been created to find out more information."; - next; - mes "The scientists of Schwartzwalt created a combination metal, using fragments of metals found in the dimensional gorge."; - next; - mes "The Schwaltzvalt Republic requested approval to find the source of the new metal, and since Rune-Midgart couldn't complete the test themselves, they finally accepted."; - next; - mes "They associated together to gather volunteers. The Assassin Guild was the first to volunteer."; - next; - mes "The Assassins have a terrible past with Satan Morroc, so they gathered 18 members to chase him down."; - next; - mes "About 3 hours later, all 18 members returned without any problem, and each man and woman shared the information that they had collected."; - next; - mes "They had discovered another world with a definitively different nature and environment. And indeed, people could also live there."; - next; - mes "The most surprising thing is the flow of time. The 18 assassins had stayed for about 2 weeks in there, yet they returned within 3 hours after departing."; - next; - mes "The last thing to be tested... was to send adventurers who volunteered to explore the new world."; - next; - mes "There was a flood of adventurer applications. Lots of volunteers disappeared over the dimensional gorge, and they brought back new data."; - next; - mes "The new world could support 3 completely different eco-systems dependant upon the race of people that lived there."; - next; - mes "The heterogenous phenomenon needed to be studied thoroughly and carefully in order to under the relationship between thair world and ours."; - next; - mes "Just when it was expected to be impossible to travel into a different world, the first page of a new chapter was opened."; - close; + mes("Satan Morocc has known that he didn't resurrect normally or by himself."); + next(); + mes("Continuously, adventurers from Rune-Midgarts have attacked him and he is slowly losing his power. He would need more time to resurrect completely."); + next(); + mes("Satan Morroc stopped to destroy the city of Morroc, turning it into a ruined desert, then started to rip the world apart."); + next(); + mes("Satan Morroc was worried about those who would give chase, so he created Morocc clones to keep watch behind him."); + next(); + mes("Modeled after Morocc, their appearance made it difficult to go around the time-space gap."); + next(); + mes("Still the adventurers gave chase. They came from all over the world, trying to approach the Dimensional Gorge."); + next(); + mes("The reports of these adventurers have been sent to representatives of all kingdoms, and an expedition team has been created to find out more information."); + next(); + mes("The scientists of Schwartzwalt created a combination metal, using fragments of metals found in the dimensional gorge."); + next(); + mes("The Schwaltzvalt Republic requested approval to find the source of the new metal, and since Rune-Midgart couldn't complete the test themselves, they finally accepted."); + next(); + mes("They associated together to gather volunteers. The Assassin Guild was the first to volunteer."); + next(); + mes("The Assassins have a terrible past with Satan Morroc, so they gathered 18 members to chase him down."); + next(); + mes("About 3 hours later, all 18 members returned without any problem, and each man and woman shared the information that they had collected."); + next(); + mes("They had discovered another world with a definitively different nature and environment. And indeed, people could also live there."); + next(); + mes("The most surprising thing is the flow of time. The 18 assassins had stayed for about 2 weeks in there, yet they returned within 3 hours after departing."); + next(); + mes("The last thing to be tested... was to send adventurers who volunteered to explore the new world."); + next(); + mes("There was a flood of adventurer applications. Lots of volunteers disappeared over the dimensional gorge, and they brought back new data."); + next(); + mes("The new world could support 3 completely different eco-systems dependant upon the race of people that lived there."); + next(); + mes("The heterogenous phenomenon needed to be studied thoroughly and carefully in order to under the relationship between thair world and ours."); + next(); + mes("Just when it was expected to be impossible to travel into a different world, the first page of a new chapter was opened."); + close(); case 2: - mes "Long ago, there wasn't a sun, moon, or stars; just empty earth... and Ymir was born. Then, by making sons, Ymir grew."; - next; - mes "But, his sons grew as well and he was killed by Odin, Vili, and Ve; 3 brothers, Gods, that attacked from different sides."; - next; - mes "At that time of Ymir's fall his blood flooded the world... killing all in it's path."; - next; - mes "Only Hvergelmir of the Sapha tribe escaped from this flooding of blood. And he swore vengeance in Jotunheim, which is covered with foggy snow."; - next; - mes "Currently, one of the Sapha tribe has been discovered from beyond the Dimensional Gorge."; - next; - mes "Other than the Sapha tribe, there was another tribe beyond the time-space gap, known as the Laphine."; - next; - mes "The Laphine tribes gathered as well for an expedition to explore the time-space gap and figure out the World Tree's strange symptoms and perharps a cure method."; - next; - mes "The Laphine tribe was charged with the management of Yggdrasil, to establish their lands close to Asgard, and to protect the balance of Yggdrasil's magic power."; - next; - mes "The Laphine tribe has never contacted anyone outside of Asgard. But since they found that Yggdrasil's power if weakening..."; - next; - mes "They have declared they will attend to the high courts for the first time in 1000 human years, since the end of the battles of Gods vs. Magicians."; - close; + mes("Long ago, there wasn't a sun, moon, or stars; just empty earth... and Ymir was born. Then, by making sons, Ymir grew."); + next(); + mes("But, his sons grew as well and he was killed by Odin, Vili, and Ve; 3 brothers, Gods, that attacked from different sides."); + next(); + mes("At that time of Ymir's fall his blood flooded the world... killing all in it's path."); + next(); + mes("Only Hvergelmir of the Sapha tribe escaped from this flooding of blood. And he swore vengeance in Jotunheim, which is covered with foggy snow."); + next(); + mes("Currently, one of the Sapha tribe has been discovered from beyond the Dimensional Gorge."); + next(); + mes("Other than the Sapha tribe, there was another tribe beyond the time-space gap, known as the Laphine."); + next(); + mes("The Laphine tribes gathered as well for an expedition to explore the time-space gap and figure out the World Tree's strange symptoms and perharps a cure method."); + next(); + mes("The Laphine tribe was charged with the management of Yggdrasil, to establish their lands close to Asgard, and to protect the balance of Yggdrasil's magic power."); + next(); + mes("The Laphine tribe has never contacted anyone outside of Asgard. But since they found that Yggdrasil's power if weakening..."); + next(); + mes("They have declared they will attend to the high courts for the first time in 1000 human years, since the end of the battles of Gods vs. Magicians."); + close(); } } else { - mes "The doctor never ever tries to come back, and there're too many things to do... How can I do it all..."; - next; - mes "[Assistant Naomi]"; - mes "Don't you see that I'm too busy? Don't dawdle, just go!"; - close; + mes("The doctor never ever tries to come back, and there're too many things to do... How can I do it all..."); + next(); + mes("[Assistant Naomi]"); + mes("Don't you see that I'm too busy? Don't dawdle, just go!"); + close(); } } splendide,198,178,3 script Grumbling Soldier#edq 4_M_FAIRYSOLDIER,3,3,{ - mes "[Grumbling Soldier]"; - if (isequipped(2782) == 1) { - mes "Nowadays, the world has turned unstable. I can't even fly comfortably anymore."; - next; + mes("[Grumbling Soldier]"); + if (isequipped(Ring_Of_Wise_King) == 1) { + mes("Nowadays, the world has turned unstable. I can't even fly comfortably anymore."); + next(); if (ins_nyd == 5) { - switch(select("What's with the cave up north?", "Who are the Sapha tribesmen?", "Hmm. We can talk later.")) { + switch (select("What's with the cave up north?", "Who are the Sapha tribesmen?", "Hmm. We can talk later.")) { case 1: - mes "[Grumbling Soldier]"; - mes "What? If you wander around there... you might return with injuries."; - next; - mes "[Grumbling Soldier]"; - mes "I don't know exactly how to explain it, but it's like it has a bad mood. There are lots of terrible monsters there."; - next; - mes "[Grumbling Soldier]"; - mes "They whisper to each other, so... something is there... But I don't care..."; - next; - mes "[Grumbling Soldier]"; - mes "Might be... those Sapha tribesmen have dug in the cave before... They do have a special talent for digging."; + mes("[Grumbling Soldier]"); + mes("What? If you wander around there... you might return with injuries."); + next(); + mes("[Grumbling Soldier]"); + mes("I don't know exactly how to explain it, but it's like it has a bad mood. There are lots of terrible monsters there."); + next(); + mes("[Grumbling Soldier]"); + mes("They whisper to each other, so... something is there... But I don't care..."); + next(); + mes("[Grumbling Soldier]"); + mes("Might be... those Sapha tribesmen have dug in the cave before... They do have a special talent for digging."); ins_nyd = 51; - close; + close(); case 2: - mes "[Grumbling Soldier]"; - mes "Oh! It is because of them that we have been living here, a lowdown and dirty city, for over one hundred years."; - next; - mes "[Grumbling Soldier]"; - mes "They don't care if there's trouble with the Yggdrasil."; - next; - mes "[Grumbling Soldier]"; - mes "They are surely full of bad ideas, so... they have destroyed the Yggdrasil's root."; - next; - mes "[Grumbling Soldier]"; - mes "We are here to make sure that the Sapha don't make things worse."; - close; + mes("[Grumbling Soldier]"); + mes("Oh! It is because of them that we have been living here, a lowdown and dirty city, for over one hundred years."); + next(); + mes("[Grumbling Soldier]"); + mes("They don't care if there's trouble with the Yggdrasil."); + next(); + mes("[Grumbling Soldier]"); + mes("They are surely full of bad ideas, so... they have destroyed the Yggdrasil's root."); + next(); + mes("[Grumbling Soldier]"); + mes("We are here to make sure that the Sapha don't make things worse."); + close(); case 3: - close; + close(); } } else { - mes "[Grumbling Soldier]"; - mes "Nowadays, the world has turned unstable. I can't even fly comfortably anymore."; - next; - mes "[Grumbling Soldier]"; - mes "What can you expect when Manuk giants start to dig into the world to destroy the Yggdrasil..."; - next; - mes "[Grumbling Soldier]"; - mes "And the worst thing is... that strange things are strutting along the streets of the towns..."; - next; - mes "[Grumbling Soldier]"; - mes "Yes, you... What do you think about the way the government is handling this...?"; - next; - mes "[Grumbling Soldier]"; - mes "Although they ignore your track record, still, one should be careful..."; - close; + mes("[Grumbling Soldier]"); + mes("Nowadays, the world has turned unstable. I can't even fly comfortably anymore."); + next(); + mes("[Grumbling Soldier]"); + mes("What can you expect when Manuk giants start to dig into the world to destroy the Yggdrasil..."); + next(); + mes("[Grumbling Soldier]"); + mes("And the worst thing is... that strange things are strutting along the streets of the towns..."); + next(); + mes("[Grumbling Soldier]"); + mes("Yes, you... What do you think about the way the government is handling this...?"); + next(); + mes("[Grumbling Soldier]"); + mes("Although they ignore your track record, still, one should be careful..."); + close(); } } else { - mes "SeLarsmar Di marThusVil U SeMushVohl"; - close; + mes("SeLarsmar Di marThusVil U SeMushVohl"); + close(); } } splendide,240,164,3 script Sighing Soldier#edq 4_M_FAIRYSOLDIER2,3,3,{ - mes "[Sighing Soldier]"; - if (isequipped(2782) == 1) { - mes "When will we be finished with this combat with the Sapha? Ugghhhh..."; - next; + mes("[Sighing Soldier]"); + if (isequipped(Ring_Of_Wise_King) == 1) { + mes("When will we be finished with this combat with the Sapha? Ugghhhh..."); + next(); if (ins_nyd == 5) { - switch(select("What's with the cave up north?", "Who are the Sapha tribesmen?", "Hmm. We can talk later.")) { + switch (select("What's with the cave up north?", "Who are the Sapha tribesmen?", "Hmm. We can talk later.")) { case 1: - mes "[Sighing Soldier]"; - mes "Well... I'm not sure, but we have avoided going to that area."; - next; - mes "[Sighing Soldier]"; - mes "Sometimes, the dispatched researchers hang around here... I feel bad that there's nothing to see... without any reason..."; - next; - mes "[Sighing Soldier]"; - mes "But the command officers make sure that there's something hidden in there."; - next; - mes "[Sighing Soldier]"; - mes "We don't know if the monsters there are strong, so we never checked it out. But on a personal level, nobody wants to go there..."; + mes("[Sighing Soldier]"); + mes("Well... I'm not sure, but we have avoided going to that area."); + next(); + mes("[Sighing Soldier]"); + mes("Sometimes, the dispatched researchers hang around here... I feel bad that there's nothing to see... without any reason..."); + next(); + mes("[Sighing Soldier]"); + mes("But the command officers make sure that there's something hidden in there."); + next(); + mes("[Sighing Soldier]"); + mes("We don't know if the monsters there are strong, so we never checked it out. But on a personal level, nobody wants to go there..."); ins_nyd = 51; - close; + close(); case 2: - mes "[Sighing Soldier]"; - mes "I don't know what others think about it... but we've had some trouble with our attitude against the Sapha tribes."; - next; - mes "[Sighing Soldier]"; - mes "We didn't try to solve the problems with talk. We attacked them first."; - next; - mes "[Sighing Soldier]"; - mes "Maybe... our command officers don't want to accept other species different than us..."; - next; - mes "[Sighing Soldier]"; - mes "Don't misunderstand... Recently, we have talked about your particular species and our commanders feel grateful to you."; - next; - mes "[Sighing Soldier]"; - mes "Anyway... I'm just exhausted during this useless and nerve-wracking situation... Sigh."; - close; + mes("[Sighing Soldier]"); + mes("I don't know what others think about it... but we've had some trouble with our attitude against the Sapha tribes."); + next(); + mes("[Sighing Soldier]"); + mes("We didn't try to solve the problems with talk. We attacked them first."); + next(); + mes("[Sighing Soldier]"); + mes("Maybe... our command officers don't want to accept other species different than us..."); + next(); + mes("[Sighing Soldier]"); + mes("Don't misunderstand... Recently, we have talked about your particular species and our commanders feel grateful to you."); + next(); + mes("[Sighing Soldier]"); + mes("Anyway... I'm just exhausted during this useless and nerve-wracking situation... Sigh."); + close(); case 3: - close; + close(); } } else { - mes "[Sighing Soldier]"; - mes "When will we be finished with this combat with the Sapha? Ugghhhh..."; - next; - mes "[Sighing Soldier]"; - mes "Frankly, I don't think of you or any Sapha is our enemy. Sigh..."; - next; - mes "[Sighing Soldier]"; - mes "Is there no way to resolve this by communicating? There's no meaning in useless combat! Geez."; - close; + mes("[Sighing Soldier]"); + mes("When will we be finished with this combat with the Sapha? Ugghhhh..."); + next(); + mes("[Sighing Soldier]"); + mes("Frankly, I don't think of you or any Sapha is our enemy. Sigh..."); + next(); + mes("[Sighing Soldier]"); + mes("Is there no way to resolve this by communicating? There's no meaning in useless combat! Geez."); + close(); } } else { - mes "VohlLarsmar Ha DielCyatas"; - close; + mes("VohlLarsmar Ha DielCyatas"); + close(); } } spl_in01,109,60,3 script Commander Lebiordirr#edq 4_F_FAIRY,3,3,{ - mes "[Commander Lebiordirr]"; - if (isequipped(2782) == 1) { + mes("[Commander Lebiordirr]"); + if (isequipped(Ring_Of_Wise_King) == 1) { if (ins_nyd == 51) { - mes "Are you...? Are you the one collecting information from my soldiers...?"; - next; - mes "[Commander Lebiordirr]"; - mes "You should be cautious. Our tribe has respected the existence of you humans but..."; - next; - mes "[Commander Lebiordirr]"; - mes "I've taken a great risk in allowing you in here. So be wary."; - next; - mes "[Commander Lebiordirr]"; - mes "Don't attract too much attention because that would make your people look bad."; - next; - mes "[Commander Lebiordirr]"; - mes "Now, we don't need to talk much about this, so just go back where you came from."; - next; - mes "[Commander Lebiordirr]"; - mes "Unless you have any messages for me...? Your face says you do..."; - next; - if(select("No. Nothing. We can talk later.", "I intend to stay. For good reasons.")==1) close; - mes "[Splendide Guard]"; - mes "Sir, I can drag this pest out right now."; - next; - mes "[Commander Lebiordirr]"; - mes "No. Let's hear an explanation. Good? Now, if you want..."; - next; - mes "[Commander Lebiordirr]"; - mes "I have known that, recently, time has broken... so, you're here exploring for a solution, no?"; - next; - mes "[Commander Lebiordirr]"; - mes "Our tribe has respected you, so just forget about the searching and exploring around here."; - next; - mes "[Commander Lebiordirr]"; - mes "I heard that you are to search for any treasure in the closed cave to the north."; - next; - mes "[Commander Lebiordirr]"; - mes "That place is banned by order of the Laphine tribe. So, people can't just go there without permission."; - next; - mes "[Commander Lebiordirr]"; - mes "If you can't follow this rule, I will stop associating with you and ban all of your people from here."; - next; - mes "[Commander Lebiordirr]"; - mes "We still have an unstable relationship with the Sapha, we usually don't worry about outsiders."; - next; - mes "[Commander Lebiordirr]"; - mes "Now, if you understand this, inform your friends."; + mes("Are you...? Are you the one collecting information from my soldiers...?"); + next(); + mes("[Commander Lebiordirr]"); + mes("You should be cautious. Our tribe has respected the existence of you humans but..."); + next(); + mes("[Commander Lebiordirr]"); + mes("I've taken a great risk in allowing you in here. So be wary."); + next(); + mes("[Commander Lebiordirr]"); + mes("Don't attract too much attention because that would make your people look bad."); + next(); + mes("[Commander Lebiordirr]"); + mes("Now, we don't need to talk much about this, so just go back where you came from."); + next(); + mes("[Commander Lebiordirr]"); + mes("Unless you have any messages for me...? Your face says you do..."); + next(); + if (select("No. Nothing. We can talk later.", "I intend to stay. For good reasons.") == 1) + close(); + mes("[Splendide Guard]"); + mes("Sir, I can drag this pest out right now."); + next(); + mes("[Commander Lebiordirr]"); + mes("No. Let's hear an explanation. Good? Now, if you want..."); + next(); + mes("[Commander Lebiordirr]"); + mes("I have known that, recently, time has broken... so, you're here exploring for a solution, no?"); + next(); + mes("[Commander Lebiordirr]"); + mes("Our tribe has respected you, so just forget about the searching and exploring around here."); + next(); + mes("[Commander Lebiordirr]"); + mes("I heard that you are to search for any treasure in the closed cave to the north."); + next(); + mes("[Commander Lebiordirr]"); + mes("That place is banned by order of the Laphine tribe. So, people can't just go there without permission."); + next(); + mes("[Commander Lebiordirr]"); + mes("If you can't follow this rule, I will stop associating with you and ban all of your people from here."); + next(); + mes("[Commander Lebiordirr]"); + mes("We still have an unstable relationship with the Sapha, we usually don't worry about outsiders."); + next(); + mes("[Commander Lebiordirr]"); + mes("Now, if you understand this, inform your friends."); ins_nyd = 61; - close; + close(); } else if (ins_nyd == 61) { - mes "If you can't follow this rule, I will stop associating with you and ban all of your people from here."; - next; - mes "[Commander Lebiordirr]"; - mes "We still have an unstable relationship with the Sapha, we usually don't worry about outsiders."; - next; - mes "[Commander Lebiordirr]"; - mes "Now, if you understand this, inform your friends."; - close; + mes("If you can't follow this rule, I will stop associating with you and ban all of your people from here."); + next(); + mes("[Commander Lebiordirr]"); + mes("We still have an unstable relationship with the Sapha, we usually don't worry about outsiders."); + next(); + mes("[Commander Lebiordirr]"); + mes("Now, if you understand this, inform your friends."); + close(); } else if (ins_nyd == 81) { - mes "Why have you come back, outsider?"; - next; + mes("Why have you come back, outsider?"); + next(); select("To ask the Laphines about exploring..."); - mes "[Commander Lebiordirr]"; - mes "Exploring what? Choose your words wisely?"; - next; - mes "[Commander Lebiordirr]"; - mes "Do we not understand each other? What do you want?"; - next; + mes("[Commander Lebiordirr]"); + mes("Exploring what? Choose your words wisely?"); + next(); + mes("[Commander Lebiordirr]"); + mes("Do we not understand each other? What do you want?"); + next(); select("I must explore the cave."); - mes "[Commander Lebiordirr]"; - mes "That means... that you are ignoring my warning? Is this your decision or are you just following orders?"; - next; + mes("[Commander Lebiordirr]"); + mes("That means... that you are ignoring my warning? Is this your decision or are you just following orders?"); + next(); select("I'm just following orders"); - mes "[Commander Lebiordirr]"; - mes "Are you trying to insult me on purpose, outsider?"; - next; - mes "[Commander Lebiordirr]"; - mes "Why do you want to explore? It better be a very good reason."; - next; + mes("[Commander Lebiordirr]"); + mes("Are you trying to insult me on purpose, outsider?"); + next(); + mes("[Commander Lebiordirr]"); + mes("Why do you want to explore? It better be a very good reason."); + next(); select("It's about Dr. Magnifier's report..."); - mes "[Commander Lebiordirr]"; - mes "So... What do I care about an outsider's report?"; - next; - mes "[Commander Lebiordirr]"; - mes "To protect the Yggdrasil! That's the Laphine's fate. Can you say that about yourself?"; - next; - mes "[Commander Lebiordirr]"; - mes "Do you have any proof of your birth with Odin and Yggdrasil's blessings?"; - next; - mes "[Commander Lebiordirr]"; - mes "I shouldn't say anymore. Please don't take this as being rude but, please go now!"; - next; + mes("[Commander Lebiordirr]"); + mes("So... What do I care about an outsider's report?"); + next(); + mes("[Commander Lebiordirr]"); + mes("To protect the Yggdrasil! That's the Laphine's fate. Can you say that about yourself?"); + next(); + mes("[Commander Lebiordirr]"); + mes("Do you have any proof of your birth with Odin and Yggdrasil's blessings?"); + next(); + mes("[Commander Lebiordirr]"); + mes("I shouldn't say anymore. Please don't take this as being rude but, please go now!"); + next(); select("Then I'll ask the Sapha for help."); - mes "[Commander Lebiordirr]"; - mes "What are you talking about, outsider?"; - next; - mes "[Splendide Guard]"; - mes "Sir, I can get rid of this rude outsider if you wish?"; - next; - mes "[Commander Lebiordirr]"; - mes "No, wait... The Sapha tribesmen know the meaning of that place? Did you ask to associate with them?"; - next; - mes "[Commander Lebiordirr]"; - mes "Ah... How tricky... Are you testing us?"; - next; - mes "[Splendide Guard]"; - mes "Calm down, sir. I will throw this outsider into prison."; - next; - mes "[Commander Lebiordirr]"; - mes "No... No, wait. Ok, I will accept it. I can accept your admission into the Holy Sekos."; - next; - mes "[Commander Lebiordirr]"; - mes "Okay. If you are a servant of the Yggdrasil as you claim to be, I will allow you admission. But I am not responsible for your actions."; - next; - mes "[Commander Lebiordirr]"; - mes "And make sure that if you find anything out of the ordinary in there, that you share it with us!"; - next; + mes("[Commander Lebiordirr]"); + mes("What are you talking about, outsider?"); + next(); + mes("[Splendide Guard]"); + mes("Sir, I can get rid of this rude outsider if you wish?"); + next(); + mes("[Commander Lebiordirr]"); + mes("No, wait... The Sapha tribesmen know the meaning of that place? Did you ask to associate with them?"); + next(); + mes("[Commander Lebiordirr]"); + mes("Ah... How tricky... Are you testing us?"); + next(); + mes("[Splendide Guard]"); + mes("Calm down, sir. I will throw this outsider into prison."); + next(); + mes("[Commander Lebiordirr]"); + mes("No... No, wait. Ok, I will accept it. I can accept your admission into the Holy Sekos."); + next(); + mes("[Commander Lebiordirr]"); + mes("Okay. If you are a servant of the Yggdrasil as you claim to be, I will allow you admission. But I am not responsible for your actions."); + next(); + mes("[Commander Lebiordirr]"); + mes("And make sure that if you find anything out of the ordinary in there, that you share it with us!"); + next(); select("But of course!"); - mes "[Commander Lebiordirr]"; - mes "So... since I have agreed to allow your exploration... Arioss, help them, and take the results."; - next; - mes "[Aide Arioss]"; - mes "Sir... are you sure? This is an invasion of the Holy Sekos..."; - next; - mes "[Commander Lebiordirr]"; - mes "Invasion is a harsh word. I am allowing them entrance. Better them than a dirty giant. It might just save our lives..."; - next; - mes "[Commander Lebiordirr]"; - mes "Here, outsider. Arioss will explain the situation with the giants. Talk with him..."; + mes("[Commander Lebiordirr]"); + mes("So... since I have agreed to allow your exploration... Arioss, help them, and take the results."); + next(); + mes("[Aide Arioss]"); + mes("Sir... are you sure? This is an invasion of the Holy Sekos..."); + next(); + mes("[Commander Lebiordirr]"); + mes("Invasion is a harsh word. I am allowing them entrance. Better them than a dirty giant. It might just save our lives..."); + next(); + mes("[Commander Lebiordirr]"); + mes("Here, outsider. Arioss will explain the situation with the giants. Talk with him..."); ins_nyd = 91; - close; - } else if ((ins_nyd == 91) || (ins_nyd == 101) || (ins_nyd == 111) || (ins_nyd == 200) || (ins_nyd == 201) || (ins_nyd == 202)) { - mes "Outsider. Arioss here will explain the situation with the giants, talk with him..."; - close; - } else if ((ins_nyd == 72) || (ins_nyd == 82) || (ins_nyd == 92) || (ins_nyd == 102) || (ins_nyd == 112) || (ins_nyd == 122) || (ins_nyd == 132)) { - mes "Welcome to the Laphine camp in Splendide, outsider... I am Lebiordirr. I am in charge here."; - next; - mes "[Commander Lebiordirr]"; - mes "Be cautious of your actions. We already have lots of problems with the Sapha tribe as it is."; - next; - mes "[Commander Lebiordirr]"; - mes "If you are cautious with your actions, I won't place any harm on you. Fare well."; - close; + close(); + } else if (ins_nyd == 91 || ins_nyd == 101 || ins_nyd == 111 || ins_nyd == 200 || ins_nyd == 201 || ins_nyd == 202) { + mes("Outsider. Arioss here will explain the situation with the giants, talk with him..."); + close(); + } else if (ins_nyd == 72 || ins_nyd == 82 || ins_nyd == 92 || ins_nyd == 102 || ins_nyd == 112 || ins_nyd == 122 || ins_nyd == 132) { + mes("Welcome to the Laphine camp in Splendide, outsider... I am Lebiordirr. I am in charge here."); + next(); + mes("[Commander Lebiordirr]"); + mes("Be cautious of your actions. We already have lots of problems with the Sapha tribe as it is."); + next(); + mes("[Commander Lebiordirr]"); + mes("If you are cautious with your actions, I won't place any harm on you. Fare well."); + close(); } else if (ins_nyd == 203) { - mes "I was waiting for you. You came back safe, that's good news. Did you find anything?"; - next; + mes("I was waiting for you. You came back safe, that's good news. Did you find anything?"); + next(); select("Explain about the guardian Nidhoggur's leave."); - mes "[Commander Lebiordirr]"; - mes "What? The Guardian is not in his nest...?"; - next; - mes "[Commander Lebiordirr]"; - mes "And because of his disppearance, the Guardian's Shadow is currently destorying the roots of the World Tree...?"; - next; - mes "[Commander Lebiordirr]"; - mes "That's unbelievable. You must be insulting the Guardian's and our pride. I did not provide you with our help for that."; - next; - mes "[Aide Arioss]"; - mes "It's not like that, Commander, they speak the truth."; - next; - mes "[Commander Lebiordirr]"; - mes "What are you saying? Arioss, do not forget your place as the Guardian's priest."; - next; - mes "[Aide Arioss]"; - mes "Even though I have not seen it with my own eyes, this does explain why we lost communication with the great World Tree Yggdrasil."; - next; - mes "[Commander Lebiordirr]"; - mes "Do not speak of His Highness, the World Tree Yggdrasil's name so lightly."; - next; + mes("[Commander Lebiordirr]"); + mes("What? The Guardian is not in his nest...?"); + next(); + mes("[Commander Lebiordirr]"); + mes("And because of his disppearance, the Guardian's Shadow is currently destorying the roots of the World Tree...?"); + next(); + mes("[Commander Lebiordirr]"); + mes("That's unbelievable. You must be insulting the Guardian's and our pride. I did not provide you with our help for that."); + next(); + mes("[Aide Arioss]"); + mes("It's not like that, Commander, they speak the truth."); + next(); + mes("[Commander Lebiordirr]"); + mes("What are you saying? Arioss, do not forget your place as the Guardian's priest."); + next(); + mes("[Aide Arioss]"); + mes("Even though I have not seen it with my own eyes, this does explain why we lost communication with the great World Tree Yggdrasil."); + next(); + mes("[Commander Lebiordirr]"); + mes("Do not speak of His Highness, the World Tree Yggdrasil's name so lightly."); + next(); select("Pass along World Tree Yggdrasil's words."); - mes "[Commander Lebiordirr]"; - mes "His Highness, the World Tree Yggdrasil, said that?"; - next; - mes "[Commander Lebiordirr]"; - mes "The reason behind all of this... is not because of the Sapha tribe, but because of the sudden leave of the Guardian? And the Guaridan has given up on his identity?"; - next; - mes "[Commander Lebiordirr]"; - mes "This must be reported... reported to the High Priest of Alfheim... Unbelievable."; - next; - mes "[Aide Arioss]"; - mes "Commander... do we need to alert the rest of the tribe...?"; - next; - mes "[Commander Lebiordirr]"; - mes "You don't need to worry about this, Arioss. As commander, I will handle it. You just pretend nothing happened..."; - next; - mes "[Commander Lebiordirr]"; - mes "Strange one, thank you for your cooperation in such situations... Please forget what has happened today..."; - next; - mes "[Commander Lebiordirr]"; - mes "Arioss, please compensate this strange one for the help. I need to go rest..."; - next; - mes "[Aide Arioss]"; - mes "Commander..."; + mes("[Commander Lebiordirr]"); + mes("His Highness, the World Tree Yggdrasil, said that?"); + next(); + mes("[Commander Lebiordirr]"); + mes("The reason behind all of this... is not because of the Sapha tribe, but because of the sudden leave of the Guardian? And the Guaridan has given up on his identity?"); + next(); + mes("[Commander Lebiordirr]"); + mes("This must be reported... reported to the High Priest of Alfheim... Unbelievable."); + next(); + mes("[Aide Arioss]"); + mes("Commander... do we need to alert the rest of the tribe...?"); + next(); + mes("[Commander Lebiordirr]"); + mes("You don't need to worry about this, Arioss. As commander, I will handle it. You just pretend nothing happened..."); + next(); + mes("[Commander Lebiordirr]"); + mes("Strange one, thank you for your cooperation in such situations... Please forget what has happened today..."); + next(); + mes("[Commander Lebiordirr]"); + mes("Arioss, please compensate this strange one for the help. I need to go rest..."); + next(); + mes("[Aide Arioss]"); + mes("Commander..."); ins_nyd = 121; - close; - } else if ((ins_nyd == 121) || (ins_nyd == 131)) { - mes "Strange one, thank you for your cooperation in such situations... Please forget what has happened today..."; - close; + close(); + } else if (ins_nyd == 121 || ins_nyd == 131) { + mes("Strange one, thank you for your cooperation in such situations... Please forget what has happened today..."); + close(); } else { - mes "Welcome to the Laphine camp in Splendide, outsider... I am Lebiordirr. I am in charge here."; - next; - mes "[Commander Lebiordirr]"; - mes "Be cautious of your actions. We already have lots of problems with the Sapha tribe as it is."; - next; - mes "[Commander Lebiordirr]"; - mes "If you are cautious with your actions, I won't place any harm on you. Fare well."; - close; + mes("Welcome to the Laphine camp in Splendide, outsider... I am Lebiordirr. I am in charge here."); + next(); + mes("[Commander Lebiordirr]"); + mes("Be cautious of your actions. We already have lots of problems with the Sapha tribe as it is."); + next(); + mes("[Commander Lebiordirr]"); + mes("If you are cautious with your actions, I won't place any harm on you. Fare well."); + close(); } } else { - mes "ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee..."; - close; + mes("ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee..."); + close(); } } spl_in01,104,56,3 script Aide Arioss#edq 4_F_FAIRYKID2,3,3,{ - mes "[Aide Arioss]"; - if (isequipped(2782) == 1) { + mes("[Aide Arioss]"); + if (isequipped(Ring_Of_Wise_King) == 1) { if (ins_nyd == 91) { - mes "Sigh, since it's Commander Lebiordirr's wish, I will cooperate with you..."; - next; - mes "[Aide Arioss]"; - mes "You want to go there to find out exactly what that place is?"; - next; - mes "[Aide Arioss]"; - mes "Alright...it's as you have assumed, a place connecting to the World Tree. It's also the Guardian's Nest."; - next; + mes("Sigh, since it's Commander Lebiordirr's wish, I will cooperate with you..."); + next(); + mes("[Aide Arioss]"); + mes("You want to go there to find out exactly what that place is?"); + next(); + mes("[Aide Arioss]"); + mes("Alright...it's as you have assumed, a place connecting to the World Tree. It's also the Guardian's Nest."); + next(); select("Guardian's Nest?"); - mes "[Aide Arioss]"; - mes "Yes, that's the nest of Nidhoggur, the Guardian of the World Tree..."; - next; - mes "[Aide Arioss]"; - mes "Only a marked guardian's servant from the Laphine tribe is allowed to enter."; - next; - mes "[Aide Arioss]"; - mes "That place was initially closed off from the public, but then the giants of the Sapha tribe turned things around..."; - next; - mes "[Aide Arioss]"; - mes "To obtain more minerals, they started to dig with madness."; - next; - mes "[Aide Arioss]"; - mes "In the end, they have harmed a part of the World Tree's root that lies very close to their mine, and thus, the World Tree became very ill."; - next; - mes "[Aide Arioss]"; - mes "After we have arrived here knowing the facts, the World Tree was already in a very bad state due to the many factories built by the Sapha tribe."; - next; - mes "[Aide Arioss]"; - mes "Even though, for a long time, we have been attacking the Sapha tribe, trying to force them to leave, they are not so easily defeated, leading to this stalemate."; - next; - mes "[Aide Arioss]"; - mes "During this time, your people have travelled through the space-time gap to this land."; - next; - mes "[Aide Arioss]"; - mes "Because of those many unexpected reasons, the Guardian's nest, which was meant to stay hidden deep underground, has been discovered by your race..."; - next; - mes "[Aide Arioss]"; - mes "Now you understand how serious this situation is. Because of the Sapha tribe, we are no longer able to approach the Guardian, and seek his teachings of wisdom."; - next; - mes "[Aide Arioss]"; - mes "It's very insulting to our pride... but if you can help us enter that place again, and speak to the Guardian, maybe we can find a solution..."; - next; - mes "[Aide Arioss]"; - mes "Then we'll leave it to you. As for your request, I will do my best to cooperate."; - next; - mes "[Aide Arioss]"; - mes "I have already told you what you wanted to know... If you need anything else, just let me know."; + mes("[Aide Arioss]"); + mes("Yes, that's the nest of Nidhoggur, the Guardian of the World Tree..."); + next(); + mes("[Aide Arioss]"); + mes("Only a marked guardian's servant from the Laphine tribe is allowed to enter."); + next(); + mes("[Aide Arioss]"); + mes("That place was initially closed off from the public, but then the giants of the Sapha tribe turned things around..."); + next(); + mes("[Aide Arioss]"); + mes("To obtain more minerals, they started to dig with madness."); + next(); + mes("[Aide Arioss]"); + mes("In the end, they have harmed a part of the World Tree's root that lies very close to their mine, and thus, the World Tree became very ill."); + next(); + mes("[Aide Arioss]"); + mes("After we have arrived here knowing the facts, the World Tree was already in a very bad state due to the many factories built by the Sapha tribe."); + next(); + mes("[Aide Arioss]"); + mes("Even though, for a long time, we have been attacking the Sapha tribe, trying to force them to leave, they are not so easily defeated, leading to this stalemate."); + next(); + mes("[Aide Arioss]"); + mes("During this time, your people have travelled through the space-time gap to this land."); + next(); + mes("[Aide Arioss]"); + mes("Because of those many unexpected reasons, the Guardian's nest, which was meant to stay hidden deep underground, has been discovered by your race..."); + next(); + mes("[Aide Arioss]"); + mes("Now you understand how serious this situation is. Because of the Sapha tribe, we are no longer able to approach the Guardian, and seek his teachings of wisdom."); + next(); + mes("[Aide Arioss]"); + mes("It's very insulting to our pride... but if you can help us enter that place again, and speak to the Guardian, maybe we can find a solution..."); + next(); + mes("[Aide Arioss]"); + mes("Then we'll leave it to you. As for your request, I will do my best to cooperate."); + next(); + mes("[Aide Arioss]"); + mes("I have already told you what you wanted to know... If you need anything else, just let me know."); ins_nyd = 101; - close; + close(); } else if (ins_nyd == 101) { - mes "Ah, you said that there is a strange power blocking the entrance to the Guardian's nest, right?"; - next; - mes "[Aide Arioss]"; - mes "That's because only the ones chosen by the Guardian may enter."; - next; - mes "[Aide Arioss]"; - mes "We have been the Guardian's servants for generations, and have been protecting the World Tree ever since."; - next; - mes "[Aide Arioss]"; - mes "Before we were captured and brought here, there were 3 servants including me. Our task was to heal the World Tree."; - next; - mes "[Aide Arioss]"; - mes "One was killed in our last war with the Sapha tribe... and the other has been taken captive."; - next; - mes "[Aide Arioss]"; - mes "I will give you my proof. Don't worry, I'm just temporarily marking you as a guardian's servant."; + mes("Ah, you said that there is a strange power blocking the entrance to the Guardian's nest, right?"); + next(); + mes("[Aide Arioss]"); + mes("That's because only the ones chosen by the Guardian may enter."); + next(); + mes("[Aide Arioss]"); + mes("We have been the Guardian's servants for generations, and have been protecting the World Tree ever since."); + next(); + mes("[Aide Arioss]"); + mes("Before we were captured and brought here, there were 3 servants including me. Our task was to heal the World Tree."); + next(); + mes("[Aide Arioss]"); + mes("One was killed in our last war with the Sapha tribe... and the other has been taken captive."); + next(); + mes("[Aide Arioss]"); + mes("I will give you my proof. Don't worry, I'm just temporarily marking you as a guardian's servant."); specialeffect(EF_HOLYHIT, AREA, playerattached()); - next; - mes "[Aide Arioss]"; - mes "Also, remember this spell, it's needed to open the gate of the Guardian."; - next; - mes "[Aide Arioss]"; - mes "AnomarDu Ha OdesUdenVer Ie "; - next; - mes "[Aide Arioss]"; - mes "remuAlaAsh Mu ModtasAn Yu Dur"; - next; - mes "[Aide Arioss]"; - mes "TalsehrDur So CyaReMush Di DielAlaWos Ie RuffserIman Ie "; - next; - mes "[Aide Arioss]"; - mes "Go find the fairy guarding the gate, and say this spell."; - next; - mes "[Aide Arioss]"; - mes "The proof and the spell will confirm that you are one of the Guardian's servants."; - next; - mes "[Aide Arioss]"; - mes "Please meet the Guardian, and come back with an answer to everything. I believe in you."; + next(); + mes("[Aide Arioss]"); + mes("Also, remember this spell, it's needed to open the gate of the Guardian."); + next(); + mes("[Aide Arioss]"); + mes("AnomarDu Ha OdesUdenVer Ie "); + next(); + mes("[Aide Arioss]"); + mes("remuAlaAsh Mu ModtasAn Yu Dur"); + next(); + mes("[Aide Arioss]"); + mes("TalsehrDur So CyaReMush Di DielAlaWos Ie RuffserIman Ie "); + next(); + mes("[Aide Arioss]"); + mes("Go find the fairy guarding the gate, and say this spell."); + next(); + mes("[Aide Arioss]"); + mes("The proof and the spell will confirm that you are one of the Guardian's servants."); + next(); + mes("[Aide Arioss]"); + mes("Please meet the Guardian, and come back with an answer to everything. I believe in you."); ins_nyd = 111; - close; - } else if ((ins_nyd == 101) || (ins_nyd == 111) || (ins_nyd == 200) || (ins_nyd == 201) || (ins_nyd == 202)) { - mes "Please meet with the Guardian and take a wise answer from him. I will trust you."; - close; - } else if ((ins_nyd == 72) || (ins_nyd == 82) || (ins_nyd == 92) || (ins_nyd == 102) || (ins_nyd == 112)) { - mes "... ..."; - next; - mes "Not even caring about this a single bit? What a stupid woman..."; - close; + close(); + } else if (ins_nyd == 101 || ins_nyd == 111 || ins_nyd == 200 || ins_nyd == 201 || ins_nyd == 202) { + mes("Please meet with the Guardian and take a wise answer from him. I will trust you."); + close(); + } else if (ins_nyd == 72 || ins_nyd == 82 || ins_nyd == 92 || ins_nyd == 102 || ins_nyd == 112) { + mes("... ..."); + next(); + mes("Not even caring about this a single bit? What a stupid woman..."); + close(); } else if (ins_nyd == 121) { - mes "Things have actually become like this... as priests of the Guardian, it's our responsibility..."; - next; - mes "[Aide Arioss]"; - mes "I represent the entire Laphine tribe, and show you our gratitude. This must all be very hard for our commander..."; - next; - mes "[Aide Arioss]"; - mes "It can't compare with the effort you have put in for us... but please accept our token of friendship."; - getexp 1500000,350000; - getitem Splendide_Coin,10; + mes("Things have actually become like this... as priests of the Guardian, it's our responsibility..."); + next(); + mes("[Aide Arioss]"); + mes("I represent the entire Laphine tribe, and show you our gratitude. This must all be very hard for our commander..."); + next(); + mes("[Aide Arioss]"); + mes("It can't compare with the effort you have put in for us... but please accept our token of friendship."); + getexp(1500000, 350000); + getitem(Splendide_Coin, 10); ins_nyd = 131; - mes "[Aide Arioss]"; - mes "If we can help you with anything in the future, we will do all we can to assist you. Once again, thank you."; - close; + mes("[Aide Arioss]"); + mes("If we can help you with anything in the future, we will do all we can to assist you. Once again, thank you."); + close(); } else if (ins_nyd == 131) { - mes "If we can help you with anything in the future, we will do all we can to assist you. Once again, thank you."; - close; + mes("If we can help you with anything in the future, we will do all we can to assist you. Once again, thank you."); + close(); } else { - mes "... ..."; - next; - mes "Never give attention to... um... a blunt woman..."; - close; + mes("... ..."); + next(); + mes("Never give attention to... um... a blunt woman..."); + close(); } } else { - mes "AmanVilShar Ie DorLuShar Mu Re"; - close; + mes("AmanVilShar Ie DorLuShar Mu Re"); + close(); } } spl_in01,110,21,0 script trap#s_edq FAKE_NPC,10,10,{ OnTouch_: - if ((isequipped(2782) == 1) && (ins_nyd == 51)) { - mes "[Splendide Guard]"; - mes "That man is currently under arrest."; - next; - mes "[Splendide Guard]"; - mes "You'd better behave, Aide Arioss says that different races shall be treated the same way."; - warp "spl_in01",109,58; - close; + if (isequipped(Ring_Of_Wise_King) == 1 && ins_nyd == 51) { + mes("[Splendide Guard]"); + mes("That man is currently under arrest."); + next(); + mes("[Splendide Guard]"); + mes("You'd better behave, Aide Arioss says that different races shall be treated the same way."); + warp("spl_in01", 109, 58); + close(); } end; } spl_in01,101,52,5 script Splendide Guard#1_edq 4_M_FAIRYSOLDIER,1,1,{ - mes "[Splendide Guard]"; - if (isequipped(2782) == 1) mes "This is the Splendide office. Don't act impolitely."; - else mes "ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee "; - close; + mes("[Splendide Guard]"); + if (isequipped(Ring_Of_Wise_King) == 1) + mes("This is the Splendide office. Don't act impolitely."); + else + mes("ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee "); + close(); } spl_in01,118,52,3 script Splendide Guard#2_edq 4_M_FAIRYSOLDIER,1,1,{ - mes "[Splendide Guard]"; - if (isequipped(2782) == 1) mes "This is the Splendide office. Don't act impolitely."; - else mes "ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee "; - close; + mes("[Splendide Guard]"); + if (isequipped(Ring_Of_Wise_King) == 1) + mes("This is the Splendide office. Don't act impolitely."); + else + mes("ThusDurnah Ra SharVeldIyaz U UorAmanDur Yee neaOsaAdor Yee "); + close(); } man_in01,311,57,3 script Neat Etorr#edq 4_MAN_NITT,3,3,{ - mes "[Neat Etorr]"; - if (isequipped(2782) == 1) { + mes("[Neat Etorr]"); + if (isequipped(Ring_Of_Wise_King) == 1) { if (ins_nyd == 52) { - mes "Guest from the other world, please excuse our rudeness..."; - next; - mes "[Neat Etorr]"; - mes "As the leader of the Sapha tribe, I have something very important to tell you. That is why I asked for you..."; - next; - mes "[Neat Etorr]"; - mes "Your race has come to this land not long ago through the space-time gap."; - next; - mes "[Neat Etorr]"; - mes "You should have already seen what is going on. We have been at war with the Laphine tribe for a very long time."; - next; - mes "[Neat Etorr]"; - mes "Recently, because you do not understand the current situations, you have done some things that I, as a leader, can't ignore any longer."; - next; - mes "[Neat Etorr]"; - mes "I hope that your people will becareful of your actions on this land, and terminate any unnecessary interventions."; - next; - if(select("Leave quietly.", "Don't know what he's talking about, and ask for details.")==1) close; - mes "[Manuk Field Elite Soldier]"; - mes "Are we really just letting these people go after they have stirred up problems on our land?"; - next; - mes "[Neat Etorr]"; - mes "After what happened, I don't think they know what else they can do. Let me explain."; - next; - mes "[Neat Etorr]"; - mes "For now, we have acknowledged your race, and have been tolerant towards your activities."; - next; - mes "[Neat Etorr]"; - mes "But we have recently started to suspect you of being the Laphine tribe's eyes and ears."; - next; - mes "[Neat Etorr]"; - mes "Not long ago, We have heard that you have found remains in an abandoned cave in the north, and have been conducting investigations and researches regarding it."; - next; - mes "[Neat Etorr]"; - mes "We have captured a Laphine tribe priest during the last war, and we have heard that you have had contact with said captive."; - next; - mes "[Neat Etorr]"; - mes "That captive is the only reference for our tribe, so we have taken good care of her. She is related to your current investigation."; - next; - mes "[Neat Etorr]"; - mes "For your people, who have no direct connections, it is not a place satisfy your curiosity. I hope that you stop your investigations, and mind your own business."; - next; - mes "[Neat Etorr]"; - mes "If you don't accept our request, then do not expect any cooperations between our races in the future."; - next; - mes "[Neat Etorr]"; - mes "Because of the war against the Laphine tribe, everything is a mess. But even then, we cannot allow a foreign race to interfere."; - next; - mes "[Neat Etorr]"; - mes "You have heard it all, now please report back to your race."; + mes("Guest from the other world, please excuse our rudeness..."); + next(); + mes("[Neat Etorr]"); + mes("As the leader of the Sapha tribe, I have something very important to tell you. That is why I asked for you..."); + next(); + mes("[Neat Etorr]"); + mes("Your race has come to this land not long ago through the space-time gap."); + next(); + mes("[Neat Etorr]"); + mes("You should have already seen what is going on. We have been at war with the Laphine tribe for a very long time."); + next(); + mes("[Neat Etorr]"); + mes("Recently, because you do not understand the current situations, you have done some things that I, as a leader, can't ignore any longer."); + next(); + mes("[Neat Etorr]"); + mes("I hope that your people will becareful of your actions on this land, and terminate any unnecessary interventions."); + next(); + if (select("Leave quietly.", "Don't know what he's talking about, and ask for details.") == 1) + close(); + mes("[Manuk Field Elite Soldier]"); + mes("Are we really just letting these people go after they have stirred up problems on our land?"); + next(); + mes("[Neat Etorr]"); + mes("After what happened, I don't think they know what else they can do. Let me explain."); + next(); + mes("[Neat Etorr]"); + mes("For now, we have acknowledged your race, and have been tolerant towards your activities."); + next(); + mes("[Neat Etorr]"); + mes("But we have recently started to suspect you of being the Laphine tribe's eyes and ears."); + next(); + mes("[Neat Etorr]"); + mes("Not long ago, We have heard that you have found remains in an abandoned cave in the north, and have been conducting investigations and researches regarding it."); + next(); + mes("[Neat Etorr]"); + mes("We have captured a Laphine tribe priest during the last war, and we have heard that you have had contact with said captive."); + next(); + mes("[Neat Etorr]"); + mes("That captive is the only reference for our tribe, so we have taken good care of her. She is related to your current investigation."); + next(); + mes("[Neat Etorr]"); + mes("For your people, who have no direct connections, it is not a place satisfy your curiosity. I hope that you stop your investigations, and mind your own business."); + next(); + mes("[Neat Etorr]"); + mes("If you don't accept our request, then do not expect any cooperations between our races in the future."); + next(); + mes("[Neat Etorr]"); + mes("Because of the war against the Laphine tribe, everything is a mess. But even then, we cannot allow a foreign race to interfere."); + next(); + mes("[Neat Etorr]"); + mes("You have heard it all, now please report back to your race."); ins_nyd = 62; - close; + close(); } else if (ins_nyd == 62) { - mes "That captive is the only reference for our tribe, so we have taken good care of her. She is related to your current investigation."; - next; - mes "[Neat Etorr]"; - mes "For your people, who have no direct connections, it is not a place to satisfy your curiosity. I hope that you stop your investigations, and mind your own business."; - next; - mes "[Neat Etorr]"; - mes "If you don't accept our request, then do not expect any cooperations between our races in the future."; - close; + mes("That captive is the only reference for our tribe, so we have taken good care of her. She is related to your current investigation."); + next(); + mes("[Neat Etorr]"); + mes("For your people, who have no direct connections, it is not a place to satisfy your curiosity. I hope that you stop your investigations, and mind your own business."); + next(); + mes("[Neat Etorr]"); + mes("If you don't accept our request, then do not expect any cooperations between our races in the future."); + close(); } else if (ins_nyd == 72) { - mes "Recently, because you do not understand the current situations, you have done some things that I, as a leader, can't ignore any longer."; - next; - mes "[Neat Etorr]"; - mes "I hope that your people will becareful of your actions on this land, and terminate any unnecessary interventions."; - close; + mes("Recently, because you do not understand the current situations, you have done some things that I, as a leader, can't ignore any longer."); + next(); + mes("[Neat Etorr]"); + mes("I hope that your people will becareful of your actions on this land, and terminate any unnecessary interventions."); + close(); } else if (ins_nyd == 82) { - mes "Do you need me for something, strange one?"; - next; + mes("Do you need me for something, strange one?"); + next(); select("Received invitation from the Sapha tribe to cooperate and investigate."); - mes "[Neat Etorr]"; - mes "Cooperate and investigate? What do you mean?"; - next; - mes "[Neat Etorr]"; - mes "It seems like you did not understand what I said. What are you thinking?"; - next; + mes("[Neat Etorr]"); + mes("Cooperate and investigate? What do you mean?"); + next(); + mes("[Neat Etorr]"); + mes("It seems like you did not understand what I said. What are you thinking?"); + next(); select("Please allow me to investigate the cave."); - mes "[Neat Etorr]"; - mes "From what I can tell, you are disrespecting my request. Is this your intention, or your people's intention?"; - next; + mes("[Neat Etorr]"); + mes("From what I can tell, you are disrespecting my request. Is this your intention, or your people's intention?"); + next(); select("It's our intention."); - mes "[Neat Etorr]"; - mes "Ah, it is not an easy decision. You frighten me."; - next; - mes "[Neat Etorr]"; - mes "But may I ask why you want to do this?"; - next; + mes("[Neat Etorr]"); + mes("Ah, it is not an easy decision. You frighten me."); + next(); + mes("[Neat Etorr]"); + mes("But may I ask why you want to do this?"); + next(); select("Explain Professor Magnifier's theory."); - mes "[Neat Etorr]"; - mes "It's surprising that you are able to obtain such results. We also have a similar theory."; - next; - mes "[Neat Etorr]"; - mes "At least we also think that we must use the Laphine prisoner to get information."; - next; - mes "[Neat Etorr]"; - mes "This problem has been the root of our conflicts with the Laphine tribe. Of course, it may also be an opportunity to resolve them."; - next; - mes "[Neat Etorr]"; - mes "Therefore, it's more of a reason to depend on our own powers. There is no room for you to interfere. Please give up."; - next; + mes("[Neat Etorr]"); + mes("It's surprising that you are able to obtain such results. We also have a similar theory."); + next(); + mes("[Neat Etorr]"); + mes("At least we also think that we must use the Laphine prisoner to get information."); + next(); + mes("[Neat Etorr]"); + mes("This problem has been the root of our conflicts with the Laphine tribe. Of course, it may also be an opportunity to resolve them."); + next(); + mes("[Neat Etorr]"); + mes("Therefore, it's more of a reason to depend on our own powers. There is no room for you to interfere. Please give up."); + next(); select("Give up request, and ask Laphine tribe for help instead."); - mes "[Manuk Field Elite Soldier]"; - mes "You finally showed your true face. I knew you were a spy from the Laphine tribe!"; - next; - mes "[Neat Etorr]"; - mes "Ah...you'd go as far as saying that. What good will it do for you, helping the Laphine tribe?"; - next; - mes "[Neat Etorr]"; - mes "Those obnoxious dwarves offended our right of living, and are trying to get rid of us."; - next; - mes "[Neat Etorr]"; - mes "The reason we don't allow anyone to enter that site is because it's full of suspicions."; - next; - mes "[Neat Etorr]"; - mes "Alright, I'll approve of your request, and let you investigate the secret the Laphine tribe has hidden inside the cave."; - next; - mes "[Neat Etorr]"; - mes "If you promise to share all of your research results and findings, we will accept your request."; - next; + mes("[Manuk Field Elite Soldier]"); + mes("You finally showed your true face. I knew you were a spy from the Laphine tribe!"); + next(); + mes("[Neat Etorr]"); + mes("Ah...you'd go as far as saying that. What good will it do for you, helping the Laphine tribe?"); + next(); + mes("[Neat Etorr]"); + mes("Those obnoxious dwarves offended our right of living, and are trying to get rid of us."); + next(); + mes("[Neat Etorr]"); + mes("The reason we don't allow anyone to enter that site is because it's full of suspicions."); + next(); + mes("[Neat Etorr]"); + mes("Alright, I'll approve of your request, and let you investigate the secret the Laphine tribe has hidden inside the cave."); + next(); + mes("[Neat Etorr]"); + mes("If you promise to share all of your research results and findings, we will accept your request."); + next(); select("Of course."); - mes "[Neat Etorr]"; - mes "Alright, from now on, we will cooperate with you, and allow you to directly communicate with the Laphine prisoner."; - next; - mes "[Manuk Field Elite Soldier]"; - mes "Commander...are you sure of this? We don't even know if they're friend or foe..."; - next; - mes "[Neat Etorr]"; - mes "With just our powers, it's impossible to figure out what the Laphine is up to. I think the past has proven that."; - next; - mes "[Neat Etorr]"; - mes "What they're doing right now could potentially lead us to a solution."; - next; - mes "[Neat Etorr]"; - mes "Strange one, we hope our cooperation will be a good one. Now please go interrogate the Laphine prisoner."; + mes("[Neat Etorr]"); + mes("Alright, from now on, we will cooperate with you, and allow you to directly communicate with the Laphine prisoner."); + next(); + mes("[Manuk Field Elite Soldier]"); + mes("Commander...are you sure of this? We don't even know if they're friend or foe..."); + next(); + mes("[Neat Etorr]"); + mes("With just our powers, it's impossible to figure out what the Laphine is up to. I think the past has proven that."); + next(); + mes("[Neat Etorr]"); + mes("What they're doing right now could potentially lead us to a solution."); + next(); + mes("[Neat Etorr]"); + mes("Strange one, we hope our cooperation will be a good one. Now please go interrogate the Laphine prisoner."); ins_nyd = 92; - close; - } else if ((ins_nyd == 92) || (ins_nyd == 102) || (ins_nyd == 112) || (ins_nyd == 200) || (ins_nyd == 201) || (ins_nyd == 202)) { - mes "Strange one, we hope our cooperation will be a good one. Now please go interrogate the Laphine prisoner."; - close; - } else if ((ins_nyd == 71) || (ins_nyd == 81) || (ins_nyd == 91) || (ins_nyd == 101) || (ins_nyd == 111) || (ins_nyd == 121) || (ins_nyd == 131)) { - mes "Outsider. Welcome to Manuk, the village of the Sapha. I am its representative, Neat Etorr."; - next; - mes "[Neat Etorr]"; - mes "We are just a small village, nothing special... but rest comfortably."; - close; + close(); + } else if (ins_nyd == 92 || ins_nyd == 102 || ins_nyd == 112 || ins_nyd == 200 || ins_nyd == 201 || ins_nyd == 202) { + mes("Strange one, we hope our cooperation will be a good one. Now please go interrogate the Laphine prisoner."); + close(); + } else if (ins_nyd == 71 || ins_nyd == 81 || ins_nyd == 91 || ins_nyd == 101 || ins_nyd == 111 || ins_nyd == 121 || ins_nyd == 131) { + mes("Outsider. Welcome to Manuk, the village of the Sapha. I am its representative, Neat Etorr."); + next(); + mes("[Neat Etorr]"); + mes("We are just a small village, nothing special... but rest comfortably."); + close(); } else if (ins_nyd == 203) { - mes "I was waiting for you. It's good that you're safe. Did you find anything?"; - next; + mes("I was waiting for you. It's good that you're safe. Did you find anything?"); + next(); select("Explain the sudden leave of the Guardian."); - mes "[Neat Etorr]"; - mes "So... that's the nest of the Guardian of the World Tree, the sacred grounds for the Laphine tribe."; - next; - mes "[Neat Etorr]"; - mes "But because of the angry leave of the Guardian, his shadow is wreaking havoc on the World Tree?"; - next; - mes "[Neat Etorr]"; - mes "If what you're saying is true, then there is no more reason for us to continue fighting the Laphine tribe..."; - next; - mes "[Neat Etorr]"; - mes "What a huge discovery... So Nidhoggur is no longer the Guardian of the World Tree...?"; - next; - mes "[Neat Etorr]"; - mes "Nidhoggur's Shadow came to exist in this world, and harmed the roots of the World Tree... what a disaster."; - next; + mes("[Neat Etorr]"); + mes("So... that's the nest of the Guardian of the World Tree, the sacred grounds for the Laphine tribe."); + next(); + mes("[Neat Etorr]"); + mes("But because of the angry leave of the Guardian, his shadow is wreaking havoc on the World Tree?"); + next(); + mes("[Neat Etorr]"); + mes("If what you're saying is true, then there is no more reason for us to continue fighting the Laphine tribe..."); + next(); + mes("[Neat Etorr]"); + mes("What a huge discovery... So Nidhoggur is no longer the Guardian of the World Tree...?"); + next(); + mes("[Neat Etorr]"); + mes("Nidhoggur's Shadow came to exist in this world, and harmed the roots of the World Tree... what a disaster."); + next(); select("Pass along the World Tree Yggdrasil's message."); - mes "[Neat Etorr]"; - mes "Is that what the priest of the Guardian said?"; - next; - mes "[Neat Etorr]"; - mes "From now on, we need to talk about this with the Laphine tribe."; - next; - mes "[Neat Etorr]"; - mes "But of course...we don't know if they're reasonable enough...hehe."; - next; - mes "[Neat Etorr]"; - mes "This is all we needed from you...What is left is business between us and the Laphine tribe."; - next; - mes "[Neat Etorr]"; - mes "Thank you for helping us with such a huge problem. You may forget about it now."; - next; - mes "[Neat Etorr]"; - mes "It's not a lot, but please this as a token of our appreciation."; - getexp 1500000,350000; - getitem Manuk_Coin,10; + mes("[Neat Etorr]"); + mes("Is that what the priest of the Guardian said?"); + next(); + mes("[Neat Etorr]"); + mes("From now on, we need to talk about this with the Laphine tribe."); + next(); + mes("[Neat Etorr]"); + mes("But of course...we don't know if they're reasonable enough...hehe."); + next(); + mes("[Neat Etorr]"); + mes("This is all we needed from you...What is left is business between us and the Laphine tribe."); + next(); + mes("[Neat Etorr]"); + mes("Thank you for helping us with such a huge problem. You may forget about it now."); + next(); + mes("[Neat Etorr]"); + mes("It's not a lot, but please this as a token of our appreciation."); + getexp(1500000, 350000); + getitem(Manuk_Coin, 10); ins_nyd = 132; - close; + close(); } else if (ins_nyd == 132) { - mes "Strange one, thank you for helping us in the time of need. I will never forget your kindness."; - close; + mes("Strange one, thank you for helping us in the time of need. I will never forget your kindness."); + close(); } else { - mes "Outsider. Welcome to the Manuk village of Sapha. I am its representative, Neat Etorr."; - next; - mes "[Neat Etorr]"; - mes "We are just a small village, nothing special... but rest comfortably."; - close; + mes("Outsider. Welcome to the Manuk village of Sapha. I am its representative, Neat Etorr."); + next(); + mes("[Neat Etorr]"); + mes("We are just a small village, nothing special... but rest comfortably."); + close(); } } else { - mes "Tkeh likek Ohek QekhlHkl PkedlioH."; - close; + mes("Tkeh likek Ohek QekhlHkl PkedlioH."); + close(); } } man_in01,286,61,5 script Manuk Guard#1_edq 4_MAN_GALTUN,1,1,{ - mes "[Manuk Guard]"; - if (isequipped(2782) == 1) mes "I'm guarding this Laphine prisoner. Leave me alone."; - else mes "Klekod Oi Thekd Pheid Okei."; - close; + mes("[Manuk Guard]"); + if (isequipped(Ring_Of_Wise_King) == 1) + mes("I'm guarding this Laphine prisoner. Leave me alone."); + else + mes("Klekod Oi Thekd Pheid Okei."); + close(); } man_in01,295,61,3 script Manuk Guard#2_edq 4_MAN_GALTUN,1,1,{ - mes "[Manuk Guard]"; - if (isequipped(2782) == 1) mes "I'm guarding this Laphine prisoner. Leave me alone."; - else mes "Liek QUekdk Ohei Vue."; - close; + mes("[Manuk Guard]"); + if (isequipped(Ring_Of_Wise_King) == 1) + mes("I'm guarding this Laphine prisoner. Leave me alone."); + else + mes("Liek QUekdk Ohei Vue."); + close(); } man_in01,291,62,3 script Laphine Prisoner#edq 4_F_FAIRYKID2,3,3,{ - mes "[Laphine Prisoner]"; - if (isequipped(2782) == 1) { + mes("[Laphine Prisoner]"); + if (isequipped(Ring_Of_Wise_King) == 1) { if (ins_nyd == 5) { - mes "You... are not of the Sapha tribe... Are you... an outsider?"; - next; - mes "[Laphine Prisoner]"; - mes "Have you ever come in contact with the Laphine tribe? Have you ever been to Splendide?"; - next; - mes "[Laphine Prisoner]"; - mes "Please, talk to my people in Splendide. They will come to help me."; - next; - switch(select("What happened to you?", "What's in the cave to the north?", "Tell me about your tribe.", "I will leave you alone.")) { + mes("You... are not of the Sapha tribe... Are you... an outsider?"); + next(); + mes("[Laphine Prisoner]"); + mes("Have you ever come in contact with the Laphine tribe? Have you ever been to Splendide?"); + next(); + mes("[Laphine Prisoner]"); + mes("Please, talk to my people in Splendide. They will come to help me."); + next(); + switch (select("What happened to you?", "What's in the cave to the north?", "Tell me about your tribe.", "I will leave you alone.")) { case 1: - mes "[Laphine Prisoner]"; - mes "During out last battle with the Sapha tribe... they caught me and took me prisoner."; - next; - mes "[Laphine Prisoner]"; - mes "The Sapha tribe attacked first. They are destroying the World Tree."; - next; - mes "[Laphine Prisoner]"; - mes "That's why the war started. But I don't want to fight with the Sapha tribe anymore..."; - next; - mes "[Laphine Prisoner]"; - mes "If it wasn't for that... I wouldn't survive here..."; - next; - mes "[Laphine Prisoner]"; - mes "Please. Bring this news to all of Splendide. Send someone to save me... or they might kill me."; - close; + mes("[Laphine Prisoner]"); + mes("During out last battle with the Sapha tribe... they caught me and took me prisoner."); + next(); + mes("[Laphine Prisoner]"); + mes("The Sapha tribe attacked first. They are destroying the World Tree."); + next(); + mes("[Laphine Prisoner]"); + mes("That's why the war started. But I don't want to fight with the Sapha tribe anymore..."); + next(); + mes("[Laphine Prisoner]"); + mes("If it wasn't for that... I wouldn't survive here..."); + next(); + mes("[Laphine Prisoner]"); + mes("Please. Bring this news to all of Splendide. Send someone to save me... or they might kill me."); + close(); case 2: - mes "[Laphine Prisoner]"; - mes "There is..."; - next; - mes "[Laphine Prisoner]"; - mes "No... I can't tell you... It's the secret of our tribe..."; - next; - mes "[Laphine Prisoner]"; - mes "I just want to say this...if the Sapha tribe intrude that place, we will never forgive them!"; + mes("[Laphine Prisoner]"); + mes("There is..."); + next(); + mes("[Laphine Prisoner]"); + mes("No... I can't tell you... It's the secret of our tribe..."); + next(); + mes("[Laphine Prisoner]"); + mes("I just want to say this...if the Sapha tribe intrude that place, we will never forgive them!"); ins_nyd = 52; - close; + close(); case 3: - mes "[Laphine Prisoner]"; - mes "The Laphines have protected the Yggdrasil World Tree for generations."; - next; - mes "[Laphine Prisoner]"; - mes "We live in a... different time, different land... we came for an expedition."; - next; - mes "[Laphine Prisoner]"; - mes "After we received reports from our spy about the World Tree's strange symptoms, we recgnized the Manuk's existence."; - next; - mes "[Laphine Prisoner]"; - mes "They are mining metal, and in so doing, destroying the World Tree's roots..."; - next; - mes "[Laphine Prisoner]"; - mes "So we dispatched an expedition here. Soonafter, the war with the Sapha began..."; - close; + mes("[Laphine Prisoner]"); + mes("The Laphines have protected the Yggdrasil World Tree for generations."); + next(); + mes("[Laphine Prisoner]"); + mes("We live in a... different time, different land... we came for an expedition."); + next(); + mes("[Laphine Prisoner]"); + mes("After we received reports from our spy about the World Tree's strange symptoms, we recgnized the Manuk's existence."); + next(); + mes("[Laphine Prisoner]"); + mes("They are mining metal, and in so doing, destroying the World Tree's roots..."); + next(); + mes("[Laphine Prisoner]"); + mes("So we dispatched an expedition here. Soonafter, the war with the Sapha began..."); + close(); case 4: - close; + close(); } } else if (ins_nyd == 92) { - mes "The sapha tribe went as far as cooperating with an unknown race?"; - next; - mes "[Laphine Prisoner]"; - mes "What is your purpose? Why do you want to know what that place is?"; - next; - mes "[Laphine Prisoner]"; - mes "lright...it's as you have assumed, a place connecting to the World Tree. It's also the Guardian's Nest."; - next; + mes("The sapha tribe went as far as cooperating with an unknown race?"); + next(); + mes("[Laphine Prisoner]"); + mes("What is your purpose? Why do you want to know what that place is?"); + next(); + mes("[Laphine Prisoner]"); + mes("lright...it's as you have assumed, a place connecting to the World Tree. It's also the Guardian's Nest."); + next(); select("Guardian's Nest?"); - mes "[Laphine Prisoner]"; - mes "Yes, that's the nest of Nidhoggur, the Guardian of the World Tree..."; - next; - mes "[Laphine Prisoner]"; - mes "Only a marked guardian's servant from the Laphine tribe is allowed to enter."; - next; - mes "[Laphine Prisoner]"; - mes "That place was initially closed off from the public, but then the giants of the Sapha tribe turned things around..."; - next; - mes "[Laphine Prisoner]"; - mes "To obtain more minerals, they started to dig with madness."; - next; - mes "[Laphine Prisoner]"; - mes "In the end, they have harmed a part of the World Tree's root that lies very close to their mine, and thus, the World Tree became very ill."; - next; - mes "[Laphine Prisoner]"; - mes "After we have arrived here knowing the facts, the World Tree was already in a very bad state due to the many factories built by the Sapha tribe."; - next; - mes "[Laphine Prisoner]"; - mes "Even though, for a long time, we have been attacking the Sapha tribe, trying to force them to leave, they are not so easily defeated, leading to this stalemate."; - next; - mes "[Laphine Prisoner]"; - mes "During this time, your people have travelled through the space-time gap to this land."; - next; - mes "[Laphine Prisoner]"; - mes "Because of those many unexpected reasons, the Guardian's nest, which was meant to stay hidden deep underground, has been discovered by your race..."; - next; - mes "[Laphine Prisoner]"; - mes "Now you understand how serious this situation is. Because of the Sapha tribe, we are no longer able to approach the Guardian, and seek his teachings of wisdom."; - next; - mes "[Laphine Prisoner]"; - mes "Hmph...even if I don't cooperate, I know you will find other means to get in..."; - next; - mes "[Laphine Prisoner]"; - mes "Looking at the current situation of the Laphine tribe, we do not have enough power to surround the Manuk fields, and chase the giants away."; - next; - mes "[Laphine Prisoner]"; - mes "Okay, if it has already become like this, I will help you. There are no dead-ends. If you keep going, you will find a solution."; - next; - mes "[Laphine Prisoner]"; - mes "Even if I don't say anything, my situation will not change."; - next; - mes "[Laphine Prisoner]"; - mes "I have already told you everything you wanted to hear. If you have any other requests, please let me know."; + mes("[Laphine Prisoner]"); + mes("Yes, that's the nest of Nidhoggur, the Guardian of the World Tree..."); + next(); + mes("[Laphine Prisoner]"); + mes("Only a marked guardian's servant from the Laphine tribe is allowed to enter."); + next(); + mes("[Laphine Prisoner]"); + mes("That place was initially closed off from the public, but then the giants of the Sapha tribe turned things around..."); + next(); + mes("[Laphine Prisoner]"); + mes("To obtain more minerals, they started to dig with madness."); + next(); + mes("[Laphine Prisoner]"); + mes("In the end, they have harmed a part of the World Tree's root that lies very close to their mine, and thus, the World Tree became very ill."); + next(); + mes("[Laphine Prisoner]"); + mes("After we have arrived here knowing the facts, the World Tree was already in a very bad state due to the many factories built by the Sapha tribe."); + next(); + mes("[Laphine Prisoner]"); + mes("Even though, for a long time, we have been attacking the Sapha tribe, trying to force them to leave, they are not so easily defeated, leading to this stalemate."); + next(); + mes("[Laphine Prisoner]"); + mes("During this time, your people have travelled through the space-time gap to this land."); + next(); + mes("[Laphine Prisoner]"); + mes("Because of those many unexpected reasons, the Guardian's nest, which was meant to stay hidden deep underground, has been discovered by your race..."); + next(); + mes("[Laphine Prisoner]"); + mes("Now you understand how serious this situation is. Because of the Sapha tribe, we are no longer able to approach the Guardian, and seek his teachings of wisdom."); + next(); + mes("[Laphine Prisoner]"); + mes("Hmph...even if I don't cooperate, I know you will find other means to get in..."); + next(); + mes("[Laphine Prisoner]"); + mes("Looking at the current situation of the Laphine tribe, we do not have enough power to surround the Manuk fields, and chase the giants away."); + next(); + mes("[Laphine Prisoner]"); + mes("Okay, if it has already become like this, I will help you. There are no dead-ends. If you keep going, you will find a solution."); + next(); + mes("[Laphine Prisoner]"); + mes("Even if I don't say anything, my situation will not change."); + next(); + mes("[Laphine Prisoner]"); + mes("I have already told you everything you wanted to hear. If you have any other requests, please let me know."); ins_nyd = 102; - close; + close(); } else if (ins_nyd == 102) { - mes "Ah, you said that there is a strange power blocking the entrance to the Guardian's nest, right?"; - next; - mes "[Laphine Prisoner]"; - mes "That's because only the ones chosen by the Guardian may enter."; - next; - mes "[Laphine Prisoner]"; - mes "We have been the Guardian's servants for generations, and have been protecting the World Tree ever since."; - next; - mes "[Laphine Prisoner]"; - mes "Before we were captured and brought here, there were 3 servants including me. Our task was to heal the World Tree."; - next; - mes "[Laphine Prisoner]"; - mes "One was killed in our last war with the Sapha tribe...and I have been taken captive."; - next; - mes "[Laphine Prisoner]"; - mes "I will give you my proof. Don't worry, I'm just temporarily marking you as a guardian's servant."; + mes("Ah, you said that there is a strange power blocking the entrance to the Guardian's nest, right?"); + next(); + mes("[Laphine Prisoner]"); + mes("That's because only the ones chosen by the Guardian may enter."); + next(); + mes("[Laphine Prisoner]"); + mes("We have been the Guardian's servants for generations, and have been protecting the World Tree ever since."); + next(); + mes("[Laphine Prisoner]"); + mes("Before we were captured and brought here, there were 3 servants including me. Our task was to heal the World Tree."); + next(); + mes("[Laphine Prisoner]"); + mes("One was killed in our last war with the Sapha tribe...and I have been taken captive."); + next(); + mes("[Laphine Prisoner]"); + mes("I will give you my proof. Don't worry, I'm just temporarily marking you as a guardian's servant."); specialeffect(EF_HOLYHIT, AREA, playerattached()); - next; - mes "[Laphine Prisoner]"; - mes "Also, remember this spell, it's needed to open the gate of the Guardian."; - next; - mes "[Laphine Prisoner]"; - mes "AnomarDu Ha OdesUdenVer Ie "; - next; - mes "[Laphine Prisoner]"; - mes "remuAlaAsh Mu ModtasAn Yu Dur"; - next; - mes "[Laphine Prisoner]"; - mes "TalsehrDur So CyaReMush Di DielAlaWos Ie RuffserIman Ie "; - next; - mes "[Laphine Prisoner]"; - mes "Go find the fairy guarding the gate, and say this spell."; - next; - mes "[Laphine Prisoner]"; - mes "he proof and the spell will confirm that you are one of the Guardian's servants."; - next; - mes "[Laphine Prisoner]"; - mes "Please meet the Guardian, and come back with an answer to everything. And tell the answer to..."; + next(); + mes("[Laphine Prisoner]"); + mes("Also, remember this spell, it's needed to open the gate of the Guardian."); + next(); + mes("[Laphine Prisoner]"); + mes("AnomarDu Ha OdesUdenVer Ie "); + next(); + mes("[Laphine Prisoner]"); + mes("remuAlaAsh Mu ModtasAn Yu Dur"); + next(); + mes("[Laphine Prisoner]"); + mes("TalsehrDur So CyaReMush Di DielAlaWos Ie RuffserIman Ie "); + next(); + mes("[Laphine Prisoner]"); + mes("Go find the fairy guarding the gate, and say this spell."); + next(); + mes("[Laphine Prisoner]"); + mes("he proof and the spell will confirm that you are one of the Guardian's servants."); + next(); + mes("[Laphine Prisoner]"); + mes("Please meet the Guardian, and come back with an answer to everything. And tell the answer to..."); ins_nyd = 112; - close; - } else if ((ins_nyd == 71) || (ins_nyd == 81) || (ins_nyd == 91) || (ins_nyd == 101) || (ins_nyd == 111) || (ins_nyd == 121) || (ins_nyd == 131)) { - mes "... ..."; - next; - mes "[Manuk Guard]"; - mes "Hey, outsider! Step away from the prisoner!"; - close; + close(); + } else if (ins_nyd == 71 || ins_nyd == 81 || ins_nyd == 91 || ins_nyd == 101 || ins_nyd == 111 || ins_nyd == 121 || ins_nyd == 131) { + mes("... ..."); + next(); + mes("[Manuk Guard]"); + mes("Hey, outsider! Step away from the prisoner!"); + close(); } else if (ins_nyd == 112) { - mes "Please meet the Guardian, and come back with an answer to everything. And tell the answer to..."; - close; + mes("Please meet the Guardian, and come back with an answer to everything. And tell the answer to..."); + close(); } else if (ins_nyd == 132) { - mes "Yes...I heard your conversation with the Sapha tribe..."; - next; - mes "[Laphine Prisoner]"; - mes "If our tribe were to really trust in the Sapha tribe...I don't know."; - next; - mes "[Laphine Prisoner]"; - mes "Our hatred towards them has already reached an abnormal level..."; - next; - mes "[Laphine Prisoner]"; - mes "Those giants...can they really be trusted?"; - next; - mes "[Laphine Prisoner]"; - mes "It's...it's better if you don't believe the one called Etorr...the minds of the Sapha tribe is unpredictable."; - close; + mes("Yes...I heard your conversation with the Sapha tribe..."); + next(); + mes("[Laphine Prisoner]"); + mes("If our tribe were to really trust in the Sapha tribe...I don't know."); + next(); + mes("[Laphine Prisoner]"); + mes("Our hatred towards them has already reached an abnormal level..."); + next(); + mes("[Laphine Prisoner]"); + mes("Those giants...can they really be trusted?"); + next(); + mes("[Laphine Prisoner]"); + mes("It's...it's better if you don't believe the one called Etorr...the minds of the Sapha tribe is unpredictable."); + close(); } else { - mes "... ..."; - next; - mes "[Manuk Guard]"; - mes "Hey, outsider! Step away from the prisoner!"; - close; + mes("... ..."); + next(); + mes("[Manuk Guard]"); + mes("Hey, outsider! Step away from the prisoner!"); + close(); } } else { - mes "AmanVilShar Ie DorLuShar Mu Re"; - close; + mes("AmanVilShar Ie DorLuShar Mu Re"); + close(); } } man_in01,282,42,0 script trap#edq2 FAKE_NPC,10,10,{ OnTouch_: - if ((isequipped(2782) == 1) && (ins_nyd == 52)) { - mes "[Manuk Field Elite Soldier]"; - mes "This is Neat Etorr's order. Please come with us to see him."; - next; - mes "[Manuk Field Elite Soldier]"; - mes "Bring him to Neat Etorr. All soldiers be prepared."; - warp "man_in01",311,54; - close; + if (isequipped(Ring_Of_Wise_King) == 1 && ins_nyd == 52) { + mes("[Manuk Field Elite Soldier]"); + mes("This is Neat Etorr's order. Please come with us to see him."); + next(); + mes("[Manuk Field Elite Soldier]"); + mes("Bring him to Neat Etorr. All soldiers be prepared."); + warp("man_in01", 311, 54); + close(); } end; } @@ -1533,149 +1544,150 @@ OnTouch_: //== First floor =========================================== 1@nyd,213,277,5 script Murdered Yggdrasilid#1F 4_F_FAIRYKID2,5,5,{ if ('ins_nyd2 == 0) { - mes "When a faint light enters your heart, a voice sounds in your head."; - next; - mes "[World Tree World Tree Yggdrasil]"; - mes "It's all over... servants of the Guardian... Hurry up and leave this place."; - next; - while(1) { - switch(select("Who are you?", "What do you mean?")) { + mes("When a faint light enters your heart, a voice sounds in your head."); + next(); + mes("[World Tree World Tree Yggdrasil]"); + mes("It's all over... servants of the Guardian... Hurry up and leave this place."); + next(); + while (true) { + switch (select("Who are you?", "What do you mean?")) { case 1: - mes "[World Tree World Tree Yggdrasil]"; - mes "I... I am the World Tree Yggdrasil, servant of the Guardian of Nidhoggur, as well as the High Priest leading the Laphine Tribe."; - next; - mes "[World Tree World Tree Yggdrasil]"; - mes "So you're not priestess of the Laphine Tribe... How did you get in? No, there's no time to answer that."; - next; - mes "[World Tree World Tree Yggdrasil]"; - mes "Hurry... and leave... leave this place before it's too late."; - next; + mes("[World Tree World Tree Yggdrasil]"); + mes("I... I am the World Tree Yggdrasil, servant of the Guardian of Nidhoggur, as well as the High Priest leading the Laphine Tribe."); + next(); + mes("[World Tree World Tree Yggdrasil]"); + mes("So you're not priestess of the Laphine Tribe... How did you get in? No, there's no time to answer that."); + next(); + mes("[World Tree World Tree Yggdrasil]"); + mes("Hurry... and leave... leave this place before it's too late."); + next(); break; case 2: - mes "[World Tree World Tree Yggdrasil]"; - mes "The guardian... something's wrong with the guardian. I don't know what made him like this."; - next; - mes "[World Tree World Tree Yggdrasil]"; - mes "This... this is no longer the nest of the Guardian of the World Tree Yggdrasil."; - next; - mes "[World Tree Yggdrasil]"; - mes "Darkness took over the Guardian and destroyed all living things... now this place has become the cursed home of monsters."; - next; - mes "[World Tree Yggdrasil]"; - mes "Now the vile Nidhoggur's Shadow is wreaking havoc here..."; - next; - mes "[World Tree Yggdrasil]"; - mes "Now's not too late, hurry and get out... tell the Laphine Tribe about this... tell the commanders of Alfheim..."; - next; - mes "[World Tree Yggdrasil]"; - mes "My soul... it has been trapped here. You're the only ones I can trust now."; - next; + mes("[World Tree World Tree Yggdrasil]"); + mes("The guardian... something's wrong with the guardian. I don't know what made him like this."); + next(); + mes("[World Tree World Tree Yggdrasil]"); + mes("This... this is no longer the nest of the Guardian of the World Tree Yggdrasil."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Darkness took over the Guardian and destroyed all living things... now this place has become the cursed home of monsters."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Now the vile Nidhoggur's Shadow is wreaking havoc here..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Now's not too late, hurry and get out... tell the Laphine Tribe about this... tell the commanders of Alfheim..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("My soul... it has been trapped here. You're the only ones I can trust now."); + next(); .@exit = 1; } - if (.@exit) break; + if (.@exit) + break; } select("Nidhoggur's Shadow?"); - mes "[World Tree Yggdrasil]"; - mes "The Guardian Nidhoggur... he's not in the nest."; - next; - mes "[World Tree Yggdrasil]"; - mes "He...for some reason abandoned his own shadow, and left."; - next; - mes "[World Tree Yggdrasil]"; - mes "All that's left, is the ugly Shadow of the Guardian of Nidhoggur...the Shadow that is going mad."; - next; - mes "[World Tree Yggdrasil]"; - mes "The Shadow sucked all the nutrients from the World Tree Yggdrasil, and has gone mad when there is nothing more left to obtain. Now, he wants this land."; - next; - mes "[World Tree Yggdrasil]"; - mes "Once the ugly Shadow leaves here to steal power from the other World Yggdrasil Trees, there will be great destruction. This world will become hell."; - next; - mes "[World Tree Yggdrasil]"; - mes "You must... tell the commanders of Alfheim about this, and come up with a plan. Only them..."; - next; + mes("[World Tree Yggdrasil]"); + mes("The Guardian Nidhoggur... he's not in the nest."); + next(); + mes("[World Tree Yggdrasil]"); + mes("He...for some reason abandoned his own shadow, and left."); + next(); + mes("[World Tree Yggdrasil]"); + mes("All that's left, is the ugly Shadow of the Guardian of Nidhoggur...the Shadow that is going mad."); + next(); + mes("[World Tree Yggdrasil]"); + mes("The Shadow sucked all the nutrients from the World Tree Yggdrasil, and has gone mad when there is nothing more left to obtain. Now, he wants this land."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Once the ugly Shadow leaves here to steal power from the other World Yggdrasil Trees, there will be great destruction. This world will become hell."); + next(); + mes("[World Tree Yggdrasil]"); + mes("You must... tell the commanders of Alfheim about this, and come up with a plan. Only them..."); + next(); select("Is there nothing else we can do?"); - mes "[World Tree Yggdrasil]"; - mes "With our current powers...it is impossible to defeat the Guardian."; - next; - mes "[World Tree Yggdrasil]"; - mes "But the one going mad is not the Guardian, but his dark Shadow...maybe we can trap him here..."; - next; - mes "[World Tree Yggdrasil]"; - mes "Are you willing to accept this mission? Even if it means to pay with your life?"; - next; - if(select("Leave it to us.", "We can't do it.") == 2) - close; - mes "[World Tree Yggdrasil]"; - mes "I thank you deeply for your decision. I will use what is left of my powers to open up the path towards the Guardian's Nest."; - next; - mes "[World Tree Yggdrasil]"; - if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY),2)) { - mes "The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms of the Sanctuary will start immediately."; - next; - mes "[World Tree Yggdrasil]"; - mes "Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."; - next; - mes "[World Tree Yggdrasil]"; - mes "The gate will open soon. Go defeat all of the guardians... you must kill them all in 30 minutes before the gate opens..."; - next; - mes "[World Tree Yggdrasil]"; - mes "30 minutes... that's the limit of my powers. Please hurry."; - next; - mes "[World Tree Yggdrasil]"; - mes "And... Be careful... Be careful of the shadow's power."; + mes("[World Tree Yggdrasil]"); + mes("With our current powers...it is impossible to defeat the Guardian."); + next(); + mes("[World Tree Yggdrasil]"); + mes("But the one going mad is not the Guardian, but his dark Shadow...maybe we can trap him here..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Are you willing to accept this mission? Even if it means to pay with your life?"); + next(); + if (select("Leave it to us.", "We can't do it.") == 2) + close(); + mes("[World Tree Yggdrasil]"); + mes("I thank you deeply for your decision. I will use what is left of my powers to open up the path towards the Guardian's Nest."); + next(); + mes("[World Tree Yggdrasil]"); + if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY), 2)) { + mes("The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms of the Sanctuary will start immediately."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."); + next(); + mes("[World Tree Yggdrasil]"); + mes("The gate will open soon. Go defeat all of the guardians... you must kill them all in 30 minutes before the gate opens..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("30 minutes... that's the limit of my powers. Please hurry."); + next(); + mes("[World Tree Yggdrasil]"); + mes("And... Be careful... Be careful of the shadow's power."); 'ins_nyd2 = 1; - donpcevent instance_npcname("ins_nyd_1f_timer")+"::OnEnable"; - donpcevent instance_npcname("nyd_call_mon_1")+"::OnEnable"; - close; + donpcevent(instance_npcname("ins_nyd_1f_timer")+"::OnEnable"); + donpcevent(instance_npcname("nyd_call_mon_1")+"::OnEnable"); + close(); } else { - mes "The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms will start immediately."; - next; - mes "[World Tree Yggdrasil]"; - mes "Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."; - next; - mes "[World Tree Yggdrasil]"; - mes "The gate will open soon. Go defeat all of the guardians... you must kill them all in 30 minutes before the gate opens..."; - next; - mes "[World Tree Yggdrasil]"; - mes "30 minutes... that's the limit of my powers. Please hurry."; - next; - mes "[World Tree Yggdrasil]"; - mes "And... Be careful... Be careful of the shadow's power."; - close; + mes("The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms will start immediately."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."); + next(); + mes("[World Tree Yggdrasil]"); + mes("The gate will open soon. Go defeat all of the guardians... you must kill them all in 30 minutes before the gate opens..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("30 minutes... that's the limit of my powers. Please hurry."); + next(); + mes("[World Tree Yggdrasil]"); + mes("And... Be careful... Be careful of the shadow's power."); + close(); } } else if ('ins_nyd2 == 1) { - mes "[World Tree Yggdrasil]"; - mes "The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms will start immediately."; - next; - mes "[World Tree Yggdrasil]"; - mes "Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."; - next; - mes "[World Tree Yggdrasil]"; - mes "The gate will open soon. Go defeat all of the guardians."; - close; + mes("[World Tree Yggdrasil]"); + mes("The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North. The defensive mechanisms will start immediately."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Defeat all of Nidhoggur's guardians and go through the waterfall into the nest... and stop Nidhoggur's Shadow there."); + next(); + mes("[World Tree Yggdrasil]"); + mes("The gate will open soon. Go defeat all of the guardians."); + close(); } else if ('ins_nyd2 == 2) { - mes "[World Tree Yggdrasil]"; - mes "The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North."; - next; - mes "[World Tree Yggdrasil]"; - mes "Use your powers... and destroy the vile Shadow..."; - next; - mes "[World Tree Yggdrasil]"; - mes "This is... all I can do for you..."; - close; + mes("[World Tree Yggdrasil]"); + mes("The path to the Guardian's Nest is just past the waterfall by the large World Tree Yggdrasil to the North."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Use your powers... and destroy the vile Shadow..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("This is... all I can do for you..."); + close(); } else { - mes "[World Tree Yggdrasil]"; - mes "Those who want to taint the sacred Sanctuary of the Guardian... Get out."; - warp "mid_camp",100,100; + mes("[World Tree Yggdrasil]"); + mes("Those who want to taint the sacred Sanctuary of the Guardian... Get out."); + warp("mid_camp", 100, 100); } end; OnTouch: if ('ins_nyd2 == 0) { - mes "What's a woman from the Laphine Tribe doing here..."; - next; - mes "What's happening? Let's go check it out."; - close; + mes("What's a woman from the Laphine Tribe doing here..."); + next(); + mes("What's happening? Let's go check it out."); + close(); } end; @@ -1686,38 +1698,38 @@ OnInstanceInit: // Temporary fix for @reloadscript. 1@nyd,1,1,0 script nyd_call_mon_1 FAKE_NPC,{ OnInstanceInit: - enablenpc instance_npcname("nyd_call_mon_1"); + enablenpc(instance_npcname("nyd_call_mon_1")); end; OnEnable: .@map$ = instance_mapname("1@nyd"); - monster .@map$,220,250,"Nidhoggur's Guardian#1",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,220,252,"Nidhoggur's Guardian#2",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,240,270,"Nidhoggur's Guardian#3",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,240,272,"Nidhoggur's Guardian#4",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,200,200,"Nidhoggur's Guardian#5",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,210,210,"Nidhoggur's Guardian#6",2020,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,225,265,"Nidhoggur's Guardian#7",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,225,270,"Nidhoggur's Guardian#8",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,245,235,"Nidhoggur's Guardian#9",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,255,255,"Nidhoggur's Guardian#10",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,225,245,"Nidhoggur's Guardian#11",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - monster .@map$,230,280,"Nidhoggur's Guardian#12",2021,1,instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - mapannounce .@map$, "Nidhoggur's Guardian : Protect the Guardian's Sanctuary. Get rid of the intruders.",bc_map,"0x00ff99"; + monster(.@map$, 220, 250, _("Nidhoggur's Guardian#1"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 220, 252, _("Nidhoggur's Guardian#2"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 240, 270, _("Nidhoggur's Guardian#3"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 240, 272, _("Nidhoggur's Guardian#4"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 200, 200, _("Nidhoggur's Guardian#5"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 210, 210, _("Nidhoggur's Guardian#6"), RHYNCHO, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 225, 265, _("Nidhoggur's Guardian#7"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 225, 270, _("Nidhoggur's Guardian#8"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 245, 235, _("Nidhoggur's Guardian#9"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 255, 255, _("Nidhoggur's Guardian#10"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 225, 245, _("Nidhoggur's Guardian#11"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + monster(.@map$, 230, 280, _("Nidhoggur's Guardian#12"), PHYLLA, 1, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + mapannounce(.@map$, _("Nidhoggur's Guardian : Protect the Guardian's Sanctuary. Get rid of the intruders."), bc_map, C_SPRINGGREEN); end; OnDisable: - killmonster instance_mapname("1@nyd"),instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"; - disablenpc instance_npcname("nyd_call_mon_1"); + killmonster(instance_mapname("1@nyd"), instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); + disablenpc(instance_npcname("nyd_call_mon_1")); end; OnMyMobDead: .@map$ = instance_mapname("1@nyd"); .@mob_dead_num = mobcount(.@map$, instance_npcname("nyd_call_mon_1")+"::OnMyMobDead"); if (.@mob_dead_num < 1) { - mapannounce .@map$, "All of Nidhoggur's Guardians have been defeated!",bc_map,"0x00ff99"; - donpcevent instance_npcname("ins_nyd_1f_timer")+"::OnDisable"; - donpcevent instance_npcname("nyd_to2f_warp")+"::OnEnable"; + mapannounce(.@map$, _("All of Nidhoggur's Guardians have been defeated!"), bc_map, C_SPRINGGREEN); + donpcevent(instance_npcname("ins_nyd_1f_timer")+"::OnDisable"); + donpcevent(instance_npcname("nyd_to2f_warp")+"::OnEnable"); 'ins_nyd2 = 2; } end; @@ -1725,145 +1737,145 @@ OnMyMobDead: 1@nyd,1,2,0 script ins_nyd_1f_timer FAKE_NPC,{ OnInstanceInit: - disablenpc instance_npcname("ins_nyd_1f_timer"); + disablenpc(instance_npcname("ins_nyd_1f_timer")); end; OnEnable: - enablenpc instance_npcname("ins_nyd_1f_timer"); - initnpctimer; + enablenpc(instance_npcname("ins_nyd_1f_timer")); + initnpctimer(); end; OnDisable: - disablenpc instance_npcname("ins_nyd_1f_timer"); - stopnpctimer; - killmonsterall instance_mapname("1@nyd"); + disablenpc(instance_npcname("ins_nyd_1f_timer")); + stopnpctimer(); + killmonsterall(instance_mapname("1@nyd")); end; OnTimer900000: - mapannounce instance_mapname("1@nyd"), "World Tree Yggdrasil : There's not much time left. Please hurry.",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("1@nyd"), _("World Tree Yggdrasil : There's not much time left. Please hurry."), bc_map, C_YELLOW); end; OnTimer1200000: - mapannounce instance_mapname("1@nyd"), "World Tree Yggdrasil : My powers are slowly disappearing. Please hurry.",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("1@nyd"), _("World Tree Yggdrasil : My powers are slowly disappearing. Please hurry."), bc_map, C_YELLOW); end; OnTimer1500000: - mapannounce instance_mapname("1@nyd"), "World Tree Yggdrasil : I'm... almost at my limit... please hurry up.",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("1@nyd"), _("World Tree Yggdrasil : I'm... almost at my limit... please hurry up."), bc_map, C_YELLOW); end; OnTimer1800000: - mapannounce instance_mapname("1@nyd"), "World Tree Yggdrasil : You've failed... but I will use what power I have left... to send you out of here.",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("1@nyd"), _("World Tree Yggdrasil : You've failed... but I will use what power I have left... to send you out of here."), bc_map, C_YELLOW); end; OnTimer1830000: - mapannounce instance_mapname("1@nyd"), "Opening of the Gate has failed.",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("1@nyd"), _("Opening of the Gate has failed."), bc_map, C_YELLOW); end; OnTimer1850000: - donpcevent instance_npcname("ins_nyd_1f_timer")+"::OnDisable"; - donpcevent instance_npcname("nyd_call_mon_1")+"::OnDisable"; - instance_warpall "mid_camp",310,150; - stopnpctimer; + donpcevent(instance_npcname("ins_nyd_1f_timer")+"::OnDisable"); + donpcevent(instance_npcname("nyd_call_mon_1")+"::OnDisable"); + instance_warpall("mid_camp", 310, 150); + stopnpctimer(); end; } 1@nyd,195,320,0 script nyd_to2f_warp WARPNPC,5,5,{ OnInstanceInit: OnDisable: - disablenpc instance_npcname("nyd_to2f_warp"); + disablenpc(instance_npcname("nyd_to2f_warp")); end; OnEnable: - enablenpc instance_npcname("nyd_to2f_warp"); + enablenpc(instance_npcname("nyd_to2f_warp")); end; OnTouch: 'ins_nyd2 = 3; - warp instance_mapname("2@nyd"),200,10; + warp(instance_mapname("2@nyd"), 200, 10); end; } 1@nyd,1,1,0 script ins_nyd1_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("1@nyd"); - monster .@map$,0,0,"Ancient Tree",2019,40,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyTreeDead"; - monster .@map$,0,0,"Rhyncho",2020,30,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyRhynDead"; - monster .@map$,0,0,"Phylla",2021,30,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPhyDead"; - monster .@map$,0,0,"Aqua Elemental",2016,30,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyAquaDead"; - monster .@map$,0,0,"Dark Pinguicula",2015,30,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPingDead"; + monster(.@map$, 0, 0, _("Ancient Tree"), ANCIENT_TREE, 40, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyTreeDead"); + monster(.@map$, 0, 0, _("Rhyncho"), RHYNCHO, 30, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyRhynDead"); + monster(.@map$, 0, 0, _("Phylla"), PHYLLA, 30, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPhyDead"); + monster(.@map$, 0, 0, _("Aqua Elemental"), AQUA_ELEMENTAL, 30, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyAquaDead"); + monster(.@map$, 0, 0, _("Dark Pinguicula"), PINGUICULA_D, 30, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPingDead"); end; OnMyTreeDead: - monster instance_mapname("1@nyd"),0,0,"Ancient Tree",2019,1,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyTreeDead"; + monster(instance_mapname("1@nyd"), 0, 0, _("Ancient Tree"), ANCIENT_TREE, 1, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyTreeDead"); end; OnMyRhynDead: - monster instance_mapname("1@nyd"),0,0,"Rhyncho",2020,1,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyRhynDead"; + monster(instance_mapname("1@nyd"), 0, 0, _("Rhyncho"), RHYNCHO, 1, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyRhynDead"); end; OnMyPhyDead: - monster instance_mapname("1@nyd"),0,0,"Phylla",2021,1,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPhyDead"; + monster(instance_mapname("1@nyd"), 0, 0, _("Phylla"), PHYLLA, 1, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPhyDead"); end; OnMyAquaDead: - monster instance_mapname("1@nyd"),0,0,"Aqua Elemental",2016,1,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyAquaDead"; + monster(instance_mapname("1@nyd"), 0, 0, _("Aqua Elemental"), AQUA_ELEMENTAL, 1, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyAquaDead"); end; OnMyPingDead: - monster instance_mapname("1@nyd"),0,0,"Dark Pinguicula",2015,1,instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPingDead"; + monster(instance_mapname("1@nyd"), 0, 0, _("Dark Pinguicula"), PINGUICULA_D, 1, instance_npcname("ins_nyd1_spawn_mobs")+"::OnMyPingDead"); end; } //== Second Floor ========================================== 2@nyd,200,14,0 script nyd_2f_enter FAKE_NPC,6,6,{ OnTouch_: - donpcevent instance_npcname("nyd_2f_enter_broad")+"::OnEnable"; - disablenpc instance_npcname("nyd_2f_enter"); + donpcevent(instance_npcname("nyd_2f_enter_broad")+"::OnEnable"); + disablenpc(instance_npcname("nyd_2f_enter")); end; } 2@nyd,1,1,0 script nyd_2f_enter_broad FAKE_NPC,{ OnInstanceInit: OnDisable: - disablenpc instance_npcname("nyd_2f_enter_broad"); + disablenpc(instance_npcname("nyd_2f_enter_broad")); end; OnEnable: - enablenpc instance_npcname("nyd_2f_enter_broad"); - initnpctimer; + enablenpc(instance_npcname("nyd_2f_enter_broad")); + initnpctimer(); end; OnTimer12000: - mapannounce instance_mapname("2@nyd"), "Nidhoggur's Shadow : No more... I can't stand this anymore...",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("2@nyd"), _("Nidhoggur's Shadow : No more... I can't stand this anymore..."), bc_map, C_YELLOW); end; OnTimer15000: - mapannounce instance_mapname("2@nyd"), "Nidhoggur's Shadow : I need... I need the World Tree Yggdrasil's powers...",bc_map,"0xFFFF00"; + mapannounce(instance_mapname("2@nyd"), _("Nidhoggur's Shadow : I need... I need the World Tree Yggdrasil's powers..."), bc_map, C_YELLOW); end; OnTimer18000: - mapannounce instance_mapname("2@nyd"), "Nidhoggur's Shadow : Destroy... everything...",bc_map,"0xFFFF00"; - stopnpctimer; - disablenpc instance_npcname("nyd_2f_enter_broad"); + mapannounce(instance_mapname("2@nyd"), _("Nidhoggur's Shadow : Destroy... everything..."), bc_map, C_YELLOW); + stopnpctimer(); + disablenpc(instance_npcname("nyd_2f_enter_broad")); end; } 2@nyd,199,178,0 script nyd_2f_ddr_control FAKE_NPC,6,6,{ OnTouch: specialeffect(EF_HOLYHIT, AREA, playerattached()); - mes "From below the gorgeous stones, a strange breeze is forming."; - next; - mes "The strange power slowly surrounds your body, the dimension is starting to shift."; - close2; - warp instance_mapname("2@nyd"),199,255; + mes("From below the gorgeous stones, a strange breeze is forming."); + next(); + mes("The strange power slowly surrounds your body, the dimension is starting to shift."); + close2(); + warp(instance_mapname("2@nyd"), 199, 255); end; } 2@nyd,199,268,0 script nyd_2f_boss_enter FAKE_NPC,8,8,{ OnTouch_: - if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY),2)) { - donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnEnable"; - disablenpc instance_npcname("nyd_2f_boss_enter"); + if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY), 2)) { + donpcevent(instance_npcname("nyd_2f_boss_enter_call")+"::OnEnable"); + disablenpc(instance_npcname("nyd_2f_boss_enter")); end; } end; @@ -1871,74 +1883,74 @@ OnTouch_: 2@nyd,2,2,0 script nyd_2f_boss_enter_call FAKE_NPC,{ OnInstanceInit: - disablenpc instance_npcname("nyd_2f_boss_enter_call"); + disablenpc(instance_npcname("nyd_2f_boss_enter_call")); end; OnEnable: - enablenpc instance_npcname("nyd_2f_boss_enter_call"); + enablenpc(instance_npcname("nyd_2f_boss_enter_call")); .@map$ = instance_mapname("2@nyd"); - monster .@map$,199,327,"Nidhoggur's Shadow",2022,1,instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead"; - mapannounce .@map$, "Nidhoggur's Shadow : I will devour all of you... you and the World Tree Yggdrasil.",bc_map,"0x00ff99"; - //donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnGo"; - initnpctimer; + monster(.@map$, 199, 327, _("Nidhoggur's Shadow"), S_NYDHOG, 1, instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead"); + mapannounce(.@map$, _("Nidhoggur's Shadow : I will devour all of you... you and the World Tree Yggdrasil."), bc_map, C_SPRINGGREEN); + //donpcevent(instance_npcname("nyd_2f_boss_enter_call")+"::OnGo"); + initnpctimer(); end; OnDisable: - killmonster instance_mapname("2@nyd"),instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead"; - disablenpc instance_npcname("nyd_2f_boss_enter_call"); + killmonster(instance_mapname("2@nyd"), instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead"); + disablenpc(instance_npcname("nyd_2f_boss_enter_call")); end; OnTimer180000: - stopnpctimer; + stopnpctimer(); OnWarpColor: .@map$ = instance_mapname("2@nyd"); - switch(rand(1,4)) { + switch (rand(1, 4)) { case 1: - mapannounce .@map$, "Nidhoggur's Shadow : In this chaos... your blood is just what I need.",bc_map,"0xFFFF00"; - donpcevent instance_npcname("nyd_2f_white")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_yellow")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_green")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_red")+"::OnEnable"; - instance_warpall .@map$,115,278; + mapannounce(.@map$, _("Nidhoggur's Shadow : In this chaos... your blood is just what I need."), bc_map, C_YELLOW); + donpcevent(instance_npcname("nyd_2f_white")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_yellow")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_green")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_red")+"::OnEnable"); + instance_warpall(.@map$, 115, 278); end; case 2: - mapannounce .@map$, "Nidhoggur's Shadow : I will freeze every last drop of your blood.",bc_map,"0xFFFF00"; - donpcevent instance_npcname("nyd_2f_red")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_yellow")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_green")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_white")+"::OnEnable"; - instance_warpall .@map$,115,373; + mapannounce(.@map$, _("Nidhoggur's Shadow : I will freeze every last drop of your blood."), bc_map, C_YELLOW); + donpcevent(instance_npcname("nyd_2f_red")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_yellow")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_green")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_white")+"::OnEnable"); + instance_warpall(.@map$, 115, 373); end; case 3: - mapannounce .@map$, "Nidhoggur's Shadow : Sleep for eternity in an empty illusion.",bc_map,"0xFFFF00"; - donpcevent instance_npcname("nyd_2f_red")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_white")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_green")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_yellow")+"::OnEnable"; - instance_warpall .@map$,284,278; + mapannounce(.@map$, _("Nidhoggur's Shadow : Sleep for eternity in an empty illusion."), bc_map, C_YELLOW); + donpcevent(instance_npcname("nyd_2f_red")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_white")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_green")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_yellow")+"::OnEnable"); + instance_warpall(.@map$, 284, 278); end; case 4: - mapannounce .@map$, "Nidhoggur's Shadow : I'll let you enjoy the pain of dying slowly.",bc_map,"0xFFFF00"; - donpcevent instance_npcname("nyd_2f_red")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_white")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_yellow")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_green")+"::OnEnable"; - instance_warpall .@map$,284,374; + mapannounce(.@map$, _("Nidhoggur's Shadow : I'll let you enjoy the pain of dying slowly."), bc_map, C_YELLOW); + donpcevent(instance_npcname("nyd_2f_red")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_white")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_yellow")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_green")+"::OnEnable"); + instance_warpall(.@map$, 284, 374); end; } end; OnMyMobDead: .@map$ = instance_mapname("2@nyd"); - if (mobcount(.@map$,instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead") < 1) { - mapannounce .@map$, "Nidhoggur's Shadow : World Tree Yggdrasil's guardian... his powers are disappearing...",bc_map,"0x00ff99"; - donpcevent instance_npcname("World Tree Yggdrasil#2F")+"::OnEnable"; - donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_boss_enter_logic")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_red_c")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_white_c")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_yellow_c")+"::OnDisable"; - donpcevent instance_npcname("nyd_2f_green_c")+"::OnDisable"; + if (mobcount(.@map$, instance_npcname("nyd_2f_boss_enter_call")+"::OnMyMobDead") < 1) { + mapannounce(.@map$, _("Nidhoggur's Shadow : World Tree Yggdrasil's guardian... his powers are disappearing..."), bc_map, C_SPRINGGREEN); + donpcevent(instance_npcname("World Tree Yggdrasil#2F")+"::OnEnable"); + donpcevent(instance_npcname("nyd_2f_boss_enter_call")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_boss_enter_logic")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_red_c")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_white_c")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_yellow_c")+"::OnDisable"); + donpcevent(instance_npcname("nyd_2f_green_c")+"::OnDisable"); 'ins_nyd2 = 4; end; } @@ -1947,203 +1959,203 @@ OnMyMobDead: 2@nyd,2,4,0 script nyd_2f_boss_enter_logic FAKE_NPC,{ OnInstanceInit: - disablenpc instance_npcname("nyd_2f_boss_enter_logic"); + disablenpc(instance_npcname("nyd_2f_boss_enter_logic")); end; OnEnable: - stopnpctimer; - initnpctimer; + stopnpctimer(); + initnpctimer(); end; OnDisable: - stopnpctimer; - disablenpc instance_npcname("nyd_2f_boss_enter_logic"); + stopnpctimer(); + disablenpc(instance_npcname("nyd_2f_boss_enter_logic")); end; OnTimer180000: - stopnpctimer; - donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnWarpColor"; + stopnpctimer(); + donpcevent(instance_npcname("nyd_2f_boss_enter_call")+"::OnWarpColor"); end; } 2@nyd,202,324,5 script World Tree Yggdrasil#2F 4_F_FAIRYKID2,3,3,{ - mes "[World Tree Yggdrasil]"; - mes "Thank you. You're the saviour of humans and the Laphine Tribe."; - next; - mes "[World Tree Yggdrasil]"; - mes "You've defeated Nidhoggur's Shadow. But...It's not gone for good. Its powers are merely put to sleep."; - next; - mes "[World Tree Yggdrasil]"; - mes "But you have won us plenty of time. This is great."; - next; - mes "[World Tree Yggdrasil]"; - mes "Please go and report this to those in charge of Splendide and Manuk."; - next; - mes "[World Tree Yggdrasil]"; - mes "As you have seen, neither the Sapha tribe nor the Laphine tribe is at fault for the weakening of the World Tree. It's all because of the Guardian's Shadow..."; - next; - mes "[World Tree Yggdrasil]"; - mes "The Guardian's insanity...is caused by powers unknown to us... You must tell this to everyone."; - next; - mes "[World Tree Yggdrasil]"; - mes "Now... Allow me to escort you out of the cursed nest."; - next; - switch(select("Please let me out.", "I want to look around for a while.")) { + mes("[World Tree Yggdrasil]"); + mes("Thank you. You're the saviour of humans and the Laphine Tribe."); + next(); + mes("[World Tree Yggdrasil]"); + mes("You've defeated Nidhoggur's Shadow. But...It's not gone for good. Its powers are merely put to sleep."); + next(); + mes("[World Tree Yggdrasil]"); + mes("But you have won us plenty of time. This is great."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Please go and report this to those in charge of Splendide and Manuk."); + next(); + mes("[World Tree Yggdrasil]"); + mes("As you have seen, neither the Sapha tribe nor the Laphine tribe is at fault for the weakening of the World Tree. It's all because of the Guardian's Shadow..."); + next(); + mes("[World Tree Yggdrasil]"); + mes("The Guardian's insanity...is caused by powers unknown to us... You must tell this to everyone."); + next(); + mes("[World Tree Yggdrasil]"); + mes("Now... Allow me to escort you out of the cursed nest."); + next(); + switch (select("Please let me out.", "I want to look around for a while.")) { case 1: 'ins_nyd2 = 0; ins_nyd = 203; - //setquest 3135; - warp "nyd_dun02",98,196; + //setquest(3135); + warp("nyd_dun02", 98, 196); end; case 2: - mes "[World Tree Yggdrasil]"; - mes "Is that so... I'll be around if you want to leave."; - close; + mes("[World Tree Yggdrasil]"); + mes("Is that so... I'll be around if you want to leave."); + close(); } OnInstanceInit: OnDisable: - disablenpc instance_npcname("World Tree Yggdrasil#2F"); + disablenpc(instance_npcname("World Tree Yggdrasil#2F")); end; OnEnable: - enablenpc instance_npcname("World Tree Yggdrasil#2F"); - mapannounce instance_mapname("2@nyd"), "World Tree Yggdrasil : You did good. Have everyone go to the Magic Circle in the middle, and get ready for the destruction of the nest.",bc_map,"0x00ff99"; + enablenpc(instance_npcname("World Tree Yggdrasil#2F")); + mapannounce(instance_mapname("2@nyd"), _("World Tree Yggdrasil : You did good. Have everyone go to the Magic Circle in the middle, and get ready for the destruction of the nest."), bc_map, C_SPRINGGREEN); end; } 2@nyd,115,278,0 script nyd_2f_red FAKE_NPC,5,5,{ OnInstanceInit: - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnEnable: - enablenpc instance_npcname(strnpcinfo(NPC_NAME)); - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp1")+"::OnEnable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp2")+"::OnEnable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp3")+"::OnEnable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_c")+"::OnEnable"; - initnpctimer; + enablenpc(instance_npcname(strnpcinfo(NPC_NAME))); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp1")+"::OnEnable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp2")+"::OnEnable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp3")+"::OnEnable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_c")+"::OnEnable"); + initnpctimer(); end; OnDisable: - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp1")+"::OnDisable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp2")+"::OnDisable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME)+"_warp3")+"::OnDisable"; - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp1")+"::OnDisable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp2")+"::OnDisable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME)+"_warp3")+"::OnDisable"); + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnTouch: - if (compare(strnpcinfo(NPC_NAME),"red")) { - percentheal -50,0; - percentheal -30,0; - sc_start SC_BLOODING,60000,0; - } else if (compare(strnpcinfo(NPC_NAME),"white")) { - percentheal -50,0; - sc_start SC_FREEZE,20000,0; - } else if (compare(strnpcinfo(NPC_NAME),"yellow")) { - percentheal 0,-50; - sc_start SC_SLEEP,20000,0; - sc_start SC_CONFUSION,60000,0; - } else if (compare(strnpcinfo(NPC_NAME),"green")) { - percentheal -50,-50; - sc_start SC_POISON,60000,0; + if (compare(strnpcinfo(NPC_NAME), "red")) { + percentheal(-50, 0); + percentheal(-30, 0); + sc_start(SC_BLOODING, 60000, 0); + } else if (compare(strnpcinfo(NPC_NAME), "white")) { + percentheal(-50, 0); + sc_start(SC_FREEZE, 20000, 0); + } else if (compare(strnpcinfo(NPC_NAME), "yellow")) { + percentheal(0, -50); + sc_start(SC_SLEEP, 20000, 0); + sc_start(SC_CONFUSION, 60000, 0); + } else if (compare(strnpcinfo(NPC_NAME), "green")) { + percentheal(-50, -50); + sc_start(SC_POISON, 60000, 0); } end; OnTimer10000: - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); - stopnpctimer; + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); + stopnpctimer(); end; } 2@nyd,6,6,0 script nyd_2f_red_c FAKE_NPC,{ OnInstanceInit: - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnEnable: - enablenpc instance_npcname(strnpcinfo(NPC_NAME)); - initnpctimer; + enablenpc(instance_npcname(strnpcinfo(NPC_NAME))); + initnpctimer(); .@map$ = instance_mapname("2@nyd"); .@label$ = instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"; - if (compare(strnpcinfo(NPC_NAME),"red")) { - monster .@map$,120,285,"Nidhoggur's Guardian#1",2020,1,.@label$; - monster .@map$,119,286,"Nidhoggur's Guardian#2",2020,1,.@label$; - monster .@map$,120,270,"Nidhoggur's Guardian#3",2020,1,.@label$; - monster .@map$,119,269,"Nidhoggur's Guardian#4",2021,1,.@label$; - monster .@map$,118,270,"Nidhoggur's Guardian#5",2021,1,.@label$; - } else if (compare(strnpcinfo(NPC_NAME),"white")) { - monster .@map$,120,380,"Nidhoggur's Guardian#1",2020,1,.@label$; - monster .@map$,119,381,"Nidhoggur's Guardian#2",2020,1,.@label$; - monster .@map$,120,367,"Nidhoggur's Guardian#3",2020,1,.@label$; - monster .@map$,119,366,"Nidhoggur's Guardian#4",2021,1,.@label$; - monster .@map$,118,365,"Nidhoggur's Guardian#5",2021,1,.@label$; - } else if (compare(strnpcinfo(NPC_NAME),"yellow")) { - monster .@map$,282,284,"Nidhoggur's Guardian#1",2020,1,.@label$; - monster .@map$,283,283,"Nidhoggur's Guardian#2",2020,1,.@label$; - monster .@map$,280,275,"Nidhoggur's Guardian#3",2020,1,.@label$; - monster .@map$,281,276,"Nidhoggur's Guardian#4",2021,1,.@label$; - monster .@map$,281,277,"Nidhoggur's Guardian#5",2021,1,.@label$; - } else if (compare(strnpcinfo(NPC_NAME),"green")) { - monster .@map$,282,378,"Nidhoggur's Guardian#1",2020,1,.@label$; - monster .@map$,283,377,"Nidhoggur's Guardian#2",2020,1,.@label$; - monster .@map$,280,368,"Nidhoggur's Guardian#3",2020,1,.@label$; - monster .@map$,281,368,"Nidhoggur's Guardian#4",2021,1,.@label$; - monster .@map$,281,367,"Nidhoggur's Guardian#5",2021,1,.@label$; + if (compare(strnpcinfo(NPC_NAME), "red")) { + monster(.@map$, 120, 285, _("Nidhoggur's Guardian#1"), RHYNCHO, 1, .@label$); + monster(.@map$, 119, 286, _("Nidhoggur's Guardian#2"), RHYNCHO, 1, .@label$); + monster(.@map$, 120, 270, _("Nidhoggur's Guardian#3"), RHYNCHO, 1, .@label$); + monster(.@map$, 119, 269, _("Nidhoggur's Guardian#4"), PHYLLA, 1, .@label$); + monster(.@map$, 118, 270, _("Nidhoggur's Guardian#5"), PHYLLA, 1, .@label$); + } else if (compare(strnpcinfo(NPC_NAME), "white")) { + monster(.@map$, 120, 380, _("Nidhoggur's Guardian#1"), RHYNCHO, 1, .@label$); + monster(.@map$, 119, 381, _("Nidhoggur's Guardian#2"), RHYNCHO, 1, .@label$); + monster(.@map$, 120, 367, _("Nidhoggur's Guardian#3"), RHYNCHO, 1, .@label$); + monster(.@map$, 119, 366, _("Nidhoggur's Guardian#4"), PHYLLA, 1, .@label$); + monster(.@map$, 118, 365, _("Nidhoggur's Guardian#5"), PHYLLA, 1, .@label$); + } else if (compare(strnpcinfo(NPC_NAME), "yellow")) { + monster(.@map$, 282, 284, _("Nidhoggur's Guardian#1"), RHYNCHO, 1, .@label$); + monster(.@map$, 283, 283, _("Nidhoggur's Guardian#2"), RHYNCHO, 1, .@label$); + monster(.@map$, 280, 275, _("Nidhoggur's Guardian#3"), RHYNCHO, 1, .@label$); + monster(.@map$, 281, 276, _("Nidhoggur's Guardian#4"), PHYLLA, 1, .@label$); + monster(.@map$, 281, 277, _("Nidhoggur's Guardian#5"), PHYLLA, 1, .@label$); + } else if (compare(strnpcinfo(NPC_NAME), "green")) { + monster(.@map$, 282, 378, _("Nidhoggur's Guardian#1"), RHYNCHO, 1, .@label$); + monster(.@map$, 283, 377, _("Nidhoggur's Guardian#2"), RHYNCHO, 1, .@label$); + monster(.@map$, 280, 368, _("Nidhoggur's Guardian#3"), RHYNCHO, 1, .@label$); + monster(.@map$, 281, 368, _("Nidhoggur's Guardian#4"), PHYLLA, 1, .@label$); + monster(.@map$, 281, 367, _("Nidhoggur's Guardian#5"), PHYLLA, 1, .@label$); } end; OnMyMobDead: .@map$ = instance_mapname("2@nyd"); - if (mobcount(.@map$,instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead") < 1) { - mapannounce .@map$, "Nidhoggur's Shadow : You're not bad... but I will be your opponent this time.",bc_map,"0x00ff99"; - donpcevent instance_npcname("nyd_2f_boss_enter_logic")+"::OnEnable"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable"; + if (mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead") < 1) { + mapannounce(.@map$, _("Nidhoggur's Shadow : You're not bad... but I will be your opponent this time."), bc_map, C_SPRINGGREEN); + donpcevent(instance_npcname("nyd_2f_boss_enter_logic")+"::OnEnable"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable"); end; } end; /* OnReset: // Label not called. - killmonster instance_mapname("2@nyd"),instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"; - donpcevent instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable"; + killmonster(instance_mapname("2@nyd"), instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"); + donpcevent(instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable"); end; */ OnDisable: - stopnpctimer; - killmonster instance_mapname("2@nyd"),instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"; //custom - donpcevent instance_npcname(substr(strnpcinfo(NPC_NAME),0,getstrlen(strnpcinfo(NPC_NAME))-3))+"::OnDisable"; - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); + stopnpctimer(); + killmonster(instance_mapname("2@nyd"), instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"); //custom + donpcevent(instance_npcname(substr(strnpcinfo(NPC_NAME), 0, getstrlen(strnpcinfo(NPC_NAME)) - 3))+"::OnDisable"); + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnTimer180000: - killmonster instance_mapname("2@nyd"),instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"; - stopnpctimer; - donpcevent instance_npcname("nyd_2f_boss_enter_call")+"::OnWarpColor"; + killmonster(instance_mapname("2@nyd"), instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"); + stopnpctimer(); + donpcevent(instance_npcname("nyd_2f_boss_enter_call")+"::OnWarpColor"); end; } 2@nyd,130,298,0 script nyd_2f_red_warp1 FAKE_NPC,6,6,{ OnInstanceInit: OnDisable: - disablenpc instance_npcname(strnpcinfo(NPC_NAME)); + disablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnEnable: - enablenpc instance_npcname(strnpcinfo(NPC_NAME)); + enablenpc(instance_npcname(strnpcinfo(NPC_NAME))); end; OnTouch: - if (compare(strnpcinfo(NPC_NAME),"red")) - warp instance_mapname("2@nyd"),115,278; - else if (compare(strnpcinfo(NPC_NAME),"white")) - warp instance_mapname("2@nyd"),115,373; - else if (compare(strnpcinfo(NPC_NAME),"yellow")) - warp instance_mapname("2@nyd"),284,278; - else if (compare(strnpcinfo(NPC_NAME),"green")) - warp instance_mapname("2@nyd"),284,374; + if (compare(strnpcinfo(NPC_NAME), "red")) + warp(instance_mapname("2@nyd"), 115, 278); + else if (compare(strnpcinfo(NPC_NAME), "white")) + warp(instance_mapname("2@nyd"), 115, 373); + else if (compare(strnpcinfo(NPC_NAME), "yellow")) + warp(instance_mapname("2@nyd"), 284, 278); + else if (compare(strnpcinfo(NPC_NAME), "green")) + warp(instance_mapname("2@nyd"), 284, 374); end; } 2@nyd,142,296,0 duplicate(nyd_2f_red_warp1) nyd_2f_red_warp2 FAKE_NPC,6,6 @@ -2170,129 +2182,133 @@ OnTouch: 2@nyd,1,1,0 script ins_nyd2_spawn_mobs FAKE_NPC,{ OnInstanceInit: .@map$ = instance_mapname("2@nyd"); //temp fix since all mobs spawn on the same (inaccessable) area - areamonster .@map$,14,20,382,180,"Rhyncho",2020,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead"; - areamonster .@map$,14,20,382,180,"Phylla",2021,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead"; - areamonster .@map$,14,20,382,180,"Dark Shadow",2023,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead"; - areamonster .@map$,14,20,382,180,"Dark Pinguicula",2015,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead"; + areamonster(.@map$, 14, 20, 382, 180, _("Rhyncho"), RHYNCHO, 40, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead"); + areamonster(.@map$, 14, 20, 382, 180, _("Phylla"), PHYLLA, 40, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead"); + areamonster(.@map$, 14, 20, 382, 180, _("Dark Shadow"), DARK_SHADOW, 40, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead"); + areamonster(.@map$, 14, 20, 382, 180, _("Dark Pinguicula"), PINGUICULA_D, 40, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead"); end; OnMyRhynDead: - areamonster instance_mapname("2@nyd"),14,20,382,180,"Rhyncho",2020,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead"; + areamonster(instance_mapname("2@nyd"), 14, 20, 382, 180, _("Rhyncho"), RHYNCHO, 1, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead"); end; OnMyPhyDead: - areamonster instance_mapname("2@nyd"),14,20,382,180,"Phylla",2021,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead"; + areamonster(instance_mapname("2@nyd"), 14, 20, 382, 180, _("Phylla"), PHYLLA, 1, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead"); end; OnMyDarkshaDead: - areamonster instance_mapname("2@nyd"),14,20,382,180,"Dark Shadow",2023,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead"; + areamonster(instance_mapname("2@nyd"), 14, 20, 382, 180, _("Dark Shadow"), DARK_SHADOW, 1, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead"); end; OnMyPingDead: - areamonster instance_mapname("2@nyd"),14,20,382,180,"Dark Pinguicula",2015,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead"; + areamonster(instance_mapname("2@nyd"), 14, 20, 382, 180, _("Dark Pinguicula") , PINGUICULA_D, 1, instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead"); end; } //== GM Management NPCs ==================================== sec_in02,36,167,3 script Nidhoggur Manager 4_M_FAIRYSOLDIER,1,1,{ - callfunc "F_GM_NPC"; - mes "Enter the password."; - next; - if (callfunc("F_GM_NPC","1854",1) == 0) { - mes "Incorrect password."; - close; + callfunc("F_GM_NPC"); + mes("Enter the password."); + next(); + if (callfunc("F_GM_NPC", "1854", 1) == 0) { + mes("Incorrect password."); + close(); } - mes "What do you need to do?"; - next; - switch(select("Reset variables to allow entrance to Nidhoggur", "change variable 'ins_nyd'", "Remove 3 day timer 3135", "Confirm variable number")) { + mes("What do you need to do?"); + next(); + switch (select("Reset variables to allow entrance to Nidhoggur", "change variable 'ins_nyd'", "Remove 3 day timer 3135", "Confirm variable number")) { case 1: ins_nyd = 200; ins_nyd2 = 0; - erasequest 3135; - mes "ins_nyd set to 200 ins_nyd2 set to 0"; - mes "quest 3135 erased."; - close; + erasequest(3135); + mes("ins_nyd set to 200 ins_nyd2 set to 0"); + mes("quest 3135 erased."); + close(); case 2: - mes "Which variable do you want to change?"; - next; - switch(select("ins_nyd", "ins_nyd2")) { - case 1: .@var$ = "ins_nyd"; break; - case 2: .@var$ = "ins_nyd2"; break; + mes("Which variable do you want to change?"); + next(); + switch (select("ins_nyd", "ins_nyd2")) { + case 1: + .@var$ = "ins_nyd"; + break; + case 2: + .@var$ = "ins_nyd2"; + break; } - mes "Input the variable number"; - next; - input .@input; - setd .@var$, .@input; - mes .@var$+" has been set to "+.@input+" ."; - close; + mes("Input the variable number"); + next(); + input(.@input); + setd(.@var$, .@input); + mesf("%s has been set to %d.", .@var$, .@input); + close(); case 3: - mes "The 3 day timer will be removed when you close this dialog."; - next; - erasequest 3135; - mes "Finished removing Quest Timer."; - close; + mes("The 3 day timer will be removed when you close this dialog."); + next(); + erasequest(3135); + mes("Finished removing Quest Timer."); + close(); case 4: - mes "ins_nyd is at "+ins_nyd+"."; - mes "ins_nyd2 is at "+ins_nyd2+"."; - close; + mesf("ins_nyd is at %d.", ins_nyd); + mesf("ins_nyd2 is at %d.", ins_nyd2); + close(); } } nyd_dun02,7,7,2 script Purification Admin#nyd2 CLEAR_NPC,2,0,{ - callfunc "F_GM_NPC"; - mes "Please enter the password"; - .@i = callfunc("F_GM_NPC","dragonslayer",1); - next; + callfunc("F_GM_NPC"); + mes("Please enter the password"); + .@i = callfunc("F_GM_NPC", "dragonslayer", 1); + next(); if (.@i == 0) { - mes "Enter the password exactly."; - close; + mes("Enter the password exactly."); + close(); } - switch(select("Generate Purification Stone", "Remove Purification Stone", "Turn Entrance NPC OFF", "Turn Entrance NPC On", "Cancel")) { + switch (select("Generate Purification Stone", "Remove Purification Stone", "Turn Entrance NPC OFF", "Turn Entrance NPC On", "Cancel")) { case 1: - mes "Purification stone has been created and will stay on for 30 minutes."; - donpcevent "Purification Stone#nyd2::OnEnable"; - close; + mes("Purification stone has been created and will stay on for 30 minutes."); + donpcevent("Purification Stone#nyd2::OnEnable"); + close(); case 2: - mes "The Purification Stone has been destroyed."; - donpcevent "Purification Stone#nyd2::OnDisable"; - close; + mes("The Purification Stone has been destroyed."); + donpcevent("Purification Stone#nyd2::OnDisable"); + close(); case 3: - mes "The Yggdrasil Gatekeeper at nyd_dun02 100 201 is now OFF."; - disablenpc "Yggdrasil Gatekeeper"; - close; + mes("The Yggdrasil Gatekeeper at nyd_dun02 100 201 is now OFF."); + disablenpc("Yggdrasil Gatekeeper"); + close(); case 4: - mes "The Yggdrasil Gatekeeper at nyd_dun02 100 201 is now On."; - enablenpc "Yggdrasil Gatekeeper"; - close; + mes("The Yggdrasil Gatekeeper at nyd_dun02 100 201 is now On."); + enablenpc("Yggdrasil Gatekeeper"); + close(); case 5: - close; + close(); } } nyd_dun02,88,195,4 script Purification Stone#nyd2 2_MONEMUS,{ - erasequest 3135; - erasequest 3136; + erasequest(3135); + erasequest(3136); ins_nyd = 200; ins_nyd2 = 0; - mes "^0000FFThe records and after-effect related to the Nidhoggur's Nest have been removed. You can generate and enter the dungeon again.^000000"; - close; + mes("^0000FFThe records and after-effect related to the Nidhoggur's Nest have been removed. You can generate and enter the dungeon again.^000000"); + close(); OnInit: - disablenpc "Purification Stone#nyd2"; + disablenpc("Purification Stone#nyd2"); end; OnEnable: - initnpctimer; + initnpctimer(); end; OnDisable: - stopnpctimer; - disablenpc "Purification Stone#nyd2"; + stopnpctimer(); + disablenpc("Purification Stone#nyd2"); end; OnTimer1000: - enablenpc "Purification Stone#nyd2"; + enablenpc("Purification Stone#nyd2"); end; OnTimer1740000: - mapannounce "nyd_dun02","The Purification Stone will be destroyed in one minute.",bc_map,"0x00FF99",FW_NORMAL,12; + mapannounce("nyd_dun02", _("The Purification Stone will be destroyed in one minute."), bc_map, C_SPRINGGREEN, FW_NORMAL, 12); end; OnTimer1800000: - disablenpc "Purification Stone#nyd2"; + disablenpc("Purification Stone#nyd2"); end; } diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index a88d19775..3a045faf0 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql index 4c7640e8f..1957b0b8c 100644 --- a/sql-files/item_db2.sql +++ b/sql-files/item_db2.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 8c65f3a5d..4c762b8e8 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/mob_db.sql b/sql-files/mob_db.sql index 824aa6e55..d62f804a9 100644 --- a/sql-files/mob_db.sql +++ b/sql-files/mob_db.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/mob_db2.sql b/sql-files/mob_db2.sql index 55823993e..ac3d63985 100644 --- a/sql-files/mob_db2.sql +++ b/sql-files/mob_db2.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql index f871500be..35a2178de 100644 --- a/sql-files/mob_db_re.sql +++ b/sql-files/mob_db_re.sql @@ -1,7 +1,7 @@ -- This file is part of Hercules. -- http://herc.ws - http://github.com/HerculesWS/Hercules -- --- Copyright (C) 2013-2017 Hercules Dev Team +-- Copyright (C) 2013-2018 Hercules Dev Team -- -- Hercules is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c index f5d036991..b7314e726 100644 --- a/src/char/int_rodex.c +++ b/src/char/int_rodex.c @@ -346,27 +346,28 @@ int64 inter_rodex_savemessage(struct rodex_message* msg) *------------------------------------------*/ void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int count, struct rodex_maillist *mails) { - int per_packet = (UINT16_MAX - 15) / sizeof(struct rodex_message); + int per_packet = (UINT16_MAX - 16) / sizeof(struct rodex_message); int sent = 0; + bool is_first = true; nullpo_retv(mails); Assert_retv(char_id > 0); Assert_retv(count >= 0); do { - int i = 15, j, size, limit; + int i = 16, j, size, limit; + int to_send = count - sent; bool is_last = true; - if (count <= per_packet) { - size = count * sizeof(struct rodex_message) + 15; - limit = count; + if (to_send <= per_packet) { + size = to_send * sizeof(struct rodex_message) + 16; + limit = to_send; is_last = true; } else { - int to_send = count - sent; limit = min(to_send, per_packet); if (limit != to_send) { is_last = false; } - size = limit * sizeof(struct rodex_message) + 15; + size = limit * sizeof(struct rodex_message) + 16; } WFIFOHEAD(fd, size); @@ -376,11 +377,14 @@ void mapif_rodex_sendinbox(int fd, int char_id, int8 opentype, int8 flag, int co WFIFOB(fd, 8) = opentype; WFIFOB(fd, 9) = flag; WFIFOB(fd, 10) = is_last; - WFIFOL(fd, 11) = count; + WFIFOB(fd, 11) = is_first; + WFIFOL(fd, 12) = limit; for (j = 0; j < limit; ++j, ++sent, i += sizeof(struct rodex_message)) { memcpy(WFIFOP(fd, i), &VECTOR_INDEX(*mails, sent), sizeof(struct rodex_message)); } WFIFOSET(fd, size); + + is_first = false; } while (sent < count); } diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index a8524bdda..6f241bcd6 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2014-2017 Hercules Dev Team + * Copyright (C) 2014-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h index 5ee8a014b..58540ee36 100644 --- a/src/common/HPMSymbols.inc.h +++ b/src/common/HPMSymbols.inc.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/nullpo.h b/src/common/nullpo.h index 28d058dc0..ae0c82364 100644 --- a/src/common/nullpo.h +++ b/src/common/nullpo.h @@ -23,15 +23,10 @@ #include "common/hercules.h" -// enabled by default on debug builds -#if defined(DEBUG) && !defined(NULLPO_CHECK) +// if need disable nullpo checks this line can be commented #define NULLPO_CHECK -#endif - -// Skip assert checks on release builds -#if !defined(RELEASE) && !defined(ASSERT_CHECK) +// if need disable asserts checks this line can be commented #define ASSERT_CHECK -#endif /** Assert */ diff --git a/src/map/clif.c b/src/map/clif.c index 6629eb500..c79a4a1c6 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9923,7 +9923,6 @@ void clif_parse_Hotkey(int fd, struct map_session_data *sd) { /// Displays cast-like progress bar (ZC_PROGRESS). /// 02f0 <color>.L <time>.L -/* TODO ZC_PROGRESS_ACTOR <account_id>.L */ void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned int second) { int fd; @@ -9952,6 +9951,30 @@ void clif_progressbar_abort(struct map_session_data * sd) WFIFOSET(fd,packet_len(0x2f2)); } +/** +* Displays cast-like progress bar on a unit. +* 09d1 <id>.L <color>.L <time>.L +* +* @param bl Source block list. +* @param color Message color (RGB format: 0xRRGGBB). +* @param time Time in seconds. +*/ +void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time) +{ +#if PACKETVER >= 20130821 + struct ZC_PROGRESS_ACTOR p; + nullpo_retv(bl); + + p.PacketType = progressbarunit; + p.GID = bl->id; + p.color = color; + p.time = time; + clif->send(&p, sizeof(p), bl, AREA); +#else + ShowWarning("clif_progressbar_unit: Using progressbar with units available for PACKETVER >= 20130821 only."); +#endif +} + void clif_parse_progressbar(int fd, struct map_session_data * sd) __attribute__((nonnull (2))); /// Notification from the client, that the progress bar has reached 100% (CZ_PROGRESS). /// 02f1 @@ -20375,6 +20398,7 @@ void clif_defaults(void) { clif->font = clif_font; clif->progressbar = clif_progressbar; clif->progressbar_abort = clif_progressbar_abort; + clif->progressbar_unit = clif_progressbar_unit; clif->showdigit = clif_showdigit; clif->elementalconverter_list = clif_elementalconverter_list; clif->spellbook_list = clif_spellbook_list; diff --git a/src/map/clif.h b/src/map/clif.h index e348bbb08..69567cc2c 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -796,6 +796,7 @@ struct clif_interface { void (*font) (struct map_session_data *sd); void (*progressbar) (struct map_session_data * sd, unsigned int color, unsigned int second); void (*progressbar_abort) (struct map_session_data * sd); + void (*progressbar_unit) (struct block_list *bl, uint32 color, uint32 time); void (*showdigit) (struct map_session_data* sd, unsigned char type, int value); int (*elementalconverter_list) (struct map_session_data *sd); int (*spellbook_list) (struct map_session_data *sd); diff --git a/src/map/intif.c b/src/map/intif.c index 60edc8d8b..be6b75d96 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -2438,7 +2438,8 @@ void intif_parse_RequestRodexOpenInbox(int fd) #endif int8 flag = RFIFOB(fd, 9); int8 is_end = RFIFOB(fd, 10); - int count = RFIFOL(fd, 11); + int is_first = RFIFOB(fd, 11); + int count = RFIFOL(fd, 12); int i, j; sd = map->charid2sd(RFIFOL(fd, 4)); @@ -2446,16 +2447,25 @@ void intif_parse_RequestRodexOpenInbox(int fd) if (sd == NULL) // user is not online anymore return; - sd->rodex.total = count; - if (RFIFOW(fd, 2) - 15 != sd->rodex.total * sizeof(struct rodex_message)) { - ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 15, sd->rodex.total * sizeof(struct rodex_message)); + if (is_first == false && sd->rodex.total == 0) { + ShowError("intif_parse_RodexInboxOpenReceived: mail list received in wrong order.\n"); return; } - if (flag == 0) + if (is_first) + sd->rodex.total = count; + else + sd->rodex.total += count; + + if (RFIFOW(fd, 2) - 16 != count * sizeof(struct rodex_message)) { + ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 16, count * sizeof(struct rodex_message)); + return; + } + + if (flag == 0 && is_first) VECTOR_CLEAR(sd->rodex.messages); - for (i = 0, j = 15; i < count; ++i, j += sizeof(struct rodex_message)) { + for (i = 0, j = 16; i < count; ++i, j += sizeof(struct rodex_message)) { struct rodex_message msg = { 0 }; VECTOR_ENSURE(sd->rodex.messages, 1, 1); memcpy(&msg, RFIFOP(fd, j), sizeof(struct rodex_message)); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index f253b8906..cfeb3a67d 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -335,6 +335,9 @@ enum packet_headers { #if PACKETVER >= 20151223 skillscale = 0xA41, #endif +#if PACKETVER >= 20130821 + progressbarunit = 0x09D1, +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -1497,6 +1500,13 @@ struct PACKET_ZC_SKILL_SCALE { uint32 casttime; } __attribute__((packed)); +struct ZC_PROGRESS_ACTOR { + int16 PacketType; + int32 GID; + int32 color; + uint32 time; +} __attribute__((packed)); + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/script.c b/src/map/script.c index d5a0e4864..d7a65f554 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -21570,7 +21570,29 @@ BUILDIN(progressbar) clif->progressbar(sd, (unsigned int)strtoul(color, (char **)NULL, 0), second); return true; } +BUILDIN(progressbar_unit) +{ + const char *color = script_getstr(st, 2); + uint32 second = script_getnum(st, 3); + + if (script_hasdata(st, 4)) { + struct block_list *bl = map->id2bl(script_getnum(st, 4)); + if (bl == NULL) { + ShowWarning("buildin_progressbar_unit: Error in finding object with given GID %d!\n", script_getnum(st, 4)); + return true; + } + clif->progressbar_unit(bl, (unsigned int)strtoul(color, (char **)NULL, 0), second); + } else { + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return false; + + clif->progressbar_unit(&sd->bl, (unsigned int)strtoul(color, (char **)NULL, 0), second); + } + return true; +} BUILDIN(pushpc) { uint8 dir; @@ -24405,6 +24427,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(setfont,"i"), BUILDIN_DEF(areamobuseskill,"siiiiviiiii"), BUILDIN_DEF(progressbar,"si"), + BUILDIN_DEF(progressbar_unit,"si?"), BUILDIN_DEF(pushpc,"ii"), BUILDIN_DEF(buyingstore,"i"), BUILDIN_DEF(searchstores,"ii"), diff --git a/src/map/skill.c b/src/map/skill.c index 25ea0a8ba..4c9e83579 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -987,7 +987,7 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b (skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP))) return 0; // Reproduce will only copy skills according on the list. [Jobbie] - else if( sd->sc.data[SC__REPRODUCE] && !skill->dbs->reproduce_db[skill->get_index(skill_id)] ) + else if (sd->sc.data[SC__REPRODUCE] && (skill->get_inf2(skill_id) & INF2_ALLOW_REPRODUCE) == 0) return 0; return 1; @@ -19849,21 +19849,6 @@ bool skill_parse_row_magicmushroomdb(char* split[], int column, int current) return true; } -bool skill_parse_row_reproducedb(char* split[], int column, int current) -{ - uint16 skill_id; - uint16 idx; - nullpo_retr(false, split); - skill_id = atoi(split[0]); - idx = skill->get_index(skill_id); - if( !idx ) - return false; - - skill->dbs->reproduce_db[idx] = true; - - return true; -} - bool skill_parse_row_abradb(char* split[], int columns, int current) { // skill_id,DummyName,RequiredHocusPocusLevel,Rate @@ -20168,6 +20153,12 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db * } else { sk->inf2 &= ~INF2_SHOW_SKILL_SCALE; } + } else if (strcmpi(type, "AllowReproduce") == 0) { + if (on) { + sk->inf2 |= INF2_ALLOW_REPRODUCE; + } else { + sk->inf2 &= ~INF2_ALLOW_REPRODUCE; + } } else if (strcmpi(type, "None") != 0) { skilldb_invalid_error(type, config_setting_name(t), sk->nameid); } @@ -21280,7 +21271,6 @@ void skill_readdb(bool minimal) sv->readdb(map->db_path, "spellbook_db.txt", ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill->parse_row_spellbookdb); //Guillotine Cross sv->readdb(map->db_path, "magicmushroom_db.txt", ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill->parse_row_magicmushroomdb); - sv->readdb(map->db_path, "skill_reproduce_db.txt", ',', 1, 1, MAX_SKILL_DB, skill->parse_row_reproducedb); sv->readdb(map->db_path, "skill_improvise_db.txt", ',', 2, 2, MAX_SKILL_IMPROVISE_DB, skill->parse_row_improvisedb); sv->readdb(map->db_path, "skill_changematerial_db.txt", ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb); } @@ -21594,7 +21584,6 @@ void skill_defaults(void) skill->parse_row_abradb = skill_parse_row_abradb; skill->parse_row_spellbookdb = skill_parse_row_spellbookdb; skill->parse_row_magicmushroomdb = skill_parse_row_magicmushroomdb; - skill->parse_row_reproducedb = skill_parse_row_reproducedb; skill->parse_row_improvisedb = skill_parse_row_improvisedb; skill->parse_row_changematerialdb = skill_parse_row_changematerialdb; skill->usave_add = skill_usave_add; diff --git a/src/map/skill.h b/src/map/skill.h index 1e00e488f..c494c0e83 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -123,6 +123,7 @@ enum e_skill_inf2 { INF2_FREE_CAST_NORMAL = 0x08000, INF2_FREE_CAST_REDUCED = 0x10000, INF2_SHOW_SKILL_SCALE = 0x20000, + INF2_ALLOW_REPRODUCE = 0x40000, }; @@ -1897,7 +1898,6 @@ BEGIN_ZEROED_BLOCK; // This block will be zeroed in skill_defaults() as well as struct s_skill_improvise_db improvise_db[MAX_SKILL_IMPROVISE_DB]; struct s_skill_changematerial_db changematerial_db[MAX_SKILL_PRODUCE_DB]; struct s_skill_spellbook_db spellbook_db[MAX_SKILL_SPELLBOOK_DB]; - bool reproduce_db[MAX_SKILL_DB]; END_ZEROED_BLOCK; struct s_skill_unit_layout unit_layout[MAX_SKILL_UNIT_LAYOUT]; }; @@ -2121,7 +2121,6 @@ struct skill_interface { bool (*parse_row_abradb) (char* split[], int columns, int current); bool (*parse_row_spellbookdb) (char* split[], int columns, int current); bool (*parse_row_magicmushroomdb) (char* split[], int column, int current); - bool (*parse_row_reproducedb) (char* split[], int column, int current); bool (*parse_row_improvisedb) (char* split[], int columns, int current); bool (*parse_row_changematerialdb) (char* split[], int columns, int current); /* save new unit skill */ diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 5cee29397..02a0082d3 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -6736,8 +6736,6 @@ typedef bool (*HPMHOOK_pre_skill_parse_row_spellbookdb) (char **split[], int *co typedef bool (*HPMHOOK_post_skill_parse_row_spellbookdb) (bool retVal___, char *split[], int columns, int current); typedef bool (*HPMHOOK_pre_skill_parse_row_magicmushroomdb) (char **split[], int *column, int *current); typedef bool (*HPMHOOK_post_skill_parse_row_magicmushroomdb) (bool retVal___, char *split[], int column, int current); -typedef bool (*HPMHOOK_pre_skill_parse_row_reproducedb) (char **split[], int *column, int *current); -typedef bool (*HPMHOOK_post_skill_parse_row_reproducedb) (bool retVal___, char *split[], int column, int current); typedef bool (*HPMHOOK_pre_skill_parse_row_improvisedb) (char **split[], int *columns, int *current); typedef bool (*HPMHOOK_post_skill_parse_row_improvisedb) (bool retVal___, char *split[], int columns, int current); typedef bool (*HPMHOOK_pre_skill_parse_row_changematerialdb) (char **split[], int *columns, int *current); diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc index 3eeb7fd91..d7e6f524d 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc index bbd484fe1..14dc89804 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc index a372f83b3..1836bf6ba 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc index b5e9afc08..8b2f1b071 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc index 0cbce8b7d..f8c270de3 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc index a6a907806..8cec39974 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc index 6071c472b..658ee874d 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_login.sources.inc b/src/plugins/HPMHooking/HPMHooking_login.sources.inc index 8c3b935ac..55ced3025 100644 --- a/src/plugins/HPMHooking/HPMHooking_login.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_login.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index cc097aeae..7a482a669 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -5450,8 +5450,6 @@ struct { struct HPMHookPoint *HP_skill_parse_row_spellbookdb_post; struct HPMHookPoint *HP_skill_parse_row_magicmushroomdb_pre; struct HPMHookPoint *HP_skill_parse_row_magicmushroomdb_post; - struct HPMHookPoint *HP_skill_parse_row_reproducedb_pre; - struct HPMHookPoint *HP_skill_parse_row_reproducedb_post; struct HPMHookPoint *HP_skill_parse_row_improvisedb_pre; struct HPMHookPoint *HP_skill_parse_row_improvisedb_post; struct HPMHookPoint *HP_skill_parse_row_changematerialdb_pre; @@ -11659,8 +11657,6 @@ struct { int HP_skill_parse_row_spellbookdb_post; int HP_skill_parse_row_magicmushroomdb_pre; int HP_skill_parse_row_magicmushroomdb_post; - int HP_skill_parse_row_reproducedb_pre; - int HP_skill_parse_row_reproducedb_post; int HP_skill_parse_row_improvisedb_pre; int HP_skill_parse_row_improvisedb_post; int HP_skill_parse_row_changematerialdb_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 7caf25de6..3ba6a3f5b 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -2789,7 +2789,6 @@ struct HookingPointData HookingPoints[] = { { HP_POP(skill->parse_row_abradb, HP_skill_parse_row_abradb) }, { HP_POP(skill->parse_row_spellbookdb, HP_skill_parse_row_spellbookdb) }, { HP_POP(skill->parse_row_magicmushroomdb, HP_skill_parse_row_magicmushroomdb) }, - { HP_POP(skill->parse_row_reproducedb, HP_skill_parse_row_reproducedb) }, { HP_POP(skill->parse_row_improvisedb, HP_skill_parse_row_improvisedb) }, { HP_POP(skill->parse_row_changematerialdb, HP_skill_parse_row_changematerialdb) }, { HP_POP(skill->usave_add, HP_skill_usave_add) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 2c48e4262..402e57256 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -72951,33 +72951,6 @@ bool HP_skill_parse_row_magicmushroomdb(char *split[], int column, int current) } return retVal___; } -bool HP_skill_parse_row_reproducedb(char *split[], int column, int current) { - int hIndex = 0; - bool retVal___ = false; - if (HPMHooks.count.HP_skill_parse_row_reproducedb_pre > 0) { - bool (*preHookFunc) (char **split[], int *column, int *current); - *HPMforce_return = false; - for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_reproducedb_pre; hIndex++) { - preHookFunc = HPMHooks.list.HP_skill_parse_row_reproducedb_pre[hIndex].func; - retVal___ = preHookFunc(&split, &column, ¤t); - } - if (*HPMforce_return) { - *HPMforce_return = false; - return retVal___; - } - } - { - retVal___ = HPMHooks.source.skill.parse_row_reproducedb(split, column, current); - } - if (HPMHooks.count.HP_skill_parse_row_reproducedb_post > 0) { - bool (*postHookFunc) (bool retVal___, char *split[], int column, int current); - for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_parse_row_reproducedb_post; hIndex++) { - postHookFunc = HPMHooks.list.HP_skill_parse_row_reproducedb_post[hIndex].func; - retVal___ = postHookFunc(retVal___, split, column, current); - } - } - return retVal___; -} bool HP_skill_parse_row_improvisedb(char *split[], int columns, int current) { int hIndex = 0; bool retVal___ = false; diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc index ada63e53d..23f762151 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/tools/ci/travis.sh b/tools/ci/travis.sh index cc1f15ee8..59726efe8 100755 --- a/tools/ci/travis.sh +++ b/tools/ci/travis.sh @@ -203,6 +203,12 @@ EOF ARGS="--load-plugin script_mapquit $ARGS --load-script npc/dev/ci_test.txt" PLUGINS="--load-plugin HPMHooking --load-plugin sample" echo "run tests" + if [[ $DBUSER == "travis" ]]; then + echo "Disable leak dection on travis" + export ASAN_OPTIONS=detect_leaks=0:detect_stack_use_after_return=true:strict_init_order=true + else + export ASAN_OPTIONS=detect_leaks=1:detect_stack_use_after_return=true:strict_init_order=true + fi # run_test spinlock # Not running the spinlock test for the time being (too time consuming) run_test libconfig echo "run all servers without HPM" |