diff options
author | Jesusaves <cpntb1@ymail.com> | 2019-04-27 23:31:00 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2019-04-27 23:31:00 -0300 |
commit | b10f74c33d3d6021f26b31ba4ce6a030ee6c1609 (patch) | |
tree | f80b5a71e6b9c7d8a4658e385d47f04c7436c3e4 | |
parent | c633be91846d3016d732372890378db60edc5e32 (diff) | |
parent | fa061c5c0d2c77d9d9276f61a71f20b6c0ad4843 (diff) | |
download | serverdata-b10f74c33d3d6021f26b31ba4ce6a030ee6c1609.tar.gz serverdata-b10f74c33d3d6021f26b31ba4ce6a030ee6c1609.tar.bz2 serverdata-b10f74c33d3d6021f26b31ba4ce6a030ee6c1609.tar.xz serverdata-b10f74c33d3d6021f26b31ba4ce6a030ee6c1609.zip |
Merge branch 'master' into jesusalva/feather
Conflicts:
db/re/item_db.conf
74 files changed, 1472 insertions, 559 deletions
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/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/constants.conf b/db/constants.conf index c9fcf425..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 @@ -4086,6 +4095,7 @@ constants_db: { NPC_SABINE: 184 NPC_MIKHAIL: 185 NPC_TROUPE_LEADER: 186 + NPC_SIMON: 187 NPC_CONFUSED_TREE: 400 NPC_ALIGE: 401 @@ -4194,7 +4204,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/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/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 @@ -186,6 +186,10 @@ quest_db: ( Name: "General_Cooking" }, { + Id: 42 + Name: "General_Brotherhood" +}, +{ Id: 1000 Name: "Test_testing1" }, diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 4786f289..84b8e07e 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 @@ -2735,6 +2735,18 @@ item_db: ( 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: 757 AegisName: "MagicFeather" Name: "Magic Feather" @@ -3221,7 +3233,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" @@ -3354,6 +3384,28 @@ item_db: ( 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" Name: "Creased Shorts" @@ -3512,6 +3564,28 @@ item_db: ( 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" Name: "Barrel" @@ -3759,7 +3833,6 @@ item_db: ( Atk: 0 Matk: -25 Def: 180 - Range: 0 Slots: 0 Loc: "EQP_HEAD_TOP" WeaponLv: 0 @@ -3767,8 +3840,12 @@ item_db: ( Refine: false ViewSprite: 2907 BindOnEquip: false - Delay: 0 - Sprite: 0 + OnEquipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> + OnUnequipScript: <" + doevent "#SpotlightMaster::OnTouch"; + "> }, { Id: 2908 @@ -3947,6 +4024,28 @@ item_db: ( 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" Name: "Shemagh" @@ -3962,6 +4061,21 @@ item_db: ( 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" Name: "Knife" @@ -4091,8 +4205,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; @@ -4117,8 +4235,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; @@ -4233,8 +4355,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/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/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 @@ -2589,6 +2589,140 @@ mob_db: ( } }, { + 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" Name: "Poison Skull" 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 + } + } } ) 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/maps/re/001-1.mcache b/maps/re/001-1.mcache Binary files differindex 7795236e..6ce64adc 100644 --- a/maps/re/001-1.mcache +++ b/maps/re/001-1.mcache diff --git a/maps/re/001-3-1.mcache b/maps/re/001-3-1.mcache Binary files differindex 1a2f1a6a..f8239cdc 100644 --- a/maps/re/001-3-1.mcache +++ b/maps/re/001-3-1.mcache diff --git a/maps/re/001-3-2.mcache b/maps/re/001-3-2.mcache Binary files differnew file mode 100644 index 00000000..a3747e0f --- /dev/null +++ b/maps/re/001-3-2.mcache diff --git a/maps/re/008-1.mcache b/maps/re/008-1.mcache Binary files differindex bd439b3c..6938421a 100644 --- a/maps/re/008-1.mcache +++ b/maps/re/008-1.mcache diff --git a/maps/re/008-3-0.mcache b/maps/re/008-3-0.mcache Binary files differindex 9e1e9179..5a291c6f 100644 --- a/maps/re/008-3-0.mcache +++ b/maps/re/008-3-0.mcache 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-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 3aecb09a..2595be63 100644 --- a/npc/001-1/koga.txt +++ b/npc/001-1/koga.txt @@ -9,12 +9,24 @@ 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; OnInit: .sex = G_MALE; .distance = 4; + .alwaysVisible = true; end; } 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-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-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-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-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-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-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. // <scratch> // [ 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-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/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-0/mundane.txt b/npc/001-3-0/mundane.txt index b653fa0d..17e70b0f 100644 --- a/npc/001-3-0/mundane.txt +++ b/npc/001-3-0/mundane.txt @@ -95,7 +95,8 @@ 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"); + updateSpotlight(true); // Important temporary variables @MUNDANE_OLDX=96; @@ -117,16 +118,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 +149,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 +160,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 +169,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: 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-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..57275325 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); + speech S_FIRST_BLANK_LINE, + 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/_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/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-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; +} 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; 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/_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-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/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/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/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/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/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/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); 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/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]; + +} diff --git a/npc/scripts.conf b/npc/scripts.conf index a7f39836..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", @@ -94,6 +95,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", |