diff options
-rw-r--r-- | db/constants.conf | 2 | ||||
-rw-r--r-- | db/re/item_db.conf | 170 | ||||
-rw-r--r-- | db/re/map_cache.dat | bin | 10136 -> 10136 bytes | |||
-rw-r--r-- | npc/001-1/calypsan.txt | 4 | ||||
-rw-r--r-- | npc/001-1/fexil.txt | 22 | ||||
-rw-r--r-- | npc/001-1/juscare.txt | 13 | ||||
-rw-r--r-- | npc/001-1/katja.txt | 2 | ||||
-rw-r--r-- | npc/001-1/lucas.txt | 10 | ||||
-rw-r--r-- | npc/001-1/merlin.txt | 40 | ||||
-rw-r--r-- | npc/001-1/rumly.txt | 21 | ||||
-rw-r--r-- | npc/001-1/salem.txt | 19 | ||||
-rw-r--r-- | npc/001-1/shop.txt | 166 | ||||
-rw-r--r-- | npc/001-2-27/_import.txt | 3 | ||||
-rw-r--r-- | npc/001-2-27/don.txt | 85 | ||||
-rw-r--r-- | npc/001-2-27/kaylo.txt | 44 | ||||
-rw-r--r-- | npc/001-2-27/lydon.txt | 37 | ||||
-rw-r--r-- | npc/001-2-27/shop.txt | 48 | ||||
-rw-r--r-- | npc/functions/asleep.txt | 10 | ||||
-rw-r--r-- | npc/functions/villagertalk.txt | 43 |
19 files changed, 635 insertions, 104 deletions
diff --git a/db/constants.conf b/db/constants.conf index 5b202174..70c91cfe 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3882,6 +3882,8 @@ constants_db: { NPC_ARTAXE: 134 NPC_LUCAS: 135 NPC_CALYPSAN: 136 + NPC_KAYLO: 137 + NPC_LYDON: 138 NPC_ALIGE: 401 NPC_ORC_SAILOR: 402 NPC_RATTO_SAILOR: 403 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 6e507c75..8aedb17e 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -139,7 +139,7 @@ item_db: ( View: 501 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -169,7 +169,7 @@ item_db: ( View: 502 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -203,7 +203,7 @@ item_db: ( Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - sc_start SC_ATTHASTE_POTION1, 20000, -5; + sc_end SC_POISON; heal rand(25, 35), 0; "> }, @@ -230,7 +230,7 @@ item_db: ( View: 504 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -260,7 +260,7 @@ item_db: ( View: 505 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -290,7 +290,7 @@ item_db: ( View: 506 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -320,7 +320,7 @@ item_db: ( View: 507 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 500 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -350,11 +350,10 @@ item_db: ( View: 508 BindOnEquip: false BuyingStore: true - Delay: 5000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - sc_start2 SC_POISON, 1, 20, 2500; + sc_start SC_POISON, 30000, 0; heal rand(10, 20), 0; "> }, @@ -381,7 +380,7 @@ item_db: ( View: 509 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -411,7 +410,6 @@ item_db: ( View: 510 BindOnEquip: false BuyingStore: true - Delay: 5000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -442,7 +440,6 @@ item_db: ( View: 511 BindOnEquip: false BuyingStore: true - Delay: 5000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -473,7 +470,7 @@ item_db: ( View: 512 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -562,11 +559,11 @@ item_db: ( View: 515 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 15000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - sc_start SC_ATTHASTE_POTION1, 20000, 5; + sc_start SC_ATTHASTE_POTION1, 15000, 5; heal rand(20, 30), 0; "> }, @@ -593,7 +590,6 @@ item_db: ( View: 516 BindOnEquip: false BuyingStore: true - Delay: 5000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -624,7 +620,7 @@ item_db: ( View: 517 BindOnEquip: false BuyingStore: false - Delay: 5000 + Delay: 1000 Trade: { nodrop: true noselltonpc: true @@ -654,7 +650,7 @@ item_db: ( View: 518 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 1000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -684,7 +680,7 @@ item_db: ( View: 519 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -696,7 +692,7 @@ item_db: ( AegisName: "PibberiesInfusion" Name: "Pibberies Infusion" Type: "IT_HEALING" - Buy: 60 + Buy: 140 Sell: 20 Weight: 15 Atk: 0 @@ -714,11 +710,11 @@ item_db: ( View: 520 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - itemheal rand(45, 55), 0; + itemheal rand(110, 130), 0; "> }, { @@ -744,7 +740,7 @@ item_db: ( View: 521 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -756,7 +752,7 @@ item_db: ( AegisName: "ClothoLiquor" Name: "Clotho Liquor" Type: "IT_HEALING" - Buy: 500 + Buy: 600 Sell: 150 Weight: 16 Atk: 0 @@ -774,7 +770,7 @@ item_db: ( View: 522 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 2000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -786,8 +782,8 @@ item_db: ( AegisName: "LachesisBrew" Name: "Lachesis Brew" Type: "IT_HEALING" - Buy: 900 - Sell: 220 + Buy: 1000 + Sell: 150 Weight: 14 Atk: 0 Matk: 0 @@ -804,11 +800,11 @@ item_db: ( View: 523 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 3000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - itemheal rand(1200, 1400), 0; + itemheal rand(1100, 1300), 0; "> }, { @@ -816,8 +812,8 @@ item_db: ( AegisName: "AtroposMixture" Name: "Atropos Mixture" Type: "IT_HEALING" - Buy: 1750 - Sell: 500 + Buy: 2450 + Sell: 300 Weight: 15 Atk: 0 Matk: 0 @@ -834,11 +830,11 @@ item_db: ( View: 524 BindOnEquip: false BuyingStore: true - Delay: 5000 + Delay: 10000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" - itemheal rand(2700, 3300), 0; + itemheal rand(2300, 2550), 0; "> }, { @@ -846,8 +842,8 @@ item_db: ( AegisName: "ElixirOfLife" Name: "Elixir Of Life" Type: "IT_HEALING" - Buy: 3500 - Sell: 1000 + Buy: 5000 + Sell: 500 Weight: 20 Atk: 0 Matk: 0 @@ -864,7 +860,7 @@ item_db: ( View: 525 BindOnEquip: false BuyingStore: true - Delay: 10000 + Delay: 20000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -894,7 +890,6 @@ item_db: ( View: 526 BindOnEquip: false BuyingStore: true - Delay: 0 KeepAfterUse: true Sprite: 0 Script: <" @@ -924,7 +919,7 @@ item_db: ( View: 527 BindOnEquip: false BuyingStore: true - Delay: 10000 + Delay: 1000 Sprite: 0 UseEffect: "EFFECT_HEAL" Script: <" @@ -932,6 +927,78 @@ item_db: ( "> }, { + Id: 528 + AegisName: "Manana" + Name: "Manana" + Type: "IT_DELAYCONSUME" + Buy: 100 + Sell: 35 + Weight: 10 + Job: 0xFFFFFFFF + Upper: 0x3F + Gender: 2 + Refine: false + View: 528 + BindOnEquip: false + BuyingStore: true + Delay: 500 + Sprite: 0 + UseEffect: "EFFECT_HEAL" + Script: <" + heal rand(70, 80), 0; + "> +}, +{ + Id: 529 + AegisName: "Curshroom" + Name: "Curshroom" + Type: "IT_HEALING" + Buy: 150 + Sell: 25 + Weight: 10 + Job: 0xFFFFFFFF + Upper: 0x3F + Gender: 2 + Loc: 0 + WeaponLv: 0 + EquipLv: 0 + Refine: false + View: 515 + BindOnEquip: false + BuyingStore: true + Delay: 30000 + Sprite: 0 + UseEffect: "EFFECT_HEAL" + Script: <" + sc_start SC_ATTHASTE_POTION1, 30000, 5; + sc_end SC_POISON; + heal rand(40, 50), 0; + "> +}, +{ + Id: 530 + AegisName: "Carrot" + Name: "Carrot" + Type: "IT_HEALING" + Buy: 30 + Sell: 8 + Weight: 3 + Job: 0xFFFFFFFF + Upper: 0x3F + Gender: 2 + Loc: 0 + Refine: false + View: 530 + BindOnEquip: false + BuyingStore: true + Delay: 500 + Sprite: 0 + UseEffect: "EFFECT_HEAL" + Script: <" + heal rand(20, 30), 0; + "> +}, +{ Id: 700 AegisName: "SmallTentacles" Name: "Small Tentacles" @@ -2107,6 +2174,30 @@ item_db: ( }, { + Id: 2701 + AegisName: "LeatherShield" + Name: "Leather Shield" + Type: "IT_ARMOR" + Buy: 2000 + Sell: 250 + Weight: 100 + Def: 5 + Job: 0xFFFFFFFF + Upper: 0x3F + Gender: 2 + Loc: 32 + EquipLv: 5 + Refine: false + View: 2701 + BindOnEquip: false + BuyingStore: true + OnEquipScript: + <" + bonus bAtkRange, -1; + "> + +}, +{ Id: 2900 AegisName: "Bandana" Name: "Bandana" @@ -2371,7 +2462,8 @@ item_db: ( AegisName: "PiouEgg" Name: "Piou egg" Type: "IT_PETEGG" - Buy: 200 + Buy: 30000 + Sell: 500 KeepAfterUse: true Script: <" bpet; diff --git a/db/re/map_cache.dat b/db/re/map_cache.dat Binary files differindex f946e9c7..c56b77fe 100644 --- a/db/re/map_cache.dat +++ b/db/re/map_cache.dat diff --git a/npc/001-1/calypsan.txt b/npc/001-1/calypsan.txt index 4030db83..235fb182 100644 --- a/npc/001-1/calypsan.txt +++ b/npc/001-1/calypsan.txt @@ -36,7 +36,9 @@ break; case 1: - break; + closedialog; + shop "Store#Calypsan001-1"; + close; case 2: speech 5, l("Yoiis is not yet ready to make his own dye."), diff --git a/npc/001-1/fexil.txt b/npc/001-1/fexil.txt index 7711410a..5a13b094 100644 --- a/npc/001-1/fexil.txt +++ b/npc/001-1/fexil.txt @@ -77,30 +77,24 @@ .@fexil = getq(ArtisQuests_Fexil); menuint - l("Yes, why not."), 1, - l("I would rather sell some stuff."), 2, - rif(.@fexil == 2, l("Do you still need help?")), 3, - rif(.@fexil > 2 && countitemcolor(729) > 0, l("I have some fur for you.")), 4, - l("No, Sorry."), 5; + l("OK, let's trade."), 1, + rif(.@fexil == 2, l("Do you still need help?")), 2, + rif(.@fexil > 2 && countitemcolor(729) > 0, l("I have some fur for you.")), 3, + l("No, Sorry."), 4; switch (@menuret) { case 1: - speech 5, - l("Good, take a look at the bag next to me then!"); - break; - - case 2: closedialog; - shop "Bag#000-1"; + shop "Bag#001-1"; close; - case 3: + case 2: mes ""; fexil_quest; break; - case 4: + case 3: speech 5, l("Awesome, how many of those do you want to give me?"); @@ -132,7 +126,7 @@ break; - case 5: + case 4: speech 5, l("Oh... Well, I just started to trade... Thus my technique may not be the best."), lg("Anyway, if you ever feel interested, just check my bag!"); diff --git a/npc/001-1/juscare.txt b/npc/001-1/juscare.txt index 7ad1ecdb..194f92a0 100644 --- a/npc/001-1/juscare.txt +++ b/npc/001-1/juscare.txt @@ -5,7 +5,6 @@ // Description: // Juscare, walking NPC of the legion of Aemil on the right part of the Agora of Artis. - 001-1,118,92,0 script Juscare#001-1 NPC_HUMAN_MALE_LEGION_ARTIS,{ function shouldTurn { @@ -23,6 +22,16 @@ close; } + function randomTalk { + debugmes "Juscare lock value : " + Repeat_NPC_lock + " current time " + gettimetick(2); + + if (Repeat_NPC_lock <= gettimetick(2)) + { + Repeat_NPC_lock = gettimetick(2) + 2; + villagertalk; + } + } + npc_pausemove; @Juscar_old_dir = -1; if (shouldTurn()) @@ -32,7 +41,7 @@ npc_turntoxy(.@cx, .@cy); } - villagertalk; + randomTalk; localClose; diff --git a/npc/001-1/katja.txt b/npc/001-1/katja.txt index f53d3a8d..2e5454dd 100644 --- a/npc/001-1/katja.txt +++ b/npc/001-1/katja.txt @@ -75,7 +75,7 @@ mes ""; mesn; mesq l("Great!"); - emotion 17; + emotion 103; next; break; case 2: diff --git a/npc/001-1/lucas.txt b/npc/001-1/lucas.txt index 8d8c2715..f451c3f1 100644 --- a/npc/001-1/lucas.txt +++ b/npc/001-1/lucas.txt @@ -6,7 +6,15 @@ 001-1,59,44,0 script Lucas#001-1 NPC_LUCAS,{ - villagertalk; + function randomTalk { + if (Repeat_NPC_lock <= gettimetick(2)) + { + Repeat_NPC_lock = gettimetick(2) + 2; + villagertalk; + } + } + + randomTalk; closedialog; close; diff --git a/npc/001-1/merlin.txt b/npc/001-1/merlin.txt index 0223e3ce..4ff7e88c 100644 --- a/npc/001-1/merlin.txt +++ b/npc/001-1/merlin.txt @@ -4,11 +4,45 @@ // Description: // Fishmonger NPC -001-1,72,128,0 script Merlin NPC_MERLIN,{ +001-1,72,128,0 script Merlin NPC_MERLIN,2,2,{ - speech - l("Fish is good for the brain!"); + function randomDialogue { + closedialog; + .@r = rand (6); + if (.@r == 0) + { + npctalk3 l("Fish, come and see my fish!"); + } + else if (.@r == 1) + { + npctalk3 l("They are fresh, they are good!"); + } + else if (.@r == 2) + { + npctalk3 l("Fresh from the sea and cheap!"); + } + else if (.@r == 3) + { + npctalk3 l("Come, come and see!"); + } + else if (.@r == 4) + { + npctalk3 l("They are fresh!"); + } + else + { + npctalk3 l("Fish is good for the brain!"); + } + close; + } + +OnTouch: + if (Repeat_NPC_lock <= gettimetick(2)) + { + Repeat_NPC_lock = gettimetick(2) + 1; + randomDialogue; + } close; OnInit: diff --git a/npc/001-1/rumly.txt b/npc/001-1/rumly.txt index 917da7ed..742b143e 100644 --- a/npc/001-1/rumly.txt +++ b/npc/001-1/rumly.txt @@ -88,9 +88,24 @@ L_Menu: goto L_ResetStats; case 3: if (.@visited != 2) goto L_Quit; - - speech 5, - l("See you! And come back with the plushrooms!"); + + .@rand = rand (2); + + if (.@rand) + { + speech 5, + l("See you! And come back with the plushrooms!"); + } + else + { + speech 5, + l("Oh noes!"), + l("A rabbit!"), + l("He has a guns!"), + l("*Bang bang*"); + narrator 4, + l("Rumly is hidding behind the tree."); + } goto L_Quit; } diff --git a/npc/001-1/salem.txt b/npc/001-1/salem.txt index 3b709825..9bc5907b 100644 --- a/npc/001-1/salem.txt +++ b/npc/001-1/salem.txt @@ -111,10 +111,11 @@ L_SalemMenuShop: menuint l("What about those pious? They look so cute."), 0, - rif(.@q != 0, l("I'd like to buy a piou.")), 1, - l("I'd like to see your other products."), 2, - rif(.@fexil == 1, l("I'm looking for somebody named Fexil.")), 3, - l("Bye."), 4; + l("Let's trade."), 1, + rif(.@q != 0, l("I'd like to buy a piou.")), 2, + l("I'd like to see your other products."), 3, + rif(.@fexil == 1, l("I'm looking for somebody named Fexil.")), 4, + l("Bye."), 5; mes ""; mesn; @@ -125,6 +126,10 @@ L_SalemMenuShop: goto L_AboutPious; break; case 1: + closedialog; + shop "Store#General001-1"; + close; + case 2: if (.@q == 2 && ArtisQuests_PiouDiscount) { mesq l("You still have a 90% discount on one piou."); @@ -134,14 +139,14 @@ L_SalemMenuShop: if (!BuyPiou(@ArtisQuests_PiouPrice)) ArtisQuests_PiouDiscount = 0; break; - case 2: + case 3: goto L_BuyShop; break; - case 3: + case 4: mesq l("I think that I've seen this weakling wandering around the beach on the south from here this morning."); next; break; - case 4: + case 5: break; } closedialog; diff --git a/npc/001-1/shop.txt b/npc/001-1/shop.txt index ad0a8508..96afbdbd 100644 --- a/npc/001-1/shop.txt +++ b/npc/001-1/shop.txt @@ -107,3 +107,169 @@ OnClock0800: OnClock1600: restoreshopitem Aquada, 20; } + +001-1,72,126,0 trader Store#SeaStore001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem Aquada, -1, 10; + sellitem UrchinMeat, -1, 20; + sellitem SmallTentacles, -1, 30; + sellitem Tentacles, -1, 15; + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem Aquada, 3; + restoreshopitem UrchinMeat, 12; + restoreshopitem SmallTentacles, 4; +OnClock0800: + restoreshopitem Aquada, 6; + restoreshopitem UrchinMeat, 8; + restoreshopitem Tentacles, 8; + restoreshopitem SmallTentacles, 2; +OnClock1600: + restoreshopitem Aquada, 5; + restoreshopitem UrchinMeat, 10; + restoreshopitem SmallTentacles, 7; +} + +001-1,71,129,0 trader Store#FishStore001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem CommonCarp, -1, 8; + sellitem GrassCarp, -1, 7; + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem CommonCarp, 3; + restoreshopitem GrassCarp, 2; +OnClock0800: + restoreshopitem CommonCarp, 2; + restoreshopitem GrassCarp, 3; +OnClock1600: + restoreshopitem CommonCarp, 3; + restoreshopitem GrassCarp, 4; +} + +001-1,48,116,0 trader Store#Manana001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem Manana, -1, 60; + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem Manana, 20; +OnClock0800: + restoreshopitem Manana, 15; +OnClock1600: + restoreshopitem Manana, 20; +} + +001-1,53,123,0 trader Store#Various001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem Manana, -1, 30; +// Add soft drinks. + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem Manana, 10; +OnClock0800: + restoreshopitem Manana, 15; +OnClock1600: + restoreshopitem Manana, 6; +} + +001-1,67,116,0 trader Store#Potion001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem PibberiesInfusion, -1, 200; + sellitem FatesPotion, -1, 100; + sellitem ClothoLiquor, -1, 50; + sellitem LachesisBrew, -1, 30; + sellitem AtroposMixture, -1, 10; + sellitem ElixirOfLife, -1, 2; + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem PibberiesInfusion, 150; + restoreshopitem FatesPotion, 80; + restoreshopitem ClothoLiquor, 40; + restoreshopitem LachesisBrew, 20; + restoreshopitem AtroposMixture, 7; + restoreshopitem ElixirOfLife, 1; +OnClock1200: + restoreshopitem PibberiesInfusion, 80; + restoreshopitem FatesPotion, 40; + restoreshopitem ClothoLiquor, 20; + restoreshopitem LachesisBrew, 10; + restoreshopitem AtroposMixture, 4; +} + +001-1,58,119,0 trader Store#General001-1 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem Manana, -1, 100; + sellitem Carrot, -1, 80; + sellitem Aquada, -1, 50; + sellitem Plushroom, -1, 100; + sellitem Curshroom, -1, 80; + sellitem Piberries, -1, 150; + sellitem PiouEgg, -1, 25; +// Add soft drinks. + + .sex = G_OTHER; + .distance = 4; + end; + +OnClock0000: + restoreshopitem Manana, 50; + restoreshopitem Carrot, 40; + restoreshopitem Aquada, 30; + restoreshopitem Plushroom, 40; + restoreshopitem Curshroom, 30; + restoreshopitem Piberries, 40; + restoreshopitem PiouEgg, 10; +OnClock0800: + restoreshopitem Manana, 30; + restoreshopitem Carrot, 30; + restoreshopitem Aquada, 30; + restoreshopitem Plushroom, 40; + restoreshopitem Curshroom, 30; + restoreshopitem Piberries, 70; + restoreshopitem PiouEgg, 10; +OnClock1600: + restoreshopitem Manana, 40; + restoreshopitem Carrot, 40; + restoreshopitem Aquada, 20; + restoreshopitem Plushroom, 20; + restoreshopitem Curshroom, 20; + restoreshopitem Piberries, 30; + restoreshopitem PiouEgg, 5; +} diff --git a/npc/001-2-27/_import.txt b/npc/001-2-27/_import.txt index 7a16c39e..ca4ba52d 100644 --- a/npc/001-2-27/_import.txt +++ b/npc/001-2-27/_import.txt @@ -2,3 +2,6 @@ npc: npc/001-2-27/mapflags.txt npc: npc/001-2-27/_warps.txt npc: npc/001-2-27/don.txt +npc: npc/001-2-27/kaylo.txt +npc: npc/001-2-27/lydon.txt +npc: npc/001-2-27/shop.txt diff --git a/npc/001-2-27/don.txt b/npc/001-2-27/don.txt index 651c8b93..17c50eee 100644 --- a/npc/001-2-27/don.txt +++ b/npc/001-2-27/don.txt @@ -5,12 +5,89 @@ // Don the blacksmith of Artis 001-2-27,35,29,0 script Don#001-2-27 NPC_HUMAN_MALE_OLD,{ - mesn; - mesq l("Hm..."); - goto L_Close; + function improve_equipment { + speech 5, + l("Different ways, each part of your equipment can be generally upgraded."), + l("You have a level for each of your gear, by default when you buy or craft a piece, the level is set to 1."), + l("You can also improve your equipment in a totally different way with the use of cards."); + return; + } -L_Close: + function card_explanation { + speech 5, + l("There are two different kinds of card, the first changes the style of your clothes, the second changes their stats."), + l("I am not an expert of the first kind, but I know what I am talking about for the second."), + l("A stat card works on different pieces of equipment."), + l("Each equipment has a predefined slot number."), + l("Each cards improve your gear by a ratio or a fixed number on a predefined stat."), + l("Like, a defensive mythril card can be used on any mythril equipment, and it will improve of 5% the defense of the latter."), + l("You just have to select it, you choose on which piece of equipment you want to use it, and you are done."); + return; + } + + function take_apprentice { + speech 5, + l("I do not."); + emotion 11; + + select (l("What about Chelios?")); + + speech 5, + l("Chelios was stubborn in his youth, he could not stop to annoy me with his questions while I was working at the forge."), + l("He did not change while growing up, I repeatedly asked him to leave the forge but in the end he installed himself in front of it..."), + l("He is mature and he rarely ask questions so I am fine. I can not stand the sight of a whinger anyway."); + return; + } + + function good_blacksmith { + speech 5, + l("I do not like to brag about it but you will not find any better blacksmith on the whole island."), + l("If you need somebody to craft a weapon or a plate from a diagrams I am the one that you need."); + + switch (select (l("Can I craft them myself?"), + l("Ok."))) + { + case 1: + speech 5, + l("You can try, but your chance of success is lesser than a well trained smith and master craftsman."); + break; + case 2: + break; + } + + return; + } + + speech 4, + l("Hi, what do you want kiddo?"); + + do + { + switch (.@q = select (l("How can I improve my equipment?"), + l("What is a card?"), + l("Are you a good blacksmith?"), + l("Do you take apprentices?"), + l("Nothing."))) + { + case 1: + improve_equipment; + break; + case 2: + card_explanation; + break; + case 3: + good_blacksmith; + break; + case 4: + take_apprentice; + break; + case 5: + break; + } + } while (.@q != 5); + + goodbye; close; OnInit: diff --git a/npc/001-2-27/kaylo.txt b/npc/001-2-27/kaylo.txt new file mode 100644 index 00000000..641fd93b --- /dev/null +++ b/npc/001-2-27/kaylo.txt @@ -0,0 +1,44 @@ +// Evol scripts. +// Author: +// Reid +// Description: +// Kaylo is the Shield seller in Don's Blacksmith house on Artis. + +001-2-27,27,28,0 script Kaylo#001-2-27 NPC_KAYLO,{ + speech 4, + l("Hi customer! What do you want today?"); + + switch (select ( + l("Let's make a trade."), + l("What's wrong with your clothes?"), + l("What is this place?"), + l("See you."))) + { + case 1: + closedialog; + shop "Store#Shield001-2-27"; + close; + case 2: + speech 5, + l("I used a card to improve my clothes."), + l("There're two different kinds of card, the first changes the style of your clothes, the second changes their stats."), + l("You should discuss with Don and Calypsan if you want to learn more about it, they are master on this area!"); + break; + case 3: + speech 5, + l("You are on the Blacksmith's house, by Jove!"), + l("Don is a renowned blacksmith throughout Andorra it's crazy that you don't know about him."); + break; + case 4: + break; + } + + goodbye; + close; + +OnInit: + .sex = G_MALE; + .distance = 4; + end; +} + diff --git a/npc/001-2-27/lydon.txt b/npc/001-2-27/lydon.txt new file mode 100644 index 00000000..6221616c --- /dev/null +++ b/npc/001-2-27/lydon.txt @@ -0,0 +1,37 @@ +// Evol scripts. +// Author: +// Reid +// Description: +// Lydon is the Weapon seller in Don's Blacksmith house on Artis. + +001-2-27,43,28,0 script Lydon#001-2-27 NPC_LYDON,{ + speech 4, + l("Hi customer! What do you want today?"); + + switch (select ( + l("Let's make a trade."), + l("Who is the blacksmith outside?"), + l("Bye."))) + { + case 1: + closedialog; + shop "Store#Weapon001-2-27"; + close; + case 2: + speech 5, + l("Chef? He is Don's apprentice, he works on his hammering skill day and night."), + l("He is very lucky that Don took him under his wing, but being the student of such a teacher is not easy every day!"); + break; + case 3: + break; + } + + goodbye; + close; + +OnInit: + .sex = G_MALE; + .distance = 4; + end; +} + diff --git a/npc/001-2-27/shop.txt b/npc/001-2-27/shop.txt new file mode 100644 index 00000000..803a6ebb --- /dev/null +++ b/npc/001-2-27/shop.txt @@ -0,0 +1,48 @@ +// Evol scripts. +// Author: +// Reid +// 4144 +// Description: +// Blacksmith shops + +001-2-27,27,29,0 trader Store#Shield001-2-27 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem LeatherShield, -1, 30; + + .sex = G_OTHER; + .distance = 2; + end; + +OnClock0000: + sellitem LeatherShield, -1, 10; +OnClock0800: + sellitem LeatherShield, -1, 10; +OnClock01600: + sellitem LeatherShield, -1, 10; +} + +001-2-27,43,29,0 trader Store#Weapon001-2-27 NPC_NO_SPRITE,{ + +OnInit: + tradertype(NST_MARKET); + + sellitem WoodenSword, -1, 50; + sellitem TrainingGladius, -1, 25; + + .sex = G_OTHER; + .distance = 2; + end; + +OnClock0000: + sellitem TrainingGladius, -1, 8; + sellitem WoodenSword, -1, 25; +OnClock0800: + sellitem TrainingGladius, -1, 8; + sellitem WoodenSword, -1, 25; +OnClock01600: + sellitem TrainingGladius, -1, 8; + sellitem WoodenSword, -1, 25; +} diff --git a/npc/functions/asleep.txt b/npc/functions/asleep.txt index 35a6f5c4..e67dc21d 100644 --- a/npc/functions/asleep.txt +++ b/npc/functions/asleep.txt @@ -8,12 +8,14 @@ // .@rand = Random number between the number of "sleeping" choice. function script asleep { + closedialog; - .@rand = rand(3); + .@rand = rand(5); if (.@rand == 0) npctalk3 l("Zzzzzzzzz..."); - if (.@rand == 1) npctalk3 l("Rrrr... Pchhhh..."); - if (.@rand == 2) npctalk3 l("Ggrmm... Grmmmm..."); - if (.@rand == 3) npctalk3 l("Hm..."); + else if (.@rand == 1) npctalk3 l("Rrrr... Pchhhh..."); + else if (.@rand == 2) npctalk3 l("Ggrmm... Grmmmm..."); + else if (.@rand == 3) npctalk3 l("Hm..."); + else emotion 106; // Sleepy close; } diff --git a/npc/functions/villagertalk.txt b/npc/functions/villagertalk.txt index 1df55c97..95f70c87 100644 --- a/npc/functions/villagertalk.txt +++ b/npc/functions/villagertalk.txt @@ -16,51 +16,44 @@ function script villagertalk { .@darn = rand(42); if (.@rand == 0) { - if (rand(2) == 1) + if (.@darn < 26) { - wait 1; - emote 6; // "Angel". + emotion 103; // ^.^ goodbye; } - else + else if (.@darn > 26) { - wait 1; - emote 13; // "Blah". + emotion 111; // Look away goodbye; } - if (.@darn == 23) npctalk3 l("Stop it!"); + else + { + npctalk3 l("Stop it!"); + } } - - if (.@rand == 1) + else if (.@rand == 1) { speech 4, l("Do you feel too weak even to do damage to this areas wishy-washy wildlife?"), l("Then concentrate your anger upon the trees hereabouts, you will gain experience whilst leveling your sword skill on them."), l("Oh, and a fruit may even fall for you if you are lucky! But stay alert to pick up your drops."); } - - if (.@rand == 2) + else if (.@rand == 2) + { npctalk3 l("It is a sunny day, don't you think?"); - - if (.@rand == 3) - npctalk3 l("Go fly a kite."); - - if (.@rand == 4) + } + else if (.@rand == 3) { - npctalk3 l("It's difficult to distinguish good villagers from bad ones; keep your guard up, and stay away from me."); - wait 1; - emote 6; + npctalk3 l("Go fly a kite."); } - - if ((.@rand == 4) && (.@darn == 2)) + else if ((.@rand == 4) && (.@darn == 2)) { npctalk3 l("I just want to live my life in peace."); } - else if (((.@rand + .@darn) - 2) == 9) + else if (.@rand == 4) { - zeny rand(10); - emote rand(13); - goodbye; + npctalk3 l("It's difficult to distinguish good villagers from bad ones; keep your guard up, and stay away from me."); + emotion 6; } return; |