From 1132423156249187136ea464b721e7ac2b6041f2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 8 Apr 2019 19:52:23 +0300 Subject: Update from hercules Conf files and constants updated. --- conf/map/battle/client.conf | 9 +++++++++ conf/map/battle/feature.conf | 5 +++++ db/constants.conf | 26 +++++++++++++++++++++----- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf index 59f5fceb..ea5f1ac0 100644 --- a/conf/map/battle/client.conf +++ b/conf/map/battle/client.conf @@ -189,3 +189,12 @@ mvp_exp_reward_message: false // character has 0 HP when dead. // Default: true (Official behavior) display_fake_hp_when_dead: false + +// Send ping timer +// For clients 20190320 Re+ +// Interval in seconds for each timer invoke. +ping_timer_inverval: 30 + +// Send packets timeout in seconds before ping packet can be sent. +// For clients 20190320 Re+ +ping_time: 20 diff --git a/conf/map/battle/feature.conf b/conf/map/battle/feature.conf index 1ed94b2a..be4d88b9 100644 --- a/conf/map/battle/feature.conf +++ b/conf/map/battle/feature.conf @@ -83,4 +83,9 @@ features: { // Attendance End time in the format YearMonthDay feature_attendance_endtime: 20180331 + + // Enable Achievement System + // true: enable (Default) + // false: disable + enable_achievement_system: false } diff --git a/db/constants.conf b/db/constants.conf index f2d23ac1..c9fcf425 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -1401,11 +1401,27 @@ constants_db: { SC_CLAN_INFO: 654 comment__: "petstat" - PET_CLASS: 1 - PET_NAME: 2 - PET_LEVEL: 3 - PET_HUNGRY: 4 - PET_INTIMATE: 5 + comment__: "petstat - deprecated, use *getpetinfo" + PET_CLASS: { + Value: 1 + Deprecated: true + } + PET_NAME: { + Value: 2 + Deprecated: true + } + PET_LEVEL: { + Value: 3 + Deprecated: true + } + PET_HUNGRY: { + Value: 4 + Deprecated: true + } + PET_INTIMATE: { + Value: 5 + Deprecated: true + } comment__: "getmonsterinfo" MOB_NAME: 0 -- cgit v1.2.3-70-g09d2 From b5d4e37e67ac1d2f1d4e8f5132906461d0f8f4e7 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Tue, 9 Apr 2019 22:39:09 +0000 Subject: Change Legion Main Hall Map Mask System --- npc/001-2-33/mapflags.txt | 3 ++- npc/001-2-33/triggers.txt | 45 ++++++++++++++++--------------- npc/functions/masks.txt | 68 +++++++++++++++-------------------------------- 3 files changed, 46 insertions(+), 70 deletions(-) diff --git a/npc/001-2-33/mapflags.txt b/npc/001-2-33/mapflags.txt index 95e3a6ba..4882b03e 100644 --- a/npc/001-2-33/mapflags.txt +++ b/npc/001-2-33/mapflags.txt @@ -1,2 +1,3 @@ -001-2-33 mapflag mask 5 +001-2-33 mapflag mask 13 +001-2-33 mapflag nosave 001-2-33,34,42 001-2-33 mapflag town diff --git a/npc/001-2-33/triggers.txt b/npc/001-2-33/triggers.txt index 47a5ea90..e540869c 100644 --- a/npc/001-2-33/triggers.txt +++ b/npc/001-2-33/triggers.txt @@ -7,25 +7,25 @@ // Transition Top triggers 001-2-33,26,35,0 script #001-2-33LeftRemTop NPC_HIDDEN,0,2,{ OnTouch: - artisALRemTopMask; + artisALResetMask; close; } 001-2-33,27,35,0 script #001-2-33LeftAddTop NPC_HIDDEN,0,2,{ OnTouch: - artisALAddTopMask; + artisALTopMask; close; } 001-2-33,42,35,0 script #001-2-33RightRemTop NPC_HIDDEN,0,2,{ OnTouch: - artisALRemTopMask; + artisALResetMask; close; } 001-2-33,41,35,0 script #001-2-33RightAddTop NPC_HIDDEN,0,2,{ OnTouch: - artisALAddTopMask; + artisALTopMask; close; } @@ -33,69 +33,70 @@ OnTouch: 001-2-33,25,32,0 script #001-2-33LeftRemBot NPC_HIDDEN,1,0,{ OnTouch: - artisALRemBotMask; + artisALResetMask; close; } 001-2-33,25,31,0 script #001-2-33LeftAddBot NPC_HIDDEN,1,0,{ OnTouch: - artisALAddBotMask; + artisALBottomMask; close; } 001-2-33,43,32,0 script #001-2-33RightRemBot NPC_HIDDEN,1,0,{ OnTouch: - artisALRemBotMask; + artisALResetMask; close; } 001-2-33,43,31,0 script #001-2-33RightAddBot NPC_HIDDEN,1,0,{ OnTouch: - artisALAddBotMask; + artisALBottomMask; close; } // Warped location triggers -001-2-33,24,30,0 script #001-2-33WarpTopLeft NPC_HIDDEN,1,1,{ +001-2-33,24,30,0 script #001-2-33WarpTopLeft NPC_HIDDEN,0,0,{ OnTouch: - artisALUpdateMask; + artisALBottomMask; close; } -001-2-33,44,30,0 script #001-2-33WarpTopRight NPC_HIDDEN,1,1,{ +001-2-33,44,30,0 script #001-2-33WarpTopRight NPC_HIDDEN,0,0,{ OnTouch: - artisALUpdateMask; + artisALBottomMask; close; } -001-2-33,29,32,0 script #001-2-33WarpMidLeft NPC_HIDDEN,1,1,{ +// WarpMid is crazy and not working correctly, cause unknown. +001-2-33,29,34,0 script #001-2-33WarpMidLeft NPC_HIDDEN,1,1,{ OnTouch: - artisALUpdateMask; + artisALTopMask; close; } -001-2-33,39,32,0 script #001-2-33WarpMidRight NPC_HIDDEN,1,1,{ +001-2-33,39,34,0 script #001-2-33WarpMidRight NPC_HIDDEN,1,1,{ OnTouch: - artisALUpdateMask; + artisALTopMask; close; } -001-2-33,34,45,0 script #001-2-33WarpArtis NPC_HIDDEN,1,1,{ +001-2-33,34,45,0 script #001-2-33WarpArtis NPC_HIDDEN,2,3,{ OnTouch: - artisALUpdateMask; + artisALTopMask; close; } // Bottom Warp location triggers -001-2-33,43,38,0 script #001-2-33WarpBotLeft NPC_HIDDEN,1,0,{ +001-2-33,43,39,0 script #001-2-33WarpBotLeft NPC_HIDDEN,1,0,{ OnTouch: - artisALUpdateMask; + artisALResetMask; close; } -001-2-33,25,38,0 script #001-2-33WarpBotRight NPC_HIDDEN,1,0,{ +001-2-33,25,39,0 script #001-2-33WarpBotRight NPC_HIDDEN,1,0,{ OnTouch: - artisALUpdateMask; + artisALResetMask; close; } diff --git a/npc/functions/masks.txt b/npc/functions/masks.txt index 9fb54919..03c81630 100644 --- a/npc/functions/masks.txt +++ b/npc/functions/masks.txt @@ -4,65 +4,39 @@ // Description: // Triggers functions to add and remove masks. // Variables: -// none +// 4 - Top Mask +// 8 - Bottom Mask +// Default mask: 13 (Top + Bottom + Display mask) // Artis Aemil's Legion -function script artisALRemTopMask { - if ((getareausers("001-2-33", 23, 27, 45, 31) >= 1) || - (getareausers("001-2-33", 23, 32, 26, 38) >= 1) || - (getareausers("001-2-33", 42, 32, 45, 38) >= 1)) - { - removemapmask "001-2-33", 4; - } +function script artisALResetMask { + .@m=getmapmask("001-2-33"); + sendmapmask(.@m); return 0; } -function script artisALAddTopMask { - if ((getareausers("001-2-33", 23, 27, 45, 31) == 0) && - (getareausers("001-2-33", 23, 32, 26, 38) == 0) && - (getareausers("001-2-33", 42, 32, 45, 38) == 0)) - { - addmapmask "001-2-33", 4; - } +function script artisALTopMask { + addtimer 30, "artisALTopMaskDO::OnDoIt"; return 0; } -function script artisALRemBotMask { - if (getareausers("001-2-33", 23, 32, 45, 46) >= 1) - { - removemapmask "001-2-33", 8; - } +function script artisALBottomMask { + addtimer 30, "artisALBottomMaskDO::OnDoIt"; return 0; } -function script artisALAddBotMask { - if (getareausers("001-2-33", 23, 32, 45, 46) == 0) - { - addmapmask "001-2-33", 8; - } - return 0; +// Show bottom mask is the same as hiding top mask +- script artisALBottomMaskDO NPC_HIDDEN,{ +OnDoIt: + .@m=getmapmask("001-2-33"); + sendmapmask(.@m^4); } -function script artisALUpdateMask { - if (getareausers("001-2-33", 23, 32, 45, 46) >= 1) - { - removemapmask "001-2-33", 8; - } - else - { - addmapmask "001-2-33", 8; - } - if ((getareausers("001-2-33", 23, 27, 45, 31) >= 1) || - (getareausers("001-2-33", 23, 32, 26, 38) >= 1) || - (getareausers("001-2-33", 42, 32, 45, 38) >= 1)) - { - removemapmask "001-2-33", 4; - } - else - { - addmapmask "001-2-33", 4; - } - - return 0; +// Show top mask is the same as hiding bottom mask +- script artisALTopMaskDO NPC_HIDDEN,{ +OnDoIt: + .@m=getmapmask("001-2-33"); + sendmapmask(.@m^8); } + -- cgit v1.2.3-70-g09d2 From eba686221269fc20ab70356cbcfab13786d4f3fc Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 11 Apr 2019 14:13:34 +0000 Subject: Minor info on Soul Menhir --- npc/008-1/soul-menhir.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/npc/008-1/soul-menhir.txt b/npc/008-1/soul-menhir.txt index 3c295c92..2c57f0de 100644 --- a/npc/008-1/soul-menhir.txt +++ b/npc/008-1/soul-menhir.txt @@ -5,7 +5,11 @@ // place of power, mana refills faster when sitting nearby 008-1,252,111,0 script Soul Menhir#hurnscald NPC_NO_SPRITE,{ - + if (!@menhir_meditation_message) + { + dispbottom(l("You feel a strong magic aura. You want to sit near it and meditate.")); + @menhir_meditation_message=1; + } end; OnRefill: -- cgit v1.2.3-70-g09d2 From de8afd9a48f4b6180e30de885d980fb2cf8c7538 Mon Sep 17 00:00:00 2001 From: Micksha Date: Thu, 11 Apr 2019 21:13:02 +0000 Subject: Add Simon, Wyaras Apprentice, and his Potion shop along with updating (not fixing, really) his potions --- db/constants.conf | 1 + db/re/item_db.conf | 32 ++++++++++++++++---------------- npc/008-2-7/shop.txt | 36 ++++++++++++++++++++++++++++++++++++ npc/008-2-7/simon.txt | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 npc/008-2-7/shop.txt create mode 100644 npc/008-2-7/simon.txt diff --git a/db/constants.conf b/db/constants.conf index c9fcf425..5f6bd8ab 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -4086,6 +4086,7 @@ constants_db: { NPC_SABINE: 184 NPC_MIKHAIL: 185 NPC_TROUPE_LEADER: 186 + NPC_SIMON: 187 NPC_CONFUSED_TREE: 400 NPC_ALIGE: 401 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 0dd35a51..753dc25a 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -1294,8 +1294,8 @@ item_db: ( AegisName: "SmallHealing" Name: "Small Healing Potion" Type: "IT_HEALING" - Buy: 2500 - Sell: 300 + Buy: 500 + Sell: 45 Weight: 32 Atk: 0 Matk: 0 @@ -1311,8 +1311,8 @@ item_db: ( Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - @min = 200; - @max = 300; + @min = 300; + @max = 500; @delay = 3; @type = 2; doevent "rand_sc_heal::OnUse"; @@ -1323,8 +1323,8 @@ item_db: ( AegisName: "MediumHealing" Name: "Medium Healing Potion" Type: "IT_HEALING" - Buy: 5000 - Sell: 650 + Buy: 850 + Sell: 75 Weight: 64 Atk: 0 Matk: 0 @@ -1340,8 +1340,8 @@ item_db: ( Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - @min = 400; - @max = 600; + @min = 500; + @max = 800; @delay = 4; @type = 2; doevent "rand_sc_heal::OnUse"; @@ -1352,8 +1352,8 @@ item_db: ( AegisName: "LargeHealing" Name: "Large Healing Potion" Type: "IT_HEALING" - Buy: 10000 - Sell: 1250 + Buy: 2480 + Sell: 350 Weight: 128 Atk: 0 Matk: 0 @@ -1381,8 +1381,8 @@ item_db: ( AegisName: "SmallMana" Name: "Small Mana Potion" Type: "IT_HEALING" - Buy: 2000 - Sell: 250 + Buy: 750 + Sell: 65 Weight: 32 Atk: 0 Matk: 0 @@ -1406,8 +1406,8 @@ item_db: ( AegisName: "MediumMana" Name: "Medium Mana Potion" Type: "IT_HEALING" - Buy: 5000 - Sell: 600 + Buy: 1650 + Sell: 205 Weight: 64 Atk: 0 Matk: 0 @@ -1431,8 +1431,8 @@ item_db: ( AegisName: "LargeMana" Name: "Large Mana Potion" Type: "IT_HEALING" - Buy: 10000 - Sell: 1500 + Buy: 3240 + Sell: 340 Weight: 128 Atk: 0 Matk: 0 diff --git a/npc/008-2-7/shop.txt b/npc/008-2-7/shop.txt new file mode 100644 index 00000000..30989eb3 --- /dev/null +++ b/npc/008-2-7/shop.txt @@ -0,0 +1,36 @@ +// Evol scripts. +// Authors: +// 4144 +// Micksha +// Reid +// toams +// Description: +// Simons Potion Shop. + +008-2-7,30,26,0 trader #Invisible008-2-7 NPC_HIDDEN,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem SmallHealing, -1, 10; + sellitem MediumHealing, -1, 5; + sellitem SmallMana, -1, 10; + sellitem MediumMana, -1, 5; + sellitem ConcPotion, -1, 3; + sellitem IronPotion, -1, 3; + + .sex = G_OTHER; + .distance = 2; + end; + +OnClock0000: +OnClock0800: +OnClock1600: + restoreshopitem SmallHealing, 10; + restoreshopitem MediumHealing, 5; + restoreshopitem SmallMana, 10; + restoreshopitem MediumMana, 5; + restoreshopitem ConcPotion, 3; + restoreshopitem IronPotion, 3; + end; +} diff --git a/npc/008-2-7/simon.txt b/npc/008-2-7/simon.txt new file mode 100644 index 00000000..1b4ae071 --- /dev/null +++ b/npc/008-2-7/simon.txt @@ -0,0 +1,39 @@ +// Evol scripts. +// Author: +// Micksha +// Description: +// Simon, Wyaras Apprentice. +// THIS IS A PLACEHOLDER! + +008-2-7,30,26,0 script Simon NPC_SIMON,{ + speech + l("Hi, I am Simon."), + l("I am Wyaras apprentice, helping her with selling her potions."), + l("I would prefer becoming a real Sorcerer one time. *sighs*"); + + switch (select(l("Potions? That sounds useful. What do you have?"), + l("Thats your problem, really."), + l("Becoming a Sorcerer? I want that too!"))) + { + case 1: + closeclientdialog; + shop "#Invisible008-2-7"; + close; + case 2: + speech S_FIRST_BLANK_LINE, + l("Leave me alone."); + close; + case 3: + speech S_FIRST_BLANK_LINE, + l("It needs so much training, but Wyara only leaves me here, standing and selling something instead of teaching me."); + close; + } + + + close; + +OnInit: + .sex = G_MALE; + .distance = 2; + end; +} -- cgit v1.2.3-70-g09d2 From e7ceef253528458c30abed263f5980835426a92f Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 11 Apr 2019 21:46:42 +0000 Subject: Wyara the witch/dark druid/Apothecary - status reset implemented. Plushroom potion? What's this? --- npc/008-2-7/wyara.txt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/npc/008-2-7/wyara.txt b/npc/008-2-7/wyara.txt index a875544a..502a5409 100644 --- a/npc/008-2-7/wyara.txt +++ b/npc/008-2-7/wyara.txt @@ -3,16 +3,79 @@ // Micksha // Description: // Wyara the witch. -// THIS IS A PLACEHOLDER! +// TODO: Buy or make plushroom potions +// TODO: Should she ask for a money comission when resetting status? 008-2-7,27,28,0 script Wyara#008-2-7 NPC_DARK_DRUID,{ + function confirmStatusReset; + function doStatusReset; speech l("What? Is there someone?"), l("Please, leave me alone. I have to pixel potions."), - lg("I will sell some when you return a bit later."); - + lg("I will sell some when you return a bit later."), + l("Unless you are interested in a status reset?"); + next; + do + { + select + l("I'm fine, thanks."), + l("I actually could use a status reset!"); + switch (@menu) { + case 2: + @plush_count = lognbaselvl(1, 10); + @plush_count = @plush_count*12/10; + if (confirmStatusReset()) + doStatusReset(); + break; + } + } while (@menu != 1); + // Note: There is some dark magic here, because confirmStatusReset() overrides @menu. close; +function confirmStatusReset { + mesn; + mesq l("Let me just have a quick look at you. Hm... I will need @@ @@s to reset your stats.", @plush_count, getitemlink(Plushroom)); + next; + mesn; + mesq l("Also, status point reset can't be undone. Do you really want this?"); + next; + if (askyesno() == ASK_YES) + { + if (countitem(Plushroom) >= @plush_count) + return 1; + mesn; + mesq l("Alright, but... You only have @@ @@, and I need @@ to do the status reset for you!", countitem(Plushroom), getitemlink(Plushroom), @plush_count); + } + return 0; +} + +function doStatusReset { + delitem Plushroom, @plush_count; + + .@wasSP = StatusPoint; + resetstatus; + + // Everything was done before dialog in case of forced disconnection + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Thank you."), + l("Now stand still... It should not take much time..."); + if (StatusPoint == .@wasSP) + { + speech + l("It seems that you have no status points to reset!"), + l("I'll return the plushroom to you, but please, do not waste my time."); + getitem Plushroom, @plush_count; + } + else + { + speech + l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP), + l("Spend it wisely this time."), + lg("But you are welcome to reset your stats again if you bring me some more plushrooms!"); + } + return; +} + OnInit: .sex = G_FEMALE; .distance = 2; -- cgit v1.2.3-70-g09d2 From 3bb623672195f0177582bcb81595c567127ac1b5 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 13 Apr 2019 20:02:42 +0000 Subject: Koga should be always visible (I think every big NPC needs that?) Alias @wgm to @request - so players can still use @wgm just fine. --- conf/atcommand.conf | 1 + npc/001-1/koga.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/conf/atcommand.conf b/conf/atcommand.conf index ac4cee47..2241fa74 100644 --- a/conf/atcommand.conf +++ b/conf/atcommand.conf @@ -61,6 +61,7 @@ aliases: { camerainfo: ["setcamera", "viewpointvalue"] tee: ["t"] log: ["l"] + request: ["wgm"] } /* List of commands that should not be logged at all */ diff --git a/npc/001-1/koga.txt b/npc/001-1/koga.txt index 3aecb09a..da0ab629 100644 --- a/npc/001-1/koga.txt +++ b/npc/001-1/koga.txt @@ -16,5 +16,6 @@ OnInit: .sex = G_MALE; .distance = 4; + .alwaysVisible = true; end; } -- cgit v1.2.3-70-g09d2 From 65449ffbf0bf377312f74a3e2c03dc2847730363 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 13 Apr 2019 20:48:41 +0000 Subject: Reimplement INN system and add Rusty Pick Inn --- db/constants.conf | 2 +- npc/000-2-1/_savepoints.txt | 24 ++++++++++-- npc/001-2-1/_savepoints.txt | 8 +++- npc/001-2-10/_savepoints.txt | 8 +++- npc/001-2-11/_savepoints.txt | 8 +++- npc/001-2-13/_savepoints.txt | 8 +++- npc/001-2-15/_savepoints.txt | 8 +++- npc/001-2-22/_savepoints.txt | 40 ++++++++++++++----- npc/001-2-29/_import.txt | 2 +- npc/001-2-29/_savepoints.txt | 54 +++++++++++++++++++++++++ npc/001-2-29/savepoint.txt | 53 ------------------------- npc/001-2-3/_savepoints.txt | 8 +++- npc/001-2-37/_savepoints.txt | 32 +++++++++++---- npc/001-2-38/_savepoints.txt | 32 +++++++++++---- npc/008-2-0/_savepoints.txt | 8 +++- npc/008-2-1/_savepoints.txt | 8 +++- npc/008-2-11/_savepoints.txt | 16 ++++++-- npc/008-2-13/_savepoints.txt | 32 +++++++++++---- npc/008-2-14/_savepoints.txt | 8 +++- npc/008-2-2/melania.txt | 93 ++++++++++++++++++++++++++++++++++++++++++-- npc/008-2-22/_savepoints.txt | 8 +++- npc/008-2-3/_savepoints.txt | 64 ++++++++++++++++++++++-------- npc/008-2-4/_savepoints.txt | 8 +++- npc/008-2-7/_savepoints.txt | 8 +++- npc/008-2-9/_savepoints.txt | 8 +++- npc/functions/beds.txt | 14 ++----- npc/functions/savepoint.txt | 15 +++++-- 27 files changed, 421 insertions(+), 156 deletions(-) create mode 100644 npc/001-2-29/_savepoints.txt delete mode 100644 npc/001-2-29/savepoint.txt diff --git a/db/constants.conf b/db/constants.conf index 5f6bd8ab..0451b262 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -4195,7 +4195,7 @@ constants_db: { comment__: "INN enum" NO_INN: 0 REDPLUSH_INN: 1 - CURRENT_INN: 2 + RUSTYPICK_INN: 2 comment__: "CRAFT enum" CRAFT_SANDWICH: 4 diff --git a/npc/000-2-1/_savepoints.txt b/npc/000-2-1/_savepoints.txt index 14b79c7e..da074f25 100644 --- a/npc/000-2-1/_savepoints.txt +++ b/npc/000-2-1/_savepoints.txt @@ -1,6 +1,6 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 000-2-1: Second Deck saves -000-2-1,40,37,0 script #save_000-2-1_40_37 NPC_SAVE_POINT,{ +000-2-1,40,37,0 script #save_000-2-1_40_37 NPC_SAVE_POINT,0,0,{ savepointparticle .map$, .x, .y, NO_INN; close; @@ -8,8 +8,12 @@ OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -000-2-1,46,37,0 script #save_000-2-1_46_37 NPC_SAVE_POINT,{ +000-2-1,46,37,0 script #save_000-2-1_46_37 NPC_SAVE_POINT,0,0,{ savepointparticle .map$, .x, .y, NO_INN; close; @@ -17,8 +21,12 @@ OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -000-2-1,50,38,0 script #save_000-2-1_50_38 NPC_SAVE_POINT,{ +000-2-1,50,38,0 script #save_000-2-1_50_38 NPC_SAVE_POINT,0,0,{ savepointparticle .map$, .x, .y, NO_INN; close; @@ -26,8 +34,12 @@ OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -000-2-1,55,40,0 script #save_000-2-1_55_40 NPC_SAVE_POINT,{ +000-2-1,55,40,0 script #save_000-2-1_55_40 NPC_SAVE_POINT,0,0,{ savepointparticle .map$, .x, .y, NO_INN; close; @@ -35,4 +47,8 @@ OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-1/_savepoints.txt b/npc/001-2-1/_savepoints.txt index 4b3f1497..fa9c1ecc 100644 --- a/npc/001-2-1/_savepoints.txt +++ b/npc/001-2-1/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-1: Noble House saves -001-2-1,27,30,0 script #save_001-2-1_27_30 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-1,27,30,0 script #save_001-2-1_27_30 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-10/_savepoints.txt b/npc/001-2-10/_savepoints.txt index c98aa450..91b14f37 100644 --- a/npc/001-2-10/_savepoints.txt +++ b/npc/001-2-10/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-10: Noble House saves -001-2-10,26,30,0 script #save_001-2-10_26_30 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-10,26,30,0 script #save_001-2-10_26_30 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-11/_savepoints.txt b/npc/001-2-11/_savepoints.txt index fc0b47fb..00b8c05c 100644 --- a/npc/001-2-11/_savepoints.txt +++ b/npc/001-2-11/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-11: Noble House saves -001-2-11,26,31,0 script #save_001-2-11_26_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-11,26,31,0 script #save_001-2-11_26_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-13/_savepoints.txt b/npc/001-2-13/_savepoints.txt index dd210526..fd073ac6 100644 --- a/npc/001-2-13/_savepoints.txt +++ b/npc/001-2-13/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-13: First Floor saves -001-2-13,41,31,0 script #save_001-2-13_41_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-13,41,31,0 script #save_001-2-13_41_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-15/_savepoints.txt b/npc/001-2-15/_savepoints.txt index c8b82561..cd164505 100644 --- a/npc/001-2-15/_savepoints.txt +++ b/npc/001-2-15/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-15: Noble House saves -001-2-15,27,41,0 script #save_001-2-15_27_41 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-15,27,41,0 script #save_001-2-15_27_41 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-22/_savepoints.txt b/npc/001-2-22/_savepoints.txt index a0bd9f89..b4a5c1ba 100644 --- a/npc/001-2-22/_savepoints.txt +++ b/npc/001-2-22/_savepoints.txt @@ -1,47 +1,67 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-22: Second Deck saves -001-2-22,40,37,0 script #save_001-2-22_40_37 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-22,40,37,0 script #save_001-2-22_40_37 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-22,46,37,0 script #save_001-2-22_46_37 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-22,46,37,0 script #save_001-2-22_46_37 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-22,55,40,0 script #save_001-2-22_55_40 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-22,55,40,0 script #save_001-2-22_55_40 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-22,50,38,0 script #save_001-2-22_50_38 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-22,50,38,0 script #save_001-2-22_50_38 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-22,53,38,0 script #save_001-2-22_53_38 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-22,53,38,0 script #save_001-2-22_53_38 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-29/_import.txt b/npc/001-2-29/_import.txt index 39bb3601..ebcab6d1 100644 --- a/npc/001-2-29/_import.txt +++ b/npc/001-2-29/_import.txt @@ -1,5 +1,5 @@ // Map 001-2-29: First Floor // This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/001-2-29/_savepoints.txt", "npc/001-2-29/_warps.txt", "npc/001-2-29/mapflags.txt", -"npc/001-2-29/savepoint.txt", diff --git a/npc/001-2-29/_savepoints.txt b/npc/001-2-29/_savepoints.txt new file mode 100644 index 00000000..c2176e4c --- /dev/null +++ b/npc/001-2-29/_savepoints.txt @@ -0,0 +1,54 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 001-2-29: First Floor saves +001-2-29,29,28,0 script #save_001-2-29_29_28 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, REDPLUSH_INN; + close; + +OnInit: + .distance = 2; + .sex = G_OTHER; + end; + +OnTouch: + bedTouch(); + end; +} +001-2-29,29,35,0 script #save_001-2-29_29_35 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, REDPLUSH_INN; + close; + +OnInit: + .distance = 2; + .sex = G_OTHER; + end; + +OnTouch: + bedTouch(); + end; +} +001-2-29,29,42,0 script #save_001-2-29_29_42 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, REDPLUSH_INN; + close; + +OnInit: + .distance = 2; + .sex = G_OTHER; + end; + +OnTouch: + bedTouch(); + end; +} +001-2-29,29,49,0 script #save_001-2-29_29_49 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, REDPLUSH_INN; + close; + +OnInit: + .distance = 2; + .sex = G_OTHER; + end; + +OnTouch: + bedTouch(); + end; +} diff --git a/npc/001-2-29/savepoint.txt b/npc/001-2-29/savepoint.txt deleted file mode 100644 index 4694e31e..00000000 --- a/npc/001-2-29/savepoint.txt +++ /dev/null @@ -1,53 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Saves locations in 001-2-29 map. - -001-2-29,29,28,0 script #001-2-29-1 NPC_SAVE_POINT,0,0,{ - bedClic("001-2-29", 29, 28, REDPLUSH_INN); - -OnInit: - .distance = 2; - end; - -OnTouch: - bedTouch; - -OnPCDieEvent: - PC_IS_DEAD = 1; - close; -} - -001-2-29,29,35,0 script #001-2-29-2 NPC_SAVE_POINT,0,0,{ - bedClic("001-2-29", 29, 35, REDPLUSH_INN); - -OnInit: - .distance = 2; - end; - -OnTouch: - bedTouch; -} - -001-2-29,29,42,0 script #001-2-29-3 NPC_SAVE_POINT,0,0,{ - bedClic("001-2-29", 29, 42, REDPLUSH_INN); - -OnInit: - .distance = 2; - end; - -OnTouch: - bedTouch; -} - -001-2-29,29,49,0 script #001-2-29-4 NPC_SAVE_POINT,0,0,{ - bedClic("001-2-29", 29, 49, REDPLUSH_INN); - -OnInit: - .distance = 2; - end; - -OnTouch: - bedTouch; -} diff --git a/npc/001-2-3/_savepoints.txt b/npc/001-2-3/_savepoints.txt index a3e08055..e835aaa1 100644 --- a/npc/001-2-3/_savepoints.txt +++ b/npc/001-2-3/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-3: First Floor saves -001-2-3,42,32,0 script #save_001-2-3_42_32 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-3,42,32,0 script #save_001-2-3_42_32 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-37/_savepoints.txt b/npc/001-2-37/_savepoints.txt index 2568b51b..cd68fab2 100644 --- a/npc/001-2-37/_savepoints.txt +++ b/npc/001-2-37/_savepoints.txt @@ -1,38 +1,54 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-37: unnamed saves -001-2-37,25,41,0 script #save_001-2-37_25_41 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-37,25,41,0 script #save_001-2-37_25_41 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-37,35,41,0 script #save_001-2-37_35_41 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-37,35,41,0 script #save_001-2-37_35_41 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-37,35,46,0 script #save_001-2-37_35_46 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-37,35,46,0 script #save_001-2-37_35_46 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-37,25,46,0 script #save_001-2-37_25_46 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-37,25,46,0 script #save_001-2-37_25_46 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/001-2-38/_savepoints.txt b/npc/001-2-38/_savepoints.txt index 8b89b8e5..d4e4db2c 100644 --- a/npc/001-2-38/_savepoints.txt +++ b/npc/001-2-38/_savepoints.txt @@ -1,38 +1,54 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 001-2-38: unnamed saves -001-2-38,25,41,0 script #save_001-2-38_25_41 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-38,25,41,0 script #save_001-2-38_25_41 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-38,35,41,0 script #save_001-2-38_35_41 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-38,35,41,0 script #save_001-2-38_35_41 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-38,35,46,0 script #save_001-2-38_35_46 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-38,35,46,0 script #save_001-2-38_35_46 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -001-2-38,25,46,0 script #save_001-2-38_25_46 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +001-2-38,25,46,0 script #save_001-2-38_25_46 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-0/_savepoints.txt b/npc/008-2-0/_savepoints.txt index 6da9c7b3..2c108fa8 100644 --- a/npc/008-2-0/_savepoints.txt +++ b/npc/008-2-0/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-0: Chez Celestia saves -008-2-0,38,27,0 script #save_008-2-0_38_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-0,38,27,0 script #save_008-2-0_38_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-1/_savepoints.txt b/npc/008-2-1/_savepoints.txt index 66730940..19f0f307 100644 --- a/npc/008-2-1/_savepoints.txt +++ b/npc/008-2-1/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-1: Merchant Guild saves -008-2-1,42,27,0 script #save_008-2-1_42_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-1,42,27,0 script #save_008-2-1_42_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-11/_savepoints.txt b/npc/008-2-11/_savepoints.txt index cccf4138..db593899 100644 --- a/npc/008-2-11/_savepoints.txt +++ b/npc/008-2-11/_savepoints.txt @@ -1,20 +1,28 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-11: Hurnscald City Hall saves -008-2-11,26,27,0 script #save_008-2-11_26_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-11,26,27,0 script #save_008-2-11_26_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-11,45,27,0 script #save_008-2-11_45_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-11,45,27,0 script #save_008-2-11_45_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-13/_savepoints.txt b/npc/008-2-13/_savepoints.txt index 5c8fc22d..b82ce152 100644 --- a/npc/008-2-13/_savepoints.txt +++ b/npc/008-2-13/_savepoints.txt @@ -1,38 +1,54 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-13: Hurnscald Clinic saves -008-2-13,29,27,0 script #save_008-2-13_29_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-13,29,27,0 script #save_008-2-13_29_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-13,32,27,0 script #save_008-2-13_32_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-13,32,27,0 script #save_008-2-13_32_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-13,29,31,0 script #save_008-2-13_29_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-13,29,31,0 script #save_008-2-13_29_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-13,32,31,0 script #save_008-2-13_32_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-13,32,31,0 script #save_008-2-13_32_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-14/_savepoints.txt b/npc/008-2-14/_savepoints.txt index cbb6fd12..9eb50488 100644 --- a/npc/008-2-14/_savepoints.txt +++ b/npc/008-2-14/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-14: Hurnscald Clinic saves -008-2-14,31,27,0 script #save_008-2-14_31_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-14,31,27,0 script #save_008-2-14_31_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-2/melania.txt b/npc/008-2-2/melania.txt index 9d9473f2..bfd1e8be 100644 --- a/npc/008-2-2/melania.txt +++ b/npc/008-2-2/melania.txt @@ -3,19 +3,106 @@ // Micksha // Description: // Receptionist of Rusty Pick. -// THIS IS A PLACEHOLDER! 008-2-2,28,27,0 script Melania NPC_AIRLIA,{ + function accepted_room; + function register_room; + function lodge_check; + speech lg("Hello Sir.","Hello Miss."), - l("Welcome to the Rusty Pick. Sorry, we have no room left today."), + l("Welcome to the Rusty Pick."), l("One advice: Don't take the things those drinkers say too serious. They are sitting here and drinking all day."), - l("I wish you a beautiful day."); + l("How can we serve you today?"); + + do + { + select + l("Could I lodge here for a while?"), + l("Nothing."); + mes ""; + + if (@menu == 1) + lodge_check(); + } while (@menu != 2); + mesn; + l("I wish you a beautiful day."); close; + // Check if you are booked here or somewhere else + function lodge_check { + if (INN_REGISTER == NO_INN) + { + register_room(); + } + else if (INN_REGISTER == .inn) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + lg("You are already registered here."), + l("Go on the upper level if you want to change your room or to use it."); + } + else + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + lg("If you are registered somewhere else you will loose that reservation."), + l("Do you still want to lodge here?"); + + if (askyesno() == ASK_YES) + { + register_room(); + } + } + return; + } + + // Find out prices + function register_room { + .@price = lognbaselvl(100, 10); + .@price = .@price*12/10; // Make the price 20% higher by WildX request + + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("That will be @@ E to set your respawn point", .@price), + l("This will remain your respawn point until set elsewhere."), + l("Is that okay?"); + + if (askyesno() == ASK_YES) + { + accepted_room(.@price); + } + else + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Come back later if you changed your mind!"); + } + + return; + } + + // Book a room + function accepted_room { + .@price = getarg(0); + if (Zeny < .@price) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("You don't have enough money, bring @@ E.", .@price); + } + else + { + emotion E_HAPPY; + Zeny = Zeny - .@price; + INN_REGISTER = .inn; + PC_IS_DEAD = false; + + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + lg("I registered you on a random bed on the upper level."), + l("You can go upstairs and choose a different room if you want."); + savepoint "008-2-3", any(49, 53, 57), any(31, 35); + } + } + OnInit: .sex = G_FEMALE; .distance = 2; + .inn=RUSTYPICK_INN; end; } diff --git a/npc/008-2-22/_savepoints.txt b/npc/008-2-22/_savepoints.txt index 999032f6..1cc5c220 100644 --- a/npc/008-2-22/_savepoints.txt +++ b/npc/008-2-22/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-22: Mages Hut saves -008-2-22,26,31,0 script #save_008-2-22_26_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-22,26,31,0 script #save_008-2-22_26_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-3/_savepoints.txt b/npc/008-2-3/_savepoints.txt index ab7e555d..4e70dc2e 100644 --- a/npc/008-2-3/_savepoints.txt +++ b/npc/008-2-3/_savepoints.txt @@ -1,74 +1,106 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-3: The Rusty Pick saves -008-2-3,61,31,0 script #save_008-2-3_61_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,61,31,0 script #save_008-2-3_61_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,60,35,0 script #save_008-2-3_60_35 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,60,35,0 script #save_008-2-3_60_35 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,57,31,0 script #save_008-2-3_57_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,57,31,0 script #save_008-2-3_57_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,57,35,0 script #save_008-2-3_57_35 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,57,35,0 script #save_008-2-3_57_35 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,53,35,0 script #save_008-2-3_53_35 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,53,35,0 script #save_008-2-3_53_35 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,53,31,0 script #save_008-2-3_53_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,53,31,0 script #save_008-2-3_53_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,49,31,0 script #save_008-2-3_49_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,49,31,0 script #save_008-2-3_49_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } -008-2-3,49,35,0 script #save_008-2-3_49_35 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-3,49,35,0 script #save_008-2-3_49_35 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, RUSTYPICK_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-4/_savepoints.txt b/npc/008-2-4/_savepoints.txt index 103787d1..0129971e 100644 --- a/npc/008-2-4/_savepoints.txt +++ b/npc/008-2-4/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-4: The Rusty Pick saves -008-2-4,25,27,0 script #save_008-2-4_25_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-4,25,27,0 script #save_008-2-4_25_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-7/_savepoints.txt b/npc/008-2-7/_savepoints.txt index f3faa80f..ab8ddbb4 100644 --- a/npc/008-2-7/_savepoints.txt +++ b/npc/008-2-7/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-7: Hurnscald Apothecary saves -008-2-7,25,27,0 script #save_008-2-7_25_27 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-7,25,27,0 script #save_008-2-7_25_27 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/008-2-9/_savepoints.txt b/npc/008-2-9/_savepoints.txt index e2aae529..b606d73c 100644 --- a/npc/008-2-9/_savepoints.txt +++ b/npc/008-2-9/_savepoints.txt @@ -1,11 +1,15 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 008-2-9: Jack's Abode saves -008-2-9,26,31,0 script #save_008-2-9_26_31 NPC_SAVE_POINT,{ - savepointparticle .map$, .x, .y, CURRENT_INN; +008-2-9,26,31,0 script #save_008-2-9_26_31 NPC_SAVE_POINT,0,0,{ + savepointparticle .map$, .x, .y, NO_INN; close; OnInit: .distance = 2; .sex = G_OTHER; end; + +OnTouch: + bedTouch(); + end; } diff --git a/npc/functions/beds.txt b/npc/functions/beds.txt index 9c871a44..a4301891 100644 --- a/npc/functions/beds.txt +++ b/npc/functions/beds.txt @@ -2,14 +2,16 @@ // Authors: // 4144 // Reid +// Jesusalva // Description: // Beds utility functions +// bedTouch({inn}) function script bedTouch { if (PC_IS_DEAD) { PC_IS_DEAD = 0; - if (INN_REGISTER == REDPLUSH_INN) + if (INN_REGISTER != NO_INN) { INN_REGISTER = NO_INN; percentheal 100,100; @@ -18,13 +20,3 @@ function script bedTouch { close; } -function script bedClic { - narrator S_LAST_NEXT, l("Do you want to use this place as save point?"); - - if (askyesno() == ASK_YES) - { - savepointparticle getarg(0, ""), getarg(1, -1), getarg(2, -1), getarg(3, NO_INN); - } - closeclientdialog; - close; -} diff --git a/npc/functions/savepoint.txt b/npc/functions/savepoint.txt index 0e0b6f90..46ef73e8 100644 --- a/npc/functions/savepoint.txt +++ b/npc/functions/savepoint.txt @@ -34,12 +34,21 @@ function script savepointparticle { .@i = 0; } - message strcharinfo(0), l("Your position has been saved."); - - if (getarg(.@i, NO_INN) == NO_INN) + // If this will override your current inn, a confirmation is required. + // Unless you already don't have a booked place, then, confirmation is never shown. + if (getarg(.@i, NO_INN) != INN_REGISTER && INN_REGISTER != NO_INN) { + mesc l("Do you want to use this place as save point?"); + mesc b(l("Warning: ")) + l("Previous Inn reservation will be lost!"); + + if (askyesno() != ASK_YES) + close; + INN_REGISTER = NO_INN; } + + message strcharinfo(0), l("Your position has been saved."); + savepoint .@mapname$, .@mapx, .@mapy; specialeffect(4, SELF, getcharid(3)); @lastSave = gettimetick(2); -- cgit v1.2.3-70-g09d2 From 79836e447ddcdbe7d3ada0f836bce61920195019 Mon Sep 17 00:00:00 2001 From: Micksha Date: Sun, 14 Apr 2019 02:51:10 +0000 Subject: initial commit for bandit mobs and equipment --- db/re/item_db.conf | 113 +++++++++++++++++++++++++++++++++++++++- db/re/mob_db.conf | 134 ++++++++++++++++++++++++++++++++++++++++++++++++ db/re/mob_skill_db.conf | 81 +++++++++++++++++++++++++++++ 3 files changed, 327 insertions(+), 1 deletion(-) diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 753dc25a..96293603 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -2734,6 +2734,18 @@ item_db: ( Delay: 0 Sprite: 0 }, +{ + Id: 756 + AegisName: "CoinBag" + Name: "Coin Bag" + Type: "IT_ETC" + Buy: 10000 + Sell: 500 + Weight: 250 + Refine: false + ViewSprite: 756 + BindOnEquip: false +}, { Id: 800 AegisName: "DiamondShard" @@ -3211,7 +3223,25 @@ item_db: ( Delay: 0 Sprite: 0 }, - +{ + Id: 1803 + AegisName: "BanditBoots" + Name: "Bandit Boots" + Type: "IT_ARMOR" + Buy: 15000 + Sell: 900 + Weight:60 + Def: 27 + Loc: "EQP_SHOES" + WeaponLv: 0 + EquipLv: 20 + Refine: false + ViewSprite: 1803 + BindOnEquip: false + BuyingStore: true + Delay: 0 + Sprite: 0 +}, { Id: 2000 AegisName: "Armbands" @@ -3343,6 +3373,28 @@ item_db: ( Delay: 0 Sprite: 0 }, +{ + Id: 2005 + AegisName: "BanditGloves" + Name: "Bandit Gloves" + Type: "IT_ARMOR" + Buy: 8500 + Sell: 650 + Weight: 85 + Atk: 0 + Matk: 0 + Def: 20 + Range: 0 + Slots: 0 + Loc: "EQP_GARMENT" + WeaponLv: 0 + EquipLv: 25 + Refine: false + ViewSprite: 2005 + BindOnEquip: false + Delay: 0 + Sprite: 0 +}, { Id: 2200 AegisName: "CreasedShorts" @@ -3501,6 +3553,28 @@ item_db: ( Delay: 0 Sprite: 0 }, +{ + Id: 2206 + AegisName: "BanditTrousers" + Name: "Bandit Trousers" + Type: "IT_ARMOR" + Buy: 9500 + Sell: 1100 + Weight: 110 + Atk: 0 + Matk: 0 + Def: 105 + Range: 0 + Slots: 0 + Loc: "EQP_HEAD_LOW" + WeaponLv: 0 + EquipLv: 25 + Refine: false + ViewSprite: 2206 + BindOnEquip: false + Delay: 0 + Sprite: 0 +}, { Id: 2700 AegisName: "Barrel" @@ -3936,6 +4010,28 @@ item_db: ( Delay: 0 Sprite: 0 }, +{ + Id: 2916 + AegisName: "BanditHood" + Name: "Bandit Hood" + Type: "IT_ARMOR" + Buy: 9560 + Sell: 780 + Weight: 30 + Atk: 0 + Matk: 0 + Def: 15 + Range: 0 + Slots: 0 + Loc: "EQP_HEAD_TOP" + WeaponLv: 0 + EquipLv: 20 + Refine: false + ViewSprite: 2916 + BindOnEquip: false + Delay: 0 + Sprite: 0 +}, { Id: 3200 AegisName: "Shemagh" @@ -3951,6 +4047,21 @@ item_db: ( ViewSprite: 3200 BindOnEquip: false }, +{ + Id: 3201 + AegisName: "BanditShawl" + Name: "Bandit Shawl" + Type: "IT_ARMOR" + Buy: 6500 + Sell: 450 + Weight: 45 + Def: 75 + Loc: "EQP_ACC_R" + EquipLv: 30 + Refine: false + ViewSprite: 3201 + BindOnEquip: false +}, { Id: 3500 AegisName: "Knife" diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index 85b946fe..9b70f689 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -2588,6 +2588,140 @@ mob_db: ( ARedRose: 50 } }, +{ + Id: 1063 + SpriteName: "Bandit" + Name: "Bandit" + Lv: 26 + Hp: 4211 + Sp: 0 + Exp: 44 + JExp: 8 + AttackRange: 1 + Attack: [168, 180] + Def: 45 + Mdef: 20 + Stats: { + Str: 11 + Agi: 20 + Vit: 24 + Int: 10 + Dex: 33 + Luk: 11 + } + ViewRange: 9 + ChaseRange: 12 + Race: 2 + Element: (7, 1) + Mode: { + Aggressive: true + CanMove: true + CanAttack: true + CastSensorChase: true + ChangeChase: true + } + MoveSpeed: 440 + AttackDelay: 1260 + AttackMotion: 672 + DamageMotion: 900 + Drops: { + CoinBag: 500 + Dagger: 90 + BanditTrousers: 1 + BanditHood: 1 + BanditBoots: 2 + } +}, +{ + Id: 1064 + SpriteName: "RobinBandit" + Name: "Robin Bandit" + Lv: 35 + Hp: 3788 + Sp: 0 + Exp: 129 + JExp: 12 + AttackRange: 5 + Attack: [149, 152] + Def: 28 + Mdef: 22 + Stats: { + Str: 15 + Agi: 25 + Vit: 28 + Int: 21 + Dex: 38 + Luk: 24 + } + ViewRange: 8 + ChaseRange: 12 + Race: 2 + Element: (7, 1) + Mode: { + Aggressive: true + CanMove: true + CanAttack: true + CastSensorChase: true + ChangeChase: true + } + MoveSpeed: 420 + AttackDelay: 920 + AttackMotion: 672 + DamageMotion: 900 + Drops: { + CoinBag: 500 + Dagger: 90 + BanditTrousers: 1 + BanditHood: 1 + BanditGloves: 1 + } +}, +{ + Id: 1065 + SpriteName: "BanditLord" + Name: "Bandit Lord" + Lv: 55 + Hp: 12900 + Sp: 0 + Exp: 250 + JExp: 60 + AttackRange: 5 + Attack: [710, 880] + Def: 25 + Mdef: 20 + Stats: { + Str: 28 + Agi: 40 + Vit: 53 + Int: 31 + Dex: 55 + Luk: 28 + } + ViewRange: 12 + ChaseRange: 16 + Race: 2 + Element: (7, 1) + Mode: { + Aggressive: true + CanMove: true + CanAttack: true + CastSensorChase: true + ChangeChase: true + Boss: true + Angry: true + } + MoveSpeed: 640 + AttackDelay: 2400 + AttackMotion: 672 + DamageMotion: 900 + Drops: { + CoinBag: 750 + Dagger: 150 + BanditShawl: 10 + BanditTrousers: 5 + BanditHood: 5 + } +}, { Id: 1100 SpriteName: "PoisonSkull" diff --git a/db/re/mob_skill_db.conf b/db/re/mob_skill_db.conf index 8e395099..12c0cc33 100644 --- a/db/re/mob_skill_db.conf +++ b/db/re/mob_skill_db.conf @@ -65,6 +65,8 @@ mob_skill_db:( CastCondition: "MSC_ALWAYS" } } + + /**********************************************************************/ Blub: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" @@ -77,6 +79,8 @@ mob_skill_db:( val0: 1007 } } + + /**********************************************************************/ Crocotree: { NPC_REBIRTH: { SkillState: "MSS_DEAD" @@ -98,6 +102,8 @@ mob_skill_db:( val0: 1014 } } + + /**********************************************************************/ Frostiana: { NPC_POISON: { SkillState: "MSS_BERSERK" @@ -109,6 +115,8 @@ mob_skill_db:( CastCondition: "MSC_ALWAYS" } } + + /**********************************************************************/ Pikpik: { NPC_SELFDESTRUCTION: { SkillState: "MSS_BERSERK" @@ -127,6 +135,8 @@ mob_skill_db:( CastCondition: "MSC_ALWAYS" } } + + /**********************************************************************/ CroconutMob: { NPC_SUICIDE: { SkillState: "MSS_ANY" @@ -137,6 +147,8 @@ mob_skill_db:( CastCondition: "MSC_ALWAYS" } } + + /**********************************************************************/ Tipiu: { NPC_SUMMONSLAVE: { SkillState: "MSS_IDLE" @@ -169,6 +181,8 @@ mob_skill_db:( val0: 1003 } } + + /**********************************************************************/ Tipiou: { NPC_SUMMONSLAVE: { SkillState: "MSS_IDLE" @@ -201,6 +215,8 @@ mob_skill_db:( val0: 1002 } } + + /**********************************************************************/ slime: { NPC_SUMMONMONSTER: { SkillState: "MSS_DEAD" @@ -212,6 +228,8 @@ mob_skill_db:( val0: 1025 } } + + /**********************************************************************/ Beehive: { NPC_SUMMONMONSTER: { SkillState: "MSS_DEAD" @@ -223,6 +241,8 @@ mob_skill_db:( val0: 1058 } } + + /**********************************************************************/ PoisonSkull: { NPC_POISON: { SkillState: "MSS_BERSERK" @@ -234,6 +254,67 @@ mob_skill_db:( CastCondition: "MSC_ALWAYS" } } + + /**********************************************************************/ + BanditLord: { + NPC_SUMMONSLAVE: { + SkillState: "MSS_ANYTARGET" + SkillLevel: 1 + Rate: 10000 + CastTime: 1000 + Delay: 270000 + Cancelable: false + SkillTarget: "MST_SELF" + CastCondition: "MSC_MYHPLTMAXRATE" + ConditionData: 70 + val0: 1024 + } + NPC_SUMMONSLAVE: { + SkillState: "MSS_ANYTARGET" + SkillLevel: 2 + Rate: 10000 + CastTime: 1000 + Delay: 270000 + Cancelable: false + SkillTarget: "MST_SELF" + CastCondition: "MSC_MYHPLTMAXRATE" + ConditionData: 50 + val0: 1024 + } + NPC_SUMMONSLAVE: { + SkillState: "MSS_ANYTARGET" + SkillLevel: 2 + Rate: 10000 + CastTime: 2000 + Delay: 90000 + Cancelable: false + SkillTarget: "MST_SELF" + CastCondition: "MSC_LONGRANGEATTACKED" + val0: 1153 + } + NPC_SUMMONSLAVE: { + SkillState: "MSS_ANYTARGET" + SkillLevel: 3 + Rate: 10000 + CastTime: 1000 + Delay: 270000 + Cancelable: false + SkillTarget: "MST_SELF" + CastCondition: "MSC_MYHPLTMAXRATE" + ConditionData: 25 + val0: 1024 + } + NPC_POISON: { + SkillState: "MSS_BERSERK" + SkillLevel: 20 + Rate: 7500 + Delay: 20000 + Cancelable: true + SkillTarget: "MST_TARGET" + CastCondition: "MSC_MYHPLTMAXRATE" + ConditionData: 7 + } + } } ) -- cgit v1.2.3-70-g09d2 From 2c225255950a09ee5641913bb6022e8881c1c679 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Tue, 16 Apr 2019 18:32:08 +0000 Subject: Package Legion for travel. Get your act straight, Legion! You need to release the player from Artis! > Q'Anon dialog, close evol-all#25 until joining a faction/clan/guild gets available. > More placeholders > Sophialla will call player telling them to talk to her so we can advance. Requires PvE room - it needs to be mapped so call @Micksha about that. Requires !165 submitted and working, with Lozerk's approval. --- conf/map/maps.conf | 1 + db/map_index.txt | 77 +++++++++++---------- db/quest_db.conf | 4 ++ maps/re/001-1.mcache | Bin 3191 -> 3198 bytes maps/re/001-3-1.mcache | Bin 158 -> 159 bytes maps/re/001-3-2.mcache | Bin 0 -> 347 bytes maps/re/008-1.mcache | Bin 6880 -> 6897 bytes maps/re/008-3-0.mcache | Bin 2584 -> 2603 bytes npc/001-1/doors.txt | 4 ++ npc/001-1/flags.txt | 18 ++--- npc/001-1/koga.txt | 13 +++- npc/001-1/rowboat.txt | 13 +++- npc/001-1/rowboathelper.txt | 5 +- npc/001-1/sophialla.txt | 44 ++++++++++++ npc/001-2-11/mona.txt | 4 +- npc/001-2-32/serena.txt | 7 +- npc/001-2-39/qanon.txt | 74 +++++++++++++++++++- npc/001-2-40/trozz.txt | 12 ++-- npc/001-3-0/_warps.txt | 2 +- npc/001-3-1/_warps.txt | 1 + npc/001-3-2/_import.txt | 3 + npc/001-3-2/_warps.txt | 3 + npc/008-1-1/_mobs.txt | 52 +++----------- npc/008-1-1/koga.txt | 11 ++- npc/008-2-2/melania.txt | 2 +- npc/008-2-7/_import.txt | 2 + npc/_import.txt | 1 + npc/commands/debug-quest.txt | 3 +- .../quest-debug/033-Artis_Legion_Progress.txt | 3 +- .../quest-debug/042-General_Brotherhood.txt | 27 ++++++++ npc/scripts.conf | 1 + 31 files changed, 266 insertions(+), 121 deletions(-) create mode 100644 maps/re/001-3-2.mcache create mode 100644 npc/001-3-2/_import.txt create mode 100644 npc/001-3-2/_warps.txt create mode 100644 npc/functions/quest-debug/042-General_Brotherhood.txt diff --git a/conf/map/maps.conf b/conf/map/maps.conf index 50edf2f0..1c8e62df 100644 --- a/conf/map/maps.conf +++ b/conf/map/maps.conf @@ -56,6 +56,7 @@ map_list: ( "001-2-9", "001-3-0", "001-3-1", + "001-3-2", "008-1-1", "008-1", "008-2-0", diff --git a/db/map_index.txt b/db/map_index.txt index 9885b94d..a0edf6c9 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -53,41 +53,42 @@ 001-2-9 53 001-3-0 54 001-3-1 55 -008-1-1 56 -008-1 57 -008-2-0 58 -008-2-1 59 -008-2-10 60 -008-2-11 61 -008-2-12 62 -008-2-13 63 -008-2-14 64 -008-2-15 65 -008-2-16 66 -008-2-17 67 -008-2-18 68 -008-2-19 69 -008-2-2 70 -008-2-20 71 -008-2-21 72 -008-2-22 73 -008-2-23 74 -008-2-24 75 -008-2-25 76 -008-2-26 77 -008-2-27 78 -008-2-28 79 -008-2-29 80 -008-2-3 81 -008-2-30 82 -008-2-4 83 -008-2-5 84 -008-2-6 85 -008-2-7 86 -008-2-8 87 -008-2-9 88 -008-3-0 89 -008-3-1 90 -008-4-1 91 -test 92 -testbg 93 +001-3-2 56 +008-1-1 57 +008-1 58 +008-2-0 59 +008-2-1 60 +008-2-10 61 +008-2-11 62 +008-2-12 63 +008-2-13 64 +008-2-14 65 +008-2-15 66 +008-2-16 67 +008-2-17 68 +008-2-18 69 +008-2-19 70 +008-2-2 71 +008-2-20 72 +008-2-21 73 +008-2-22 74 +008-2-23 75 +008-2-24 76 +008-2-25 77 +008-2-26 78 +008-2-27 79 +008-2-28 80 +008-2-29 81 +008-2-3 82 +008-2-30 83 +008-2-4 84 +008-2-5 85 +008-2-6 86 +008-2-7 87 +008-2-8 88 +008-2-9 89 +008-3-0 90 +008-3-1 91 +008-4-1 92 +test 93 +testbg 94 diff --git a/db/quest_db.conf b/db/quest_db.conf index 2eef4e8d..9d87df84 100644 --- a/db/quest_db.conf +++ b/db/quest_db.conf @@ -185,6 +185,10 @@ quest_db: ( Id: 41 Name: "General_Cooking" }, +{ + Id: 42 + Name: "General_Brotherhood" +}, { Id: 1000 Name: "Test_testing1" diff --git a/maps/re/001-1.mcache b/maps/re/001-1.mcache index 7795236e..6ce64adc 100644 Binary files a/maps/re/001-1.mcache and b/maps/re/001-1.mcache differ diff --git a/maps/re/001-3-1.mcache b/maps/re/001-3-1.mcache index 1a2f1a6a..f8239cdc 100644 Binary files a/maps/re/001-3-1.mcache and b/maps/re/001-3-1.mcache differ diff --git a/maps/re/001-3-2.mcache b/maps/re/001-3-2.mcache new file mode 100644 index 00000000..a3747e0f Binary files /dev/null and b/maps/re/001-3-2.mcache differ diff --git a/maps/re/008-1.mcache b/maps/re/008-1.mcache index bd439b3c..6938421a 100644 Binary files a/maps/re/008-1.mcache and b/maps/re/008-1.mcache differ diff --git a/maps/re/008-3-0.mcache b/maps/re/008-3-0.mcache index 9e1e9179..5a291c6f 100644 Binary files a/maps/re/008-3-0.mcache and b/maps/re/008-3-0.mcache differ diff --git a/npc/001-1/doors.txt b/npc/001-1/doors.txt index 67936b4b..7cf4e132 100644 --- a/npc/001-1/doors.txt +++ b/npc/001-1/doors.txt @@ -32,11 +32,15 @@ OnUnTouch: OnTouch: .@enora = getq(ArtisQuests_Enora); + .@legion = getq(Artis_Legion_Progress); + .@brotherhood = getq(General_Brotherhood); if (.@enora < 11) { setfakecells 57, 41, 1; end; } + if (.@legion == 6 && !.@brotherhood) + addtimer 30, "Sophialla#001-1::OnLegionComplete"; setfakecells 57, 41, 0; doorTouch; diff --git a/npc/001-1/flags.txt b/npc/001-1/flags.txt index 10ebf3c4..5e70c25a 100644 --- a/npc/001-1/flags.txt +++ b/npc/001-1/flags.txt @@ -1,25 +1,17 @@ // Evol scripts. // Author: // Micksha +// Jesusalva // Description: // The flags supposed to mark Rowboat unmounting spots in Artis // THIS IS A PLACEHOLDER! 001-1,200,63,0 script Flag#1 NPC_FLAG_L,{ OnTouch: - narrator S_LAST_NEXT, - l("You see a suspicious greenish flag. It reminds you of something you seem to have forgotten."); -} - -001-1,27,101,0 script Flag#2 NPC_FLAG_R,{ - OnTouch: - narrator S_LAST_NEXT, - l("You see a suspicious greenish flag. It reminds you of something you seem to have forgotten."); -} - -001-1,68,139,0 script Flag#3 NPC_FLAG_R,{ - OnTouch: - narrator S_LAST_NEXT, + narrator l("You see a suspicious greenish flag. It reminds you of something you seem to have forgotten."); + close; } +001-1,27,101,0 duplicate(Flag#1) Flag#2 NPC_FLAG_R +001-1,68,139,0 duplicate(Flag#1) Flag#3 NPC_FLAG_R diff --git a/npc/001-1/koga.txt b/npc/001-1/koga.txt index da0ab629..2595be63 100644 --- a/npc/001-1/koga.txt +++ b/npc/001-1/koga.txt @@ -9,7 +9,18 @@ speech l("Ah, whom did you bring here?"), l("Isnt that the one Nard found on a float in the sea, with the sign of the Legion on his chest?"); - l("I hope they know what they are doing. So, come on board. I am looking forward to go back to Woodland, haven't been there for a while."); + next; + mesc l("Travel to woodlands?"); + if (askyesno() == ASK_YES) + { + speech + l("I hope they know what they are doing. So, come on board. I am looking forward to go back to Woodland, haven't been there for a while."); + next; + closeclientdialog; + setmount 0; + warp "008-1-1", 33, 63; + dispbottom l("After a tiring, yet fast, travel by Koga, you arrive at @@.", l("Woodlands")); + } close; diff --git a/npc/001-1/rowboat.txt b/npc/001-1/rowboat.txt index 3c8429a4..fa95f737 100644 --- a/npc/001-1/rowboat.txt +++ b/npc/001-1/rowboat.txt @@ -15,9 +15,16 @@ l("Do you have this commendatory letter?"); closeclientdialog(); if (askyesno() == 1) { - slide 204, 62; - movenpc("#Rowboat", 192, 25); - setmount 1; + if (getq(General_Brotherhood) >= 2) + { + slide 204, 62; + movenpc("#Rowboat", 192, 25); + setmount 1; + } + else + { + npctalk3 l("You're lying, aren't you? I heard nothing from you-know-whom!"); + } close; } diff --git a/npc/001-1/rowboathelper.txt b/npc/001-1/rowboathelper.txt index 675cfdaf..19c27be6 100644 --- a/npc/001-1/rowboathelper.txt +++ b/npc/001-1/rowboathelper.txt @@ -27,8 +27,9 @@ l("Maybe you should try this phrase?")); if (askyesno() == ASK_YES) { - narrator(S_LAST_BLANK_LINE | S_LAST_NEXT, - l("'Enter strange phrase here.'")); + mesn strcharinfo(0); + mesc l("Sagratha is great."); + next; speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("Hello, a rowboat is on his way to the beach. Please wait for a while for it to arrive."); diff --git a/npc/001-1/sophialla.txt b/npc/001-1/sophialla.txt index ad4d508a..ad0755ec 100644 --- a/npc/001-1/sophialla.txt +++ b/npc/001-1/sophialla.txt @@ -6,15 +6,59 @@ // THIS IS A PLACEHOLDER! 001-1,73,40,0 script Sophialla#001-1 NPC_SOPHIALLA,{ + .@q=getq(General_Brotherhood); + if (!.@q) + { + speech + l("Hello."), + l("Can't you see I am reading? Please go, please."); + close; + } speech l("Hello."), l("Can't you see I am reading? If you need something, tell me the secret password."); + // TODO: Use a token to know password or whatever + select + l("Sorry to disturb you."), + rif(getq(ArtisQuests_MonaDad) == 3, l("Sagratha is great.")), + l("I don't know the password"); + mes ""; + if (@menu == 2) + { + speech + l("If you visit the sewers again... You'll find secret passages..."), + l("Look for the hideout, but tell no one about this. Then, say the password again."); + compareandsetq General_Brotherhood, 1, 2; + } + + speech lg("If you don't know it, just go, please."); + close; +OnLegionComplete: + restorecam; + mesn "???"; + mesc l("A strange voice seems to be calling out your name."); + next; + // NOTE: Sophialla is more than 15 tiles of distance from player + // Server refuses to send client data about where she is and that makes + // setcamnpc fail. This is why I set .alwaysVisible attribute to true. + // Note: you can work around with coordinates, but she won't be drawn. + setcamnpc "Sophialla#001-1"; + mesn; + mesq l("Hey. ppst. I have something important to tell you."); + next; + mesn; + mesq l("I just can't remember what. But come talk to me later once devs becomes less lazy."); + setq General_Brotherhood, 1; + next; + restorecam; + closeclientdialog; close; OnInit: .sex = G_FEMALE; .distance = 2; + .alwaysVisible = true; end; } diff --git a/npc/001-2-11/mona.txt b/npc/001-2-11/mona.txt index 366b658c..abec0cee 100644 --- a/npc/001-2-11/mona.txt +++ b/npc/001-2-11/mona.txt @@ -97,7 +97,9 @@ } else if (getq(ArtisQuests_MonaDad) == 3) { - npctalkonce l("Thanks for finding daddy... I wish he spent more time with me..."); // TODO: Sophialla + npctalkonce any( + l("Thanks for finding daddy... I wish he spent more time with me..."), + l("Sagratha is great. Why the strange woman near the Legion building always say that to daddy...")); // TODO: Polish } else if (getq(ArtisQuests_MonaDad) == 2) { diff --git a/npc/001-2-32/serena.txt b/npc/001-2-32/serena.txt index 187a654c..fa650ef1 100644 --- a/npc/001-2-32/serena.txt +++ b/npc/001-2-32/serena.txt @@ -6,9 +6,7 @@ 001-2-32,27,27,0 script Serena NPC_SERENA,{ mesn; - mesq lg("Oh darling, what brought you here?"); - // ^^^^^^^ - // Expresses familiarity or elderliness in relation to PC. + mesq lg("Oh darling, what brought you here?"); // TRANSLATORS: Darling - Expresses familiarity or elderliness in relation to PC. // // [ PC]: I was just looking around. @@ -47,9 +45,6 @@ // Alt-Siege // The city is being attacked. Go help the warriors and town-guard. - goto L_Close; - -L_Close: close; OnInit: diff --git a/npc/001-2-39/qanon.txt b/npc/001-2-39/qanon.txt index 150362c9..3a917ba9 100644 --- a/npc/001-2-39/qanon.txt +++ b/npc/001-2-39/qanon.txt @@ -4,15 +4,85 @@ // Reid // Description: // Artis's Legion of Aemil leader. +// Variables: +// Artis_Legion_Progress +// Values: +// 5 Sent by Lozerk. +// 6 Train forever (Cannot resume legion, must see brotherhood first) +// Technically, Q'Anon wants to see if player will recover his memory. +// After all, player memories might have something important. +// 7 Arrived at Hurnscald (This means we can resume legion) 001-2-39,34,41,0 script Q'Anon NPC_Q_ANON,{ + function legionState; + function notaMember; + .@q=getq(Artis_Legion_Progress); mesn; mesq lg("It's been a while, girl!", "It's been a while, boy!"); + next; + if (.@q < 5) + notaMember(); - goto L_Close; + select + rif(.@q == 5, l("Lozerk told me to talk to you and join the legion.")), + l("Thanks, sir Q'Anon."); + mes ""; + switch (@menu) + { + case 1: + legionState(); + break; + case 2: + mesn; + mesq lg("Make me proud, girl.", "Make me proud, boy."); + break; + } + close; -L_Close: +function notaMember { + mesn; + mesq col(l("*ahem*"), 9) + " " + l("Heh, did you saw me at the port? No?"); + next; + mesn; + mesq l("This is how good we Legion Members are. I was informed of your arrival way before you left Drasil Island."); + next; + mesn; + mesq l("I usually would not care, but it is not every day a complete stranger arrives at Artis."); + next; + mesn; + mesq l("You're welcome to stay here as long as you wish. Just don't do anything stupid, like a riot, for example."); close; + return; +} + +function legionState { + mesn; + mesq l("Oh? And do you think you have what it takes to be a proud Legion Member?"); + next; + mesn; + mesq lg("Listen, kid. Being a legion member is not a joke."); + next; + mesn; + mesq l("Hmm, why don't you go train a little more? We have several training rooms here."); + next; + mesn; + mesq l("Yes, I am authorizing you to use them as you deem fit, until you get stronger."); + next; + mesn; + mesq l("Also, build a reputation with the Legion. Talk to everyone. Help everyone. Prove me your worth!"); + next; + mesn; + mesq l("Only after you prove yourself, you may join our ranks as a proud member! Hahah!"); + setq Artis_Legion_Progress, 6; + // So, we probably should use Clan System for the major guilds. + // I guess major guilds are: Legion, Brotherhood + // minor guilds: Merchants, Thieves and Mages. + + // It would be the commands below: + // join_clan(CLAN_LEGION); + // clan_leave(); + return; +} OnInit: .sex = G_MALE; diff --git a/npc/001-2-40/trozz.txt b/npc/001-2-40/trozz.txt index df76c26f..b695f1bc 100644 --- a/npc/001-2-40/trozz.txt +++ b/npc/001-2-40/trozz.txt @@ -6,11 +6,13 @@ 001-2-40,36,46,0 script Trozz#001-2-40 NPC_HUMAN_MALE_CHIEF_ARTIS_LEGION,{ mesn; - mesq l("Hi."); - - goto L_Close; - -L_Close: + mesq l("Hi. I am Trozz, and I am the chief of legion training in Artis."); + next; + mesn; + mesq l("If you want to challenge someone for a friendly match, you are at the right place."); + next; + mesn; + mesq l("But if you need to deal with more burocratic stuff, go talk to Q'Anon. He is the boss here."); close; OnInit: diff --git a/npc/001-3-0/_warps.txt b/npc/001-3-0/_warps.txt index 65b56ff5..d192e4ef 100644 --- a/npc/001-3-0/_warps.txt +++ b/npc/001-3-0/_warps.txt @@ -3,6 +3,6 @@ 001-3-0,196,35,0 warp #001-3-0_196_35 0,0,001-1,197,35 001-3-0,172,41,0 warp #001-3-0_172_41 0,0,001-3-1,34,58 001-3-0,162,40,0 warp #001-3-0_162_40 0,0,001-3-1,23,57 -001-3-0,198,61,0 warp #001-3-0_198_61 0,0,001-1,199,61 +001-3-0,198,60,0 warp #001-3-0_198_60 0,0,001-1,199,61 001-3-0,152,55,0 warp #001-3-0_152_55 0,0,001-1,152,51 001-3-0,85,130,0 warp #001-3-0_85_130 0,0,001-1,86,130 diff --git a/npc/001-3-1/_warps.txt b/npc/001-3-1/_warps.txt index f0c3d747..4f79c590 100644 --- a/npc/001-3-1/_warps.txt +++ b/npc/001-3-1/_warps.txt @@ -2,3 +2,4 @@ // Map 001-3-1: Rivercave warps 001-3-1,24,58,0 warp #001-3-1_24_58 1,0,001-3-0,162,41 001-3-1,35,59,0 warp #001-3-1_35_59 1,0,001-3-0,172,42 +001-3-1,30,19,0 warp #001-3-1_30_19 0,0,001-3-2,30,116 diff --git a/npc/001-3-2/_import.txt b/npc/001-3-2/_import.txt new file mode 100644 index 00000000..d427b6ed --- /dev/null +++ b/npc/001-3-2/_import.txt @@ -0,0 +1,3 @@ +// Map 001-3-2: Hideout +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/001-3-2/_warps.txt", diff --git a/npc/001-3-2/_warps.txt b/npc/001-3-2/_warps.txt new file mode 100644 index 00000000..6b35b231 --- /dev/null +++ b/npc/001-3-2/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 001-3-2: Hideout warps +001-3-2,30,117,0 warp #001-3-2_30_117 0,0,001-3-1,30,20 diff --git a/npc/008-1-1/_mobs.txt b/npc/008-1-1/_mobs.txt index a34ccc1c..4bb14ace 100644 --- a/npc/008-1-1/_mobs.txt +++ b/npc/008-1-1/_mobs.txt @@ -20,47 +20,11 @@ 008-1-1,68,29,7,7 monster Mouboo 1023,3,30000,60000 008-1-1,126,45,0,0 monster Beehive 1056,1,30000,100000 008-1-1,121,45,0,0 monster Beehive 1056,1,30000,100000 -008-1-1,94,41,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,94,38,0,0 monster Blue Rose 1061,1,20000,15000 -008-1-1,94,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,93,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,93,39,0,0 monster Blue Rose 1061,1,20000,15000 -008-1-1,94,39,0,0 monster Blue Rose 1061,1,20000,15000 -008-1-1,95,39,0,0 monster Blue Rose 1061,1,20000,15000 -008-1-1,94,40,0,0 monster Blue Rose 1061,1,20000,15000 -008-1-1,93,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,94,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,94,43,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,95,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,96,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,96,41,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,97,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,97,43,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,98,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,99,42,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,99,41,0,0 monster Yellow Tulip 1059,1,20000,15000 -008-1-1,94,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,94,46,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,95,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,95,44,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,96,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,97,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,97,46,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,97,44,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,98,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,99,45,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,98,46,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,95,46,0,0 monster Red Rose 1062,1,20000,15000 -008-1-1,93,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,94,47,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,95,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,96,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,96,47,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,97,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,98,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,98,47,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,99,48,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,98,49,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,97,49,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,95,49,0,0 monster Yellow Rose 1060,1,20000,15000 -008-1-1,94,49,0,0 monster Yellow Rose 1060,1,20000,15000 +008-1-1,94,39,0,0 monster Blue Rose 1061,1,250000,100000 +008-1-1,98,42,0,0 monster Yellow Tulip 1059,1,180000,85000 +008-1-1,95,45,0,0 monster Red Rose 1062,1,210000,95000 +008-1-1,98,48,0,0 monster Yellow Rose 1060,1,195000,65000 +008-1-1,95,43,0,0 monster Yellow Tulip 1059,1,180000,85000 +008-1-1,97,46,0,0 monster Red Rose 1062,1,210000,95000 +008-1-1,96,49,0,0 monster Yellow Rose 1060,1,195000,65000 +008-1-1,93,48,0,0 monster Yellow Rose 1060,1,195000,65000 diff --git a/npc/008-1-1/koga.txt b/npc/008-1-1/koga.txt index f32e953c..e0a7c2b8 100644 --- a/npc/008-1-1/koga.txt +++ b/npc/008-1-1/koga.txt @@ -9,8 +9,15 @@ speech l("So, finally, we are here."), l("Do you want to go back to Artis? You really should be afraid of the Legion there, now that you have been here in Woodland. They somehow smell the odor of the Brotherhood."); - l("Better you stay here for a while. Come back when you are stronger."); - + next; + mesc l("Return to Artis?"); + if (askyesno() == ASK_YES) + { + closeclientdialog; + setmount 0; + warp "001-1", 199, 91; + dispbottom l("After a tiring, yet fast, travel by Koga, you arrive at @@.", l("Artis")); + } close; OnInit: diff --git a/npc/008-2-2/melania.txt b/npc/008-2-2/melania.txt index bfd1e8be..57275325 100644 --- a/npc/008-2-2/melania.txt +++ b/npc/008-2-2/melania.txt @@ -26,7 +26,7 @@ lodge_check(); } while (@menu != 2); - mesn; + speech S_FIRST_BLANK_LINE, l("I wish you a beautiful day."); close; diff --git a/npc/008-2-7/_import.txt b/npc/008-2-7/_import.txt index 4cb38df9..d3391d83 100644 --- a/npc/008-2-7/_import.txt +++ b/npc/008-2-7/_import.txt @@ -3,4 +3,6 @@ "npc/008-2-7/_savepoints.txt", "npc/008-2-7/_warps.txt", "npc/008-2-7/mapflags.txt", +"npc/008-2-7/shop.txt", +"npc/008-2-7/simon.txt", "npc/008-2-7/wyara.txt", diff --git a/npc/_import.txt b/npc/_import.txt index 23aef7f4..c19f2e32 100644 --- a/npc/_import.txt +++ b/npc/_import.txt @@ -55,6 +55,7 @@ @include "npc/001-2-9/_import.txt" @include "npc/001-3-0/_import.txt" @include "npc/001-3-1/_import.txt" +@include "npc/001-3-2/_import.txt" @include "npc/008-1-1/_import.txt" @include "npc/008-1/_import.txt" @include "npc/008-2-0/_import.txt" diff --git a/npc/commands/debug-quest.txt b/npc/commands/debug-quest.txt index 1c3e0b5c..96a8e290 100644 --- a/npc/commands/debug-quest.txt +++ b/npc/commands/debug-quest.txt @@ -130,7 +130,8 @@ function script GlobalQuestDebug { "Rumly", General_Rumly, l("Narrator"), General_Narrator, "Janus", General_Janus, - l("Cooking"), General_Cooking; + l("Cooking"), General_Cooking, + l("Brotherhood"), General_Brotherhood; switch (@menuret) { diff --git a/npc/functions/quest-debug/033-Artis_Legion_Progress.txt b/npc/functions/quest-debug/033-Artis_Legion_Progress.txt index c4ea5558..ff6f1d16 100644 --- a/npc/functions/quest-debug/033-Artis_Legion_Progress.txt +++ b/npc/functions/quest-debug/033-Artis_Legion_Progress.txt @@ -19,7 +19,8 @@ function script QuestDebug33 { l("Finished training"), 2, l("Sent to battle"), 3, l("Finished battle"), 4, - l("Sent to Q'Anon"), 5; + l("Sent to Q'Anon"), 5, + l("Indefinite Traning"), 6; if (@menuret < 0) { diff --git a/npc/functions/quest-debug/042-General_Brotherhood.txt b/npc/functions/quest-debug/042-General_Brotherhood.txt new file mode 100644 index 00000000..3eb3683b --- /dev/null +++ b/npc/functions/quest-debug/042-General_Brotherhood.txt @@ -0,0 +1,27 @@ +// Mona quest debug +// Authors: +// gumi +// monwarez +// jesusalva + +function script QuestDebug42 { + do + { + clear; + setnpcdialogtitle l("Quest debug"); + mes "General_Brotherhood"; + mes "---"; + mes l("Quest state: @@", getq(General_Brotherhood)); + next; + + GenericQuestDebug General_Brotherhood, + l("Does not have the quest"), 0, + l("Contacted by Sopiahalla"), 1; + + if (@menuret < 0) + { + return; + } + + } while (1); +} diff --git a/npc/scripts.conf b/npc/scripts.conf index a7f39836..ca2bf288 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -94,6 +94,7 @@ "npc/functions/quest-debug/039-HurnscaldQuests_ForestBow.txt", "npc/functions/quest-debug/040-HurnscaldQuests_WoodenShield.txt", "npc/functions/quest-debug/041-General_Cooking.txt", +"npc/functions/quest-debug/042-General_Brotherhood.txt", // Item functions "npc/items/croconut.txt", -- cgit v1.2.3-70-g09d2 From 40f5d4075e6967fe0c523f31777d60a6e7133c31 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 24 Apr 2019 13:10:42 +0000 Subject: Make Mundane walk, instead of jumping. Maybe he should walk faster than player, as he is scared. I just read npc/funcs/npcmove* to accomplish my task. Thanks, @toams and 4144! --- npc/001-3-0/mundane.txt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/npc/001-3-0/mundane.txt b/npc/001-3-0/mundane.txt index b653fa0d..136061a9 100644 --- a/npc/001-3-0/mundane.txt +++ b/npc/001-3-0/mundane.txt @@ -95,7 +95,7 @@ areamonster(.@MAP_NAME$, 98, 92, 101, 94, l("Green Slime"), slime, 3); setq ArtisQuests_MonaDad, 2; warp(.@MAP_NAME$, 96,66); - addtimer(150, "Mundane::OnMove"); + addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); // Important temporary variables @MUNDANE_OLDX=96; @@ -117,16 +117,16 @@ OnInit: .sex = G_MALE; .distance = 3; + .speed = 150; end; -/* // If we are to use a fake-NPC (a monster which actually is a NPC, for example), // We need to uncomment this code block. As we are moving the actual NPC, this is -// not needed (and harmful, too) +// not needed (and harmful, too). Notes regarding disablenpc(). OnInstanceInit: - disablenpc(instance_npcname(.name$)); + //disablenpc(instance_npcname(.name$)); + .speed = 150; // Double-sure end; -*/ // This functions serves two major purposes: // 1- Move Mundane accordingly @@ -148,7 +148,7 @@ OnMove: // We actually won't move the NPC to your position, but to where you were last. // The NPC should not walk right in you because I thought it looks weird ingame. if (.@x == @MUNDANE_OLDX && .@y == @MUNDANE_OLDY) { - addtimer(150, "Mundane::OnMove"); + addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); end; } @@ -159,7 +159,8 @@ OnMove: // // Mind the note about instance_npcname and about ignoring your position // We should in future at least figure out the right direction to display too - movenpc(instance_npcname(.name$, @MUNDANE_INSTID), @MUNDANE_OLDX, @MUNDANE_OLDY); + //movenpc(instance_npcname(.name$, @MUNDANE_INSTID), @MUNDANE_OLDX, @MUNDANE_OLDY); + npcwalkto @MUNDANE_OLDX, @MUNDANE_OLDY; // We now update the misleading @MUNDANE_OLD* variable with your current // position. @@ -167,7 +168,7 @@ OnMove: @MUNDANE_OLDY=.@y; // We must handle this every 150ms or so, which is player walk delay. // When you leave the map this timer will die. - addtimer(150, "Mundane::OnMove"); + addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); end; OnPCDieEvent: -- cgit v1.2.3-70-g09d2 From e0ac7e9176fb0041d87ea519d28e2ebf5049ef91 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 26 Apr 2019 12:26:14 +0000 Subject: Address race concerns of evol-all#35 because I wanted something pretty. I know I am wasting time. @WildX will probably agree, too. But meh. This outlines server-side how races may work and thus, includes get_race() function making !156 deprecated --- db/constants.conf | 23 +++++-- db/job_db2.txt | 54 ++++++++++++---- db/re/job_db.conf | 135 +++++++++++---------------------------- db/re/skill_tree.conf | 152 ++++++++------------------------------------ npc/commands/debug-look.txt | 4 +- npc/functions/util.txt | 36 +++++++++++ 6 files changed, 158 insertions(+), 246 deletions(-) diff --git a/db/constants.conf b/db/constants.conf index 0451b262..2d75f8cb 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3974,13 +3974,22 @@ constants_db: { G_OTHER: 3 comment__: "races" - Human: 0 - Ukar: 1 - Demon: 2 - Elven: 3 - Orc: 4 - Raijin: 5 - Tritan: 6 + Human: 0 + DarkUkar: 1 + FireKralog: 2 + LightRaijin: 3 + FrostKralog: 4 + DarkRaijin: 5 + BlueTritan: 6 + MediumHuman: 7 + DarkHuman: 8 + PurpleTritan: 9 + PinkUkar: 10 + + comment__: "getraceflags" + GETRACE_RACE: 0 + GETRACE_SKIN: 1 + GETRACE_FULL: 2 comment__: "directions" DOWN: 0 diff --git a/db/job_db2.txt b/db/job_db2.txt index e15f683f..a8d71ed4 100644 --- a/db/job_db2.txt +++ b/db/job_db2.txt @@ -12,17 +12,43 @@ // 5 = DEX increased by 1 at this job level // 6 = LUK increased by 1 at this job level // -// Human -0,0,6,5,0,2,3,0,1,4,0 -// Ukar -1,0,6,5,0,2,3,0,1,4,0 -// Demon -2,0,6,5,0,2,3,0,1,4,0 -// Elven -3,0,6,5,0,2,3,0,1,4,0 -// Orc -4,0,6,5,0,2,3,0,1,4,0 -// Raijin -5,0,6,5,0,2,3,0,1,4,0 -// Tritan -6,0,6,5,0,2,3,0,1,4,0 +// See also: https://gitlab.com/evol/evol-all/issues/67 +// + +// .:: HUMANS ::. +// Kaizei Human +0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1,0,0,0,0,5,0,0,0,0,4,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1 +// Argaes Human +0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1,0,0,0,0,5,0,0,0,0,4,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1 +// Tonori Human +0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1,0,0,0,0,5,0,0,0,0,4,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,2,0,0,0,0,1 + + +// .:: RAIJINS ::. +// Light Raijin +3,0,0,0,0,4,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,6,0,0,0,0,2,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,4,0,0,0,0,4,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,6,0,0,0,0,2,0,0,0,0,4,0,0,0,0,5 +// Dark Raijin +5,0,0,0,0,4,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,6,0,0,0,0,2,0,0,0,0,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,4,0,0,0,0,4,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,6,0,0,0,0,2,0,0,0,0,4,0,0,0,0,5 + + +// .:: KRALOGS ::. +// Fire Kralog +2,0,0,0,0,1,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,6,0,0,0,0,4,0,0,0,0,1,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1 +// Frost Kralog +4,0,0,0,0,1,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1,0,0,0,0,6,0,0,0,0,4,0,0,0,0,1,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,1 + + +// .:: UKARS ::. +// Cave Ukar +1,0,0,0,0,3,0,0,0,0,1,0,0,0,0,2,0,0,0,0,3,0,0,0,0,5,0,0,0,0,6,0,0,0,0,1,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,3,0,0,0,0,1,0,0,0,0,2,0,0,0,0,3,0,0,0,0,5,0,0,0,0,6,0,0,0,0,1,0,0,0,0,3 +// Mountain Ukar +10,0,0,0,0,3,0,0,0,0,1,0,0,0,0,2,0,0,0,0,3,0,0,0,0,5,0,0,0,0,6,0,0,0,0,1,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,3,0,0,0,0,1,0,0,0,0,2,0,0,0,0,3,0,0,0,0,5,0,0,0,0,6,0,0,0,0,1,0,0,0,0,3 + + +// .:: TRITANS ::. +// Sea Tritan +6,0,0,0,0,2,0,0,0,0,5,0,0,0,0,4,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,0,0,5,0,0,0,0,4,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1 +// Lake Tritan +9,0,0,0,0,2,0,0,0,0,5,0,0,0,0,4,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,0,0,5,0,0,0,0,4,0,0,0,0,6,0,0,0,0,3,0,0,0,0,5,0,0,0,0,2,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1 + + diff --git a/db/re/job_db.conf b/db/re/job_db.conf index 7e3365af..a513cd99 100644 --- a/db/re/job_db.conf +++ b/db/re/job_db.conf @@ -102,7 +102,7 @@ Human: { 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 } -Ukar: { +DarkUkar: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 @@ -152,8 +152,7 @@ Ukar: { 1410, 1420, 1430, 1440, 1450, 1460, 1470, 1480, 1490, 1500, // 141 - 150 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 } - -Demon: { +FireKralog: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 @@ -204,7 +203,7 @@ Demon: { 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 } -Elven: { +LightRaijin: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 @@ -255,7 +254,7 @@ Elven: { 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 } -Orc: { +BlueTritan: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 @@ -306,104 +305,46 @@ Orc: { 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 } -Raijin: { +FrostKralog: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 - Weight: 20000 - BaseASPD: { - Fist: 40 - Dagger: 55 - Sword: 57 - Axe: 50 - Mace: 50 - TwoHandMace: 55 - Rod: 65 - TwoHandRod: 65 - Shield: 10 - Bow: 80 - } - HPTable:[ 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, // 1 - 10 - 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, // 11 - 20 - 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, // 21 - 30 - 1900, 1950, 2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, // 31 - 40 - 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, // 41 - 50 - 2900, 2950, 3000, 3050, 3100, 3150, 3200, 3250, 3300, 3350, // 51 - 60 - 3400, 3450, 3500, 3550, 3600, 3650, 3700, 3750, 3800, 3850, // 61 - 70 - 3900, 3950, 4000, 4050, 4100, 4150, 4200, 4250, 4300, 4350, // 71 - 80 - 4400, 4450, 4500, 4550, 4600, 4650, 4700, 4750, 4800, 4850, // 81 - 90 - 4900, 4950, 5000, 5050, 5100, 5150, 5200, 5250, 5300, 5350, // 91 - 100 - 5400, 5450, 5500, 5550, 5600, 5650, 5700, 5750, 5800, 5850, // 101 - 110 - 5900, 5950, 6000, 6050, 6100, 6150, 6200, 6250, 6300, 6350, // 111 - 120 - 6400, 6450, 6500, 6550, 6600, 6650, 6700, 6750, 6800, 6850, // 121 - 130 - 6900, 6950, 7000, 7050, 7100, 7150, 7200, 7250, 7300, 7350, // 131 - 140 - 7400, 7450, 7500, 7550, 7600, 7650, 7700, 7750, 7800, 7850, // 141 - 150 - 7900, 7950, 8000, 8050, 8100, 8150, 8200, 8250, 8300, 835] // 151 - 160 - SPTable:[ 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, // 1 - 10 - 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, // 11 - 20 - 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, // 21 - 30 - 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, // 31 - 40 - 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, // 41 - 50 - 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, // 51 - 60 - 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, // 61 - 70 - 810, 820, 830, 840, 850, 860, 870, 880, 890, 900, // 71 - 80 - 910, 920, 930, 940, 950, 960, 970, 980, 990, 1000, // 81 - 90 - 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1000, // 91 - 100 - 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1100, // 101 - 110 - 1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180, 1190, 1200, // 111 - 120 - 1210, 1220, 1230, 1240, 1250, 1260, 1270, 1280, 1290, 1300, // 121 - 130 - 1310, 1320, 1330, 1340, 1350, 1360, 1370, 1380, 1390, 1400, // 131 - 140 - 1410, 1420, 1430, 1440, 1450, 1460, 1470, 1480, 1490, 1500, // 141 - 150 - 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 + Inherit: ( "FireKralog" ); // Base job from which this job will inherit its max weight, base ASPD set and HP/SP table. } -Tritan: { +DarkRaijin: { BaseExpGroup: "EvolClasses" JobExpGroup: "EvolClasses" MoveSpeed: 170 - Weight: 20000 - BaseASPD: { - Fist: 40 - Dagger: 55 - Sword: 57 - Axe: 50 - Mace: 50 - TwoHandMace: 55 - Rod: 65 - TwoHandRod: 65 - Shield: 10 - Bow: 80 - } - HPTable:[ 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, // 1 - 10 - 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, // 11 - 20 - 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, // 21 - 30 - 1900, 1950, 2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, // 31 - 40 - 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, // 41 - 50 - 2900, 2950, 3000, 3050, 3100, 3150, 3200, 3250, 3300, 3350, // 51 - 60 - 3400, 3450, 3500, 3550, 3600, 3650, 3700, 3750, 3800, 3850, // 61 - 70 - 3900, 3950, 4000, 4050, 4100, 4150, 4200, 4250, 4300, 4350, // 71 - 80 - 4400, 4450, 4500, 4550, 4600, 4650, 4700, 4750, 4800, 4850, // 81 - 90 - 4900, 4950, 5000, 5050, 5100, 5150, 5200, 5250, 5300, 5350, // 91 - 100 - 5400, 5450, 5500, 5550, 5600, 5650, 5700, 5750, 5800, 5850, // 101 - 110 - 5900, 5950, 6000, 6050, 6100, 6150, 6200, 6250, 6300, 6350, // 111 - 120 - 6400, 6450, 6500, 6550, 6600, 6650, 6700, 6750, 6800, 6850, // 121 - 130 - 6900, 6950, 7000, 7050, 7100, 7150, 7200, 7250, 7300, 7350, // 131 - 140 - 7400, 7450, 7500, 7550, 7600, 7650, 7700, 7750, 7800, 7850, // 141 - 150 - 7900, 7950, 8000, 8050, 8100, 8150, 8200, 8250, 8300, 835] // 151 - 160 - SPTable:[ 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, // 1 - 10 - 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, // 11 - 20 - 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, // 21 - 30 - 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, // 31 - 40 - 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, // 41 - 50 - 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, // 51 - 60 - 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, // 61 - 70 - 810, 820, 830, 840, 850, 860, 870, 880, 890, 900, // 71 - 80 - 910, 920, 930, 940, 950, 960, 970, 980, 990, 1000, // 81 - 90 - 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1000, // 91 - 100 - 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1090, 1100, // 101 - 110 - 1110, 1120, 1130, 1140, 1150, 1160, 1170, 1180, 1190, 1200, // 111 - 120 - 1210, 1220, 1230, 1240, 1250, 1260, 1270, 1280, 1290, 1300, // 121 - 130 - 1310, 1320, 1330, 1340, 1350, 1360, 1370, 1380, 1390, 1400, // 131 - 140 - 1410, 1420, 1430, 1440, 1450, 1460, 1470, 1480, 1490, 1500, // 141 - 150 - 1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580, 1590, 160] // 151 - 160 + Inherit: ( "LightRaijin" ); // Base job from which this job will inherit its max weight, base ASPD set and HP/SP table. +} + +MediumHuman: { + BaseExpGroup: "EvolClasses" + JobExpGroup: "EvolClasses" + MoveSpeed: 170 + Inherit: ( "Human" ); +} + +DarkHuman: { + BaseExpGroup: "EvolClasses" + JobExpGroup: "EvolClasses" + MoveSpeed: 170 + Inherit: ( "Human" ); +} + +PurpleTritan: { + BaseExpGroup: "EvolClasses" + JobExpGroup: "EvolClasses" + MoveSpeed: 170 + Inherit: ( "BlueTritan" ); } + +PinkUkar: { + BaseExpGroup: "EvolClasses" + JobExpGroup: "EvolClasses" + MoveSpeed: 170 + Inherit: ( "DarkUkar" ); +} + + diff --git a/db/re/skill_tree.conf b/db/re/skill_tree.conf index 3d7128d2..4927fb3e 100644 --- a/db/re/skill_tree.conf +++ b/db/re/skill_tree.conf @@ -88,7 +88,7 @@ Human: { } } -Ukar: { +DarkUkar: { skills: { SM_SWORD: 0 SM_TWOHAND: 0 @@ -151,7 +151,7 @@ Ukar: { } } -Demon: { +FireKralog: { skills: { SM_SWORD: 0 SM_TWOHAND: 0 @@ -214,7 +214,7 @@ Demon: { } } -Elven: { +LightRaijin: { skills: { SM_SWORD: 0 SM_TWOHAND: 0 @@ -277,7 +277,7 @@ Elven: { } } -Orc: { +BlueTritan: { skills: { SM_SWORD: 0 SM_TWOHAND: 0 @@ -340,128 +340,28 @@ Orc: { } } -Raijin: { - skills: { - SM_SWORD: 0 - SM_TWOHAND: 0 - AC_OWL: 0 - NV_BASIC: 0 - NV_FIRSTAID: 0 - NV_TRICKDEAD: 0 - WE_BABY: 0 - WE_CALLPARENT: 0 - WE_CALLBABY: 0 - ALL_INCCARRY: 0 - MC_VENDING: 0 - MC_PUSHCART: 0 - ALL_BUYING_STORE: 0 - AM_CALLHOMUN: 0 - KN_RIDING: 0 - SM_BASH: 0 - TK_HIGHJUMP: 0 - MG_THUNDERSTORM: 0 - AS_CLOAKING: 0 - TF_DOUBLE: 0 - TF_HIDING: 0 - WZ_VERMILION: 0 - ST_CHASEWALK: 0 - WS_CARTBOOST: 0 - TK_RUN: 0 - RA_RESEARCHTRAP: 0 - SC_DIMENSIONDOOR: 0 - WZ_STORMGUST: 0 - WL_SUMMONFB: 0 - WL_RELEASE: 0 - WL_SUMMONSTONE: 0 - SC_INVISIBILITY: 0 - RG_GRAFFITI: 0 - RG_CLEANER: 0 - SA_COMA: 0 - CH_SOULCOLLECT: 0 - SL_STUN: 0 - AL_BLESSING: 0 - WL_STASIS: 0 - RA_CAMOUFLAGE: 0 - SC_MANHOLE: 0 - AL_RUWACH: 0 - AL_TELEPORT: 0 - MG_SAFETYWALL: 0 - WZ_QUAGMIRE: 0 - WZ_FROSTNOVA: 0 - MO_BODYRELOCATION: 0 - MO_CALLSPIRITS: 0 - GN_HELLS_PLANT: 0 - GN_DEMONIC_FIRE: 0 - GN_CRAZYWEED: 0 - GN_WALLOFTHORN: 0 - WE_MALE: 0 - WE_FEMALE: 0 - WE_CALLPARTNER: 0 - MG_COLDBOLT: 0 - EVOL_MASS_PROVOKE: 0 - EVOL_PHYSICAL_SHIELD: 0 - } + +FrostKralog: { + inherit: ( "FireKralog" ); } -Tritan: { - skills: { - SM_SWORD: 0 - SM_TWOHAND: 0 - AC_OWL: 0 - NV_BASIC: 0 - NV_FIRSTAID: 0 - NV_TRICKDEAD: 0 - WE_BABY: 0 - WE_CALLPARENT: 0 - WE_CALLBABY: 0 - ALL_INCCARRY: 0 - MC_VENDING: 0 - MC_PUSHCART: 0 - ALL_BUYING_STORE: 0 - AM_CALLHOMUN: 0 - KN_RIDING: 0 - SM_BASH: 0 - TK_HIGHJUMP: 0 - MG_THUNDERSTORM: 0 - AS_CLOAKING: 0 - TF_DOUBLE: 0 - TF_HIDING: 0 - WZ_VERMILION: 0 - ST_CHASEWALK: 0 - WS_CARTBOOST: 0 - TK_RUN: 0 - RA_RESEARCHTRAP: 0 - SC_DIMENSIONDOOR: 0 - WZ_STORMGUST: 0 - WL_SUMMONFB: 0 - WL_RELEASE: 0 - WL_SUMMONSTONE: 0 - SC_INVISIBILITY: 0 - RG_GRAFFITI: 0 - RG_CLEANER: 0 - SA_COMA: 0 - CH_SOULCOLLECT: 0 - SL_STUN: 0 - AL_BLESSING: 0 - WL_STASIS: 0 - RA_CAMOUFLAGE: 0 - SC_MANHOLE: 0 - AL_RUWACH: 0 - AL_TELEPORT: 0 - MG_SAFETYWALL: 0 - WZ_QUAGMIRE: 0 - WZ_FROSTNOVA: 0 - MO_BODYRELOCATION: 0 - MO_CALLSPIRITS: 0 - GN_HELLS_PLANT: 0 - GN_DEMONIC_FIRE: 0 - GN_CRAZYWEED: 0 - GN_WALLOFTHORN: 0 - WE_MALE: 0 - WE_FEMALE: 0 - WE_CALLPARTNER: 0 - MG_COLDBOLT: 0 - EVOL_MASS_PROVOKE: 0 - EVOL_PHYSICAL_SHIELD: 0 - } +DarkRaijin: { + inherit: ( "LightRaijin" ); +} + +PurpleTritan: { + inherit: ( "BlueTritan" ); +} + +PinkUkar: { + inherit: ( "DarkUkar" ); +} + +MediumHuman: { + inherit: ( "Human" ); +} + +DarkHuman: { + inherit: ( "Human" ); } + diff --git a/npc/commands/debug-look.txt b/npc/commands/debug-look.txt index 79bf8699..4ab9ed44 100644 --- a/npc/commands/debug-look.txt +++ b/npc/commands/debug-look.txt @@ -41,7 +41,7 @@ function script BarberDebug { function setRace { clear; setnpcdialogtitle l("Appearance Debug - Race"); - mes l("Race") + ": " + Class; + mes l("Race") + ": " + Class + " (" + get_race(GETRACE_FULL) + ")"; next; mes l("Please enter the desired race") + " (0-32767)"; input .@r, 0, 0x7FFF; @@ -60,7 +60,7 @@ function script BarberDebug { mes l("Gender") + ": " + Sex; mes l("Hair style") + ": " + getlook(LOOK_HAIR); mes l("Hair color") + ": " + getlook(LOOK_HAIR_COLOR); - mes l("Race") + ": " + Class; + mes l("Race") + ": " + Class + " (" + get_race() + ")";; mes "---"; next; diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 2cb28573..d5fe8bc4 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -73,4 +73,40 @@ function script getmap { return .@mapName$; } +// Returns the player race in plain text +// GETRACE_RACE - returns player race (default) +// GETRACE_SKIN - returns player skin +// GETRACE_FULL - returns player skin + race +// Can take an optional 2nd param with the class +// get_race( {Flag, {Class}} ) +function script get_race { + .@m=getarg(0, GETRACE_RACE); + .@g=getarg(1, Class); + + // We also allow this to run without player attached for... science. + if (getarg(1,-1) >= 0) + { + setarray .@allraces$, l("Human"), l("Ukar"), l("Kralog"), + l("Raijin"), l("Kralog"), l("Raijin"), l("Tritan"), + l("Human"), l("Human"), l("Tritan"), l("Ukar"); + setarray .@allskins$, l("Kaizei"), l("Cave"), l("Fire"), + l("Light"), l("Frost"), l("Dark"), l("Sea"), l("Argaes"), + l("Tonori"), l("Lake"), l("Mountain"); + } + else + { + setarray .@allraces$, "Human", "Ukar", "Kralog", "Raijin", + "Kralog", "Raijin", "Tritan", "Human", "Human", "Tritan", "Ukar"; + setarray .@allskins$, "Kaizei", "Cave", "Fire", "Light", + "Frost", "Dark", "Sea", "Argaes", "Tonori", "Lake", "Mountain"; + } + + if (.@m == GETRACE_RACE) + return .@allraces$[.@g]; + else if (.@m == GETRACE_SKIN) + return .@allskins$[.@g]; + else + return .@allskins$[.@g] + " " + .@allraces$[.@g]; + +} -- cgit v1.2.3-70-g09d2 From 6181f9df7dd8cb9fda62b2c41dba38574d129844 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 27 Apr 2019 23:21:29 +0000 Subject: Alpha version of spotlight system - requires a fixed clientdata!119 or won't work NOT gm command compatible. May be optimizable, new MR for comparasion and performance check pending. --- db/re/item_db.conf | 33 ++++++++++---- npc/001-2-19/lloyd.txt | 2 + npc/001-3-0/mundane.txt | 1 + npc/commands/warp.txt | 1 + npc/functions/masks.txt | 1 + npc/functions/spotlight.txt | 102 ++++++++++++++++++++++++++++++++++++++++++++ npc/scripts.conf | 1 + 7 files changed, 132 insertions(+), 9 deletions(-) create mode 100644 npc/functions/spotlight.txt diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 96293603..40f51c00 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -3823,7 +3823,6 @@ item_db: ( Atk: 0 Matk: -25 Def: 180 - Range: 0 Slots: 0 Loc: "EQP_HEAD_TOP" WeaponLv: 0 @@ -3831,8 +3830,12 @@ item_db: ( Refine: false ViewSprite: 2907 BindOnEquip: false - Delay: 0 - Sprite: 0 + OnEquipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> + OnUnequipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> }, { Id: 2908 @@ -4192,8 +4195,12 @@ item_db: ( Refine: false Subtype: "W_STAFF" BindOnEquip: false - Delay: 0 - Sprite: 0 + OnEquipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> + OnUnequipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> Script: <" skill AL_HEAL, 1; bonus bMagicAtkDef, 10; @@ -4218,8 +4225,12 @@ item_db: ( Refine: false Subtype: "W_STAFF" BindOnEquip: false - Delay: 0 - Sprite: 0 + OnEquipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> + OnUnequipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> Script: <" skill MG_FIREBALL, 1; bonus bMatkRate, 10; @@ -4334,8 +4345,12 @@ item_db: ( Refine: false Subtype: "W_DAGGER" BindOnEquip: false - Delay: 0 - Sprite: 0 + OnEquipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> + OnUnequipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> }, { Id: 3512 diff --git a/npc/001-2-19/lloyd.txt b/npc/001-2-19/lloyd.txt index 9dfd97de..6cfd8bc3 100644 --- a/npc/001-2-19/lloyd.txt +++ b/npc/001-2-19/lloyd.txt @@ -240,5 +240,7 @@ OnPCLoginEvent: BankVault += max(0, #MerchantBank); #MerchantBank = 0; } + if (getmap() ~= "*-3-*") + updateSpotlight(); end; } diff --git a/npc/001-3-0/mundane.txt b/npc/001-3-0/mundane.txt index 136061a9..17e70b0f 100644 --- a/npc/001-3-0/mundane.txt +++ b/npc/001-3-0/mundane.txt @@ -96,6 +96,7 @@ setq ArtisQuests_MonaDad, 2; warp(.@MAP_NAME$, 96,66); addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); + updateSpotlight(true); // Important temporary variables @MUNDANE_OLDX=96; diff --git a/npc/commands/warp.txt b/npc/commands/warp.txt index 318489d7..e4e5c92c 100644 --- a/npc/commands/warp.txt +++ b/npc/commands/warp.txt @@ -70,6 +70,7 @@ OnCall: } slide_or_warp(.@map$, .@x, .@y); + updateSpotlight(); end; OnInit: diff --git a/npc/functions/masks.txt b/npc/functions/masks.txt index 03c81630..4b28bfc7 100644 --- a/npc/functions/masks.txt +++ b/npc/functions/masks.txt @@ -1,6 +1,7 @@ // Evol functions. // Author: // Reid +// Jesusalva // Description: // Triggers functions to add and remove masks. // Variables: diff --git a/npc/functions/spotlight.txt b/npc/functions/spotlight.txt new file mode 100644 index 00000000..c4fb9c6b --- /dev/null +++ b/npc/functions/spotlight.txt @@ -0,0 +1,102 @@ +// Evol functions. +// Author: +// Jesusalva +// Micksha +// Description: +// Update spotlight on caves +// Variables: +// 2 - the darkest mask +// 4 - the average mask +// 8 - the lightest mask + +// forced_update - if set to true, will ignore if the map is known as valid +// (required for instance maps) +// updateSpotlight ( {forced_update} ) +function script updateSpotlight { + // A small delay of 80 ms in case player is changing map + // It will be cast twice when switching caves. This sleep prevents obscure bugs. + sleep2(80); + + // Maps which this system + setarray .@mapz$, + "001-3-0", "001-3-1", "001-3-2", + "008-3-0", "008-3-1", "008-4-1"; + + getmapxy(.@m$, .@x, .@y, 0); + //debugmes "Begin"; + + // Is your map valid (or is the check skipped) + /* + if (!getarg(0,false)) + { + if (array_find(.@mapz$, .@m$) < 0) + return; + } + */ + + // Retrieve default map masks + .@ms=getmapmask(.@m$); + //debugmes "Default: %d", .@ms; + + // Which equipments provide bonuses? + setarray .@b_head, CandleHelmet; + setarray .@b_weapon, ManaTorch, TrainingWand, Torch; + + // Calc your lighting score (it should NOT start on zero) + .@score=1; + if (array_find(.@b_head, getequipid(EQI_HEAD_TOP)) >= 0) + .@score+=1; + if (array_find(.@b_weapon, getequipid(EQI_HAND_R)) >= 0) + .@score+=1; + // TODO: Lighting scrolls + + //debugmes "Score: %d", .@score; + //debugmes "Equips: %d and %d", getequipid(EQI_HEAD_TOP), getequipid(EQI_HAND_R); + //debugmes "Headvalue: %d", .@b_head[0]; + //debugmes "Weappnvalue: %d, %d, %d", .@b_weapon[0], .@b_weapon[1], .@b_weapon[2]; + // Sanitize score + .@score=min(3, .@score); + + // Calculate and send new map mask + .@ms=.@ms|(2**.@score); + sendmapmask(.@ms); + //debugmes "Data sent: %d", .@ms; + return; +} + +// MAIN FUNCTION - DO NOT REMOVE +// Every NPC will be duplicating this one +001-3-0,0,0,0 script #SpotlightMaster NPC_HIDDEN,0,0,{ +OnTouch: + updateSpotlight(); + end; +} + + +// I'm too lazy to do this in different files and in the right spot..... + +// npc/001-3-0/_warps.txt +001-3-0,196,35,0 duplicate(#SpotlightMaster) #SPOT001-3-0_196_35 NPC_HIDDEN,2,2 +001-3-0,172,41,0 duplicate(#SpotlightMaster) #SPOT001-3-0_172_41 NPC_HIDDEN,2,2 +001-3-0,162,40,0 duplicate(#SpotlightMaster) #SPOT001-3-0_162_40 NPC_HIDDEN,2,2 +001-3-0,198,60,0 duplicate(#SpotlightMaster) #SPOT001-3-0_198_60 NPC_HIDDEN,2,2 +001-3-0,152,55,0 duplicate(#SpotlightMaster) #SPOT001-3-0_152_55 NPC_HIDDEN,2,2 +001-3-0,85,130,0 duplicate(#SpotlightMaster) #SPOT001-3-0_85_130 NPC_HIDDEN,2,2 + +// npc/001-3-1/_warps.txt +001-3-1,24,58,0 duplicate(#SpotlightMaster) #SPOT001-3-1_24_58 NPC_HIDDEN,2,2 +001-3-1,35,59,0 duplicate(#SpotlightMaster) #SPOT001-3-1_35_59 NPC_HIDDEN,2,2 +001-3-1,30,19,0 duplicate(#SpotlightMaster) #SPOT001-3-1_30_19 NPC_HIDDEN,2,2 + +// npc/001-3-2/_warps.txt +001-3-2,30,117,0 duplicate(#SpotlightMaster) #SPOT001-3-2_30_117 NPC_HIDDEN,2,2 + +// npc/008-3-0/_warps.txt +008-3-0,130,113,0 duplicate(#SpotlightMaster) #SPOT008-3-0_130_113 NPC_HIDDEN,2,2 + +// npc/008-3-1/_warps.txt +008-3-1,34,34,0 duplicate(#SpotlightMaster) #SPOT008-3-1_34_34 NPC_HIDDEN,2,2 + +// npc/008-4-1/_warps.txt +008-4-1,175,18,0 duplicate(#SpotlightMaster) #SPOT008-4-1_175_18 NPC_HIDDEN,2,2 + diff --git a/npc/scripts.conf b/npc/scripts.conf index ca2bf288..1b7e85e6 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -28,6 +28,7 @@ "npc/functions/marriage.txt", "npc/functions/npcmove.txt", "npc/functions/masks.txt", +"npc/functions/spotlight.txt", "npc/functions/openbook.txt", "npc/functions/questgen.txt", "npc/functions/sailordialogue.txt", -- cgit v1.2.3-70-g09d2 From 700f027d7eeaec81f09527fe89704541a065f1f8 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sun, 28 Apr 2019 17:30:29 +0000 Subject: Prevent Cookies from being used for "too long" --- db/re/item_db.conf | 12 +++++++++++- npc/items/cookie.txt | 18 ++++++++++++++++++ npc/scripts.conf | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 npc/items/cookie.txt diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 40f51c00..7dec6d2b 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -612,8 +612,18 @@ item_db: ( Trade: { nodrop: true noselltonpc: true + nogstorage: true + nomail: true } - Sprite: 0 + OnEquipScript: <" + if (gettimetick(2) < COOKIE_COOLDOWN) { + unequip(EQI_HEAD_MID); + //dispbottom l("You need to wait @@ more before equipping this again.", FuzzyTime(COOKIE_COOLDOWN)); + end; + } + COOKIE_COOLDOWN=gettimetick(2)+600; + addtimer 60000, "#DeliciousCookie::OnUnequip"; + "> }, { Id: 518 diff --git a/npc/items/cookie.txt b/npc/items/cookie.txt new file mode 100644 index 00000000..80ff591e --- /dev/null +++ b/npc/items/cookie.txt @@ -0,0 +1,18 @@ +// Evol script. +// Author: +// Jesusalva +// Reid (?) +// Description: +// Prevents cookie from being used for too long + +- script #DeliciousCookie NPC_HIDDEN,{ + end; + +OnPCLogoutEvent: +OnUnequip: + if (getequipid(EQI_HEAD_MID) == DeliciousCookie) + unequip(EQI_HEAD_MID); + end; + +} + diff --git a/npc/scripts.conf b/npc/scripts.conf index 1b7e85e6..f593cade 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -98,6 +98,7 @@ "npc/functions/quest-debug/042-General_Brotherhood.txt", // Item functions +"npc/items/cookie.txt", "npc/items/croconut.txt", "npc/items/shovel.txt", "npc/items/rand_sc_heal.txt", -- cgit v1.2.3-70-g09d2 From 1fcfb18c2cf527043ba08b3ac578898b04c08f77 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 1 May 2019 10:59:43 +0000 Subject: Make Mundane walk, instead of jumping. Maybe he should walk faster than player, as he is scared. I just read npc/funcs/npcmove* to accomplish my task. Thanks, @toams and 4144! --- npc/001-2-11/mona.txt | 103 ++++++++++++++----- npc/001-3-0/mundane.txt | 111 +++++++++++---------- npc/functions/math.txt | 10 ++ .../quest-debug/032-ArtisQuests_MonaDad.txt | 3 +- npc/functions/util.txt | 36 ++++++- 5 files changed, 185 insertions(+), 78 deletions(-) diff --git a/npc/001-2-11/mona.txt b/npc/001-2-11/mona.txt index abec0cee..3d5b4584 100644 --- a/npc/001-2-11/mona.txt +++ b/npc/001-2-11/mona.txt @@ -3,10 +3,12 @@ // Reid // Jesusalva // Description: -// A rich girl holding a candle. Her father went to examine weird noises on -// sewers and still haven't come back. Her mother is gone, but it is not clear -// if she died, abandoned them, or something else. +// A rich girl holding a candle. Her father went to examine weird noises in the +// sewers and still hasn't come back. Her mother is gone, but it is not clear +// whether she died, abandoned them, or something else. // Variable: +// MONA_TIME = gettimeparam(GETTIME_DAYOFMONTH) so you need 3 days +// MONA_REPEAT = How many times the quest was done // ArtisQuests_MonaDad // Quest states: // 0 - Quest not started @@ -35,14 +37,14 @@ } speech S_LAST_NEXT | S_NO_NPC_NAME, - l("Daddy did not come back home... He said that he would be back for lunch but it has already been a week!"), + l("Daddy never came back home... He said that he would be back for lunch but it has already been two days!"), l("You have to find him, or else I will tell him that you did not help me."); - switch (select(l("You do not give me much options."), l("The elder ran away from you."))) + switch (select(l("You do not give me a lot of options."), l("Your dad ran away from you!"))) { case 1: speech S_FIRST_BLANK_LINE, - l("He said that he would check why the manhole next to the house was doing weird sounds."), + l("He said that he would check why weird noises were coming from the manhole next to the house."), l("But he never returned."), l("Please find my daddy..."); @@ -64,30 +66,41 @@ // only to support Global Instances and in general is not a smart thing to do. function check_daddy_quest { - // Did you really brought Mundane to sewer exit (152, 56)? + // Did you really bring Mundane to sewer exit? // We need to add 1 tile in each direction of tolerance because addtimer() // is not exactly what I would call “a reliable way to do stuff” // Note that @variables sometimes get erasen AT RANDOM. // If this problem happens, move it char variables. // (that might cause problems with logout though.) // Temporary variables give you a time limit to report back... - if (@MUNDANE_OLDX >= 151 && @MUNDANE_OLDX <= 153 && - @MUNDANE_OLDY >= 55 && @MUNDANE_OLDY <= 57) { - // There's no need to check if instance still exists, because - // when the instance expires, you get warped to *somewhere*. - // This means the timer will die and MUNDANE_OLD* variables will stop - // being updated. - inventoryplace WoodenBow, 1; - speech 0x0, - l("Daddy finally came back home! He grabbed a snack and said he would be returning to the sewers."), - lg("He did said to you take this @@ as a gift. He says you are very skilled and will make a good use of his old weapon.", - "He did said to you take this @@ as a gift. He says you are very skilled and will make a good use of his old weapon.", - getitemlink(WoodenBow)), - l("He was never the same since mommy vanished..."); - getitem WoodenBow, 1; - setq(ArtisQuests_MonaDad, 3); - close; - } + // + // There's no need to check if instance still exists, because + // when the instance expires, you get warped to *somewhere*. + // This means the timer will die and MUNDANE_OLD* variables will stop + // being updated. + .@success=false; + + // Sewer mouths (warps to 001-1) + if (is_between(151, 153, @MUNDANE_OLDX) && + is_between(55, 57, @MUNDANE_OLDY)) + .@success=true; + + if (is_between(195, 197, @MUNDANE_OLDX) && + is_between(34, 36, @MUNDANE_OLDY)) + .@success=true; + + if (is_between(197, 199, @MUNDANE_OLDX) && + is_between(59, 61, @MUNDANE_OLDY)) + .@success=true; + + if (is_between(84, 86, @MUNDANE_OLDX) && + is_between(129, 131, @MUNDANE_OLDY)) + .@success=true; + + if (.@success) + return true; + else + return false; } // Here the script really starts @@ -97,13 +110,51 @@ } else if (getq(ArtisQuests_MonaDad) == 3) { + // Quest Repeat takes priority. Don't worry, you won't lose password unless + // you accept the quest again. + if (MONA_TIME <= gettimeparam(GETTIME_DAYOFMONTH)) { + find_daddy_quest(); + } + + // Sagratha is Great B-) npctalkonce any( l("Thanks for finding daddy... I wish he spent more time with me..."), - l("Sagratha is great. Why the strange woman near the Legion building always say that to daddy...")); // TODO: Polish + l("Sagratha is great. Why does the strange woman near the Legion building always say that to daddy...?")); // TODO: Polish } else if (getq(ArtisQuests_MonaDad) == 2) { - check_daddy_quest(); + if (check_daddy_quest()) + { + if (!MONA_REPEAT) + { + inventoryplace WoodenBow, 1; + speech 0x0, + l("Daddy finally came back home! He grabbed a snack and said he would be returning to the sewers."), + lg("He did say that I should give you this @@ as a gift. He says you are very skilled and will make good use of his old weapon.", + "He did say that I should give you this @@ as a gift. He says you are very skilled and will make good use of his old weapon.", + getitemlink(WoodenBow)), + l("He has never been the same since mommy went away..."); + getitem WoodenBow, 1; + } + else if (MONA_REPEAT == 10) + { + speech + l("Daddy asked me to give you some money as a thank you for looking out for me."), + l("I don't want you! I want daddy!"); + mesc l("*sniff sniff*"); + emotion E_SAD; + Zeny+=1000; + } + else + { + inventoryplace TrainingArrow, 100; + getitem TrainingArrow, min(MONA_REPEAT*20, 100); + } + setq(ArtisQuests_MonaDad, 3); + MONA_TIME=gettimeparam(GETTIME_DAYOFMONTH)+3; + MONA_REPEAT+=1; + close; + } } else { diff --git a/npc/001-3-0/mundane.txt b/npc/001-3-0/mundane.txt index 17e70b0f..fdf617ee 100644 --- a/npc/001-3-0/mundane.txt +++ b/npc/001-3-0/mundane.txt @@ -37,8 +37,8 @@ function rescue_mundane { speech(S_LAST_NEXT, - l("Scary... I am afraid of these Slimes, Rattos and Maggots... And worse, I am lost..."), - l("I already killed many strong monsters, but everyone has fears, right?!"), + l("Scary... I am afraid of all these Slimes, Rattos and Maggots... And worse, I am lost..."), + l("I was an archer of the Legion and shouldn't be scared of a few maggots, but everyone has fears, right?!"), l("My daughter is probably worried about me. Could you perhaps lead me out of here?")); switch (select(l("Yes, follow me!"), l("Not now. You see, I am also afraid of Slimes and Rattos!"))) @@ -49,17 +49,13 @@ case 2: speech(S_FIRST_BLANK_LINE, l("That's too bad... Although I think you're lying."), - l("If it is the latter, please take some courage and help me!")); + l("If so, please take some courage and help me!")); close; break; } .@ID=getcharid(0); .@MAP_NAME$="mona@"+str(.@ID); @MUNDANE_INSTID = instance_create("001-3-0@a"+(.@ID), getcharid(3), IOT_CHAR); - //debugmes "You are "+str(.@ID); - - //if (@MUNDANE_INSTID < 0) debugmes "Error: No instance ID"; - //debugmes "new instance id: " + str(@MUNDANE_INSTID); // XXX - Important Note - XXX // We currently have only FOUR chars to name the map. "001-3-0" or "mundane" have 7 chars, so that cannot be used. @@ -74,33 +70,35 @@ if (.@instanceMapName$ == "") { speech(0x0, l("Wait... You are that @@ from earlier, aren't you?", strcharinfo(0)), - l("If my memory serves me right, you died just before. Why don't you go out to buy better equipment?")); + l("If my memory serves me right, you were just defeated. Why don't you go out to buy better equipment?")); close; } // You have 5 minutes to complete the quest. This does not results in failure by itself, getq2 does that instance_set_timeout(300, 300, @MUNDANE_INSTID); instance_init(@MUNDANE_INSTID); - dispbottom(l("Mona Father's is right behind you. You have five minutes to bring him out of sewers!")); - - // Not sure if Green Slimes are exactly what we want here - and shouldn't it be "Slime"? (mind upper-case) - areamonster(.@MAP_NAME$, 119, 51, 162, 85, l("Green Slime"), slime, 3); - areamonster(.@MAP_NAME$, 190, 65, 193, 68, l("Ratto"), Ratto, 5); - areamonster(.@MAP_NAME$, 90, 67, 92, 72, l("Cave Maggot"), CaveMaggot, 3); - areamonster(.@MAP_NAME$, 99, 106, 102, 111, l("Green Slime"), slime, 3); - areamonster(.@MAP_NAME$, 115, 93, 115, 75, l("Green Slime"), slime, 3); - areamonster(.@MAP_NAME$, 120, 85, 7, 2, l("Little Green Slime"), slime-littleslime, 7); - areamonster(.@MAP_NAME$, 114, 65, 121, 68, l("Cave Maggot"), CaveMaggot, 5); - areamonster(.@MAP_NAME$, 137, 76, 130, 87, l("Spider"), Spider, 4); - areamonster(.@MAP_NAME$, 98, 92, 101, 94, l("Green Slime"), slime, 3); + dispbottom(l("Mona's father is right behind you. You have five minutes to bring him out of sewers!")); + + // Note: Difficulty is based on your level + .@BLVLBOOST=BaseLevel/10; + areamonster(.@MAP_NAME$, 119, 51, 162, 85, strmobinfo(1, slime), slime, 3+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 190, 65, 193, 68, strmobinfo(1, Ratto), Ratto, 5); + areamonster(.@MAP_NAME$, 90, 67, 92, 72, strmobinfo(1, CaveMaggot), CaveMaggot, 3+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 99, 106, 102, 111, strmobinfo(1, slime), slime, 3+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 115, 93, 115, 75, strmobinfo(1, slime), slime, 3+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 120, 85, 7, 2, strmobinfo(1, slime-littleslime), slime-littleslime, 7+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 114, 65, 121, 68, strmobinfo(1, CaveMaggot), CaveMaggot, 5+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 137, 76, 130, 87, strmobinfo(1, Spider), Spider, 4+.@BLVLBOOST); + areamonster(.@MAP_NAME$, 98, 92, 101, 94, strmobinfo(1, slime), slime, 3+.@BLVLBOOST); + + // Important temporary variables and move you accordingly + @MUNDANE_OLDX=.x; + @MUNDANE_OLDY=.y; + warp(.@MAP_NAME$, .x, .y); + setq ArtisQuests_MonaDad, 2; - warp(.@MAP_NAME$, 96,66); addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); updateSpotlight(true); - - // Important temporary variables - @MUNDANE_OLDX=96; - @MUNDANE_OLDY=66; close; } @@ -115,20 +113,6 @@ hello; end; -OnInit: - .sex = G_MALE; - .distance = 3; - .speed = 150; - end; - -// If we are to use a fake-NPC (a monster which actually is a NPC, for example), -// We need to uncomment this code block. As we are moving the actual NPC, this is -// not needed (and harmful, too). Notes regarding disablenpc(). -OnInstanceInit: - //disablenpc(instance_npcname(.name$)); - .speed = 150; // Double-sure - end; - // This functions serves two major purposes: // 1- Move Mundane accordingly // 2- Be able to determine if you brought Mundane to exit or cheat (warp, etc.) @@ -144,6 +128,8 @@ OnMove: // This check shouldn't be needed but better safe than sorry if (.@m$ == "001-1") dispbottom l("Mundane ran straight home. He must be missing his daughter."); + else + dispbottom l("Mundane ran away, he did not trust the path you chose."); end; } // We actually won't move the NPC to your position, but to where you were last. @@ -154,13 +140,7 @@ OnMove: } // movenpc() will cause NPC to "jump" to player position. - // npcwalkto(x, y) could be better, but there are concerns about instance NPC, - // and the server code behind this function would need to be changed to actually - // use NPC walking animation (instead of just sliding it around). - // - // Mind the note about instance_npcname and about ignoring your position - // We should in future at least figure out the right direction to display too - //movenpc(instance_npcname(.name$, @MUNDANE_INSTID), @MUNDANE_OLDX, @MUNDANE_OLDY); + // npcwalkto(x, y) will make it walk to your position. npcwalkto @MUNDANE_OLDX, @MUNDANE_OLDY; // We now update the misleading @MUNDANE_OLD* variable with your current @@ -172,6 +152,11 @@ OnMove: addtimer(150, instance_npcname(.name$, @MUNDANE_INSTID)+"::OnMove"); end; +OnPCLogoutEvent: + if (getq(ArtisQuests_MonaDad) != 2) end; + setq ArtisQuests_MonaDad, 1; + end; + OnPCDieEvent: if (getq(ArtisQuests_MonaDad) != 2) end; setq ArtisQuests_MonaDad, 1; @@ -181,15 +166,41 @@ OnPCDieEvent: // This will cause the NPC to "vanish", player is left to guess that he ran // back to where he originally was. // (ie. The NPC won't be fine without you if we have code to handle that). + // NOTE: Maybe we could send the NPC running back to his original position? + // For future thought and testing by anyone interested. getmapxy(.@m$, .@x, .@y, 0); if (.@m$ ~= "mona@*") { disablenpc(instance_npcname(.name$, @MUNDANE_INSTID)); } + end; - // Uncommenting the code piece will warp you back to your savepoint. - // It's better to don't use this if the previous code works. - //recovery(); - //warp("Save",0,0); +OnInit: + .sex = G_MALE; + .distance = 3; + .speed = 140; + +// Move Mundane every Sunday, Wednesday, and Friday +// to be less repetitive, and save also where it is +OnSun0000: +OnWed0000: +OnFri0000: + if (.begin) + delcells "MundaneProtection"; + + // Micksha may tweak this. + setarray .@valid_x, 96, 132, 150, 49; + setarray .@valid_y, 66, 86, 118, 47; + .@index=rand(0,getarraysize(.@valid_x)-1); + movenpc .name$, .@valid_x[.@index], .@valid_y[.@index]; + + // Create a 3x3 monster collision block over Mundane + setcells .map$, .x-3, .y-3, .x+3, .y+3, 6, "MundaneProtection"; + .begin=true; end; + +OnInstanceInit: + .speed = 140; // Double-sure + end; + } diff --git a/npc/functions/math.txt b/npc/functions/math.txt index 004125c7..357407da 100644 --- a/npc/functions/math.txt +++ b/npc/functions/math.txt @@ -2,6 +2,7 @@ // Authors: // 4144 // Reid +// Jesusalva // Description: // Math functions @@ -38,3 +39,12 @@ function script lognbaselvl { return .@ret; } + + +// result is: lower < target <= higher +// is_between ( lower, higher, target) +function script is_between { + .@val=getarg(2); + return (getarg(0) < .@val && getarg(1) >= .@val); +} + diff --git a/npc/functions/quest-debug/032-ArtisQuests_MonaDad.txt b/npc/functions/quest-debug/032-ArtisQuests_MonaDad.txt index 68ba67fe..bda45b90 100644 --- a/npc/functions/quest-debug/032-ArtisQuests_MonaDad.txt +++ b/npc/functions/quest-debug/032-ArtisQuests_MonaDad.txt @@ -14,7 +14,8 @@ function script QuestDebug32 { GenericQuestDebug ArtisQuests_MonaDad, l("Does not have the quest"), 0, - l("Mona's dad is missing"), 1; + l("Mona's dad is missing"), 1, + l("Mona's dad was rescued"), 3; if (@menuret < 0) { diff --git a/npc/functions/util.txt b/npc/functions/util.txt index d5fe8bc4..a8e157b2 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -107,6 +107,40 @@ function script get_race { return .@allskins$[.@g]; else return .@allskins$[.@g] + " " + .@allraces$[.@g]; - } +// gettimeparam(GETTIME_X) +// Returns the number of seconds/minutes/hours/days/months/years since 01/01/1970 +// This is for truly daily quests, which doesn't imposes a timed wait in hours +function script gettimeparam { + .@p=getarg(0, GETTIME_MINUTE); + + // Seconds (same as gettimetick(2) - use that instead) + .@t=gettimetick(2); + if (.@p == GETTIME_SECOND) + return .@t; + + // Minutes (default) + .@t=.@t/60; + if (.@p == GETTIME_MINUTE) + return .@t; + + // Hours + .@t=.@t/60; + if (.@p == GETTIME_HOUR) + return .@t; + + // Days + .@t=.@t/24; + if (.@p == GETTIME_DAYOFMONTH) + return .@t; + + // Months (estimative) + .@t=.@t/30; + if (.@p == GETTIME_MONTH) + return .@t; + + // Years (estimative, unused, fallback) + .@t=.@t/12; + return .@t; +} -- cgit v1.2.3-70-g09d2 From 198169a0a301a6583b9deeb6e6817caddae814f7 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 11 May 2019 20:30:45 +0000 Subject: Improvements to Calamity Dungeon and Master Skill Book. Reset defeated boss upon failure/success so you can read the book after (within the 15 seconds time limit). This is not unset by lack of ink, so you can (if you are quick enough) trade inks with friends. Also, requires Magic Feather. Reports if someone else kill the boss. --- db/re/item_db.conf | 10 ++++++++++ npc/008-4-1/boss.txt | 7 +++++-- npc/items/master_skillbook.txt | 24 +++++++++++++++++++----- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 7dec6d2b..f5b7847b 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -2756,6 +2756,16 @@ item_db: ( ViewSprite: 756 BindOnEquip: false }, +{ + Id: 757 + AegisName: "MagicFeather" + Name: "Magic Feather" + Type: "IT_ETC" + Buy: 4000 + Sell: 1000 + Weight: 1 + Refine: false +}, { Id: 800 AegisName: "DiamondShard" diff --git a/npc/008-4-1/boss.txt b/npc/008-4-1/boss.txt index 17b04880..fda71fff 100644 --- a/npc/008-4-1/boss.txt +++ b/npc/008-4-1/boss.txt @@ -34,12 +34,15 @@ OnBossDeath: } else { - addtimer(10, "#BossCtrl_008-4-1::OnBegin"); + $@MB_00841=-2; + areatimer("008-4-1", .@x-15, .@y-15, .@x+15, .@y+15, 10, "#BossCtrl_008-4-1::OnBossCheck"); + addtimer(20, "#BossCtrl_008-4-1::OnBegin"); mapannounce "008-4-1", "Boss deafeated by: " + strcharinfo(0), bc_all; } end; OnBossCheck: + @mb_BossId=-1; // TODO: Check if you really fought or was just lurking // Check if party is correct if (getcharid(1) != $@MB_00841) @@ -47,7 +50,7 @@ OnBossCheck: OnBegin: @mb_BossId=GameBalance; @mb_SkillId=MG_COLDBOLT; - @mb_ItemId=Manana; // Placeholder + @mb_ItemId=MagicFeather; // Placeholder @mb_ItemAm=1; addtimer(15000, "#BossCtrl_008-4-1::OnFinish"); end; diff --git a/npc/items/master_skillbook.txt b/npc/items/master_skillbook.txt index d7e7de14..e00a1abc 100644 --- a/npc/items/master_skillbook.txt +++ b/npc/items/master_skillbook.txt @@ -6,7 +6,7 @@ // Contains master skills which can only be learnt after killing boss // See also: // Notes: -// Not exactly equal as Elvano proposal. I actually care for restrictions you know... +// Not exactly as Elvano proposal. I actually care for restrictions you know... // Variables: // PERMANENT: // MASTERBOOK_PAGES - How many pages your Master Book have. @@ -16,7 +16,7 @@ // TEMPORARY: // @mb_BossId - Contains the MobID of the boss your party killed. // @mb_SkillId - Contains the SkillID which can be learnt with the boss. -// @mb_ItemId - Contains the Ink Id to write (or whatever) +// @mb_ItemId - Contains the Feather Id to write (or whatever) // @mb_ItemAm - How many ink is required to write the skill // Remember: @mb_BossId will be reset to zero after 15 seconds from boss death. // Or upon logout. Or when changing maps. Temporary variables aren't reliable. @@ -25,8 +25,8 @@ // Remember: A dialog prevents timer events from happening, but doesn't stops the timer. // TODO: Currently no way to get skill name from database (add getskillinfo() to server-plugin please) // TODO: Reset @mb_* when register_skill() finish -// TODO: Add Magic Ink -// TODO: When another party/player kills the boss, book should say so. +// TODO: You cannot get Magic Feather anywhere in the game (yet) +// TODO: See if the time (15s) is enough. - script #MasterBook NPC_HIDDEN,{ @@ -35,19 +35,30 @@ setnpcdialogtitle l(.book_name$); + // If boss is set, but is negative, this means somebody else defeated it + if (@mb_BossId < 0) + { + mesc l("You did not defeat the boss, you can't learn any skills."); + @mb_BossId=0; + close; + } + + // Report the boss you killed, and the boss level .@mb_lvl=strmobinfo(3, @mb_BossId); mesc l("You just defeated the following boss: @@ (Lv. @@)", strmobinfo(1, @mb_BossId), .@mb_lvl); - // Check if all reqs are met + // The boss must have a skill if (!@mb_SkillId) { mesc l("But there is no skill to be learnt from this boss."); + @mb_BossId=0; close; } // You must have free pages if (array_entries(MASTERBOOK_SKILL) >= MASTERBOOK_PAGES) { mesc l("But you ran out of empty pages on this book."); + @mb_BossId=0; close; } // TODO: Party Level Range @@ -55,12 +66,14 @@ if (BaseLevel+30 < .@mb_lvl) { mesc l("But you are out of the boss level range."); + @mb_BossId=0; close; } // You must have enough materials if (countitem(@mb_ItemId) < @mb_ItemAm) { mesc l("But you do not have enough Magic Ink. (You need: @@ @@)", @mb_ItemAm, getitemlink(@mb_ItemId)); + //@mb_BossId=0; close; } @@ -79,6 +92,7 @@ closeclientdialog; dispbottom l("You have learnt the skill."); } + @mb_BossId=0; close; } -- cgit v1.2.3-70-g09d2 From d887701df743a8e4469b37cabfa260c4529ac89a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 13 May 2019 23:17:23 +0300 Subject: Update from hercules --- .tools/conf/mariadb/battle.conf | 2 +- .tools/conf/mariadb/char-server.conf | 2 +- .tools/conf/mariadb/inter-server.conf | 2 +- .tools/conf/mariadb/login-server.conf | 2 +- .tools/conf/mariadb/logs.conf | 2 +- .tools/conf/mariadb/map-server.conf | 2 +- .tools/conf/mariadb/script.conf | 2 +- .tools/conf/mariadb/socket.conf | 2 +- .tools/conf/mysql/battle.conf | 2 +- .tools/conf/mysql/char-server.conf | 2 +- .tools/conf/mysql/inter-server.conf | 2 +- .tools/conf/mysql/login-server.conf | 2 +- .tools/conf/mysql/logs.conf | 2 +- .tools/conf/mysql/map-server.conf | 2 +- .tools/conf/mysql/script.conf | 2 +- .tools/conf/mysql/socket.conf | 2 +- conf/char/char-server.conf | 5 +-- conf/clans.conf | 2 +- conf/common/inter-server.conf | 2 +- conf/common/socket.conf | 2 +- conf/global/console.conf | 44 ++++++++++----------- conf/import-tmpl/battle.conf | 2 +- conf/import-tmpl/char-server.conf | 2 +- conf/import-tmpl/inter-server.conf | 2 +- conf/import-tmpl/login-server.conf | 2 +- conf/import-tmpl/logs.conf | 2 +- conf/import-tmpl/map-server.conf | 2 +- conf/import-tmpl/script.conf | 2 +- conf/import-tmpl/socket.conf | 2 +- conf/login/login-server.conf | 6 +-- conf/map/battle.conf | 5 ++- conf/map/battle/battle.conf | 2 +- conf/map/battle/battleground.conf | 2 +- conf/map/battle/client.conf | 6 ++- conf/map/battle/drops.conf | 7 +++- conf/map/battle/exp.conf | 2 +- conf/map/battle/feature.conf | 12 +++++- conf/map/battle/gm.conf | 2 +- conf/map/battle/guild.conf | 2 +- conf/map/battle/homunc.conf | 2 +- conf/map/battle/items.conf | 2 +- conf/map/battle/limits.conf | 57 ++++++++++++++++++++++++++++ conf/map/battle/misc.conf | 2 +- conf/map/battle/monster.conf | 4 +- conf/map/battle/party.conf | 2 +- conf/map/battle/pet.conf | 2 +- conf/map/battle/player.conf | 2 +- conf/map/battle/skill.conf | 38 ++++++++++++------- conf/map/battle/status.conf | 2 +- conf/map/logs.conf | 2 +- conf/map/map-server.conf | 3 +- conf/map/script.conf | 2 +- conf/messages.conf | 8 +++- db/constants.conf | 65 -------------------------------- db/mob_db2.conf | 6 ++- db/option_drop_groups.conf | 53 ++++++++++++++++++++++++++ db/re/mob_db.conf | 6 ++- db/re/refine_db.conf | 26 +++++++++++++ db/re/skill_db.conf | 1 + npc/001-1/calypsan.txt | 2 +- npc/001-2-33/lozerk.txt | 2 +- npc/dev/test.txt | 10 ++--- npc/functions/inventoryplace.txt | 2 +- npc/functions/main.txt | 2 +- npc/functions/npcmovegraph.txt | 18 ++++----- npc/functions/warp.txt | 2 +- npc/items/shovel.txt | 6 +-- npc/test/npc1.txt | 4 +- sql-files/main.sql | 3 ++ sql-files/upgrades/2019-04-08--21-52.sql | 29 ++++++++++++++ sql-files/upgrades/2019-04-25--02-12.sql | 24 ++++++++++++ sql-files/upgrades/index.txt | 2 + 72 files changed, 357 insertions(+), 183 deletions(-) create mode 100644 conf/map/battle/limits.conf create mode 100644 db/option_drop_groups.conf create mode 100644 sql-files/upgrades/2019-04-08--21-52.sql create mode 100644 sql-files/upgrades/2019-04-25--02-12.sql diff --git a/.tools/conf/mariadb/battle.conf b/.tools/conf/mariadb/battle.conf index 4080eed7..ff05022c 100644 --- a/.tools/conf/mariadb/battle.conf +++ b/.tools/conf/mariadb/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/char-server.conf b/.tools/conf/mariadb/char-server.conf index f6431c5b..448b8d18 100644 --- a/.tools/conf/mariadb/char-server.conf +++ b/.tools/conf/mariadb/char-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/inter-server.conf b/.tools/conf/mariadb/inter-server.conf index 243dda4e..9cd3932f 100644 --- a/.tools/conf/mariadb/inter-server.conf +++ b/.tools/conf/mariadb/inter-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/login-server.conf b/.tools/conf/mariadb/login-server.conf index feadef97..c8f1f854 100644 --- a/.tools/conf/mariadb/login-server.conf +++ b/.tools/conf/mariadb/login-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/logs.conf b/.tools/conf/mariadb/logs.conf index 99e666d9..47e5a665 100644 --- a/.tools/conf/mariadb/logs.conf +++ b/.tools/conf/mariadb/logs.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/map-server.conf b/.tools/conf/mariadb/map-server.conf index 2c9b1653..11e4356b 100644 --- a/.tools/conf/mariadb/map-server.conf +++ b/.tools/conf/mariadb/map-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/script.conf b/.tools/conf/mariadb/script.conf index b354b2bf..042644ff 100644 --- a/.tools/conf/mariadb/script.conf +++ b/.tools/conf/mariadb/script.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mariadb/socket.conf b/.tools/conf/mariadb/socket.conf index 04d0a40c..57806f21 100644 --- a/.tools/conf/mariadb/socket.conf +++ b/.tools/conf/mariadb/socket.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/battle.conf b/.tools/conf/mysql/battle.conf index 4080eed7..ff05022c 100644 --- a/.tools/conf/mysql/battle.conf +++ b/.tools/conf/mysql/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/char-server.conf b/.tools/conf/mysql/char-server.conf index f6431c5b..448b8d18 100644 --- a/.tools/conf/mysql/char-server.conf +++ b/.tools/conf/mysql/char-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/inter-server.conf b/.tools/conf/mysql/inter-server.conf index 243dda4e..9cd3932f 100644 --- a/.tools/conf/mysql/inter-server.conf +++ b/.tools/conf/mysql/inter-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/login-server.conf b/.tools/conf/mysql/login-server.conf index feadef97..c8f1f854 100644 --- a/.tools/conf/mysql/login-server.conf +++ b/.tools/conf/mysql/login-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/logs.conf b/.tools/conf/mysql/logs.conf index 99e666d9..47e5a665 100644 --- a/.tools/conf/mysql/logs.conf +++ b/.tools/conf/mysql/logs.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/map-server.conf b/.tools/conf/mysql/map-server.conf index 2c9b1653..11e4356b 100644 --- a/.tools/conf/mysql/map-server.conf +++ b/.tools/conf/mysql/map-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/script.conf b/.tools/conf/mysql/script.conf index b354b2bf..042644ff 100644 --- a/.tools/conf/mysql/script.conf +++ b/.tools/conf/mysql/script.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/mysql/socket.conf b/.tools/conf/mysql/socket.conf index 04d0a40c..57806f21 100644 --- a/.tools/conf/mysql/socket.conf +++ b/.tools/conf/mysql/socket.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2016 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/char/char-server.conf b/conf/char/char-server.conf index 9b5f861f..b8f914b8 100644 --- a/conf/char/char-server.conf +++ b/conf/char/char-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -204,8 +204,7 @@ char_configuration: { pincode: { // A window is opened before you can select your character and you will have to enter a pincode by using only your mouse // NOTE: Requires client 2011-03-09aragexeRE or newer. - // 0: disabled - // 1: enabled + // Default: true enabled: false // Request Pincode only on login or on everytime char select is accessed? diff --git a/conf/clans.conf b/conf/clans.conf index 85ef280f..82211fce 100644 --- a/conf/clans.conf +++ b/conf/clans.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2017 Hercules Dev Team +//= Copyright (C) 2017-2019 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/conf/common/inter-server.conf b/conf/common/inter-server.conf index a4122b85..df326a67 100644 --- a/conf/common/inter-server.conf +++ b/conf/common/inter-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/common/socket.conf b/conf/common/socket.conf index 8b8b2186..eb7d494b 100644 --- a/conf/common/socket.conf +++ b/conf/common/socket.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/global/console.conf b/conf/global/console.conf index 030ab7c9..57d58b2f 100644 --- a/conf/global/console.conf +++ b/conf/global/console.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -32,36 +32,36 @@ //========================================================================= console: { - //Time-stamp format which will be printed before all messages. - //Can at most be 20 characters long. - //Common formats: - // %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format) - // %H:%M:%S (hour:minute:second, 24 hour format) - // %d/%b/%Y (day/Month/year) - //For full format information, consult the strftime() manual. + // Time-stamp format which will be printed before all messages. + // Can at most be 20 characters long. + // Common formats: + // %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format) + // %H:%M:%S (hour:minute:second, 24 hour format) + // %d/%b/%Y (day/Month/year) + // For full format information, consult the strftime() manual. //timestamp_format: "[%d/%b %H:%M]" - //If redirected output contains escape sequences (color codes) + // If redirected output contains escape sequences (color codes) stdout_with_ansisequence: false - //Makes server output more silent by omitting certain types of messages: - //1: Hide Information messages - //2: Hide Status messages - //4: Hide Notice Messages - //8: Hide Warning Messages - //16: Hide Error and SQL Error messages. - //32: Hide Debug Messages - //Example: "console_silent: 7" Hides information, status and notice messages (1+2+4) + // Makes server output more silent by omitting certain types of messages: + // 1: Hide Information messages + // 2: Hide Status messages + // 4: Hide Notice Messages + // 8: Hide Warning Messages + // 16: Hide Error and SQL Error messages. + // 32: Hide Debug Messages + // Example: "console_silent: 7" Hides information, status and notice messages (1+2+4) console_silent: 0 // [CHAR] Display information on the console whenever characters/guilds/parties/pets are loaded/saved? save_log: true // [MAP] Makes server log selected message types to a file in the /log/ folder - //1: Log Warning Messages - //2: Log Error and SQL Error messages. - //4: Log Debug Messages - //Example: "console_msg_log: 7" logs all 3 kinds - //Messages logged by this overrides console_silent setting + // 1: Log Warning Messages + // 2: Log Error and SQL Error messages. + // 4: Log Debug Messages + // Example: "console_msg_log: 7" logs all 3 kinds + // Messages logged by this overrides console_silent setting console_msg_log: 7 } diff --git a/conf/import-tmpl/battle.conf b/conf/import-tmpl/battle.conf index 7d1d0357..ff05022c 100644 --- a/conf/import-tmpl/battle.conf +++ b/conf/import-tmpl/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/char-server.conf b/conf/import-tmpl/char-server.conf index 4c9462bc..3162a31a 100644 --- a/conf/import-tmpl/char-server.conf +++ b/conf/import-tmpl/char-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/inter-server.conf b/conf/import-tmpl/inter-server.conf index c23143b3..9cd3932f 100644 --- a/conf/import-tmpl/inter-server.conf +++ b/conf/import-tmpl/inter-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/login-server.conf b/conf/import-tmpl/login-server.conf index 1c45f94f..c8f1f854 100644 --- a/conf/import-tmpl/login-server.conf +++ b/conf/import-tmpl/login-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/logs.conf b/conf/import-tmpl/logs.conf index 8f8c2ea6..47e5a665 100644 --- a/conf/import-tmpl/logs.conf +++ b/conf/import-tmpl/logs.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/map-server.conf b/conf/import-tmpl/map-server.conf index 4d907025..11e4356b 100644 --- a/conf/import-tmpl/map-server.conf +++ b/conf/import-tmpl/map-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/script.conf b/conf/import-tmpl/script.conf index 04024528..042644ff 100644 --- a/conf/import-tmpl/script.conf +++ b/conf/import-tmpl/script.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/import-tmpl/socket.conf b/conf/import-tmpl/socket.conf index 7ce17814..57806f21 100644 --- a/conf/import-tmpl/socket.conf +++ b/conf/import-tmpl/socket.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/login/login-server.conf b/conf/login/login-server.conf index d3ae5a03..04faf0fa 100644 --- a/conf/login/login-server.conf +++ b/conf/login/login-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -74,8 +74,8 @@ login_configuration: { // Can you use _M/_F to make new accounts on the server? new_account: true - //If new_account is enabled, minimum length to userid and passwords should be 4? - //Must be 'true' unless your client uses both 'Disable 4 LetterUserID/Password' Diffs + // If new_account is enabled, minimum length to userid and passwords should be 4? + // Must be 'true' unless your client uses both 'Disable 4 LetterUserID/Password' Diffs new_acc_length_limit: true // Account registration flood protection system diff --git a/conf/map/battle.conf b/conf/map/battle.conf index cc968723..f8c6b9a1 100644 --- a/conf/map/battle.conf +++ b/conf/map/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -76,6 +76,9 @@ battle_configuration: { // Feature control (on/off) settings @include "conf/map/battle/feature.conf" + // Different calculation limits + @include "conf/map/battle/limits.conf" + // Anything else that didn't fit anywhere else. // Includes duel, day/night, mute/manner, log settings. @include "conf/map/battle/misc.conf" diff --git a/conf/map/battle/battle.conf b/conf/map/battle/battle.conf index 4b1632e3..eafb5ec9 100644 --- a/conf/map/battle/battle.conf +++ b/conf/map/battle/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/battleground.conf b/conf/map/battle/battleground.conf index b2a482f3..08c7fcd8 100644 --- a/conf/map/battle/battleground.conf +++ b/conf/map/battle/battleground.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/client.conf b/conf/map/battle/client.conf index ea5f1ac0..e5fb29d9 100644 --- a/conf/map/battle/client.conf +++ b/conf/map/battle/client.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -198,3 +198,7 @@ ping_timer_inverval: 30 // Send packets timeout in seconds before ping packet can be sent. // For clients 20190320 Re+ ping_time: 20 + +// Drop or not connection after client send disconnect request packet +// Official is false +drop_connection_on_quit: true diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf index eb7d94f1..cf09d14d 100644 --- a/conf/map/battle/drops.conf +++ b/conf/map/battle/drops.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -146,3 +146,8 @@ drops_by_luk2: 0 // 1: Only marine spheres drop items. // 2: All alchemist summons drop items. alchemist_summon_reward: 1 + +// The maximum number of full iterations that server can do when dropping an item with options. +// When picking random options for a dropped item, it does lots of iterations to choose the option to be set, +// this value limits the number of iterations to avoid making the server hang in a long loop. +option_drop_max_loop: 10 diff --git a/conf/map/battle/exp.conf b/conf/map/battle/exp.conf index 8ca3de93..54b2ec4e 100644 --- a/conf/map/battle/exp.conf +++ b/conf/map/battle/exp.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/feature.conf b/conf/map/battle/feature.conf index be4d88b9..b6d8e161 100644 --- a/conf/map/battle/feature.conf +++ b/conf/map/battle/feature.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -88,4 +88,14 @@ features: { // true: enable (Default) // false: disable enable_achievement_system: false + + // Enable Refinery UI (requires 2016-10-05Ragexe/RE) + // true: enable (Default) + // false: disable + enable_refinery_ui: false + + // Replace Refine NPCs with Refinery UI + // true: enable + // false: disable (default) + replace_refine_npcs: false } diff --git a/conf/map/battle/gm.conf b/conf/map/battle/gm.conf index bfa20821..782e44db 100644 --- a/conf/map/battle/gm.conf +++ b/conf/map/battle/gm.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/guild.conf b/conf/map/battle/guild.conf index e9276079..101349a8 100644 --- a/conf/map/battle/guild.conf +++ b/conf/map/battle/guild.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/homunc.conf b/conf/map/battle/homunc.conf index 0042df01..7ccaf8f8 100644 --- a/conf/map/battle/homunc.conf +++ b/conf/map/battle/homunc.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/items.conf b/conf/map/battle/items.conf index e834b80f..0dd990e0 100644 --- a/conf/map/battle/items.conf +++ b/conf/map/battle/items.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/limits.conf b/conf/map/battle/limits.conf new file mode 100644 index 00000000..78498219 --- /dev/null +++ b/conf/map/battle/limits.conf @@ -0,0 +1,57 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2019 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 +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +// Battle (Limits) Configuration File +//========================================================================= + +// basic attack limits +batk_min_limit: 0 +batk_max_limit: 65535 + +// magic attack limits + +matk_min_limit: 0 +matk_max_limit: 65535 + +// weapon attack limits +watk_min_limit: 0 +watk_max_limit: 65535 + +// flee limits +flee_min_limit: 1 +flee_max_limit: 32767 + +// flee2 limits +flee2_min_limit: 10 +flee2_max_limit: 32767 + +// critical attack limits +critical_min_limit: 10 +critical_max_limit: 32767 + +// hit limits +hit_min_limit: 1 +hit_max_limit: 32767 diff --git a/conf/map/battle/misc.conf b/conf/map/battle/misc.conf index 7575cdbb..aa5cf850 100644 --- a/conf/map/battle/misc.conf +++ b/conf/map/battle/misc.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/monster.conf b/conf/map/battle/monster.conf index 3ea3fb93..d75b7d16 100644 --- a/conf/map/battle/monster.conf +++ b/conf/map/battle/monster.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -137,7 +137,7 @@ mob_skill_delay: 100 mob_count_rate: 100 // Respawn rate of monsters on a map. 50 would make mobs respawn twice as fast (half delay time) (Note 2) -//Note: This does not affects mobs with immediate respawn (most normal mobs) +// Note: This does not affects mobs with immediate respawn (most normal mobs) mob_spawn_delay: 100 plant_spawn_delay: 100 boss_spawn_delay: 100 diff --git a/conf/map/battle/party.conf b/conf/map/battle/party.conf index da720182..085e3091 100644 --- a/conf/map/battle/party.conf +++ b/conf/map/battle/party.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/pet.conf b/conf/map/battle/pet.conf index 148effc8..cbe854d4 100644 --- a/conf/map/battle/pet.conf +++ b/conf/map/battle/pet.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/player.conf b/conf/map/battle/player.conf index 913f3ec6..2b1569e8 100644 --- a/conf/map/battle/player.conf +++ b/conf/map/battle/player.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/battle/skill.conf b/conf/map/battle/skill.conf index da8d1906..e0188c8f 100644 --- a/conf/map/battle/skill.conf +++ b/conf/map/battle/skill.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -53,8 +53,8 @@ min_skill_delay_limit: 100 // appear to "teleport" afterwards. default_walk_delay: 300 -//Completely disable skill delay of the following types (Note 3) -//NOTE: By default mobs don't have the skill delay as specified in the skill +// Completely disable skill delay of the following types (Note 3) +// NOTE: By default mobs don't have the skill delay as specified in the skill // database, but follow their own 'reuse' skill delay which is specified on // the mob skill db. When set, the delay for all skills become // min_skill_delay_limit. @@ -107,14 +107,14 @@ clear_skills_on_death: 0 // Should ground placed skills be removed when the caster changes maps? (Note 3) clear_skills_on_warp: 15 -//Setting this to true will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" -//The two skills affected by default are Pneuma and Safety Wall (if set to true, those two skills will not protect everyone, but only allies) -//See db/skill_unit_db.txt for more info. +// Setting this to true will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" +// The two skills affected by default are Pneuma and Safety Wall (if set to true, those two skills will not protect everyone, but only allies) +// See db/skill_unit_db.txt for more info. defunit_not_enemy: false // Do skills do at least 'hits' damage when they don't miss/are blocked? -//(for example, will firebolts always do "number of bolts" damage versus plants?) -//Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. +// (for example, will firebolts always do "number of bolts" damage versus plants?) +// Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. skill_min_damage: 6 // The delay rate of monk's combo (Note 2) @@ -138,10 +138,22 @@ skill_nofootset: 1 // Default on official servers: true for player-traps gvg_traps_target_all: 1 -// Some traps settings (add as necessary): -// 1: Traps are invisible to those who come into view of it. When unset, all traps are visible at all times. -// (Invisible traps can be revealed through Hunter's Detecting skill) -traps_setting: 0 +// Hunter's traps visibility setting (with HiddenTrap: true on skill_db.conf) +// Here we have 2 configs: +// visibility stands to how traps are displayed by default: +// 0: Traps are always visible to everyone (Hercules/Pre-renewal) +// 1: Traps with HiddenTrap: true are hidden in versus maps (PvP/GvG/BG) +// 2: Traps with HiddenTrap: true are always invisible (Renewal) (Default) +// Notes: - Invisibility applies to players that are not in caster's party. +// - Invisible traps can be made visible to everyone with Hunter's Detecting skill. +// +// display_on_trigger tells if HiddenTraps should become visible once triggered +// 0: Do not make traps visible once triggered (except for Ankle Snare) (Aegis) +// 1: Always make traps visible once triggered (Hercules) +trap_options: { + visibility: 2 + display_on_trigger: 1 +} // Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) // 1: Enable players to damage the floras outside of versus grounds. @@ -175,7 +187,7 @@ monster_cloak_check_type: 4 // Can't place unlimited land skills at the same time (Note 3) land_skill_limit: 9 -//Determines which kind of skill-failed messages should be sent: +// Determines which kind of skill-failed messages should be sent: // 0 - Enable by default // 1 - Disable all skill-failed messages. // 2 - Disable skill-failed messages due to can-act delays. diff --git a/conf/map/battle/status.conf b/conf/map/battle/status.conf index 94459e11..8ba76199 100644 --- a/conf/map/battle/status.conf +++ b/conf/map/battle/status.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/logs.conf b/conf/map/logs.conf index f56db9ee..db584049 100644 --- a/conf/map/logs.conf +++ b/conf/map/logs.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/map/map-server.conf b/conf/map/map-server.conf index ffcc2a38..be19a1cb 100644 --- a/conf/map/map-server.conf +++ b/conf/map/map-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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 @@ -102,6 +102,7 @@ map_configuration: { // 0x040: After successfully get/delete/complete a quest // 0x080: After every buying store transaction // 0x100: After every bank transaction (deposit/withdraw) + // 0x200: After every allow party flag change // NOTE: These settings decrease the chance of dupes/lost items // when there's a server crash at the expense of increasing the // map/char server lag. If your server rarely crashes, but diff --git a/conf/map/script.conf b/conf/map/script.conf index f18e9d6e..fc617d85 100644 --- a/conf/map/script.conf +++ b/conf/map/script.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 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/conf/messages.conf b/conf/messages.conf index 212da118..8b737e6f 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -448,7 +448,8 @@ // Return pet to egg message 451: You can't return your pet because your inventory is full. 452: usage @camerainfo range rotation latitude -//453-497 FREE +453: Refinery UI is not available +//454-497 FREE // Messages of others (not for GM commands) // ---------------------------------------- @@ -1568,5 +1569,10 @@ 1498: You can't add a party bound item to a character without party! 1499: You can't add a guild bound item to a character without guild! +// @dropall +1500: Usage: @dropall {} +1501: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10, delayed-consumable = 11, cash = 18 +1502: %d items are dropped! + //Custom translations import: conf/import/msg_conf.txt diff --git a/db/constants.conf b/db/constants.conf index 2d75f8cb..422f9d3f 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3742,71 +3742,6 @@ constants_db: { SEX_MALE: 1 SEX_ANY: 2 - comment__: "Script Unit Data Types" - UDT_TYPE: 0 - UDT_SIZE: 1 - UDT_LEVEL: 2 - UDT_HP: 3 - UDT_MAXHP: 4 - UDT_SP: 5 - UDT_MAXSP: 6 - UDT_MASTERAID: 7 - UDT_MASTERCID: 8 - UDT_MAPIDXY: { - Value: 9 - Deprecated: true // for setunitdata use *unitwarp, for getunitdata use *getmapxy - } - UDT_WALKTOXY: { - Value: 10 - Deprecated: true // use *unitwalk - } - UDT_SPEED: 11 - UDT_MODE: 12 - UDT_AI: 13 - UDT_SCOPTION: 14 - UDT_SEX: 15 - UDT_CLASS: 16 - UDT_HAIRSTYLE: 17 - UDT_HAIRCOLOR: 18 - UDT_HEADBOTTOM: 19 - UDT_HEADMIDDLE: 20 - UDT_HEADTOP: 21 - UDT_CLOTHCOLOR: 22 - UDT_SHIELD: 23 - UDT_WEAPON: 24 - UDT_LOOKDIR: 25 - UDT_CANMOVETICK: 26 - UDT_STR: 27 - UDT_AGI: 28 - UDT_VIT: 29 - UDT_INT: 30 - UDT_DEX: 31 - UDT_LUK: 32 - UDT_ATKRANGE: 33 - UDT_ATKMIN: 34 - UDT_ATKMAX: 35 - UDT_MATKMIN: 36 - UDT_MATKMAX: 37 - UDT_DEF: 38 - UDT_MDEF: 39 - UDT_HIT: 40 - UDT_FLEE: 41 - UDT_PDODGE: 42 - UDT_CRIT: 43 - UDT_RACE: 44 - UDT_ELETYPE: 45 - UDT_ELELEVEL: 46 - UDT_AMOTION: 47 - UDT_ADELAY: 48 - UDT_DMOTION: 49 - UDT_HUNGER: 50 - UDT_INTIMACY: 51 - UDT_LIFETIME: 52 - UDT_MERC_KILLCOUNT: 53 - UDT_STATADD: 54 - UDT_ROBE: 55 - UDT_BODY2: 56 - comment__: "HatEffect Constants" HAT_EF_BLOSSOM_FLUTTERING: 1 HAT_EF_MERMAID_LONGING: 2 diff --git a/db/mob_db2.conf b/db/mob_db2.conf index 015bae63..4f6141aa 100644 --- a/db/mob_db2.conf +++ b/db/mob_db2.conf @@ -57,11 +57,13 @@ mob_db: ( MvpExp: mvp experience (int, defaults to 0) MvpDrops: { AegisName: chance (string: int) - ... + // ... } Drops: { AegisName: chance (string: int) - ... + // or + AegisName: (chance, "Option Drop Group") + // ... } }, diff --git a/db/option_drop_groups.conf b/db/option_drop_groups.conf new file mode 100644 index 00000000..b293be19 --- /dev/null +++ b/db/option_drop_groups.conf @@ -0,0 +1,53 @@ +//================= Hercules Database ===================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 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 +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +//= Random Option Drop Group Database +//========================================================================= + +option_drop_group_db: ( +{ +/************************************************************************** + ************* Entry structure ******************************************** + ************************************************************************** + : ( + { // Option Slot 1 + Rate: (int) chance of filling option slot 1 (100 = 1%) + + // Possible options for slot 1 + // min/max value : int, defaults to 0 + // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies + OptionName: value + // or + OptionName: [min value, max value] + // or + OptionName: [min value, max value, chance] + // ... (as many as you want) + }, + // ... (up to MAX_ITEM_OPTION) + ), +**************************************************************************/ +} +) diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index 9b70f689..420f8489 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -91,11 +91,13 @@ mob_db: ( MvpExp: mvp experience (int, defaults to 0) MvpDrops: { AegisName: chance (string: int) - ... + // ... } Drops: { AegisName: chance (string: int) - ... + // or + AegisName: (chance, "Option Drop Group") + // ... } WeaponAttacks: { WeaponType: 10000 diff --git a/db/re/refine_db.conf b/db/re/refine_db.conf index 4974e003..cea47bde 100644 --- a/db/re/refine_db.conf +++ b/db/re/refine_db.conf @@ -37,6 +37,32 @@ Armors/WeaponLevel1~4: { // Specifies weap RandomBonusStartLevel: (int) // This value specifies the start point for those levels that give a random bonus value (usually the first unsafe upgrade). // - RandomBonusStartLevel is only applied for weapons, and not displayed client-side. RandomBonusValue: (int) // A random number between 0 and (Random bonus start level - Upgrade level + 1) * this value is applied for all upgrades past. + + RefineryUISettings: ( + { + Level: (int or array of int) // Holds either the individule refine level meant for this setting or an array defining a range + of Low to Max level + BlacksmithBlessing: (int) (optional) // How many Blacksmith Blessing required for this range to be safe from breaking + Announce: "(string)" (optional) // Sends an announcement server wide when a player reach this refine level using + Refinery UI, this feature is only available starting from 2017-08-30 RagexeRE or + 2017-09-06 Ragexe the field accepts the following values and it defaults to not announce + Success to set the announcement on item refine successful + Failure to set the announcement on item refine failure + Always to always announce it + Items: { + AegisName: { + Type: "(string)" // The type to determine the chances used for this item, REFINE_CHANCE_TYPE_* + constants are used in here + Cost: (int) (optional) // Amount of zeny required + FailureBehavior: "(string)" (optional) // The expected behvaior on failure for this item, the following strings are used in here + Destroy (default) sets the item to be destroyed on failure + Keep keeps the item after failure + Downgrade downgrades the item by one level on failure + } + } + } + ) + Rates: { // Per level configuration of the refine rates. Lv1~20: { // Lv1 ~ Lv20. NormalChance: (int) // (optional, defaults to 100) Chance of successful refine using normal ores (100 = 100%). diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index d24edf1c..95adf795 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -75,6 +75,7 @@ Works like FreeCastReduced, but not reduce speed. ShowSkillScale: true/false (boolean, defaults to false) AllowReproduce: true/false (boolean, defaults to false) + HiddenTrap: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") Types: "None", "Weapon", "Magic" or "Misc" diff --git a/npc/001-1/calypsan.txt b/npc/001-1/calypsan.txt index c8b5b8bb..36668f1b 100644 --- a/npc/001-1/calypsan.txt +++ b/npc/001-1/calypsan.txt @@ -46,7 +46,7 @@ shop "Cashmere#Dye001-1"; break; default: - debugmes "Calypsan script error, tissue_type is incorrect"; + consolemes(CONSOLEMES_ERROR, "Calypsan script error, tissue_type is incorrect"); break; } close; diff --git a/npc/001-2-33/lozerk.txt b/npc/001-2-33/lozerk.txt index cdafb6bf..c751d4a0 100644 --- a/npc/001-2-33/lozerk.txt +++ b/npc/001-2-33/lozerk.txt @@ -143,7 +143,7 @@ { .@legion_progress = getq(Artis_Legion_Progress); .@enora = getq(ArtisQuests_Enora); - debugmes .@legion_progress + " " + .@enora; + consolemes(CONSOLEMES_DEBUG, .@legion_progress + " " + .@enora); select rif((.@legion_progress == 0) && (.@enora == 11), lg("Enora sent me here.")), rif(.@legion_progress == 2, lg("I'm done with my training.")), diff --git a/npc/dev/test.txt b/npc/dev/test.txt index e9058aee..f98651df 100644 --- a/npc/dev/test.txt +++ b/npc/dev/test.txt @@ -730,10 +730,10 @@ function script HerculesSelfTestHelper { callsub(OnCheckStr, "sprintf (positional)", sprintf("'%2$s' '%1$c'", "First", "Second"), "'Second' 'F'"); if (.errors) { - debugmes "Script engine self-test [ \033[0;31mFAILED\033[0m ]"; - debugmes "**** The test was completed with " + .errors + " errors. ****"; + consolemes(CONSOLEMES_DEBUG, "Script engine self-test [ \033[0;31mFAILED\033[0m ]"); + consolemes(CONSOLEMES_ERROR, "**** The test was completed with " + .errors + " errors. ****"); } else { - debugmes "Script engine self-test [ \033[0;32mPASSED\033[0m ]"; + consolemes(CONSOLEMES_DEBUG, "Script engine self-test [ \033[0;32mPASSED\033[0m ]"); } return .errors; end; @@ -778,8 +778,8 @@ OnReportError: .@val$ = getarg(1,""); .@ref$ = getarg(2,""); if (.errors == 1) - debugmes "**** WARNING: Any self-test results past this point are unreliable because of previous errors. ****"; - debugmes "Error: "+.@msg$+": '"+.@val$+"' (found) != '"+.@ref$+"' (expected)"; + consolemes(CONSOLEMES_ERROR, "**** WARNING: Any self-test results past this point are unreliable because of previous errors. ****"); + consolemes(CONSOLEMES_ERROR, "Error: "+.@msg$+": '"+.@val$+"' (found) != '"+.@ref$+"' (expected)"); ++.errors; //end; return; diff --git a/npc/functions/inventoryplace.txt b/npc/functions/inventoryplace.txt index 4a5e08ca..c7eff88b 100644 --- a/npc/functions/inventoryplace.txt +++ b/npc/functions/inventoryplace.txt @@ -13,7 +13,7 @@ function script inventoryplace { if (.@argc % 2 != 0) { - debugmes "inventoryplace: Wrong argument count."; + consolemes(CONSOLEMES_ERROR, "inventoryplace: Wrong argument count."); close; } diff --git a/npc/functions/main.txt b/npc/functions/main.txt index e31b02d0..c8a37b1c 100644 --- a/npc/functions/main.txt +++ b/npc/functions/main.txt @@ -146,7 +146,7 @@ function script speech { // Show debug message if .debug variable of NPC is set to 1 function script npcdebug { if (getvariableofnpc(.debug, strnpcinfo(3))) - debugmes strnpcinfo(3) + ": " + getarg(0); + consolemes(CONSOLEMES_DEBUG, strnpcinfo(3) + ": " + getarg(0)); return; } diff --git a/npc/functions/npcmovegraph.txt b/npc/functions/npcmovegraph.txt index d03f15c5..54e4e783 100644 --- a/npc/functions/npcmovegraph.txt +++ b/npc/functions/npcmovegraph.txt @@ -35,12 +35,12 @@ function script initmovegraph { function script findmovegraphlabel { if (!getargcount()) { - debugmes "findmovegraphlabel: no argument"; + consolemes(CONSOLEMES_DEBUG, "findmovegraphlabel: no argument"); return -1; } if (!isstr(getarg(0))) { - debugmes "findmovegraphlabel: need string argument"; + consolemes(CONSOLEMES_DEBUG, "findmovegraphlabel: need string argument"); return -1; } @@ -144,7 +144,7 @@ function script execmovecmd { } else { - debugmes "execmovecmd: unknown WARP destination label: " + .@cmd$[1]; + consolemes(CONSOLEMES_DEBUG, "execmovecmd: unknown WARP destination label: " + .@cmd$[1]); } } else if (.@cmd$[0] == "call") @@ -152,7 +152,7 @@ function script execmovecmd { switch (getarraysize(.@cmd$)) { case 1: - debugmes "execmovecmd: CALL command needs some parameters"; + consolemes(CONSOLEMES_DEBUG, "execmovecmd: CALL command needs some parameters"); return 0; case 2: return callfunc(.@cmd$[1]); @@ -176,7 +176,7 @@ function script execmovecmd { else if (.@cmd$[0] == "debugmes") { deletearray .@cmd$[0], 1; - debugmes implode(.@cmd$, " "); + consolemes(CONSOLEMES_DEBUG, implode(.@cmd$, " ")); } else if (.@cmd$[0] == "flags") { @@ -196,7 +196,7 @@ function script execmovecmd { } else { - debugmes "Unknown move graph cmd: " + .@cmd$[0]; + consolemes(CONSOLEMES_DEBUG, "Unknown move graph cmd: " + .@cmd$[0]); } return 0; } @@ -226,7 +226,7 @@ function script getnextmovecmd { function script getrandompoint { if (getargcount() < 4) { - debugmes "error: getrandompoint(x1, y1, x2, y2) takes 4 arguments"; + consolemes(CONSOLEMES_DEBUG, "error: getrandompoint(x1, y1, x2, y2) takes 4 arguments"); return -1; } @@ -264,7 +264,7 @@ function script getrandompoint { goto L_Found; // finally, if we don't find anything - debugmes "error: getrandompoint: cannot find walkable cell in rectangle [(" + .@x1 + "," + .@y1 + ") , (" + .@x2 + "," + .@y2 + ")]"; + consolemes(CONSOLEMES_DEBUG, "error: getrandompoint: cannot find walkable cell in rectangle [(" + .@x1 + "," + .@y1 + ") , (" + .@x2 + "," + .@y2 + ")]"); return -1; L_Found: @@ -282,7 +282,7 @@ L_Found: function script mg_npcwalkto { if (getargcount() < 2) { - debugmes "usage: mg_npcwalkto(x1,y1[,x2,y2])"; + consolemes(CONSOLEMES_DEBUG, "usage: mg_npcwalkto(x1,y1[,x2,y2])"); return -1; } diff --git a/npc/functions/warp.txt b/npc/functions/warp.txt index df7b76b0..46c390ad 100644 --- a/npc/functions/warp.txt +++ b/npc/functions/warp.txt @@ -38,7 +38,7 @@ function script slide_or_warp { if (!isloggedin(.@aid)) { if ((.@aid = playerattached()) == 0) { - debugmes("slide_or_warp: no player attached!"); + consolemes(CONSOLEMES_DEBUG, "slide_or_warp: no player attached!"); return false; } } diff --git a/npc/items/shovel.txt b/npc/items/shovel.txt index 81c0d22e..fef4c24f 100644 --- a/npc/items/shovel.txt +++ b/npc/items/shovel.txt @@ -36,7 +36,7 @@ function AddDigRect { if (getargcount() < 5) { - debugmes "usage: AddDigRect(map$,x1,y1,x2,y2)"; + consolemes(CONSOLEMES_ERROR, "usage: AddDigRect(map$,x1,y1,x2,y2)"); return 0; } .@map$ = str(getarg(0)); @@ -201,7 +201,7 @@ OnInit: function script shovel_addquest { if (getargcount() < 4) { - debugmes "usage: shovel_addquest(map$,x,y,func$)"; + consolemes(CONSOLEMES_ERROR, "usage: shovel_addquest(map$,x,y,func$)"); return 0; } .@map$ = str(getarg(0)); @@ -219,7 +219,7 @@ function script shovel_addquest { function script shovel_adddigrect { if (getargcount() < 5) { - debugmes "usage: shovel_adddigrect(map$,x1,y1,x2,y2)"; + consolemes(CONSOLEMES_ERROR, "usage: shovel_adddigrect(map$,x1,y1,x2,y2)"); return 0; } .@map$ = str(getarg(0)); diff --git a/npc/test/npc1.txt b/npc/test/npc1.txt index 38a03142..a75a0120 100644 --- a/npc/test/npc1.txt +++ b/npc/test/npc1.txt @@ -709,9 +709,9 @@ OnSkillInvoke: end; OnReadyCheck: - debugmes "OnReadyCheck"; + consolemes(CONSOLEMES_DEBUG, "OnReadyCheck"); $@bgid1 = waitingroom2bg("testbg", 10, 10, "bgnpc1::OnLogout","bgnpc1:OnDie"); - debugmes "bgid=" + str($@bgid1); + consolemes(CONSOLEMES_DEBUG, "bgid=" + str($@bgid1)); setbgteam $@bgid1, 1; bg_warp $@bgid1, "testbg", 10, 10; } diff --git a/sql-files/main.sql b/sql-files/main.sql index a08ec60b..241efd39 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -449,6 +449,7 @@ CREATE TABLE IF NOT EXISTS `guild_castle` ( CREATE TABLE IF NOT EXISTS `guild_expulsion` ( `guild_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', + `char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `name` VARCHAR(24) NOT NULL DEFAULT '', `mes` VARCHAR(40) NOT NULL DEFAULT '', PRIMARY KEY (`guild_id`,`name`) @@ -925,6 +926,8 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1532403228); -- 2018-07-2 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1535865732); -- 2018-09-01--05-22.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1544738447); -- 2018-12-14--01-02.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1546059075); -- 2018-12-29--07-51.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1554760320); -- 2019-04-08--21-52.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1556147483); -- 2019-04-25--02-12.sql -- -- Table structure for table `storage` diff --git a/sql-files/upgrades/2019-04-08--21-52.sql b/sql-files/upgrades/2019-04-08--21-52.sql new file mode 100644 index 00000000..bd015acf --- /dev/null +++ b/sql-files/upgrades/2019-04-08--21-52.sql @@ -0,0 +1,29 @@ +#1554760320 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2013-2019 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 +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +UPDATE `auction` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `cart_inventory` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `inventory` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `guild_storage` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `mail` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `rodex_items` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `storage` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); + +INSERT INTO `sql_updates` (`timestamp`, `ignored`) VALUES (1554760320, 'No'); diff --git a/sql-files/upgrades/2019-04-25--02-12.sql b/sql-files/upgrades/2019-04-25--02-12.sql new file mode 100644 index 00000000..64abe45b --- /dev/null +++ b/sql-files/upgrades/2019-04-25--02-12.sql @@ -0,0 +1,24 @@ +#1556147483 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2013-2019 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 +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +TRUNCATE TABLE `guild_expulsion`; +ALTER TABLE `guild_expulsion` ADD `char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0' AFTER `account_id`; + +INSERT INTO `sql_updates` (`timestamp`) VALUES (1556147483); diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index 13b2fda6..ac80cdf0 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -51,3 +51,5 @@ 2018-09-01--05-22.sql 2018-12-14--01-02.sql 2018-12-29--07-51.sql +2019-04-08--21-52.sql +2019-04-25--02-12.sql -- cgit v1.2.3-70-g09d2 From b85f0af03f020ec620fbc40627d78e1f0ad75266 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 14 May 2019 03:11:21 +0300 Subject: Fix refine db warnings --- db/re/refine_db.conf | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/db/re/refine_db.conf b/db/re/refine_db.conf index cea47bde..e21c03c0 100644 --- a/db/re/refine_db.conf +++ b/db/re/refine_db.conf @@ -77,6 +77,17 @@ Armors/WeaponLevel1~4: { // Specifies weap **************************************************************************/ Armors: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 0 RandomBonusStartLevel: 0 RandomBonusValue: 0 @@ -198,6 +209,17 @@ Armors: { } } WeaponLevel1: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 200 RandomBonusStartLevel: 8 RandomBonusValue: 300 @@ -278,6 +300,17 @@ WeaponLevel1: { } } WeaponLevel2: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 300 RandomBonusStartLevel: 7 RandomBonusValue: 500 @@ -364,6 +397,17 @@ WeaponLevel2: { } } WeaponLevel3: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 500 RandomBonusStartLevel: 6 RandomBonusValue: 800 @@ -456,6 +500,17 @@ WeaponLevel3: { } } WeaponLevel4: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 700 RandomBonusStartLevel: 5 RandomBonusValue: 1400 -- cgit v1.2.3-70-g09d2 From 98b3656057c66753144537daad8528750a45cc37 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 14 May 2019 07:57:26 +0300 Subject: Disable wrong code in lloyd.txt --- npc/001-2-19/lloyd.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npc/001-2-19/lloyd.txt b/npc/001-2-19/lloyd.txt index 6cfd8bc3..4120c502 100644 --- a/npc/001-2-19/lloyd.txt +++ b/npc/001-2-19/lloyd.txt @@ -240,7 +240,7 @@ OnPCLoginEvent: BankVault += max(0, #MerchantBank); #MerchantBank = 0; } - if (getmap() ~= "*-3-*") - updateSpotlight(); +// if (getmap() ~= "*-3-*") +// updateSpotlight(); end; } -- cgit v1.2.3-70-g09d2 From b730adcc033c0d749337c920413b0805b5a7018f Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 15 May 2019 18:53:03 +0000 Subject: Fix the broken code using @4144's advise. If something is wrong, please blame him instead :innocent: --- npc/001-2-19/lloyd.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/npc/001-2-19/lloyd.txt b/npc/001-2-19/lloyd.txt index 4120c502..fc17cc4f 100644 --- a/npc/001-2-19/lloyd.txt +++ b/npc/001-2-19/lloyd.txt @@ -240,7 +240,8 @@ OnPCLoginEvent: BankVault += max(0, #MerchantBank); #MerchantBank = 0; } -// if (getmap() ~= "*-3-*") -// updateSpotlight(); + // If you're inside a cave, update spotlights + if (strpos(getmap(), "-3-") >= 0) + updateSpotlight(); end; } -- cgit v1.2.3-70-g09d2 From a0c8bd0d66ad11095d27a2df6cd9eec0dee8a1c9 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 26 Jun 2019 21:38:19 +0300 Subject: Update from hercules Updated configs, db, sql files --- conf/map/script.conf | 2 +- db/constants.conf | 2 ++ sql-files/main.sql | 2 ++ sql-files/upgrades/2019-05-09--18-07.sql | 22 ++++++++++++++++++++++ sql-files/upgrades/index.txt | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 sql-files/upgrades/2019-05-09--18-07.sql diff --git a/conf/map/script.conf b/conf/map/script.conf index fc617d85..802ce253 100644 --- a/conf/map/script.conf +++ b/conf/map/script.conf @@ -52,7 +52,7 @@ script_configuration: { // Default value of the 'min' argument of the script command 'input'. // When the 'min' argument isn't provided, this value is used instead. // Defaults to 0. - //input_min_value: 0 + input_min_value: 0 // Default value of the 'max' argument of the script command 'input'. // When the 'max' argument isn't provided, this value is used instead. diff --git a/db/constants.conf b/db/constants.conf index 422f9d3f..51b8d9ae 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -424,6 +424,8 @@ constants_db: { mf_noviewid: 56 mf_pairship_startable: 57 mf_pairship_endable: 58 + mf_nostorage: 59 + mf_nogstorage: 60 comment__: "Cell Properties" cell_walkable: 0 diff --git a/sql-files/main.sql b/sql-files/main.sql index 241efd39..e364ec77 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -241,6 +241,7 @@ CREATE TABLE IF NOT EXISTS `char` ( `uniqueitem_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', `sex` ENUM('M','F','U') NOT NULL DEFAULT 'U', `hotkey_rowshift` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', + `hotkey_rowshift2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `attendance_count` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `attendance_timer` BIGINT(20) NULL DEFAULT '0', `title_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', @@ -928,6 +929,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1544738447); -- 2018-12-1 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1546059075); -- 2018-12-29--07-51.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1554760320); -- 2019-04-08--21-52.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1556147483); -- 2019-04-25--02-12.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1557414445); -- 2019-05-09--18-07.sql -- -- Table structure for table `storage` diff --git a/sql-files/upgrades/2019-05-09--18-07.sql b/sql-files/upgrades/2019-05-09--18-07.sql new file mode 100644 index 00000000..96d80c29 --- /dev/null +++ b/sql-files/upgrades/2019-05-09--18-07.sql @@ -0,0 +1,22 @@ +#1557414445 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2015 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 +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +ALTER TABLE `char` ADD COLUMN `hotkey_rowshift2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `hotkey_rowshift`; +INSERT INTO `sql_updates` (`timestamp`) VALUES (1557414445); diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index ac80cdf0..915d3565 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -53,3 +53,4 @@ 2018-12-29--07-51.sql 2019-04-08--21-52.sql 2019-04-25--02-12.sql +2019-05-09--18-07.sql -- cgit v1.2.3-70-g09d2 From ef270abaf2dd76357ae75c7f6101002f4377e74f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 19 Aug 2019 20:26:11 +0300 Subject: Update from hercules --- conf/map/battle/drops.conf | 4 ++++ conf/map/battle/homunc.conf | 3 +++ conf/messages.conf | 31 ++++++++++++++++++++++-------- db/castle_db.conf | 44 ++++++++++++++++++++++++++++++++++++++++++ db/castle_db.txt | 13 ------------- db/constants.conf | 47 +++++++++++++++++++++++---------------------- db/mob_db2.conf | 2 +- db/re/mob_db.conf | 1 + 8 files changed, 100 insertions(+), 45 deletions(-) create mode 100644 db/castle_db.conf delete mode 100644 db/castle_db.txt diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf index cf09d14d..d37aba45 100644 --- a/conf/map/battle/drops.conf +++ b/conf/map/battle/drops.conf @@ -151,3 +151,7 @@ alchemist_summon_reward: 1 // When picking random options for a dropped item, it does lots of iterations to choose the option to be set, // this value limits the number of iterations to avoid making the server hang in a long loop. option_drop_max_loop: 10 + +// Does autoloot take into account player bonuses and penalties? (Note 1) +// If RENEWAL_DROP, Bubble Gum, or any other modifiers are active autoloot will take them into account. +autoloot_adjust: false diff --git a/conf/map/battle/homunc.conf b/conf/map/battle/homunc.conf index 7ccaf8f8..f2ed4d8d 100644 --- a/conf/map/battle/homunc.conf +++ b/conf/map/battle/homunc.conf @@ -66,3 +66,6 @@ homunculus_max_level: 99 // Max level for Homunculus S homunculus_S_max_level: 150 + +// Bonus EXP homunculus received from master? (Note 2) +hom_bonus_exp_from_master: 10 diff --git a/conf/messages.conf b/conf/messages.conf index 8b737e6f..d62999b5 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -758,18 +758,18 @@ //995 FREE -// @refine +// @refine - Part 1 996: Please enter a position bitmask and an amount (usage: @refine <+/- amount>). -997: %d: Lower Headgear -998: %d: Right Hand +997: %d: Headgear (Low) +998: %d: Hand (Right) 999: %d: Garment -1000: %d: Left Accessory +1000: %d: Accessory (Left) 1001: %d: Body Armor -1002: %d: Left Hand +1002: %d: Hand (Left) 1003: %d: Shoes -1004: %d: Right Accessory -1005: %d: Top Headgear -1006: %d: Mid Headgear +1004: %d: Accessory (Right) +1005: %d: Headgear (Top) +1006: %d: Headgear (Mid) // @produce 1007: Please enter at least one item name/ID (usage: @produce <# of very's>). @@ -1574,5 +1574,20 @@ 1501: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10, delayed-consumable = 11, cash = 18 1502: %d items are dropped! +// @refine - Part 2 +1503: %d: Costume Headgear (Top) +1504: %d: Costume Headgear (Mid) +1505: %d: Costume Headgear (Low) +1506: %d: Costume Garment +1507: %d: Shadow Armor +1508: %d: Shadow Weapon +1509: %d: Shadow Shield +1510: %d: Shadow Shoes +1511: %d: Shadow Accessory (Right) +1512: %d: Shadow Accessory (Left) +1513: %d: Refine All Equip (General) +1514: %d: Refine All Equip (Costume) +1515: %d: Refine All Equip (Shadow) + //Custom translations import: conf/import/msg_conf.txt diff --git a/db/castle_db.conf b/db/castle_db.conf new file mode 100644 index 00000000..fe4d07fe --- /dev/null +++ b/db/castle_db.conf @@ -0,0 +1,44 @@ +//================= Hercules Database ===================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2019 Hercules Dev Team +//= Copyright (C) 2019 Asheraf +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see . +//========================================================================= +//= Castle Database +//========================================================================= + +castle_db: ( +/************************************************************************** + ************* Entry structure ******************************************** + ************************************************************************** +{ + // ================ Mandatory fields ============================== + CastleID: (int) Unique ID of the castle. Must remain unique across all map-servers. + MapName: (string) Map name to be considered as the castle map. + CastleName: (string) Name of the castle (used by scripts and guardian name tags) + OnGuildBreakEventName: (string) NPC unique name to invoke ::OnGuildBreak on, when a occupied + castle is abandoned during guild break. +}, +**************************************************************************/ +) diff --git a/db/castle_db.txt b/db/castle_db.txt deleted file mode 100644 index 89b00eee..00000000 --- a/db/castle_db.txt +++ /dev/null @@ -1,13 +0,0 @@ -// Guild Castles Database -// -// Structure of Database: -// CastleID,MapName,CastleName,OnGuildBreakEventName,Flag -// -// 01. CastleID Unique ID of the castle. Must remain unique across all map-servers. -// 02. MapName Map name to be considered as the castle map. -// 03. CastleName Name of the castle (used by scripts and guardian name tags). -// 04. OnGuildBreakEventName NPC unique name to invoke ::OnGuildBreak on, when a occupied -// castle is abandoned during guild break. -// 05. Flag Switch flag (reserved as of athena-dev mod0796~0801, not used by server). - - diff --git a/db/constants.conf b/db/constants.conf index 51b8d9ae..2c6c4429 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -1426,29 +1426,30 @@ constants_db: { } comment__: "getmonsterinfo" - MOB_NAME: 0 - MOB_LV: 1 - MOB_MAXHP: 2 - MOB_BASEEXP: 3 - MOB_JOBEXP: 4 - MOB_ATK1: 5 - MOB_ATK2: 6 - MOB_DEF: 7 - MOB_MDEF: 8 - MOB_STR: 9 - MOB_AGI: 10 - MOB_VIT: 11 - MOB_INT: 12 - MOB_DEX: 13 - MOB_LUK: 14 - MOB_RANGE: 15 - MOB_RANGE2: 16 - MOB_RANGE3: 17 - MOB_SIZE: 18 - MOB_RACE: 19 - MOB_ELEMENT: 20 - MOB_MODE: 21 - MOB_MVPEXP: 22 + MOB_NAME: 0 + MOB_LV: 1 + MOB_MAXHP: 2 + MOB_BASEEXP: 3 + MOB_JOBEXP: 4 + MOB_ATK1: 5 + MOB_ATK2: 6 + MOB_DEF: 7 + MOB_MDEF: 8 + MOB_STR: 9 + MOB_AGI: 10 + MOB_VIT: 11 + MOB_INT: 12 + MOB_DEX: 13 + MOB_LUK: 14 + MOB_RANGE: 15 + MOB_RANGE2: 16 + MOB_RANGE3: 17 + MOB_SIZE: 18 + MOB_RACE: 19 + MOB_ELEMENT: 20 + MOB_MODE: 21 + MOB_MVPEXP: 22 + MOB_DMG_TAKEN_RATE: 23 comment__: "mercenary guilds" ARCH_MERC_GUILD: 0 diff --git a/db/mob_db2.conf b/db/mob_db2.conf index 4f6141aa..e21cc2a2 100644 --- a/db/mob_db2.conf +++ b/db/mob_db2.conf @@ -65,7 +65,7 @@ mob_db: ( AegisName: (chance, "Option Drop Group") // ... } - + DamageTakenRate: damage taken rate (int, defaults to 100) }, ******************************************************************************/ diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index 420f8489..e6d6b56a 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -99,6 +99,7 @@ mob_db: ( AegisName: (chance, "Option Drop Group") // ... } + DamageTakenRate: damage taken rate (int, defaults to 100) WeaponAttacks: { WeaponType: 10000 } -- cgit v1.2.3-70-g09d2 From f98683fda133ef529b60ae9aef26143aab070c6a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 21 Aug 2019 03:35:09 +0300 Subject: Update packet version in .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8650a016..818f3226 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ variables: GET_SOURCES_ATTEMPTS: "5" ARTIFACT_DOWNLOAD_ATTEMPTS: "5" MYSQL_ROOT_PASSWORD: root - packetver: "20150513" + packetver: "20170517" newlines: stage: build -- cgit v1.2.3-70-g09d2 From e856378d9315c54bca0fd6a48fe3a0cd7f5e283a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Mon, 9 Sep 2019 17:02:55 +0000 Subject: Disable chat log by Freeyorp's request. Global messages still logged (I think they include broadcasts? Not sure) --- conf/map/logs.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/map/logs.conf b/conf/map/logs.conf index db584049..9526372e 100644 --- a/conf/map/logs.conf +++ b/conf/map/logs.conf @@ -171,7 +171,7 @@ map_log: { // log_chat: 0x2f = logs everything // FIXME: This isn't fully functional, as of now it's only checking // if the log is active or not [Panikon] - log_chat: 0x2f + log_chat: 0x0 // Disable chat logging when WoE is running? (Note 1) log_chat_woe_disable: false -- cgit v1.2.3-70-g09d2 From a2fbf4f923048686a4a83f4ef0e688a92d9eaa0b Mon Sep 17 00:00:00 2001 From: toams Date: Mon, 9 Sep 2019 18:50:00 +0000 Subject: make the code from the tutorial book similar to the other books --- npc/001-2-5/tutorial.txt | 605 +++++++++++++++++++---------------------------- 1 file changed, 240 insertions(+), 365 deletions(-) diff --git a/npc/001-2-5/tutorial.txt b/npc/001-2-5/tutorial.txt index c7205221..8576db0f 100644 --- a/npc/001-2-5/tutorial.txt +++ b/npc/001-2-5/tutorial.txt @@ -3,384 +3,259 @@ // Ernando // Lunovox // Jesusalva +// Toams // Objective: Complete Tutorial about Evol/Hercules mechanics // License: GPL v3 001-2-5,34,32,0 script #EvolTutorial NPC_NO_SPRITE,{ -OnRemoteHelp: - function TutorialMenu; - function Manaplus; - function ExplicaGrama; - function Monstros; - function Quests; - function Status; - function NPC; - function Magica; - function Regras; - function Temporada; - function Experiencia; - function ExplicaBagagem; - function ExplicaTrade; - function ExplicaBatalha; - function ExplicaDialogo; - function Estilo; - function Comandos; - function Teclado; + function read_book { - mesc lg("This book contains the knowledge collected by ukars about how the world works."); - next; - TutorialMenu(); + setnpcdialogtitle l(.book_name$); -function TutorialMenu { - do - { - mesn strcharinfo(0); - select - l("I wanted info about how to play."), - l("How do I make money?"), - l("Monsters."), - l("Quests."), - l("Status."), - l("NPCs."), - l("Magic."), - l("Rules."), - l("Weather & Seasons."), - l("Experience."), - l("No, thanks!"); - mes ""; - switch (@menu) { - case 1: - Manaplus(); break; - case 2: - ExplicaGrama(); break; - case 3: - Monstros(); break; - case 4: - Quests(); break; - case 5: - Status(); break; - case 6: - NPC(); break; - case 7: - Magica(); break; - case 8: - Regras(); break; - case 9: - Temporada(); break; - case 10: - Experiencia(); break; - default: - close(); break; - } + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("This book contains the knowledge collected by ukars about how the world works."); - // Here we can repeat stuff - } while (true); - return; -} + @menu = 0; // reset for the rif -function Manaplus { - do - { - mesc l("What do you want to learn more about?"); - next; - mesn strcharinfo(0); - select - l("How I see my items?"), - l("How trade with other players?"), - l("How hunt monsters?"), - l("How talk with someone?"), - l("Styles."), - l("Commands."), - l("Shortcuts."), - l("I changed my mind."); - mes ""; - switch (@menu) { - case 1: - ExplicaBagagem(); break; - case 2: - ExplicaTrade(); break; - case 3: - ExplicaBatalha(); break; - case 4: - ExplicaDialogo(); break; - case 5: - Estilo(); break; - case 6: - Comandos(); break; - case 7: - Teclado(); break; - // case 8 is on the while condition - } + do + { + narrator S_NO_NPC_NAME, + l("Please select a chapter:"); - } while (@menu != 8); - return; -} + mes ""; -// Anything below this line is copy-pasted from SG:ManaBird, a TMW-BR clone -// It was translated by Google and therefore may have bad terms about ManaPlus interface. -// The data was then adapted by Moubootaur Legends and might have features NYI in Evol + select + rif(@menu == 1, "► ") + l("Ch 1 — How to make money."), + rif(@menu == 2, "► ") + l("Ch 2 — Everything about monsters."), + rif(@menu == 3, "► ") + l("Ch 3 — Quests."), + rif(@menu == 4, "► ") + l("Ch 4 — Status."), + rif(@menu == 5, "► ") + l("Ch 5 — NPC's."), + rif(@menu == 6, "► ") + l("Ch 6 — Magic."), + rif(@menu == 7, "► ") + l("Ch 7 — Rules."), + rif(@menu == 8, "► ") + l("Ch 8 — Weather & Seasons."), + rif(@menu == 9, "► ") + l("Ch 9 — Experience."), + rif(@menu == 10, "► ") + l("Ch 10 — How I see my items?"), + rif(@menu == 11, "► ") + l("Ch 11 — How trade with other players?"), + rif(@menu == 12, "► ") + l("Ch 12 — How hunt monsters?"), + rif(@menu == 13, "► ") + l("Ch 13 — How talk with someone?"), + rif(@menu == 14, "► ") + l("Ch 14 — Change your appearing."), + rif(@menu == 15, "► ") + l("Ch 15 — Commands."), + rif(@menu == 16, "► ") + l("Ch 16 — Shortcuts."); + + switch (@menu) { + case 1: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Merchants like to buy body parts of killed monsters and animals because they can make items and equipment."), + l("Some others also like to buy them to keep as trophies. Either way, you can make some money with that."), + l("You must find someone willing to buy, they usually will buy almost anything you have, even items which cannot be replaced, so be careful."), + l("You must \"add\" the items you plan on selling, and then press \"sell\" to confirm. You'll have this time to review."), + l("Some, but not all, from the rare or non-replaceable items will have a warning when you try to sell them."), + l("You can also make money %s. Nobody pays better than people in need of help.", b(l("by doing quests"))); + break; + case 2: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Monsters are everywhere. They're a plague we're trying to get rid of."), + l("There are three types of monsters: the aggressive, the neutral, and the collaborative."), + l("Aggressors always know when they are in danger! Therefore, they are always on standby, attacking anyone who appears ahead."), + l("Neutral monsters do not have such a sense of danger."), + l("They will not attack anyone unless they are attacked first."), + l("Normally, collaborative monsters behave like neutral monsters. Unless someone of the same species is in danger, at which point they all take an aggressive stance against the aggressor."), + l("It's always good to see if you have a lot of them around before you think about attacking one!"), + l("Also, most monsters get enraged and will attack whoever is closest to them, regardless of anything else."), + l("Not all monsters will do this, but most will. So if you see a monster running after a player and you stand in the way..."), + l("...It'll most likely attack you, instead."), + l("One last thing to keep in mind... If you are surrounded, you'll suffer an agility and defense penalty."), + l("But if you and other players surrounds the monster instead, they'll suffer the same penalties!"), + l("Any boss which was previously unhittable, can be hit with appropriate number of attackers."); + break; + case 3: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("There are people in the world who need help!"), + l("Most of these people will not think twice before giving a nice reward to anyone who helps them."), + l("So be nice and help people along the way!"), + l("Usually, they'll have an exclamation mark over their heads. But some quests are hidden, so talk to people and have fun!"); + break; + case 4: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("People vary greatly in the amount of strength, agility, dexterity, intelligence, vitality and luck."), + l("%s helps you carry more items and also gives you a more forceful blow, but ends up not being very interesting if you focus on weapons that use projectiles, such as the bow.", b(l("Strength"))), + l("Greater %s allows you to attack faster and has a greater chance of evading attacks.", b(l("agility"))), + l("Your %s determines your ability to hit monsters and is valuable to players who prefer weapons that use projectiles.", b(l("dexterity"))), + l("%s determines how many blows you can take before you die. It also affects status effects, like poison.", b(l("Vitality"))), + l("%s is very useful for alchemy and magic, but nowadays there are few opportunities to use it.", b(l("Intelligence"))), + l("Your %s determines several small things, including critical attacks, but DOES NOT affect drop rates.", b(l("luck"))), + l("A critical hit deals added damage and disregards defense. A critical always hit, although it can be blocked just fine."), + l("On a side note, more defense is always good, but the damage won't decrease on the same rate that defense raises."), + l("Also note that if you are in overweight, your natural regen will halt. 90% in weight, and you won't be able to attack."), + l("I recommend that you train your agility a great deal, since most monsters out there aren't really amazing at hitting you."), + l("For now do not take too much time to work on your intelligence, after all, magic use is very restricted nowadays."), + l("You can allocate point on those attributes every time you level up."),l("There's also a job level, which produces green sparkles when you level it."), + l("Job Level and certain equips can affect your status. You'll see the modifiers with a + sign."), + l("Do note that Job Level gives you skill points, and the status bonuses are really minor."); + break; + case 5: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("NPC's or non-playable characters are characters that are always in the game, offering a wide variety of reactions, from a simple friendly conversation to a desperate request for help."), + l("%s People usually doesn't shout, they talk. Because this, if you are too far, an NPC won't hear you.",b(l("IMPORTANT:"))), + l("When this is the case, you should get closer to the NPC, until they hear you."), l("If you are above the NPC and they still doesn't hear you, this mean they are deaf - you should report this!"); + break; + case 6: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Magic was banned for lore reasons? Seriously, after the mana war, only small tricks are allowed."), + l("It was heard about some adventurers whom obtained and use advanced magic, but that is still seen with bad eyes."); + break; + case 7: + mes ""; + callfunc "GameRules"; + break; + case 8: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + /* + // TODO: Implement Day/Night Cycle + mes l("First of, there's a day/night cycle on the game."); + if (is_night()) + mes l("It's currently night, that's why Candor is dark."); + else + mes l("It's currently day, but when night falls, Candor will become darker."); + next; + mes l("During night, the monsters usually respawn faster. That can be a problem with aggressive monsters."); + mes l("I also hear fisherman likes to fish at night. They say the catch is bigger, if you understand me."); + next; + */ + /* + // TODO: Implement Weather Cycle + mes l("There's also weather, meaning it can rain, snow, or even happen a sandstorm. They are usually cosmetic, but..."); + mes l("...who knows if there isn't a secret in that?"); + next; + */ + /* + // TODO: Implement Season Cycle + mes l("Besides this, there is Seasons. You know, summer, autumn, winter and spring."); + mes l("Each season unlocks a set of quests and drops which can only be obtained on the season."); + next; + mes l("Think on Season Quests as a yearly quest which you have three months to do."); + mes l("We follow north hemisphere seasons in case you're wondering."); + next; + */ + // We commented everything so we need something here + l("There is no day/night, weather, or season cycle in TMW yet."); + break; + case 9: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Experience can be gained by completing quests and killing monsters. When you accumulate enough experience, you'll level up!"), + l("Each level up will buff your base stats, and give you stats points to allocate."), + l("There's also a job level, which produces green sparkles when you level it."), + l("Job Level and certain equips can affect your status. You'll see the modifiers with a + sign."); + /* + // TODO: Evol doesn't have experience per mob level adjustment yet, nor have @monsterinfo for all players + mes l("Also, you'll get more experience by killing monsters stronger than you, and less experience by killing monsters weaker than you."); + mes l("You can find out the monster strength by using \"@monsterinfo \". Check the level in it!"); + next; + */ + break; + case 10: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("You can see all your equipment by pressing the F3 key."), + l("To equip or unequip an item, select it and press the 'Equip' or 'Unequip' button. You can not 'Equip' or 'Unequip' when talking to someone."), + l("Dress up! Do not walk without clothes! Always wear your items! They leave you less vulnerable to attacks and stronger to defeat your opponents."), + /* + // TODO: Evol doesn't have equipment set bonuses yet + mes b(l("Remember that some equipment sets will give you hidden stat bonuses! So dress yourself in a fashion way, if possible!")); + next; + */ + l("To discard an item you no longer want, select it and press the 'Discard' button. Generic items can be discarded or sold."), + l("Some special items cannot be traded, discarded, nor sold. With a right click, you can also protect normal items as if they were special ones."), + l("There are three types of items."), + l("Those for consumption, equipment and generics."), + l("Items for consumption, like potions, can only be used once."), + l("Once used, they will disappear from your inventory."), + l("Equippable items are armour, weapons and accessories."), + l("They can be equipped to make your look more interesting or to improve some of its features."), + l("Generic items are used for different purposes. In creating other items, to swap and sell, to collect, etc."); + break; + case 11: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Press the '###keyTrade;' key to ignore or accept business proposals. You and the other citizen who want to negotiate need to be in the configuration that accepts negotiations. if your configuration is 'Ignoring business proposals', then you will not receive the warning from any citizen wanting to negotiate with you, and you will not be able to initiate negotiations."), + l("To negotiate with other citizens, you should click the second mouse button on some other citizen who is accepting negotiations, and select the 'Negotiation' option from the menu that will appear."), + l("After you have confirmed the negotiation, a window with a vertical split will appear. The left side are the items you intend to offer in trading. The right side are the items that the other citizen intends to offer in trading."), + l("Open your inventory window (###keyWindowInventory; key) next to the trading window. Select an item you want to offer, and then press the Add button. To add money to the negotiation, enter the amount you will offer and press the Change button."), + l("When you have added all the items and money you want, press the 'Propose Trade' button. The other citizen must also press the 'Propose Trade' button."), + l("If the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished."), + l("Remember! You're trading things, not lending/borrowing them. You are solely responsible for everything you own."); + break; + case 12: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Note down. To hunt a target you must click the primary mouse button on it. Avoid fighting monsters or citizens much stronger than you. %s", b(l("You will lose experience if you are defeated."))), + l("Within the cities is a place safe enough not to be attacked by another person (except during wars). But outside of them there are some places where the citizen can be attacked by enemies from other realms, or even by someone from the same realm."), + l("There are some stones scattered around the world that mark your point of return in case of defeats. Some ship chests may also serve as a return point. You can also select some beds in case of defeats."), + l("Almost all creatures drop useful items when defeated. To get the dropped item press the '###keyPickup;' key next to the item or click the primary button on the item."), + l("To focus on a creature, press the '###keyTargetMonster;' key. To focus on another citizen, press the '###keyTargetPlayer;' key. To attack the focused target press the '###keyAttack;' key or click the primary button on the creature."), + l("To focus on an NPC, press the '###keyTargetNPC;' key. To talk to him press the '###keyTalk;' key."), + l("To defocus or stop attacking, press Shift + A."), + l("You can, however, use '###keyTargetAttack;' to auto-select a monster and attack them. This usually also collects drops, but press '###keyPickup;' to be sure."); + break; + case 13: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("To display the dialog box with other citizens, press the '###keyWindowChat;' key."), + l("To speak in public select the 'General' tab. It serves to talk to people who are appearing on your screen."), + l("To speak privately with someone, click the second mouse button on the citizen and select the 'Whisper' option."), + l("In order to enter a message press the '###keyChat;' key, this will display the white box of typing. Type your message there and press '###keyChat;' again to send your speech."), + l("To speak privately to a friend who is not appearing on your screen, type the command '%s' and press '###keyChat;'. This command will open a long-distance dialog that has the name of who you want to talk to. Select this new tab and send your message through it.",b(l("/q [Player Name] "))), + l("And by last, to speak to everyone online, besides whoever might be idling on IRC, select the '#irc' tab."), + l("But be careful: do not scream by using a lot of capital letters, do not repeat yourself over and over, and above all DO NOT SPAM, or you may be severely penalized."); + break; + case 14: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("NPC stylists will cut your hair!"), + l("They are known to use a revolutionary hair growth formula."), + l("You will be amased by all the colors of hair dye they have."); + break; + case 15: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("You can execute commands by typing them in the chat window. They start with a '/' or '@' followed by the name of the command."), + l("%s clears the text box.", b("/clear")), + l("%s %s allows you to send a private message to the player. if [name] contains spaces, it must be enclosed in quotation marks.", b("/whisper"),l("[name]")), + l("%s displays amount of currently connected players.", b("/who")), + l("%s shows the number of people in the neighbourhood.", b("/present")), + l("%s shows the name of the map you are in.", b("/where")), + l("%s explains how to use all client commands.", b("/help")), + l("%s lists even more advanced commands, but some of them can only be used by admins or GM's.", b("@commands")), + l("%s will help when the client starts lagging. If you see an attack but no monsters, that's the cause.", b("@resync")), + l("%s allows you to change game language, anytime, anywhere.", b("@lang")), + l("%s will tell you all the rules once again.", b("@rules")), + //mes l("@toevent will warp you to event island, if an event is happening, of course."); + //mes l("@discord allows you to setup Discord integration settings."); + //mes l("@ucp allows you to manage your account, eg. recover lost email."); + //next; + //mes l("@resyncall is the more powerful version of @resync. It'll reload everything, even the clouds if needed."); + l("%s and %s will show this informative and absurdely big tutorial book." ,b("@info"),b("@tutorial")); + break; + case 16: + narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("There are many key combinations, press F1 to see a short list of them!"); + break; + } + + } while (true); + end; + } + +OnShelfUse: + if (openbookshelf()) + read_book; + close; + +OnUse: + if (openbook()) + read_book; + close; -function ExplicaGrama { - mes l("Merchants like to buy body parts of killed monsters and animals because they can make items and equipment."); - next; - mes l("Some others also like to buy them to keep as trophies. Either way, you can make some money with that."); - next; - mes l("You must find someone willing to buy, they usually will buy almost anything you have, even items which cannot be replaced, so be careful."); - next; - mes l("You must \"add\" the items you plan on selling, and then press \"sell\" to confirm. You'll have this time to review."); - mes l("Some, but not all, from the rare or non-replaceable items will have a warning when you try to sell them."); - next; - mes l("You can also make money ##Bdoing quests##b. Nobody pays better than people in need of help."); - next; - return; -} -function ExplicaBagagem { - mes l("You can see all your equipment by pressing the F3 key."); - next; - mes l("To equip or unequip an item, select it and press the 'Equip' or 'Unequip' button. You can not 'Equip' or 'Unequip' when talking to someone."); - next; - mes l("Dress up! Do not walk without clothes! Always wear your items! They leave you less vulnerable to attacks and stronger to defeat your opponents."); - next; - /* - // TODO: Evol doesn't have equipment set bonuses yet - mes "##B"+l("Remember that some equipment sets will give you hidden stat bonuses! So dress yourself in a fashion way, if possible!")+"##b"; - next; - */ - mes l("To discard an item you no longer want, select it and press the 'Discard' button. Generic items can be discarded or sold."); - mes l("Some special items cannot be traded, discarded, nor sold. With a right click, you can also protect normal items as if they were special ones."); - next; - mes l("There are three types of items."); - mes l("Those for consumption, equipment and generics."); - next; - mes l("Items for consumption, like potions, can only be used once."); - mes l("Once used, they will disappear from your inventory."); - next; - mes l("Equippable items are armour, weapons and accessories."); - mes l("They can be equipped to make your look more interesting or to improve some of its features."); - next; - mes l("Generic items are used for different purposes. In creating other items, to swap and sell, to collect, etc."); - next; - return; -} -function ExplicaTrade { - mes l("Press the 'R' key to ignore or accept business proposals. You and the other citizen who want to negotiate need to be in the configuration that accepts negotiations. if your configuration is 'Ignoring business proposals', then you will not receive the warning from any citizen wanting to negotiate with you, and you will not be able to initiate negotiations."); - next; - mes l("To negotiate with other citizens, you should click the second mouse button on some other citizen who is accepting negotiations, and select the 'Negotiation' option from the menu that will appear."); - next; - mes l("After you have confirmed the negotiation, a window with a vertical split will appear. The left side are the items you intend to offer in trading. The right side are the items that the other citizen intends to offer in trading."); - next; - mes l("Open your inventory window (F3 key) next to the trading window. Select an item you want to offer, and then press the Add button. To add money to the negotiation, enter the amount you will offer and press the Change button."); - next; - mes l("When you have added all the items and money you want, press the 'Propose Business' button. The other citizen must also press the 'Propose Business' button."); - next; - mes l("if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished."); - next; - mes l("Remember! You're trading things, not lending/borrowing them. You are solely responsible for everything you own."); - next; - return; -} -// TODO: We have over nine instructions here. You usually can only memorise from three to five at a time! -function ExplicaBatalha { - mes l("Note down. To hunt a target you must click the primary mouse button on it. Avoid fighting monsters or citizens much stronger than you. ##BYou will lose experience if you are defeated.##b"); - next; - mes l("Within the cities is a place safe enough not to be attacked by another person (except during wars). But outside of them there are some places where the citizen can be attacked by enemies from other realms, or even by someone from the same realm."); - next; - mes l("There are some stones scattered around the world that mark your point of return in case of defeats. Some ship chests may also serve as a return point. You can also select some beds in case of defeats."); - next; - mes l("Almost all creatures drop useful items when defeated. To get the dropped item press the 'Z' key next to the item or click the primary button on the item."); - next; - mes l("To focus on a creature, press the 'A' key. To focus on another citizen, press the 'Q' key. To attack the focused target press the 'X' key or click the primary button on the creature."); - next; - mes l("To focus on an NPC, press the 'N' key. To talk to him press the 'T' key."); - next; - mes l("To defocus or stop attacking, press Shift + A."); - next; - mes l("You can, however, use ##BCtrl##b to auto-select a monster and attack them. This usually also collects drops, but press Z to be sure."); - next; - return; -} -function ExplicaDialogo { - mes l("To display the dialog box with other citizens, press the F7 key."); - next; - mes l("To speak in public select the 'General' tab. It serves to talk to people who are appearing on your screen."); - next; - mes l("To speak privately with someone, click the second mouse button on the citizen and select the 'Whisper' option."); - next; - mes l("In order to enter a message press the 'Enter' key, this will display the white box of typing. Type your message there and press 'Enter' again to send your speech."); - next; - mes l("To speak privately to a friend who is not appearing on your screen, type the command '##B /q Citizen Name ##b' and press 'Enter'. This command will open a long-distance dialog that has the name of who you want to talk to. Select this new tab and send your message through it."); - next; - //mes l("And by last, to speak to everyone online, besides whoever might be idling on Discord, select the '#world' tab."); - mes l("And by last, to speak to everyone online, besides whoever might be idling on IRC, select the '#irc' tab."); - next; - mes l("But be careful: do not scream when using a lot of capital letters, and do not keep repeating the lines, and above all DO NOT SPAM, or you may be severely penalized."); - next; - return; -} -function Monstros { - mes l("Monsters are everywhere. They're a plague we're trying to get rid of."); - next; - mes l("There are three types of monsters: the aggressive, the neutral, and the collaborative."); - next; - mes l("Aggressors always know when they are in danger! Therefore, they are always on standby, attacking anyone who appears ahead."); - next; - mes l("Neutral monsters do not have such a sense of danger."); - mes l("They will not attack anyone unless they are attacked first."); - next; - mes l("Normally, collaborative behave like neutral monsters. Unless some partner of the same species is in danger, at which point they all take an aggressive stance against the aggressor."); - mes l("It's always good to see if you have a lot of them around before you think about attacking one!"); - next; - mes "\""+l("Also, most monsters get enraged and will attack whoever is closest to them, regardless of anything else."); - mes l("Not all monsters will do this, but most will. So if you see a monster running after a player and you stand in the way..."); - mes l("...It'll most likely attack you, instead.")+"\""; - next; - mes l("One last thing to keep in mind... If you are surrounded, you'll suffer an agility and defense penalty."); - mes l("But if you and other players surrounds the monster instead, they'll suffer the same penalties!"); - mes l("Any boss which was previously unhittable, can be hit with appropriate number of attackers."); - next; - return; -} -function Estilo { - mes l("NPC stylists will cut your hair!"); - mes l("They are known to use a revolutionary hair growth formula."); - next; - return; -} -function Quests { - mes l("There are people in the world who need help!"); - mes l("Most of these people will not think twice before giving a nice reward to anyone who helps them."); - mes l("So be nice and help people along the way!"); - next; - mes l("Usually, they'll have an exclamation mark over their heads. But some quests are hidden, so talk to people and have fun!"); - next; - return; -} -function NPC { - mes l("NPCs(Non Playable Characters) or non-playable characters are characters that are always in the game, offering a wide variety of reactions, from a simple friendly conversation to a desperate request for help."); - next; - mes l("##BIMPORTANT:##b People usually doesn't shout, they talk. Because this, if you are too far, an NPC won't hear you."); - mes l("When this is the case, you should get closer to the NPC, until they hear you."); - mes l("If you are above the NPC and they still doesn't hear you, this mean they are deaf - you should report this!"); - next; - return; -} -function Comandos { - mes l("/ clear clears the text box."); - mes l("/ whisper [name] allows you to send a private message to the player. if [name] contains spaces, it must be enclosed in quotation marks."); - //mes l("/who mostra o número de jogadores conectados no momento."); - mes l("/ present shows the number of people in the neighbourhood."); - mes l("/ where shows the name of the map you are in."); - mes l("/ help explains how to use all client commands."); - mes l("@commands lists even more advanced commands, but you can't use all of them."); - next; - mes l("@resync will help when the client starts lagging. If you see an attack but no monsters, that's the cause."); - //mes l("@lang allows you to change game language, anytime, anywhere."); - mes l("@rules will tell you all the rules once again."); - //mes l("@toevent will warp you to event island, if an event is happening, of course."); - //mes l("@discord allows you to setup Discord integration settings."); - //mes l("@ucp allows you to manage your account, eg. recover lost email."); - //next; - //mes l("@resyncall is the more powerful version of @resync. It'll reload everything, even the clouds if needed."); - mes l("@info and @tutorial will show this informative and absurdely big tutorial book."); - next; - return; -} -function Status { - mes l("People vary greatly in the amount of strength, agility, dexterity, intelligence, vitality and luck."); - next; - mes l("@@ helps you carry more items and also gives you a more forceful blow, but ends up not being very interesting if you focus on weapons that use projectiles, such as the bow.", b(l("Strength"))); - mes l("Greater @@ allows you to attack faster and has a greater chance of evading attacks.", b(l("agility"))); - mes l("Your @@ determines your ability to hit monsters and is valuable to players who prefer weapons that use projectiles.", b(l("dexterity"))); - next; - mes l("@@ determines how many blows you can take before you die. It also affects status effects, like poison.", b(l("Vitality"))); - mes l("@@ is very useful for alchemy and magic, but nowadays there are few opportunities to use it.", b(l("Intelligence"))); - //mes l("Your @@ determines several small things, including critical attacks and, limited to a certain extent, affect drop rates.", b(l("luck"))); - mes l("Your @@ determines several small things, including critical attacks, but DOES NOT affect drop rates.", b(l("luck"))); - next; - mes l("A critical hit deals added damage and disregards defense. A critical always hit, although it can be blocked just fine."); - mes l("On a side note, more defense is always good, but the damage won't decrease on the same rate that defense raises."); - mes l("Also note that if you are in overweight, your natural regen will halt. 90% in weight, and you won't be able to attack."); - next; - mes l("I recommend that you train your agility a great deal, since most monsters out there aren't really amazing at hitting you."); - mes l("For now do not take too much time to work on your intelligence, after all, magic use is very restricted nowadays."); - next; - mes l("You can allocate point on those attributes every time you level up."); - mes l("There's also a job level, which produces green sparkles when you level it."); - mes l("Job Level and certain equips can affect your status. You'll see the modifiers with a + sign."); - mes l("Do note that Job Level gives you skill points, and the status bonuses are really minor."); - next; - return; -} -function Magica { - mes l("Magic was banned for lore reasons? Seriously, after the mana war, only small tricks are allowed."); - next; - mes l("It was heard about some adventurers whom obtained and use advanced magic, but that is still seen with bad eyes."); - next; - return; -} -function Teclado { - mes l("There are many key combinations, press F1 to see a short list of them!"); - next; - return; -} -function Temporada { - /* - // TODO: Implement Day/Night Cycle - mes l("First of, there's a day/night cycle on the game."); - if (is_night()) - mes l("It's currently night, that's why Candor is dark."); - else - mes l("It's currently day, but when night falls, Candor will become darker."); - next; - mes l("During night, the monsters usually respawn faster. That can be a problem with aggressive monsters."); - mes l("I also hear fisherman likes to fish at night. They say the catch is bigger, if you understand me."); - next; - */ - /* - // TODO: Implement Weather Cycle - mes l("There's also weather, meaning it can rain, snow, or even happen a sandstorm. They are usually cosmetic, but..."); - mes l("...who knows if there isn't a secret in that?"); - next; - */ - /* - // TODO: Implement Season Cycle - mes l("Besides this, there is Seasons. You know, summer, autumn, winter and spring."); - mes l("Each season unlocks a set of quests and drops which can only be obtained on the season."); - next; - mes l("Think on Season Quests as a yearly quest which you have three months to do."); - mes l("We follow north hemisphere seasons in case you're wondering."); - next; - */ - // We commented everything so we need something here - mes l("There is no day/night, weather, or season cycle in Evol... yet."); - next; - return; -} -function Experiencia { - mes l("Experience can be gained by completing quests and killing monsters. When you accumulate enough experience, you'll level up!"); - next; - mes l("Each level up will buff your base stats, and give you stats points to allocate. However, there is Job Level."); - next; - mes l("There's also a job level, which produces green sparkles when you level it."); - mes l("Job Level and certain equips can affect your status. You'll see the modifiers with a + sign."); - next; - /* - // TODO: Evol doesn't have experience per mob level adjustment yet, nor have @monsterinfo for all players - mes l("Also, you'll get more experience by killing monsters stronger than you, and less experience by killing monsters weaker than you."); - mes l("You can find out the monster strength by using \"@monsterinfo \". Check the level in it!"); - next; - */ - return; -} -function Regras { - callfunc "GameRules"; - next; - return; -} OnInit: - bindatcmd "info", "#EvolTutorial::OnRemoteHelp", 0, 0, 0; - bindatcmd "tutorial", "#EvolTutorial::OnRemoteHelp", 0, 0, 0; + .book_name$ = "Hitchiker's Guide To The Mana World"; + + bindatcmd "info", "#EvolTutorial::OnUse", 0, 0, 0; + bindatcmd "tutorial", "#EvolTutorial::OnUse", 0, 0, 0; .sex = G_OTHER; .distance = 1; -- cgit v1.2.3-70-g09d2 From 632a14d02c689ebc075ae0ce1f7a4e64e5318321 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Mon, 9 Sep 2019 20:12:48 +0000 Subject: "Atril" is a PDF Viewer. Fix a typo, it should be “Artis” instead. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- npc/001-1/katja.txt | 2 +- npc/001-1/trees.txt | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/npc/001-1/katja.txt b/npc/001-1/katja.txt index 2d79a730..38ff2725 100644 --- a/npc/001-1/katja.txt +++ b/npc/001-1/katja.txt @@ -6,7 +6,7 @@ // Little girl playing around the hill on top of the port. // She wants you to find her brother. // Variables: -// AtrilQuests_LazyBrother = 19 -- quest var +// ArtisQuests_LazyBrother = 19 -- quest var // LazyBrother_TreesLeft = 15 -- how many trees left to search // LazyBrother_TreeSearched[15] -- whether given tree was searched // LazyBrother_TreeWithBrother -- the number of tree where he's hiding diff --git a/npc/001-1/trees.txt b/npc/001-1/trees.txt index cba42f8f..2c147bf9 100644 --- a/npc/001-1/trees.txt +++ b/npc/001-1/trees.txt @@ -4,7 +4,7 @@ // Description: // Invisible tree NPCs for "Lazy Brother" quest // Variables: -// AtrilQuests_LazyBrother = 19 -- quest var +// ArtisQuests_LazyBrother = 19 -- quest var // LazyBrother_TreesLeft = 15 -- how many trees left to search // LazyBrother_TreeSearched[15] -- whether given tree was searched // LazyBrother_TreeWithBrother -- the number of tree where he's hiding @@ -99,7 +99,7 @@ L_FoundHim: close; } -001-1,179,30,0 script #AtrilTree1 NPC_KATJA_TREE,{ +001-1,179,30,0 script #ArtisTree1 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(1); end; OnInit: @@ -108,7 +108,7 @@ OnInit: end; } -001-1,177,29,0 script #AtrilTree2 NPC_KATJA_TREE,{ +001-1,177,29,0 script #ArtisTree2 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(2); end; OnInit: @@ -117,7 +117,7 @@ OnInit: end; } -001-1,183,28,0 script #AtrilTree3 NPC_KATJA_TREE,{ +001-1,183,28,0 script #ArtisTree3 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(3); end; OnInit: @@ -126,7 +126,7 @@ OnInit: end; } -001-1,182,25,0 script #AtrilTree4 NPC_KATJA_TREE,{ +001-1,182,25,0 script #ArtisTree4 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(4); end; OnInit: @@ -135,7 +135,7 @@ OnInit: end; } -001-1,187,26,0 script #AtrilTree5 NPC_KATJA_TREE,{ +001-1,187,26,0 script #ArtisTree5 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(5); end; OnInit: @@ -144,7 +144,7 @@ OnInit: end; } -001-1,189,28,0 script #AtrilTree6 NPC_KATJA_TREE,{ +001-1,189,28,0 script #ArtisTree6 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(6); end; OnInit: @@ -153,7 +153,7 @@ OnInit: end; } -001-1,184,30,0 script #AtrilTree7 NPC_KATJA_TREE,{ +001-1,184,30,0 script #ArtisTree7 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(7); end; OnInit: @@ -162,7 +162,7 @@ OnInit: end; } -001-1,189,31,0 script #AtrilTree8 NPC_KATJA_TREE,{ +001-1,189,31,0 script #ArtisTree8 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(8); end; OnInit: @@ -171,7 +171,7 @@ OnInit: end; } -001-1,191,30,0 script #AtrilTree9 NPC_KATJA_TREE,{ +001-1,191,30,0 script #ArtisTree9 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(9); end; OnInit: @@ -180,7 +180,7 @@ OnInit: end; } -001-1,191,33,0 script #AtrilTree10 NPC_KATJA_TREE,{ +001-1,191,33,0 script #ArtisTree10 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(10); end; OnInit: @@ -189,7 +189,7 @@ OnInit: end; } -001-1,187,34,0 script #AtrilTree11 NPC_KATJA_TREE,{ +001-1,187,34,0 script #ArtisTree11 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(11); end; OnInit: @@ -198,7 +198,7 @@ OnInit: end; } -001-1,185,35,0 script #AtrilTree12 NPC_KATJA_TREE,{ +001-1,185,35,0 script #ArtisTree12 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(12); end; OnInit: @@ -207,7 +207,7 @@ OnInit: end; } -001-1,182,34,0 script #AtrilTree13 NPC_KATJA_TREE,{ +001-1,182,34,0 script #ArtisTree13 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(13); end; OnInit: @@ -216,7 +216,7 @@ OnInit: end; } -001-1,180,33,0 script #AtrilTree14 NPC_KATJA_TREE,{ +001-1,180,33,0 script #ArtisTree14 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(14); end; OnInit: @@ -225,7 +225,7 @@ OnInit: end; } -001-1,181,32,0 script #AtrilTree15 NPC_KATJA_TREE,{ +001-1,181,32,0 script #ArtisTree15 NPC_KATJA_TREE,{ LazyBrotherTreeFunc(15); end; OnInit: -- cgit v1.2.3-70-g09d2 From cc0a337cb0b6bb92c6871bef7c1aff8e66d4f1e3 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 19 Sep 2019 10:46:57 -0300 Subject: Update translations --- langs/lang_ca.old | 39 + langs/lang_ca.txt | 1606 ++++++++++++++++++++++---- langs/lang_de.old | 113 +- langs/lang_de.txt | 1650 +++++++++++++++++++++++---- langs/lang_en.old | 135 +++ langs/lang_en.txt | 1480 +++++++++++++++++++++--- langs/lang_es.old | 98 +- langs/lang_es.txt | 2042 ++++++++++++++++++++++++++------- langs/lang_fr.old | 115 +- langs/lang_fr.txt | 1708 ++++++++++++++++++++++++---- langs/lang_it.old | 32 +- langs/lang_it.txt | 3094 +++++++++++++++++++++++++++++++++++--------------- langs/lang_nl_BE.old | 33 + langs/lang_nl_BE.txt | 1542 ++++++++++++++++++++++--- langs/lang_pl.old | 35 +- langs/lang_pl.txt | 1694 +++++++++++++++++++++++---- langs/lang_pt_BR.old | 35 +- langs/lang_pt_BR.txt | 1880 ++++++++++++++++++++++++------ langs/lang_ru.old | 38 +- langs/lang_ru.txt | 1736 +++++++++++++++++++++++----- langs/lang_vls.old | 27 + langs/lang_vls.txt | 1462 ++++++++++++++++++++++-- 22 files changed, 17338 insertions(+), 3256 deletions(-) diff --git a/langs/lang_ca.old b/langs/lang_ca.old index f398ebd8..ac296d62 100644 --- a/langs/lang_ca.old +++ b/langs/lang_ca.old @@ -7,6 +7,9 @@ ... And 1 @@. ... I 1 @@. +@@ is helping me. +@@ m'està ajudant. + A great city, now the capital of these islands, called Esperia, rose on the single island, Aurora, where everyone lived. Una gran ciutat, ara la capital d'aquestes illes, anomenada Esperia, construïda en l'única illa, Aurora, on tothom viu. @@ -91,6 +94,9 @@ Darlin Devis Devis +Did you say reward? I want it! +Has dit recompensa? La vull! + Don't mock me, my work is admirable. No t'en enfotis, el meu treball es admirable. @@ -139,9 +145,18 @@ Com estava la galeta? Gustosa, no? However, drought came with summers while winters became colder than ever. No obstant això, la sequera va arribar amb l'estiu i els hiverns es van fer més freds que mai. +I am not worried about rewards. I just want to help. +No estic preocupat per les recompenses. Només vull a ajudar. + I can't help you to be on my list, nor can I give you a cookie for free. Jo no et puc ajudar a estar a la llista i tampoc et puc donar una galeta de gratis. +I don't have anything good for you today. +No tinc res de bo per a tu avui. + +I don't need your help right now, come back later. +Ara mateix no necessito la teva ajuda, torna més tard. + I don't see anything else than... water? No veig res més que... aigua? @@ -241,6 +256,9 @@ No i *hic*... No, tu ni el teu estuid...*burp* estupid *hic* gremi!#0 No and *hic*... No, you and you and your... *burp* stupi*hic* guild!#1 No i *hic*... No, tu ni el teu estuid...*burp* estupid *hic* gremi!#1 +No problem, I can help you anyway. +Cap problema, et puc ajudar de totes maneres. + No, sorry. No, ho sento. @@ -265,6 +283,12 @@ Oh bé. També et donaré un d'aquests barrets de la caixa prop teu, però únic Oh, and Olga from the market place as well! Oh, i l'Olga de la plaça del mercat també. +Okay, I'm ready to work!#0 +Si, estic preparat pel treball!#0 + +Okay, I'm ready to work!#1 +D'acord, estic preparat per treballar!#1 + OldBook LlibreVell @@ -313,6 +337,9 @@ Així que, encara vols una galeta? So, which good wind brought you here? Were you on your raft to meet my Julia? Or is it because you wanted to see the beautiful waitress' at Artis?#1 Així que, quin propòsit t'ha portat aquí? Estaves en aquell rai per a conèixer la meva Julia? O volies veure les boniques cambreres d'Artis?#1 +Sorry, I am not in the mood for another fight with these rattos. +Ho sento, no estic d'humor per una altra batalla amb aquests rattos + Sorry, I don't need any help right now. Come back later. Ho sento, ara mateix no requereixo ajuda. Torna d'aquí una estona. @@ -325,6 +352,9 @@ Tarlan Thank you sir for you nice words. I am feeling better now. Gracies senyor per les teves bones paraules. Ara hem sento millor. +Thanks for helping me! +Gràcies per ajudar-me! + The adventure begins! L'aventura comença! @@ -334,6 +364,9 @@ La millor, la esplèndida, la millor galeta de totes, la... The great people of Aemil split up into three groups when they reached the coast. El gran poble de Aemil es va dividir en tres grups en arribar a la costa. +There are still some rattos left! Do you want to abort the quest? +Encara queden alguns rattos! Bols avortar la missió? + These crocotrees are full of yaying @@, but they are so hard to hit... Aquests crocotrees estan plens de yaying @@, però també son durs de colpejar... @@ -394,9 +427,15 @@ Bé... Benvinguda a bord, monada!#1 What I sell comes from every corner of this archipelago. Venc mercaderies de totes parts d'aquest arxipèlag. +What if I give you 1000 Esperin for that job, is it ok? +Que passa si et dono 1000 Esperin per aquest treball, està bé? + What? It's not a good reward? Que? No es una bona recompensa? +What? This reward is too small! +Que? Aquesta recompensa es massa petita! + What? Why? They aren't sexier than me, why do you want to see them? Que? Per què? No són més sexis que jo, per què els vols veure? diff --git a/langs/lang_ca.txt b/langs/lang_ca.txt index ca2ad8c8..8394e80a 100644 --- a/langs/lang_ca.txt +++ b/langs/lang_ca.txt @@ -156,16 +156,16 @@ Copyright (C) 2010-2015 Evol Online %d day - +%d dia %d days - +%d dies %d hour - +%d hora %d hours - +%d hores %d item(s) found in %d %s slots. @@ -179,14 +179,17 @@ Copyright (C) 2010-2015 Evol Online %d item(s) removed. Player had only %d on %d items. +%d items are dropped! + + %d items have been refined. %d minute - +%d minut %d minutes - +%d minuts %d monster(s) summoned! @@ -203,34 +206,73 @@ Copyright (C) 2010-2015 Evol Online %d%% +%d: Accessory (Left) + + +%d: Accessory (Right) + + %d: Body Armor +%d: Costume Garment + + +%d: Costume Headgear (Low) + + +%d: Costume Headgear (Mid) + + +%d: Costume Headgear (Top) + + %d: Garment -%d: Left Accessory +%d: Hand (Left) -%d: Left Hand +%d: Hand (Right) -%d: Lower Headgear +%d: Headgear (Low) -%d: Mid Headgear +%d: Headgear (Mid) -%d: Right Accessory +%d: Headgear (Top) -%d: Right Hand +%d: Refine All Equip (Costume) -%d: Shoes +%d: Refine All Equip (General) + + +%d: Refine All Equip (Shadow) + + +%d: Shadow Accessory (Left) + + +%d: Shadow Accessory (Right) + + +%d: Shadow Armor + + +%d: Shadow Shield -%d: Top Headgear +%d: Shadow Shoes + + +%d: Shadow Weapon + + +%d: Shoes %s @@ -242,15 +284,39 @@ Copyright (C) 2010-2015 Evol Online %s %s %s +%s %s allows you to send a private message to the player. if [name] contains spaces, it must be enclosed in quotation marks. + + %s :Main: %s +%s People usually doesn't shout, they talk. Because this, if you are too far, an NPC won't hear you. + + +%s allows you to change game language, anytime, anywhere. + + +%s and %s will show this informative and absurdely big tutorial book. + + +%s clears the text box. + + %s data type is not supported :%u +%s determines how many blows you can take before you die. It also affects status effects, like poison. + + +%s displays amount of currently connected players. + + %s drains his mug in one long sip, then hesitates. +%s explains how to use all client commands. + + %s failed @@ -263,6 +329,9 @@ Copyright (C) 2010-2015 Evol Online %s has bought your item(s). +%s helps you carry more items and also gives you a more forceful blow, but ends up not being very interesting if you focus on weapons that use projectiles, such as the bow. + + %s in jail for %d years, %d months, %d days, %d hours and %d minutes @@ -272,12 +341,24 @@ Copyright (C) 2010-2015 Evol Online %s is empty +%s is very useful for alchemy and magic, but nowadays there are few opportunities to use it. + + +%s lists even more advanced commands, but some of them can only be used by admins or GM's. + + %s recalled! %s revision '%s' (src) / '%s' (scripts) +%s shows the name of the map you are in. + + +%s shows the number of people in the neighbourhood. + + %s spawns in: @@ -290,6 +371,12 @@ Copyright (C) 2010-2015 Evol Online %s value is now :%s +%s will help when the client starts lagging. If you see an attack but no monsters, that's the cause. + + +%s will tell you all the rules once again. + + %s: %d @@ -329,6 +416,9 @@ Copyright (C) 2010-2015 Evol Online '%s' stats: +'Hey anyone there?' + + 'That', as you call it, is a @@. There are plenty on this island! @@ -338,12 +428,27 @@ Copyright (C) 2010-2015 Evol Online (@request): %s +(All items must be placed exactly in this order for cooking work.) + + (CID:%d/AID:%d) +(Click on us to continue the introduction.) + + +(You hear a faint sound in distance, but can't say what sound it was.) + + * :%s %s: * +* @@ @@ + + +* Skill ID: @@ + + *Bang bang* @@ -359,9 +464,15 @@ Copyright (C) 2010-2015 Evol Online *Uff*... And another box of @@s for our starving colleagues is ready. *Uff*... El n +*ahem* + + *burp* +*sniff sniff* + + *snores* @@ -389,6 +500,9 @@ Copyright (C) 2010-2015 Evol Online - Gulukan - Gulukan +- I currently need your help with @@. + + - Jalad - Jalad @@ -533,9 +647,18 @@ Copyright (C) 2010-2015 Evol Online ...I mean log! Made of log! +...It'll most likely attack you, instead. + + ...it might be because of Don... he is the master blacksmith of this place and a model to me! +...who knows if there isn't a secret in that? + + +/q [Player Name] + + 1 GM found. @@ -554,6 +677,9 @@ Copyright (C) 2010-2015 Evol Online 1: The type of item yoiis want to dye. +1x @@, 3x @@, 2x @@, and the ingredient of your choice. + + 2. ##BDo not use offensive/rude language##b in the chats or in your character(s) name(s). @@ -599,6 +725,12 @@ Copyright (C) 2010-2015 Evol Online 3456,%d +??? + + +???: Hey! Is someone there? Please, help, it's so dark down here! + + @@ @@ -611,24 +743,39 @@ Copyright (C) 2010-2015 Evol Online @@ divorced! -@@ is helping me. -@@ m'està ajudant. - @@ registered for marriage and accepted partner @@! @@ registered for marriage. Waiting for partner... -@@? Welcome my dear!#0 +@@ skillfully cuts the bread in half, throws the ingredients in air, and they land in the sandwich! + + +@@/@@ pages used. + +@@? Welcome my dear!#0 +@@? Benvingut amor meu!#0 @@? Welcome my dear!#1 +@@? Benvingut amor meu!#1 + +@discord allows you to setup Discord integration settings. @request sent. +@resyncall is the more powerful version of @resync. It'll reload everything, even the clouds if needed. + + +@toevent will warp you to event island, if an event is happening, of course. + + +@ucp allows you to manage your account, eg. recover lost email. + + A GM has discharged you from jail. @@ -638,6 +785,9 @@ A band of adventurers formed in Argaes from those who had lost their homes and f A cookie! Una galeta! +A critical hit deals added damage and disregards defense. A critical always hit, although it can be blocked just fine. + + A few minutes passed, and suddenly I was practically surrounded by a dozen or more of these living trees! @@ -659,6 +809,9 @@ A small lie is really just a fib, and I could really use some cash... A stat card works on different pieces of equipment. +A strange voice seems to be calling out your name. + + A sunny and hot day, Un dia calorós i solejat, @@ -702,7 +855,7 @@ Acolyte Acorn - +Gla Actually Gugli asked me if I would help you bring him some of your boxes.#0 @@ -728,6 +881,9 @@ Actually, I was here to help you with those boxes. Can I bring one of them back Actually, it's been a long day. +Actually, you just took a bounty, right? + + Add a new line @@ -746,6 +902,9 @@ After I chopped off a few branches, the whole tree started to move! After I shook it off and struck the tree again with my axe, another branch hit me! +After a tiring, yet fast, travel by Koga, you arrive at @@. + + After all this time, it was still there! @@ -770,6 +929,12 @@ After this small overview of Artis, what do you think of our city? After this war, the Raijin race was born. A race born of Magic. Humans encapsulated in a Mana storm and altered forever. +After you have confirmed the negotiation, a window with a vertical split will appear. The left side are the items you intend to offer in trading. The right side are the items that the other citizen intends to offer in trading. + + +Aggressors always know when they are in danger! Therefore, they are always on standby, attacking anyone who appears ahead. + + Agi: %d (%d~%d) @@ -932,6 +1097,9 @@ Alliances cannot be made during Guild Wars! AllowKS | +Almost all creatures drop useful items when defeated. To get the dropped item press the '###keyPickup;' key next to the item or click the primary button on the item. + + Almost got it! @@ -950,6 +1118,9 @@ Alright, I'm going to his room, keep an eye on her, we still don't know if she's Alright, I'm going to his room, keep an eye on him, we still don't know if he's friend or foe...#1 +Alright, but... You only have @@ @@, and I need @@ to do the status reset for you! + + Alright, take your time we are not in a hurry. @@ -965,12 +1136,27 @@ D'acord. Els aniré a buscar ara. Alright... Bye. Molt bé... Adéu. +Also note that if you are in overweight, your natural regen will halt. 90% in weight, and you won't be able to attack. + + +Also, build a reputation with the Legion. Talk to everyone. Help everyone. Prove me your worth! + + +Also, most monsters get enraged and will attack whoever is closest to them, regardless of anything else. + + +Also, status point reset can't be undone. Do you really want this? + + Also, we took your yayed clothes, as they were... Yeyeye... In a bad shape. Go check the chest near your bed, there are some other ones inside.#0 També hem agafat la teva roba, ja que estava... Yeyeye... En males condicions. Ves a mirar el cofre al costat del teu llit, n'hi ha d'altra a dintre.#0 Also, we took your yayed clothes, as they were... Yeyeye... In a bad shape. Go check the chest near your bed, there are some other ones inside.#1 També hem agafat la teva roba, ja que estava... Yeyeye... En males condicions. Ves a mirar el cofre al costat del teu llit, n'hi ha d'altra a dintre.#1 +Also, you'll get more experience by killing monsters stronger than you, and less experience by killing monsters weaker than you. + + Alternative clouds appeared. @@ -983,6 +1169,9 @@ Although the more powerful you are, the more plushrooms you will need. Although, if you want to visit a place nearby, we could take you there. +Altough you can't get rid of the feeling someone is listening on the other side, you don't get any replies + + Amethyst @@ -1007,6 +1196,12 @@ And I bet you don't know who is in charge of monitoring the security of this pla And I have no mention of a so called "@@" on it! +And by last, to speak to everyone online, besides whoever might be idling on IRC, select the '#irc' tab. + + +And by the way. I know nothing about this book. And I don't know how to get more pages either. + + And get out of here, I'm not a map! @@ -1067,12 +1262,18 @@ I tu? Com va al teu cantó? And you? How's it yaying on your side? I tu? Com et yaying va al teu canto? +AngryCrafty + + Angus#008-2-17 Animals Protection Agency of Aemil +Any boss which was previously unhittable, can be hit with appropriate number of attackers. + + Any clue on where Astapolos may be hidden? Alguna pista d'on pot estar l'Astapolos? @@ -1118,6 +1319,9 @@ Anyway, the guild creation is perfect for both! Anyway, the last time I stole something I was almost caught. +Anyway, to make a sandwich, you'll need to place, in this order: + + Anyway. @@ -1140,10 +1344,10 @@ Applying some strong-smelling liquid, he tans them to a darker hue. Aquada - +Aquada Aquada Box - +Caixa d'Aquada Arch Bishop @@ -1172,6 +1376,9 @@ Are you crazy? Are you going to stand here all day long? Do the dishes or go away. T'estaràs quiet com un estaquirot tot el dia? Renta els plats o ves-te'n. +Are you in need of some flowers? + + Are you mad?! Estàs enfadat?! @@ -1208,7 +1415,7 @@ Estas yayant aquí per explorar l'illa?#1 AreaNPC AreaNPC -AreaNPC#001-2-22 +AreaNPC#Artis AreaNPC#doors1 @@ -1220,11 +1427,14 @@ AreaNPC#doors2 AreaTop AreaTop +Argaes + + Argh! Armbands - +Braçalets Arpan gave money @@ -1307,6 +1517,9 @@ Atropos Mixture Auction is disabled +Auldsbel discretly stuffs a book on your backpack. + + Auldsbel#008-1 @@ -1382,6 +1595,9 @@ Awesome, come back if you ever want to create a larger group! Awesome. How many of those do you want to give me? +Axe + + Axe Hat @@ -1490,6 +1706,9 @@ Baby Warlock Baby Wizard +Bad Bee + + Bag#000-1 @@ -1500,6 +1719,27 @@ Ban failed, it is not possible to ban this user. Bandana +Mocador + +Bandit + + +Bandit Boots + + +Bandit Gloves + + +Bandit Hood + + +Bandit Lord + + +Bandit Shawl + + +Bandit Trousers Banking is disabled @@ -1539,7 +1779,7 @@ Base level raised. Bat Teeth - +Dents de muricec Battle configuration has been reloaded. @@ -1571,6 +1811,9 @@ Because the voices of death sing a sweet song Because you are not authorized to warp from some maps, %d player(s) have not been recalled. +Becoming a Sorcerer? I want that too! + + Bee @@ -1613,13 +1856,16 @@ Bernard wants maggot slime Bernard wants roasted maggot +Besides this, there is Seasons. You know, summer, autumn, winter and spring. + + Besides, I need to be here to watch out for thieves while La Johanne is docked. -Better take it back to Q'Onan. +Better stay away from my basement, you may end up like the poor guys down there. -Better you stay here for a while. Come back when you are stronger. +Better take it back to Q'Onan. Beuss @@ -1628,26 +1874,35 @@ Beuss Beware of falling stones from the cliff! +Beware you have a limited number of pages. Do not let the Legion or the Brotherhood find out you have one. + + Billy Bons Billy Bons Black Cotton Dye +Black Scorpion + + Black iron... That is a very specific request that you have for me! Blacksmith -Blub +Blossom#008-1 + +Blub +Blub Blue -- Player %s invites you to PVP duel (Use @accept/@reject) -- Blue Coral - +Corall Blau Blue Cotton Dye @@ -1655,6 +1910,12 @@ Blue Cotton Dye Blue Gray Cotton Dye +Blue Rose + + +Blue Tulip + + Bobo @@ -1671,19 +1932,19 @@ Box Caixa Bread - +Pa Break the door. Trenca la porta. Brimmed Feather Hat - +Barret d'ala ampla amb plomes Brimmed Flower Hat - +Barret d'ala ampla amb flors Brimmed Hat - +Barret d'ala ampla Bring it to me, and you will get your reward. @@ -1700,11 +1961,14 @@ Bring them to me, and I'll give you something nice. Bring this box to Gugli. He will be extremely happy! Porta-li aquesta capsa a en Gugli. Estarà molt content! +Brotherhood + + Brown Cotton Dye Brown Trousers - +Pantalons marrons Bug Leg @@ -1754,6 +2018,9 @@ But all she says is, “had you stayed inside, you wouldn't be wet now”. But anyway, take the road which goes to the north to find everybody. Però de totes maneres, agafa el camí que va cap al nord per trobar-los a tots. +But be careful: do not scream by using a lot of capital letters, do not repeat yourself over and over, and above all DO NOT SPAM, or you may be severely penalized. + + But discovering new territories is probably the best thing that can happen to sailors, don't you think? @@ -1775,9 +2042,15 @@ But hey, back to me. Remember my mentioning that I'm hun...grrr...eee! But how I got there is kind of scary... +But if you and other players surrounds the monster instead, they'll suffer the same penalties! + + But if you fail, you will have to get them from the alchemist. +But if you need to deal with more burocratic stuff, go talk to Q'Anon. He is the boss here. + + But if you really want to accomplish something, you should consider joining us. @@ -1826,6 +2099,9 @@ But the plushroom you brought was really awesome you know.#0 But the plushroom you brought was really awesome you know.#1 +But there is no skill to be learnt from this boss. + + But they are too fast. @@ -1835,12 +2111,21 @@ But we are quite lucky here, outside of some tipsy travelers there are no big pr But who am I? Però qui soc? +But you are out of the boss level range. + + But you are welcome to reset your stats again if you bring me some more plushrooms!#0 But you are welcome to reset your stats again if you bring me some more plushrooms!#1 +But you do not have enough Magic Ink. (You need: @@ @@) + + +But you ran out of empty pages on this book. + + But you should've seen that gaze! @@ -1955,6 +2240,9 @@ Can't you remember anything at all? Or do you have some memories of your past? Can't you see I am reading? If you need something, tell me the secret password. +Can't you see I am reading? Please go, please. + + Can't you see I'm busy? @@ -1991,6 +2279,9 @@ El Capità Nard està a l'habitació de la teva dreta. Carmie#001-1 +Carp Sandwich + + Carrot @@ -2015,6 +2306,9 @@ Catching a piou Caul#008-2-17 +Cave + + Cave Maggot @@ -2024,18 +2318,66 @@ Celestia Ch 1 — Fishing apparatus +Ch 1 — How to make money. + + +Ch 10 — How I see my items? + + +Ch 11 — How trade with other players? + + +Ch 12 — How hunt monsters? + + +Ch 13 — How talk with someone? + + +Ch 14 — Change your appearing. + + +Ch 15 — Commands. + + +Ch 16 — Shortcuts. + + Ch 2 — Baits +Ch 2 — Everything about monsters. + + Ch 3 — Location +Ch 3 — Quests. + + Ch 4 — Casting +Ch 4 — Status. + + +Ch 5 — NPC's. + + Ch 5 — Reeling +Ch 6 — Magic. + + +Ch 7 — Rules. + + +Ch 8 — Weather & Seasons. + + +Ch 9 — Experience. + + Chair#Chair1-001-2-41 @@ -2109,7 +2451,7 @@ Character killed. Character not found. - +No s'ha trobat el personatge. Charcommand failed (usage: %c ). @@ -2124,7 +2466,7 @@ Cheers! Cheese - +Formatge Chef Gado Xef Gado @@ -2192,6 +2534,9 @@ Chocolate Cashmere Dye Choose desired quest state: +Chopstick + + Chorus of the Woods @@ -2249,6 +2594,9 @@ Cobalt Herb Cobalt Plant +Coin Bag + + Colorant is not the yeying color. Some wear out from light, others look great but inflict itai-itai, and others become spotty or wash-away. @@ -2315,9 +2663,12 @@ Common Carp Communication Theory -Completed +Complete Quest +Completed +Complet + Completed Gugli's task @@ -2348,6 +2699,9 @@ Enhorabona! Congratulations! You are the MVP! Your reward EXP Points are %u !! +Contacted by Sopiahalla + + Cookie Master Mestre de les Galetes @@ -2363,6 +2717,12 @@ Les galetes són extraordinàries, com jo. Cookies provide you strength, health and cuteness. Les galetes et proporcionen força, vida i bellesa. +Cooking + + +Cooking is an art. You need to know how to cook something. You can use my stove to prepare. + + Copper Armbands @@ -2370,7 +2730,7 @@ Copper Necklace Coral - +Corall Costume '%s' removed. @@ -2420,6 +2780,9 @@ Hem podries explicar on soc? Could you interrogate him for me? +Could you please bring me 2 new knives? + + Could you please bring me something which isn't a berry, and I'm not big on vegetables either. I need proteins! @@ -2445,13 +2808,13 @@ Crafty Creased Shirt - +Camisa Arrugada Creased Shorts - +Pantalons curts arrugats Create items - +Crea objectes Creating a party has some advantages, it's a pretty good choice! @@ -2463,22 +2826,22 @@ Crimson Cashmere Dye Croc - +Croc Croc Claw - +Urpa de Croc Croconut Croconut Croconut Box - +Caixa de Croconuts CroconutMob Crocotree - +Crocotree Crude Amethyst @@ -2504,6 +2867,9 @@ Crusader Cuco +Curious Hole + + Current amount of zeny changed. @@ -2534,7 +2900,13 @@ CvC: On DO YOU FEEL BETTER?! ET SENS MILLOR?! -Daddy did not come back home... He said that he would be back for lunch but it has already been a week! +Daddy asked me to give you some money as a thank you for looking out for me. + + +Daddy finally came back home! He grabbed a snack and said he would be returning to the sewers. + + +Daddy never came back home... He said that he would be back for lunch but it has already been two days! Dagger @@ -2561,6 +2933,9 @@ Dancer Dang, I scared it! More patience, @@, more patience. +Dark + + Dark Collector @@ -2598,7 +2973,7 @@ Death Knight Debug - +Depura Debug - Change level @@ -2631,7 +3006,7 @@ Defeated by Delicious Cookie - +Galeta Deliciosa Delivered box, got reward @@ -2672,6 +3047,9 @@ Did you bring me any wood? Did you bring me the %d %s I need? +Did you brought me 2 new knives? + + Did you fight it? @@ -2690,9 +3068,6 @@ Did you look over the basement? Did you run away? -Did you say reward? I want it! -Has dit recompensa? La vull! - Did you see Don the blacksmith? He might know how you could improve your metal equipment. @@ -2744,9 +3119,15 @@ Do not give the password of your room to anybody! Keep it secret and try not to Do not give the password of your room to anybody! Keep it secret and try not to use the same one in any other room in the future. - Julia No li donis la contrasenya de la teva habitació a ningú! Guarda-la en secret i no provis d'utilitzar la mateixa contrasenya en cap altre lloc en el futur. +Do not learn + + Do not let intimacy and hunger get to zero. If any of those get to zero, it'll leave you forever. +Do note that Job Level gives you skill points, and the status bonuses are really minor. + + Do nothing @@ -2771,6 +3152,9 @@ Tens alguna cosa per a mi avui? Do you have the %d %s and %s E for the shield? +Do you have this commendatory letter? + + Do you know anything about the recent robberies? @@ -2837,12 +3221,24 @@ Do you want to go back to Artis? You really should be afraid of the Legion there Do you want to go somewhere? +Do you want to leave it alone? + + +Do you want to leave the boat? + + Do you want to marry @@? Do you want to read it? +Do you want to throw something inside? + + +Do you want to try again? + + Do you want to try? Vols provar? @@ -2927,6 +3323,9 @@ Don't say I didn't warn you! Don't say it so loudly, other people could hear us. +Don't tell anyone about this. Once you kill you a boss, you can try to learn the boss skill by using the book. + + Don't tell me more, I know what you want... No hem diguis res més, sé el que bols... @@ -2954,24 +3353,36 @@ Don't you try to cheat an old merchant! You don't have enough money, you need @@ Donald +Done! + + Done. Here, take it! Now, here is the plan. Go talk to her and offer our beautiful lady a bite of her arrogance! Fet. Aquí, agafa-ho! Ara, aquest es el pla. Ves a parlar amb ella i ofereix-li part de la seva arrogància! +Dont you know something about fertility? I heard rumors. + + Door DoorUpwards DoorUpwards -DoorUpwards#001-2-23 +DoorUpwards#Artis Drag and drop an item from your inventory. +Drag and drop the items from your inventory in the frames. + + Drasil Island. +Dress up! Do not walk without clothes! Always wear your items! They leave you less vulnerable to attacks and stronger to defeat your opponents. + + Due to neglect with day-to-day administration, which she delegated to her council, and uncontrolled expenses, the kingdom faced its first economic crisis. @@ -3029,6 +3440,9 @@ Duel| You've left the duel. Dummy +During night, the monsters usually respawn faster. That can be a problem with aggressive monsters. + + Duty calls me, *hic*, see you later, dude.#1 @@ -3041,9 +3455,15 @@ Each big city hosts a Legion building, Artis' building is located in the north-w Each card improves your gear by a ratio or a fixed number on a predefined stat. +Each level up will buff your base stats, and give you stats points to allocate. + + Each piece of equipment has a predefined slot number. +Each season unlocks a set of quests and drops which can only be obtained on the season. + + Earlier today there was this young seller named Fexil that passed by here. @@ -3053,6 +3473,15 @@ East Easter Egg +Easy to make? Could you make one for me? + + +Easy to make? Could you teach me how to make them? + + +Eating is a necessity, but cooking is an art. + + Edouard#001-2-41 @@ -3182,6 +3611,9 @@ Enter line number: Enter new line: +Equippable items are armour, weapons and accessories. + + Error reading atcommand.conf, reload failed. @@ -3194,9 +3626,15 @@ Eugene Eugene needs tentacles +Even a simple sandwich will be ruined if you place lettuce above the cheese! + + Even after all that though, I still can't believe what happened next. +Even with your Hercules strength, this lid is hopelessly struck. + + Event Management @@ -3260,6 +3698,9 @@ Expanded Super Baby Expanded Super Novice +Experience can be gained by completing quests and killing monsters. When you accumulate enough experience, you'll level up! + + Experience rates: Base %.2fx / Job %.2fx @@ -3276,7 +3717,7 @@ Fake name must be at least two characters. Fancy Hat - +Fancy Hat Farewell. @@ -3288,6 +3729,9 @@ Feel free to come visit me another time. Female +Dona + +Fertility Potion Fexil @@ -3353,6 +3797,9 @@ Finished training Finished battle +Fire + + Fireworks are launched. @@ -3365,11 +3812,14 @@ Fireworks | First encounter +First of, there's a day/night cycle on the game. + + First thing she asked was if I'm a farmer. Fish Box - +Caixa de peix Fish is good for the brain! @@ -3389,6 +3839,9 @@ Fishing next to shallow water is not going to work well, because fishes seldom g Five Castles +Flag#1 + + Fluffy @@ -3428,6 +3881,9 @@ For '%s' you need the amount of seconds (from 0 to 10) For a chef? Who said I was a... Oh right, I am. Per a un xef? Qui t'ha dit que jo fossa un... Oh veritat, ho soc. +For now do not take too much time to work on your intelligence, after all, magic use is very restricted nowadays. + + For starters, you should probably do some stretching and practice on some dummies in our training room. @@ -3485,13 +3941,19 @@ From what I heard, my brother Gugli needs the help of as many people as possible From your mind, break the ice +Frost + + Frost held the title of Lord Prince of the Republic for eighteen months, when the council deposed him and declared itself head of the state. Frostiana - +Frostiana Fungus +Fong + +Fur Boots Furthermore, unless you are planning to stick it out, you should also not even think about gaining experience by messing with those icky pink land jellies. The pink could stick on you, imagine the horror! @@ -3533,12 +3995,18 @@ Gained zeny is now shown. Gained zeny will not be shown. +Galimatia + + Gamboge Herb Gamboge Plant +Game Balance + + Game introduction @@ -3581,14 +4049,20 @@ Gender Generalstore#008-1 +Generic items are used for different purposes. In creating other items, to swap and sell, to collect, etc. + + Genetic Genetic T -Get money +Get a Recipe Book + +Get money +Aconsegueix diners Ggrmm... Grmmmm... @@ -3707,6 +4181,9 @@ Good to hear from you! Good to hear! Està bé escoltar això! +Good to know, thanks. + + Good to know. Es bo de saber-ho. @@ -3734,9 +4211,6 @@ Gorgeous woman, but when she looked at me, the scares went scuttling down my spi Got a cookie -Got no reward - - Got poison from Gado @@ -3785,6 +4259,9 @@ Perfecte, quin menjar tens per a mi avui?#0 Great, what food do you have for me today?#1 Perfecte, quin menjar tens per a mi avui?#1 +Greater %s allows you to attack faster and has a greater chance of evading attacks. + + Green Cotton Dye @@ -3948,10 +4425,10 @@ Hair style Half Croconut - +Mig Croconut Half Eggshell - +Mitja closca d'ou Hard Spike @@ -4022,6 +4499,9 @@ He did not change while growing up, I repeatedly asked him to leave the forge bu He has a guns! +He has never been the same since mommy went away... + + He is a regular at the inn, located in the north-west part of town. @@ -4046,6 +4526,9 @@ He is usually in his office on the 3rd floor. He is very lucky that Don took him under his wing, but being the student of such a teacher is not easy every day! +He likes to eat sandwiches. A good thing they are so easy to make! + + He likes to hide near the little lake in the north-west side of the island. Li agrada amagar-se a prop del petit llac al nord-oest de l'illa. @@ -4067,7 +4550,7 @@ He proceeds to further scrutinize the log. He said he is going to climb the highest hill in Artis, which is not far from here. -He said that he would check why the manhole next to the house was doing weird sounds. +He said that he would check why weird noises were coming from the manhole next to the house. He takes another sip. @@ -4094,6 +4577,9 @@ Heard conversation Hearing these words the Piou felt great joy, +Heh, did you saw me at the port? No? + + Hehe! Jaja! @@ -4118,7 +4604,10 @@ Jejeje, està una mica nerviós, perdona'l, no tenim un nou membre a la tripulac Hel... What?! Wait! Merd... Que?! Espera! -Hello Sir. +Hello Miss.#1 + + +Hello Sir.#0 Hello dear!#0 @@ -4130,6 +4619,9 @@ Hola amor!#1 Hello deary. +Hello madam. + + Hello there! @@ -4142,6 +4634,9 @@ Hola yeye. Hello, I am Macgowan, apprentice to Nicholas. +Hello, a rowboat is on his way to the beach. Please wait for a while for it to arrive. + + Hello, can I help you? @@ -4238,12 +4733,6 @@ Here, take as many as you need, I have plenty!#0 Here, take as many as you need, I have plenty!#1 -Here, take this @@ as a gift. I'm sure someone as skilled you will make a good use of my old weapon.#0 - - -Here, take this @@ as a gift. I'm sure someone as skilled you will make a good use of my old weapon.#1 - - Here, take this key, it opens all the doors on this ship. @@ -4331,14 +4820,17 @@ Ei, psst! Tu no ets un mariner, correcte? Hey. Ei. +Hey. ppst. I have something important to tell you. + + Heya! Hi @@, I heard the captain sent you down here, uh?#0 - +Hola @@, he sentit que el capità t'ha enviat aquí baix, uh?#0 Hi @@, I heard the captain sent you down here, uh?#1 - +Hola @@, he sentit que el capità t'ha enviat aquí baix, uh?#1 Hi @@. Hola @@. @@ -4367,6 +4859,9 @@ Ei! Finalment et puc veure sota la llum del sol! Hi! No, I haven't seen him yet. +Hi, I am Simon. + + Hi, can I help you at all? @@ -4376,6 +4871,9 @@ Hi, can I help you somehow? Hi, how is it going? +Hi, my name is Blossom. + + Hi, my name is Moon. This morning I went for a walk on the beach. @@ -4397,6 +4895,9 @@ Hi, what do you want kiddo?#1 Hi. +Hi. I am Trozz, and I am the chief of legion training in Artis. + + Hidden Person Persona Amagada @@ -4436,6 +4937,9 @@ Hill & Cliff Hinnak asked for help +Hinnak wasted all my good kitchen knives trying to get rid of his accursed Pinkies. + + Hinnak#008-1 @@ -4460,6 +4964,9 @@ Hm... then it couldn't be him. Hmm, I'll also give you one of these hats from the box near you, but only after you complete your task! +Hmm, why don't you go train a little more? We have several training rooms here. + + Hmm... @@ -4502,6 +5009,9 @@ Honestly, sometimes I prefer nice explosions. Better keep back!#0 Honestly, sometimes I prefer nice explosions. Better keep back!#1 +Honey + + How about I ask you to help the crew? It would mean that you're one of us and that you will be able to get one of these hats. I que tal si et demano que ajudis una mica d'ajuda a la tripulació? Això vol dir que series un de nosaltres i que tindries dret a agafar un d'aquests barrets. @@ -4526,6 +5036,9 @@ How can I help you? How can I improve my equipment? +How can we serve you today? + + How could you... We said we wouldn't talk about that again! @@ -4580,6 +5093,9 @@ No obstant això... Hrmph. +Human + + Human Voice @@ -4622,33 +5138,39 @@ Estava aquí quan et van rescatar! I WOULD LOVE TO! M'ENCANTARIA! -I already killed many strong monsters, but I everyone have fears, right?! +I actually could use a status reset! I already know everything. Bye. Ja ho sé tot. Adéu. +I also hear fisherman likes to fish at night. They say the catch is bigger, if you understand me. + + I also heard you lost all your memories? That's a shame. I am %s Super Novice~ +I am Wyaras apprentice, helping her with selling her potions. + + I am absolutely positive. I am an alchemist, I bear the name of Ivan. +I am broken?! Please report! Debug data: @@ (@@) + + I am new in this town, just like you. I am not an expert of the first kind, but I know what I am talking about when it comes to improving equipment. -I am not worried about rewards. I just want to help. -No estic preocupat per les recompenses. Només vull a ajudar. - I am only doing special requests. @@ -4703,9 +5225,6 @@ I asked Don our blacksmith to prepare a black iron sword for morning, he should I asked Hinnak, but he wants at least a beer in exchange for his scythe. -I asked for food but... *hips* Ah, that'll do nicely! - - I asked for food but... *hips* Ah, that'll do! @@ -4802,6 +5321,9 @@ I didn't notice that a Pikpik was in my way, and when I stepped on it, my foot w I do feel better! Hem sento millor! +I do know a recipe with this! + + I do not like to brag about it but you won't find a better blacksmith on the whole island. @@ -4820,9 +5342,6 @@ I don't feel so well, I might be sick. I don't have any. -I don't have anything good for you today. -No tinc res de bo per a tu avui. - I don't have enough plushrooms...#0 @@ -4844,14 +5363,17 @@ I don't have the time. I don't know if I trust her eyesight or memory. +I don't know the password + + I don't know what to say... No se que dir... I don't know. -I don't need your help right now, come back later. -Ara mateix no necessito la teva ajuda, torna més tard. +I don't need your help right now, but maybe tomorrow, who knows? + I don't really have time to go chasing pious, let me just buy one at the regular price (30000 E). @@ -4871,6 +5393,9 @@ I don't want to buy a piou right now. I don't want to change my language, sorry. No vull canviar el meu idioma, ho sento. +I don't want you! I want daddy! + + I feel ok.#0 Hem sento bé.#0 @@ -4964,6 +5489,9 @@ I haven't seen anything strange. I heard rumors about some old hostilities between you and Gado. Are they true? He escoltat rumors de certes hostilitats entre tu i en Gado. Són veritat? +I heard something too. A girl named Galimatia seems to need help. If only those lazy developers could tell her what she needs. + + I heard you aren't delivering any more living wood. Why not? @@ -5000,6 +5528,12 @@ I hope you like this color. I informed Julia about your monstrous plan. He informat a la Julia del teu monstruós pla. +I just can't remember what. But come talk to me later once devs becomes less lazy. + + +I just dont know what to do. Perhaps all gets better when I stay here, whining and waiting. Please, leave me alone. + + I just need %s E for material and work time. @@ -5024,6 +5558,9 @@ I know you didn't kill them yourself! I like money! Consider it done. +I love flowers! What do you have for sale? + + I love hanging out here! @@ -5099,9 +5636,18 @@ I ran away as fast as I could, and lucky for me the monsters aren't that fast on I recall seeing Gulukan, Astapolos and Q'Muller. Recordo haver vist en Gulukan, l'Astapolos i en Q'Muller. +I recommend that you train your agility a great deal, since most monsters out there aren't really amazing at hitting you. + + I recommend you to take a nap on the inferior level, we will soon leave this place. +I registered you on a random bed on the upper level.#0 + + +I registered you on a random bed on the upper level.#1 + + I remember I saw a few of them leaving the ship early this morning to get a head start on today's work. @@ -5207,6 +5753,9 @@ I used to be a farmer, but my magic attempts were banned by the gouvernment. I used to get these logs from Jack, the handsome lumberjack. +I usually would not care, but it is not every day a complete stranger arrives at Artis. + + I value my life, that's why! @@ -5228,6 +5777,9 @@ I was afraid to get busted, so I decided to get rid of the evidence. I was an actor when I was younger. +I was an archer of the Legion and shouldn't be scared of a few maggots, but everyone has fears, right?! + + I was going to ask you if you would need any help. Et volia preguntar si necessitaries una mica d'ajuda. @@ -5288,6 +5840,9 @@ Tindré cura dels altres no et preocupis. I will take it! Thank you captain! Ho agafaré! Gràcies capità! +I will take the @@ Bounty. + + I will tell my dad! @@ -5363,6 +5918,9 @@ I would like to stay here a bit more. I would like to store some items. +I would prefer becoming a real Sorcerer one time. *sighs* + + I wrote your name on the book, you are now free to use the storage and bank services. @@ -5399,6 +5957,9 @@ I'll be here, come back when you'll be ready.#0 I'll be here, come back when you'll be ready.#1 +I'll be waiting for you, then! + + I'll come back later. @@ -5408,6 +5969,9 @@ I'll give her everything she needs, don't worry.#0 I'll give him everything he needs, don't worry.#1 Li donaré tot el que necessiti, no et preocupis.#1 +I'll give you @@ GP for this job. + + I'll give you something if you do. @@ -5417,6 +5981,9 @@ I'll keep that in mind. I'll keep track of this, while you return the mask to the troupe. +I'll return the plushroom to you, but please, do not waste my time. + + I'll share my berries with you if you help me. Compartiré les meves baies si m'ajudes. @@ -5471,6 +6038,9 @@ I'm done. I'm fine for now, thank you. +I'm fine, thanks. + + I'm glad to see you're okay.#0 M'alegra veure que estàs bé.#0 @@ -5504,6 +6074,9 @@ I'm lost, where should I go?#1 I'm not a pawn of the Legion, I don't have to obey you! +I'm not feeling like it today... Sorry. + + I'm not proud of it, but I had to steal money from others to keep on living. @@ -5561,6 +6134,12 @@ I'm sorry, but I didn't see anything. I'm sorry, but I'm busy looking into this string of robberies. +I'm starting to feel dizzy... I shouldn't stay here much longer.#0 + + +I'm starting to feel dizzy... I shouldn't stay here much longer.#1 + + I'm still a bit weak at the moment. We should probably talk later.#0 Encara soc una mica dèbil per ara. Potser hauriem de parlar d'aquí una mica.#0 @@ -5642,6 +6221,9 @@ Jo... I... I just like to eat the purple and delightful... And natural, and... +IMPORTANT: + + Ianus is from the Legion of Aemil, don't compare me to this brigand. @@ -5654,24 +6236,36 @@ If Enora wants her sword now, I need to ask for your help. If I saw *hic* who you were... *hic* Would not have helped you! Si hagués *hic* vist qui eres... *hic* No t'hagués ajudat! -If it is the latter, please take some courage and help me! +If it's no trouble, could you get me a %s? -If it's no trouble, could you get me a %s? +If my memory serves me right, you were just defeated. Why don't you go out to buy better equipment? If not, how could CrazyKatiektch +If only someone could help me to make my flowers bloom again. + + If so, I hope that he didn't give you any hard time, sometimes he can get up on the wrong side of the bed he becomes an embittered and grumpy old man... +If so, please take some courage and help me! + + +If the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished. + + If words beat in rhythm If yoiis wants to see a different use for the cards he can yeye for Resa at the light armor shop for a description of the styling cards. +If you are above the NPC and they still doesn't hear you, this mean they are deaf - you should report this! + + If you are lucky he might tell you a story about his adventures. @@ -5759,6 +6353,9 @@ If you see weird things here and there, or things that just shouldn't be, or eve If you simply wish to get 99 in all stats: +If you visit the sewers again... You'll find secret passages... + + If you wake up at the inn after a harsh battle, you will find yourself revitalized in an instant unlike other places where you can rest. @@ -5771,6 +6368,9 @@ Si bols ser recompensada, ajuda'ns a fer d'aquest món un lloc millor.#0 If you want to be rewarded, help us in making this world a better place.#1 Si bols ser recompensat, ajuda'ns a fer d'aquest món un lloc millor.#1 +If you want to challenge someone for a friendly match, you are at the right place. + + If you want to make a formidable foe for anyone, you'll need to train with real living opponents!#0 @@ -5798,6 +6398,9 @@ If you're looking for us there, most of us will be at the tavern of the Red Plus Impossible to increase the number/value. +Impossible to resync: You are dead. + + In Artis they really do mythologize people when they die. @@ -5816,6 +6419,9 @@ En efecte... Les coses que podria explicar... Però ens hem quedat sense espai.. In hopes of one day reconnect with the people of Ancea and establish a trade between the two continents, The City of Artis was founded. The Aemil Continent has then grown without contact with the people of Ancea. +In order to enter a message press the '###keyChat;' key, this will display the white box of typing. Type your message there and press '###keyChat;' again to send your speech. + + In truth, if your song is as beautiful as your plumage, @@ -5834,6 +6440,9 @@ En efecte, no ho soc.#0 Indeed, I am not.#1 En efecte, no ho soc.#1 +Indefinite Traning + + Infantry Helmet @@ -5849,12 +6458,18 @@ Inside is a theater mask and a note that you cannot even begin to read. Inspector +Instance ID: @@ + + Instance variables may not be used with @set. Int: %d (%d~%d) +Intelligence + + Intelligence raises your maximum mana points (good for mages) and your mind abilities. Please note: Magic system has not yet been implemented in this world. @@ -5984,6 +6599,9 @@ Is this for you or somebody else? Because you need to be registered to obtain th Is this some kind of joke?! +Isn't my husband Hinnak so hardworking? + + Isn't this place pretty? @@ -6026,10 +6644,16 @@ It is either a huge monster, some cultists, or someone throwing strange stuff in It is one of my best works. -It is possible to yeye your cloth with my beautiful dyes. +It is possible to yeye your cloth with my beautiful dyes. + + +It is them, after all, who have the ultimate decision as to those I can give my cookies to. + + +It is time to make some sandwiches myself!#0 -It is them, after all, who have the ultimate decision as to those I can give my cookies to. +It is time to make some sandwiches myself!#1 It is. @@ -6047,6 +6671,9 @@ It looks like you are an expert of the life inside 'La Johanne'. Do you know any It looks like you can't carry anything else for now. Sembla que no pots portar res més per ara. +It needs so much training, but Wyara only leaves me here, standing and selling something instead of teaching me. + + It really hurts, please hurry! @@ -6092,6 +6719,9 @@ It tends to be too dark to see a mask. It was at night, so I could barely escape. I ran to Artis hill. +It was heard about some adventurers whom obtained and use advanced magic, but that is still seen with bad eyes. + + It was something like a long nap. Era una cosa així com una llarga migdiada. @@ -6146,6 +6776,9 @@ It's a very good place if you want to make some more money. It's alright! Just one more box and it'll be ok. Està bé! Només una caixa més i acabem. +It's always good to see if you have a lot of them around before you think about attacking one! + + It's been a while, boy!#1 @@ -6158,6 +6791,12 @@ It's better than running around in circles doing nothing. It's better to deal with the Merchant Guild than the old man, Don has this ability to hammer down your enthusiasm in sparkling fury! +It's currently day, but when night falls, Candor will become darker. + + +It's currently night, that's why Candor is dark. + + It's good, good... I have a friend who is still in a coma, but I can't be with her without working... Està bé, bé... Tinc una amiga que encara està en coma, però no puc estar amb ella sense treballar... @@ -6227,6 +6866,9 @@ Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s Item: '%s'[%d] +Items for consumption, like potions, can only be used once. + + Items have different effects. Some will heal you, some can be used as weapons or armor, and some can be sold for gold. Els objectes tenen diferents efectes. Alguns et curaran, altres poden ser utilitzats com a arma o armadura, i d'altres poden ser venuts per aconseguir diners. @@ -6281,6 +6923,9 @@ Jeans Chaps Jenna#001-2-28 +Job Level and certain equips can affect your status. You'll see the modifiers with a + sign. + + Job level can't go any higher. @@ -6347,6 +6992,9 @@ Just say something sparkling Kagerou +Kaizei + + Katja asked for help @@ -6383,14 +7031,14 @@ Khaki Cotton Dye Kill at least %d pinkies and come back. -Killed rattos +Killed mob bitmask: @@ Killer state reset. Knife - +Ganivet Knight @@ -6398,18 +7046,27 @@ Knight Know that every flatterer, +Known Recipes: @@ + + Koga#001-1 Koga#008-1-1 +Kralog + + Kralog Voice Lachesis Brew +Lake + + Large Healing Potion @@ -6437,6 +7094,12 @@ Lean Lean for example? En Lean per exemple? +Learn Skill + + +Learn all recipes + + Leather Gloves @@ -6449,6 +7112,9 @@ Leather Trousers Leave it. +Leave me alone. + + Leaves have stopped falling. @@ -6470,7 +7136,7 @@ LeftBarrierCheck LeftDoor LeftDoor -LeftDoor#001-2-23 +LeftDoor#Artis LeftDoorCheck @@ -6540,11 +7206,14 @@ Let's trade. Lettuce Leaf - +Fulla d'enciam Library +Light + + Light Armor Shop @@ -6566,11 +7235,23 @@ Lime Cotton Dye Line @@ has been removed. +List of known cooking recipes: + + +List of known master skills: + + List the commands -Little Blub +Listen, kid. Being a legion member is not a joke.#0 + +Listen, kid. Being a legion member is not a joke.#1 + + +Little Blub +Blub Petit Little Green Slime @@ -6611,6 +7292,9 @@ Login-server is offline. Impossible to %s the player '%.*s'. Look at your equipment, can you guess what material it is made from? +Look for the hideout, but tell no one about this. Then, say the password again. + + Look how splendid this @@ is! @@ -6648,7 +7332,7 @@ Lost the riddle Lousy Moccasins - +Lousy Moccasins Lovely day, isn't it? @@ -6659,6 +7343,9 @@ Lower this skill Lozerk +Lozerk told me to talk to you and join the legion. + + Lucas#001-1 @@ -6707,9 +7394,21 @@ Magic Arpan Magic Arpan#sailors +Magic Feather + + +Magic was banned for lore reasons? Seriously, after the mana war, only small tricks are allowed. + + Magician +Make me proud, boy.#1 + + +Make me proud, girl.#0 + + Make sure to put on a bait after you click, though! @@ -6720,7 +7419,7 @@ Makes sense. Do you think we should inform the capt'n about it? Male - +Home Malik#008-2-18 @@ -6728,18 +7427,27 @@ Malik#008-2-18 Mana Bug +Mana Ghost + + Mana Torch Manana +Manana Sandwich + + Manana Tree Manually trigger the current broadcast +Many thanks. I can now do sandwiches again! + + Map not found. @@ -6755,6 +7463,9 @@ Market Place Marriage failed. +Master Book + + Master Fluffy was attracted by the odour, @@ -6791,6 +7502,9 @@ Maybe he over did it with the bottle today to celebrate that! Maybe he was one of those who got lost last month? He could be the yoiis from Esperia who got a secret diplomatic mission from the Legion of Aemil!#1 +Maybe later. + + Maybe next time. @@ -6812,12 +7526,18 @@ Maybe you can use it as a weapon. Maybe you could ask him what's wrong? +Maybe you have more luck with something else? + + Maybe you meant: Maybe you should help someone else first, so that he sees your intentions are good. +Maybe you should try this phrase? + + Maybe you too you could help me? @@ -6866,6 +7586,9 @@ Merchant Merchant Guild +Merchants like to buy body parts of killed monsters and animals because they can make items and equipment. + + Mercy has been granted. @@ -6876,7 +7599,7 @@ Merlin Message: - +Missatge: Mh, I don't care for heroes. @@ -6932,15 +7655,18 @@ Mommy sent me to find my brother Bobo. Mona -Mona Father's is right behind you. You have five minutes to bring him out of sewers! - - Mona's dad Mona's dad is missing +Mona's dad was rescued + + +Mona's father is right behind you. You have five minutes to bring him out of sewers! + + Money @@ -6956,6 +7682,9 @@ Monster database has been reloaded. Monster: '%s'/'%s'/'%s' (%d) +Monsters are everywhere. They're a plague we're trying to get rid of. + + Moo! @@ -6975,11 +7704,14 @@ Moooooooooooo! Moss - +Molsa Most common and widely popular in the fish realm are @@ and pieces of @@. +Most of these people will not think twice before giving a nice reward to anyone who helps them. + + Mostly manuals and tutorials but you won't find out until you open one! @@ -6998,6 +7730,9 @@ Mouboo#Artis2 Mouboo#Artis3 +Mountain + + Move this line down @@ -7007,6 +7742,12 @@ Move this line up Mundane +Mundane ran away, he did not trust the path you chose. + + +Mundane ran straight home. He must be missing his daughter. + + Murderers!#0 @@ -7014,7 +7755,7 @@ Murderers!#1 Mushroom Spores - +Espores de fong My Mouboos, my beloved Mouboos! @@ -7025,7 +7766,7 @@ My beauty. I was not always a sailor, you know, I was once an important individu My breath smells bad. -My daughter is probably worried with me. Could you perhaps lead me out of here? +My daughter is probably worried about me. Could you perhaps lead me out of here? My forestbows are not made of regular wood, you know. @@ -7097,9 +7838,15 @@ NPC is not in this map. NPC moved. +NPC stylists will cut your hair! + + NPC variables may not be used with @set. +NPC's or non-playable characters are characters that are always in the game, offering a wide variety of reactions, from a simple friendly conversation to a desperate request for help. + + Nah, I don't feel like chatting. @@ -7148,6 +7895,9 @@ Narrator#000-0-1 Navy Blue Cotton Dye +Neutral monsters do not have such a sense of danger. + + Never (only on login) @@ -7209,7 +7959,7 @@ Ninja No - +No No Exp Penalty: %s | No Zeny Penalty: %s @@ -7274,9 +8024,6 @@ No player found in map '%s'. No player found. -No problem, I can help you anyway. -Cap problema, et puc ajudar de totes maneres. - No problem, come back later if you changed your mind! @@ -7425,7 +8172,7 @@ Non-binary None - +Res None Taken @@ -7448,6 +8195,9 @@ Nope, there are no secrets hidden within the ship's hull. Some sailors swear the Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx +Normally, collaborative monsters behave like neutral monsters. Unless someone of the same species is in danger, at which point they all take an aggressive stance against the aggressor. + + North @@ -7463,6 +8213,9 @@ Not a hexadecimal digit: Not a string: +Not all monsters will do this, but most will. So if you see a monster running after a player and you stand in the way... + + Not content to stay buried in their burrows in the sand, Crocs can be quite a nuisance, infesting this whole island. Tender Feet and Newbies are advised: Avoid touching these crawling red devils. They have huge, deadly claws that can make mincemeat of you! You can recognize them easily by their crabby personalities. Be careful younglings. @@ -7472,15 +8225,27 @@ No tothom es amable. Els estafadors poden estar per tot arreu, fins i tot entre Not in the mood to chat. +Not my problem.#0 + + +Not my problem.#1 + + +Not now, thank you. + + Not now. -Not now. You see, I am also afraid of Blubs and Rattos! +Not now. You see, I am also afraid of Slimes and Rattos! Not really. All I got was a headache... +Not resync'ing to prevent flood. + + Not so good actually... I would feel better on Nard's ship. No tan bo en realitat ... Em sentiria millor en la nau d'en Nard. @@ -7490,6 +8255,12 @@ Not so weird, perhaps, except that it was been bright and sunny just a second be Not to kill your dream, but... Julia is mine!#1 +Not yet, I'll be back.#0 + + +Not yet, I'll be back.#1 + + Not yet, but I am working on it. @@ -7502,6 +8273,9 @@ Encara no. Tornaré aviat. Note Nota +Note down. To hunt a target you must click the primary mouse button on it. Avoid fighting monsters or citizens much stronger than you. %s + + Note#001-2-22 @@ -7802,6 +8576,9 @@ Oh, and there was this inscription on your raft. It represents the Legion of Aem Oh, and you will need this book too, it will help you learn the basics of fishing. +Oh, but I'll still need the book. Even if all pages are white. + + Oh, but you didn't come here to talk about that, am I right?#0 Oh, però no has vingut fins aquí per parlar d'això, no?#0 @@ -7838,6 +8615,9 @@ Oh, now that I remember, we also found some money in your pockets, here it is!#0 Oh, now that I remember, we also found some money in your pockets, here it is!#1 +Oh, ok. Come back later if you need something. + + Oh, please hurry and bring me a %s. @@ -7895,6 +8675,9 @@ Oh... menjar rattos. Sona... Eeh... Deliciós, si. Oh... um... actually... all I wanted was to get to Artis. Err... but I didn't, uhm... have enough money to pay for the ferry! +Oh? And do you think you have what it takes to be a proud Legion Member? + + Ok I add your name... @@... @@ -7943,12 +8726,6 @@ Ok. Okay, I'll be here, if you change your mind. -Okay, I'm ready to work!#0 -Si, estic preparat pel treball!#0 - -Okay, I'm ready to work!#1 -D'acord, estic preparat per treballar!#1 - Okay, but there won't be any explosions. @@ -7962,7 +8739,7 @@ Olana#008-2-4 Old Book - +Llibre antic Old Man @@ -7979,6 +8756,9 @@ On On March 213CCE, Chancellor Benjamin Frost, with support of the council, proclaimed the Republic of Ancea. This event would become known as the Blue Revolution. +On a side note, more defense is always good, but the damage won't decrease on the same rate that defense raises. + + On one hand, ranged weapons are generally weaker than melee ones, but you attack from a safer position. On the other hand, depending on the level of the weapon, melee ones potentially can yeild quicker kills. @@ -7988,12 +8768,18 @@ On the year 206CCE, after a long crisis of succession, a minor noble only known Once the monster is dead, click on the dropped items to add them to your inventory. You can also use the 'Z' key to claim the drops. Una vegada que el monstre es mort, clica en els objectes deixats anar per afegir-los al teu inventari. També pots utilitzar la tecla "Z" i si estàs a prop els agafarà. +Once used, they will disappear from your inventory. + + One Castle One advice: Don't take the things those drinkers say too serious. They are sitting here and drinking all day. +One last thing to keep in mind... If you are surrounded, you'll suffer an agility and defense penalty. + + One of its branches hit me! @@ -8003,6 +8789,9 @@ One of these little boogers started flying early, and escaped from me. Only Don and the Merchant Guild have that kind of material in stock. It's called black iron. +Only after you prove yourself, you may join our ranks as a proud member! Hahah! + + Only one more Fluffy to kill and it's done! @@ -8015,6 +8804,9 @@ Oooh, perfect! It's perfect! Oooh, these wounds! They hurt so much! +Open your inventory window (###keyWindowInventory; key) next to the trading window. Select an item you want to offer, and then press the Add button. To add money to the negotiation, enter the amount you will offer and press the Change button. + + Opened treasure chest @@ -8030,6 +8822,12 @@ Or do you want to keep your friendships and adventures in different groups? Or you can take seat and ask Melinda if you need something. +Or, you can just forget all that, and let me prepare sandwiches for you, too! %%H#0 + + +Or, you can just forget all that, and let me prepare sandwiches for you, too! %%H#1 + + Orange Cotton Dye @@ -8040,7 +8838,7 @@ Oscar#008-1 Other - +Altres Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx @@ -8081,6 +8879,9 @@ Our mommy doesn't allow us to go there, because it's dangerous. But he doesn't l Our only wish to eat a plush, so juicy sweet... +Out of creativity already? Don't worry, I don't judge! Hehe. + + Over lovers under a starry night @@ -8103,6 +8904,9 @@ PartyLock | Pearl +Perla + +People vary greatly in the amount of strength, agility, dexterity, intelligence, vitality and luck. Perfect! @@ -8129,19 +8933,10 @@ Pet intimacy is already at maximum. Peter Peter -Peter asks to kill rattos - - -Peter asks to kill rattos again - - -Peter gave reward - - Peter needs help -Peter#001-2-22 +Peter#Artis Pets are not allowed in Guild Wars. @@ -8160,7 +8955,7 @@ Pickaxe Pikpik - +Pikpik Pile Of Ash @@ -8169,7 +8964,7 @@ Pink Antennae Pink Blobime - +Blobime Rosa Pink Cotton Dye @@ -8187,28 +8982,31 @@ Pinkie Hat Piou - +Piou Piou Feathers - +Plomes de Piou Piou Legs - +Potes de piou Piou Slayer - +Assassí de Piou Piou and The Fluffy Piou egg +Ou de piou + +Piouleg Sandwich Pious must keep a strict diet composed of Piberries. Piousse - +Piousse Player '%s' (session #%d) | Location: %d,%d @@ -8261,9 +9059,15 @@ Please bring me @@s so I can pull out these spikes from my foot. Please choose the desired gender: +Please come again with at least 10 INT and 20 DEX. Stat Bonuses aren't counted. + + Please come back anytime! +Please come talk to me, I'll help you get dressed. + + Please continue talking to the villagers. @@ -8273,6 +9077,9 @@ Please do hurry and bring me %d %s, so I can finish my soup! Please don't tell people you saw me. I don't want to be decapitated or get thrown into the sea as food for sharks, or get my hair mussed! +Please don't touch my stove without my authorization. + + Please don't touch these hats, they are for crew members only. Per favor, no toquis aquests barrets, son sols i únicament per als membres de la tripulació. @@ -8613,13 +9420,13 @@ Plush#001-2-28 Plushroom - +Plushroom Plushroom Box - +Capsa de Plushrooms Plushroom Field - +Camp de plushrooms Plushrooms you say? @@ -8634,7 +9441,7 @@ Poison Skull Poisoned Dish - +Plat Enverinat Poisoned Julia @@ -8645,9 +9452,18 @@ Poor Chelios, I don't envy him... Position: 1:Top 2:Middle 3:Bottom 4:Weapon 5:Shield 6:Shoes 7:Robe 8:Body +Potions? That sounds useful. What do you have? + + Practice! There are no secrets to becoming a warrior. +Press the '###keyTrade;' key to ignore or accept business proposals. You and the other citizen who want to negotiate need to be in the configuration that accepts negotiations. if your configuration is 'Ignoring business proposals', then you will not receive the warning from any citizen wanting to negotiate with you, and you will not be able to initiate negotiations. + + +Previous Inn reservation will be lost! + + Priest @@ -8670,16 +9486,16 @@ Protect me, please... Pumpkin - +Carbassa Pumpkin Hat - +Barret de carbassa Pumpkin Juice Pumpkin Seeds - +Llavors de carbassa PumpkinMob @@ -8735,6 +9551,9 @@ Q'Onan#001-1 Q'Pid#001-1 +Quest complete + + Quest database has been reloaded. @@ -8748,11 +9567,14 @@ Quest state: @@, @@ Quit - +Surt Race +Raijin + + Raijin Voice Veu de raijin @@ -8778,18 +9600,18 @@ Rate management Ratto - +Ratto Ratto Tail - +Cua de Ratto Ratto Teeth - +Dents de Ratto RattosControl RattosControl -RattosControl#001-2-23 +RattosControl#Artis Raw Log @@ -8804,12 +9626,21 @@ De debò? Molt amable de la teva part, accepto la teva ajuda! Rebellion +Recipe Book + + Red Cotton Dye Red Plush Wine +Red Rose + + +Red Tulip + + Reduces your Int by 50 @@ -8819,6 +9650,9 @@ Reduces your base level by 50 Reduces your job level by 50 +Refinery UI is not available + + Registered @@ -8828,9 +9662,15 @@ Registration is open to everybody, but newcomers need to pay a fee for all of th Related quests: +Remember that some equipment sets will give you hidden stat bonuses! So dress yourself in a fashion way, if possible! + + Remember to stay sharp. I might need your help on another case. +Remember! You're trading things, not lending/borrowing them. You are solely responsible for everything you own. + + Remember, you have to find my brother on the hill east of here. @@ -8877,7 +9717,7 @@ Resa gave package Reset - +Reinicia Reset 'Feeling' maps. @@ -8885,6 +9725,12 @@ Reset 'Feeling' maps. Reset EVERYTHING +Reset Quest + + +Reset all recipes + + Reset done! @@ -8897,6 +9743,12 @@ Reset subquests Reset | +Return + + +Return to Artis? + + Return to Debug menu @@ -8945,10 +9797,13 @@ Roasted Maggot Robin +Robin Bandit + + Rogue -Rowboat +Rosehat Royal Guard @@ -8999,6 +9854,12 @@ Sadly, you found nothing but dirt. Sage +Sagratha is great. + + +Sagratha is great. Why does the strange woman near the Legion building always say that to daddy...? + + Said her friend had told her that I needed help. @@ -9020,6 +9881,9 @@ Salem#001-1 Samantha +Sandwiches + + Sapartan Sapartan @@ -9038,7 +9902,7 @@ Say her love to glamourous Gliktch? Scared me, those seven-branched little stumps did! -Scary... I am afraid of these blubs and rattos... And worse, I am lost... +Scary... I am afraid of all these Slimes, Rattos and Maggots... And worse, I am lost... Scheduled broadcasts @@ -9062,9 +9926,12 @@ Scripts have been reloaded. Scythe -Sea Drops +Sea +Sea Drops +Gotes de mar + Sea water?! I will not help you with your evil plan! Aigua de mar?! No t'ajudaré amb el teu malvat pla! @@ -9321,7 +10188,7 @@ Silk Cocoon Silk Pants - +Pantalons de Seda Silk Robe @@ -9341,6 +10208,9 @@ En Silvio per exemple? Silvio starts to speak to his bottle, you leave, letting him have a private conversation. +Simon + + Simply contact them, by forum or wispers or irc. When you are helpful and kind, they respond in kind. And in time they may surely add you to my cookie list! @@ -9396,7 +10266,7 @@ Small Mana Potion Small Tentacles - +Petits Tentacles Snarfles#008-1 @@ -9422,6 +10292,9 @@ So I was going to ask if maybe you would be interested in giving me a hand with So I was going to ask if maybe you would be interested in giving me a hand with a few errands.#1 +So be nice and help people along the way! + + So close! @@ -9539,18 +10412,27 @@ Some of the crew are looking for goods we can trade with at our next destination Some of your items cannot be vended and were removed from the shop. +Some others also like to buy them to keep as trophies. Either way, you can make some money with that. + + Some people prefer to catch fish using magic, but calling that "fishing" would be an insult to this traditional sport. Some people, however, prefer to fish with more unorthodox baits, such as @@ or @@. +Some special items cannot be traded, discarded, nor sold. With a right click, you can also protect normal items as if they were special ones. + + Some tasks will help you become aquainted with Artis. Trust me. Some types of fish also enjoy @@ quite a bit. +Some, but not all, from the rare or non-replaceable items will have a warning when you try to sell them. + + Somebody is probably training, better wait for him to finish. @@ -9602,15 +10484,18 @@ Ho sento però no tinc temps per això. Sorry i can't help you. Go away! +Sorry to disturb you. + + Sorry! I forgot to introduce myself. My name is Arpan, but other sailors call me Magic Arpan because I know one or two yaing magic spells. Ho sento! M'he oblidat de presentar-me. Hem dic Arpan, però els altres mariners hem diuen Magic Arpan perquè hem sé un o dos yaing encanteris. -Sorry, I am not in the mood for another fight with these rattos. -Ho sento, no estic d'humor per una altra batalla amb aquests rattos - Sorry, I am not making these anymore. +Sorry, I don't know any recipe with this. + + Sorry, I have to go. @@ -9629,6 +10514,9 @@ Sorry, but you don't have what I need. Sorry, but you have no pet. +Sorry, my eyesight is a bit poor nowadays. Where are the ingredients? + + Sorry, no. @@ -9641,6 +10529,9 @@ Sorry, we are sold out for today. Sorry, you look like a pinkie. +Sorry. I can't make a sandwich with that. + + Sorry... here you are. @@ -9693,7 +10584,7 @@ Spying on the %s party. Squichy Claws - +Urpes de Squichy Squirrel @@ -9788,9 +10679,21 @@ Store#Various001-1 Store#Weapon001-2-27 +Stove + + Str: %d (%d~%d) +Strange, it seems I became younger lately. + + +Strangely enough, this lid can only be open from inside. + + +Strength + + Strength multiplies the damage of your hits, especially melee ones. You will also be able to carry heavier stuff. @@ -9803,6 +10706,9 @@ Styling Shop Subquests: +Suddenly you remember the strange phrase Mona overheard Sophialla saying + + Summer @@ -10005,7 +10911,7 @@ Ten Castles Tentacles - +Tentacles Terry @@ -10076,19 +10982,10 @@ Thanks again for helping me with the pinkies! Thanks again for helping me! -Thanks again for helping me. Drats these rattos for infesting our fair vessal! - - -Thanks again for helping me. Drats these rattos for infesting our fair vessal! They are a permanent problem so I will always need your help to exterminate them in order to keep their number under control. Your help is very welcome indeed. Unfortunately, I can give you a reward only for the first extermination. - - Thanks for finding daddy... I wish he spent more time with me... -Thanks for helping me! -Gràcies per ajudar-me! - -Thanks for saving me. This is enough, I'll watch if Mona is fine and return to Sewers later. +Thanks for helping my husband Hinnak. Thanks for the help! @@ -10103,15 +11000,24 @@ Thanks for your help with the pinkies. Thanks! +Thanks, sir Q'Anon. + + Thanks, that was very kind of you! That better be a trophy on your head. +That doesn't looks edible to me! + + That is a really fine piece of wood you brought me. +That looks too exotic for me to eat! + + That makes everybody @@ -10160,6 +11066,9 @@ That's right, we have our very own training room. The Legion is always well prep That's too bad... Although I think you're lying. +Thats your problem, really. + + The @@ is a one time item, you can use it as many times as you want, but you can only have one! @@ -10241,9 +11150,6 @@ The doctor examines you briefly. The door to the legion building is temporarily closed. -The elder ran away from you. - - The end of the story got erased, probably because of the sea water. Some pages are still missing. Thus much is lost to time, including the author's name. @@ -10310,6 +11216,9 @@ The item is not equippable. The leader of the troupe said you hung around them a lot while they were in town. +The lid is sealed shut, and you are too weak to open it. + + The light armor shop is ran by Resa, she is part of the Merchant Guild of Artis. @@ -10385,6 +11294,9 @@ The problem is that I am short of material. The rank of lieutenant is granted only to people with proper control of their skill and good judgment, like Enora. Or me, of course. +The recipes, of course, you must collect yourself. Even sandwiches are not so simple as to simply put ingredients and hope for the best. + + The resulting shield looks usable already, but Jack applies another liquid to it and leaves it to dry for a few moments. @@ -10472,12 +11384,18 @@ There are a lot of things you must be wondering about. There are few groups of these @@s all around this island. Just pick some and have a try. HI ha diversos grups d'aquests @@s pels voltants de l'illa. Només escull-ne alguns i intenta-ho. +There are many key combinations, press F1 to see a short list of them! + + There are no items to appraise. There are no tasks for you right now. +There are people in the world who need help! + + There are people who really need our help. @@ -10493,8 +11411,20 @@ Hi ha diversos grups d'aquests @@s pels voltants de l'illa. Només escull-ne alg There are some knives on the table. Would you like to take one? -There are still some rattos left! Do you want to abort the quest? -Encara queden alguns rattos! Bols avortar la missió? +There are some stones scattered around the world that mark your point of return in case of defeats. Some ship chests may also serve as a return point. You can also select some beds in case of defeats. + + +There are still some monsters left! Do you want to abort the quest? + + +There are three kind of monsters which frequently or seldomly attacks our fair vessel. + + +There are three types of items. + + +There are three types of monsters: the aggressive, the neutral, and the collaborative. + There are two different kinds of cards, the first changes the style of your clothes, the second changes their stats. @@ -10514,6 +11444,9 @@ There is always something you can do here, like killing some tortugas or helping There is an unknown side effect to these plushrooms, they can free you from your past mistakes. +There is no day/night, weather, or season cycle in TMW yet. + + There is no help for %c%s. @@ -10526,6 +11459,15 @@ There was a traveling theater troupe in town recently, but they've moved on to T There you go, like new. +There you go. Please enjoy yourself! ^.^ + + +There's also a job level, which produces green sparkles when you level it. + + +There's also weather, meaning it can rain, snow, or even happen a sandstorm. They are usually cosmetic, but... + + There's been no change in the setting. @@ -10565,9 +11507,6 @@ These twigleafs are the trees that give me the living wood you speak of. These yeye boxes are way too heavy to be carried alone onto the ship. Aquestes yeye capses pesen massa per ser carretejades per un sol al vaixell. -They are a permanent problem so I will always need your help to exterminate them in order to keep their number under control. - - They are all around the island. Estan pers voltants de l'illa. @@ -10580,6 +11519,9 @@ They are fresh! They are fresh, they are good! +They are known to use a revolutionary hair growth formula. + + They are made of special living wood. @@ -10589,6 +11531,9 @@ They are married... wish them well. They are so tasty when cooked with some @@. Don't drop any of them! +They can be equipped to make your look more interesting or to improve some of its features. + + They eventually found a new land after much hardship and named it Aurora, after its beautiful sunrise. @@ -10613,6 +11558,9 @@ They taste simply divine! They were all in the mining camp. +They will not attack anyone unless they are attacked first. + + They're perfect, just perfect! @@ -10622,6 +11570,12 @@ They've been destroying my fields, and I guess I got a bit worked up. Thief +Thief Slime + + +Think on Season Quests as a yearly quest which you have three months to do. + + Thirteen Castles @@ -10652,6 +11606,9 @@ This action was met with widespread opposition from all races, and a war broke. This book contains everything you should know about it, take it! +This book contains the knowledge collected by ukars about how the world works. + + This book outlines the laws of every city and holding in Gasaron. @@ -10703,6 +11660,12 @@ Això es un @@, una lleugera fruita de mar. Estan molt buscades a l'arxipèlag. This is for my own use. +This is how good we Legion Members are. I was informed of your arrival way before you left Drasil Island. + + +This is how you do it! HAAH! + + This is the last one. If you use it again out of clumsiness, I will use your soft moist parts in the concoction of my next cookie batch. @@ -10826,6 +11789,9 @@ This waitress *hicks* is great, she never stops to bring beer *hicks. This will remain your respawn point until set elsewhere. +Those for consumption, equipment and generics. + + Three Castles @@ -10871,6 +11837,24 @@ To change your stats, use these commands: To de-trust a player: +To defocus or stop attacking, press Shift + A. + + +To discard an item you no longer want, select it and press the 'Discard' button. Generic items can be discarded or sold. + + +To display the dialog box with other citizens, press the '###keyWindowChat;' key. + + +To equip or unequip an item, select it and press the 'Equip' or 'Unequip' button. You can not 'Equip' or 'Unequip' when talking to someone. + + +To focus on a creature, press the '###keyTargetMonster;' key. To focus on another citizen, press the '###keyTargetPlayer;' key. To attack the focused target press the '###keyAttack;' key or click the primary button on the creature. + + +To focus on an NPC, press the '###keyTargetNPC;' key. To talk to him press the '###keyTalk;' key. + + To get a quote: @@ -10889,6 +11873,9 @@ To ignore a player: To move between characters that are on different accounts, you have to use the Trade function. +To negotiate with other citizens, you should click the second mouse button on some other citizen who is accepting negotiations, and select the 'Negotiation' option from the menu that will appear. + + To open your inventory, use the F3 key or use your mouse to select it in the above menu in your client. Per obrir el teu inventari, utilitza la tecla F3 o utilitza el teu ratolí per seleccionar-lo al menú superior del client. @@ -10904,6 +11891,15 @@ To reset back to normal: To set the exp rate: +To speak in public select the 'General' tab. It serves to talk to people who are appearing on your screen. + + +To speak privately to a friend who is not appearing on your screen, type the command '%s' and press '###keyChat;'. This command will open a long-distance dialog that has the name of who you want to talk to. Select this new tab and send your message through it. + + +To speak privately with someone, click the second mouse button on the citizen and select the 'Whisper' option. + + To successfully catch a fish, you need to pull up your hook by clicking it, right after it submerges. @@ -10922,12 +11918,24 @@ ToFightRoom#001-2-32 ToTrainingRoom#001-2-34 +Toggle Croc Bounty + + +Toggle Ratto Bounty + + +Toggle Tortuga Bounty + + Told bobo to go home Tomb +Tonori + + Too bad, try again. @@ -10959,22 +11967,22 @@ Topaz Vein Toppy Blub - +Toppy Blub Torch Tortuga - +Tortuga Tortuga Shell - +Closca de Tortuga Tortuga Shell Fragment - +Fragment de closca de Tortuga Tortuga Tongue - +Llengua de Tortuga Toss the hook into deep water by clicking on where you want to cast it. @@ -10986,7 +11994,7 @@ Town Map Trade - +Intercanvi Training Arrow @@ -11000,12 +12008,18 @@ TrainingGladius Transforming into monster is not allowed in Guild Wars. +Travel to woodlands? + + Treasure Chest Tree Control Panel +Tritan + + Tritan Voice Veu de tritó @@ -11069,6 +12083,9 @@ Two Castles Type "@mapflag available" to list the available mapflags. +Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10, delayed-consumable = 11, cash = 18 + + UAHAHAHAAH! I am the cook of that bunch of donkeys, and I can be rude with everyone from this bossy captain to that harpy-lady! @@ -11081,6 +12098,9 @@ Uhm, adéu. Uhm... Your story seems... Hm... La teva història sembla... +Ukar + + Unable to Teleport in this area @@ -11106,7 +12126,7 @@ Unfortunately, we still need help from you. This time it will be a delicate task Malauradament, encara requerim la teva ajuda. Aquesta vegada en una tasca delicada, aquí a bord. Unknown - +Desconegut Unknown Cart (usage: %s <0-%d>). @@ -11135,6 +12155,9 @@ Unknown packet: 0x%x Unknown type of value in: +Unless you are interested in a status reset? + + Unlike other respawn points, an inn can fully restore your HP. @@ -11174,6 +12197,9 @@ Usage: @changelook {} Usage: @displayskill {} +Usage: @dropall {} + + Usage: @jailfor