From 080ddbe822b03416934a875b2d949e3afc84fb96 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Sun, 14 Apr 2013 15:10:06 +0200 Subject: Removed NPC and character parameters from NPC functions These functions can only be used in the context of a character talking to an NPC, so these parameters can be deduced from that context rather than passing them explicitly all the time. Simplifies NPC scripting. --- example/scripts/maps/desert.lua | 18 ++++++++--------- example/scripts/npcs/banker.lua | 38 +++++++++++++++++------------------ example/scripts/npcs/barber.lua | 14 ++++++------- example/scripts/npcs/debugger.lua | 40 ++++++++++++++++++------------------- example/scripts/npcs/emotemaker.lua | 9 ++++----- example/scripts/npcs/healer.lua | 4 ++-- example/scripts/npcs/merchant.lua | 12 +++++------ example/scripts/npcs/postman.lua | 12 +++++------ 8 files changed, 72 insertions(+), 75 deletions(-) (limited to 'example/scripts') diff --git a/example/scripts/maps/desert.lua b/example/scripts/maps/desert.lua index 6b761dc..1fee2fc 100644 --- a/example/scripts/maps/desert.lua +++ b/example/scripts/maps/desert.lua @@ -39,7 +39,7 @@ end) function Smith(npc, ch, list) local sword_count = chr_inv_count(ch, true, true, "Sword") if sword_count > 0 then - npc_message(npc, ch, "Ah! I can see you already have a sword.") + npc_message("Ah! I can see you already have a sword.") end Merchant(npc, ch, list) end @@ -54,7 +54,7 @@ function possessions_table(npc, ch) ..inventory_table[i].id..", "..inventory_table[i].name..", " ..inventory_table[i].amount end - npc_message(npc, ch, item_message) + npc_message(item_message) item_message = "Equipment:".. "\nSlot id, item id, item name:".. @@ -64,7 +64,7 @@ function possessions_table(npc, ch) item_message = item_message.."\n"..equipment_table[i].slot..", " ..equipment_table[i].id..", "..equipment_table[i].name end - npc_message(npc, ch, item_message) + npc_message(item_message) end @@ -74,21 +74,21 @@ function Harmony(npc, ch, list) being_apply_status(ch, 1, 99999) -- Say all the messages in the messages list. for i = 1, #list do - npc_message(npc, ch, list[i]) + npc_message(list[i]) end --- Give the player 100 units of money the first time. if harmony_have_talked_to_someone == false then - npc_message(npc, ch, "Here is some money for you to find some toys to play with.\nEh Eh!") + npc_message("Here is some money for you to find some toys to play with.\nEh Eh!") chr_money_change(ch, 100) - npc_message(npc, ch, string.format("You now have %d shiny coins!", chr_money(ch))) + npc_message(string.format("You now have %d shiny coins!", chr_money(ch))) harmony_have_talked_to_someone = true - npc_message(npc, ch, string.format("Try to come back with a better level than %i.", chr_get_level(ch))) + npc_message(string.format("Try to come back with a better level than %i.", chr_get_level(ch))) else - npc_message(npc, ch, "Let me see what you've got so far... Don't be afraid!") + npc_message("Let me see what you've got so far... Don't be afraid!") effect_create(EMOTE_WINK, npc) possessions_table(npc, ch) end - npc_message(npc, ch, "Have fun!") + npc_message("Have fun!") effect_create(EMOTE_HAPPY, npc) -- Make Harmony disappear for a while... with a small earthquake effect! local shakeX = posX(npc) diff --git a/example/scripts/npcs/banker.lua b/example/scripts/npcs/banker.lua index e6e1e28..88ba9ac 100644 --- a/example/scripts/npcs/banker.lua +++ b/example/scripts/npcs/banker.lua @@ -12,21 +12,21 @@ function Banker(npc, ch) if being_get_gender(ch) == GENDER_MALE then - npc_message(npc, ch, "Welcome to the bank, sir!") + npc_message("Welcome to the bank, sir!") elseif being_get_gender(ch) == GENDER_FEMALE then - npc_message(npc, ch, "Welcome to the bank, madam!") + npc_message("Welcome to the bank, madam!") else - npc_message(npc, ch, "Welcome to the bank... uhm... person of unspecified gender!") + npc_message("Welcome to the bank... uhm... person of unspecified gender!") end local account = tonumber(chr_get_quest(ch, "BankAccount")) local result = -1 if (account == nil) then --Initial account creation, if needed - npc_message(npc, ch, "Hello! Would you like to setup a bank account? There is a sign-on bonus right now!") - result = npc_choice(npc, ch, "Yes", "No") + npc_message("Hello! Would you like to setup a bank account? There is a sign-on bonus right now!") + result = npc_choice("Yes", "No") if (result == 1) then chr_set_quest(ch, "BankAccount", 5) - npc_message(npc, ch, "Your account has been made. Your sign-on bonus is 5GP.") + npc_message("Your account has been made. Your sign-on bonus is 5GP.") account = 5 end end @@ -37,41 +37,41 @@ function Banker(npc, ch) result = 1 while (result < 3) do --While they've choosen a valid option that isn't "Never mind" account = tonumber(chr_get_quest(ch, "BankAccount")) --Why do I need to convert this? - npc_message(npc, ch, "Your balance: " .. account .. ".\nYour money: " .. chr_money(ch) .. ".") - result = npc_choice(npc, ch, "Deposit", "Withdraw", "Never mind") + npc_message("Your balance: " .. account .. ".\nYour money: " .. chr_money(ch) .. ".") + result = npc_choice("Deposit", "Withdraw", "Never mind") if (result == 1) then --Deposit money = chr_money(ch); if (money > 0) then --Make sure they have money to deposit - npc_message(npc, ch, "How much would you like to deposit? (0 will cancel)") - input = npc_ask_integer(npc, ch, 0, money, 1) + npc_message("How much would you like to deposit? (0 will cancel)") + input = npc_ask_integer(0, money, 1) money = chr_money(ch) if (input > 0 and input <= money) then --Make sure something weird doesn't happen and they try to deposit more than they have chr_money_change(ch, -input) chr_set_quest(ch, "BankAccount", account + input) - npc_message(npc, ch, input .. " GP deposited.") + npc_message(input .. " GP deposited.") elseif (input > money) then --Chosen more than they have - npc_message(npc, ch, "You don't have that much money. But you just did....") + npc_message("You don't have that much money. But you just did....") end else - npc_message(npc, ch, "You don't have any money to deposit!") + npc_message("You don't have any money to deposit!") end elseif (result == 2) then --Withdraw if (account > 0) then --Make sure they have money to withdraw - npc_message(npc, ch, "How much would you like to withdraw? (0 will cancel)") - input = npc_ask_integer(npc, ch, 0, account, 1) + npc_message("How much would you like to withdraw? (0 will cancel)") + input = npc_ask_integer(0, account, 1) if (input > 0 and input <= account) then --Make sure something weird doesn't happen and they try to withdraw more than they have chr_money_change(ch, input) chr_set_quest(ch, "BankAccount", account - input) - npc_message(npc, ch, input .. " GP withdrawn.") + npc_message(input .. " GP withdrawn.") elseif (input > account) then --Chosen more than they have - npc_message(npc, ch, "You don't have that much in your account. But you just did....") + npc_message("You don't have that much in your account. But you just did....") end else - npc_message(npc, ch, "Your account is empty!") + npc_message("Your account is empty!") end end end --This ends the while loop end - npc_message(npc, ch, "Thank you. Come again!") + npc_message("Thank you. Come again!") end diff --git a/example/scripts/npcs/barber.lua b/example/scripts/npcs/barber.lua index 70efb43..58aa1a9 100644 --- a/example/scripts/npcs/barber.lua +++ b/example/scripts/npcs/barber.lua @@ -79,11 +79,11 @@ function Barber(npc, ch, data) -- Choose an appropriate message if result == 1 then - npc_message(npc, ch, "Hello! What style would you like today?") + npc_message("Hello! What style would you like today?") elseif result == 2 then - npc_message(npc, ch, "Hello! What color would you like today?") + npc_message("Hello! What color would you like today?") else - npc_message(npc, ch, "Hello! What can I do for you today?") + npc_message("Hello! What can I do for you today?") end print("#styles ==", #styles) @@ -91,7 +91,7 @@ function Barber(npc, ch, data) -- Repeat until the user selects nothing repeat if (result == 1) then -- Do styles - result = npc_choice(npc, ch, "Bald", styles, "Surprise me", "Never mind") + result = npc_choice("Bald", styles, "Surprise me", "Never mind") result = result -1 @@ -113,7 +113,7 @@ function Barber(npc, ch, data) result = 3 end elseif (result == 2) then -- Do colors - result = npc_choice(npc, ch, colors, "Surprise me", "Never mind") + result = npc_choice(colors, "Surprise me", "Never mind") --Random if (result == #colors + 1) then @@ -130,10 +130,10 @@ function Barber(npc, ch, data) -- If we have both styles and colors, show the main menu if #styles > 0 and #colors > 0 then - result = npc_choice(npc, ch, "Change my style", "Change my color", "Never mind") + result = npc_choice("Change my style", "Change my color", "Never mind") end until result >= 3 --While they've choosen a valid option that isn't "Never mind" -- Let's close up - npc_message(npc, ch, "Thank you. Come again!") + npc_message("Thank you. Come again!") end diff --git a/example/scripts/npcs/debugger.lua b/example/scripts/npcs/debugger.lua index 621ba0f..e21982a 100644 --- a/example/scripts/npcs/debugger.lua +++ b/example/scripts/npcs/debugger.lua @@ -12,38 +12,38 @@ function npc1_talk(npc, ch) on_remove(ch, function() print "Player has left the map." end); - npc_message(npc, ch, "Hello! I am the testing NPC.") + npc_message("Hello! I am the testing NPC.") local rights = chr_get_rights(ch); if (rights >= 128) then - npc_message(npc, ch, "Oh mighty server administrator, how can I avoid your wrath?") + npc_message("Oh mighty server administrator, how can I avoid your wrath?") elseif (rights >= 8) then - npc_message(npc, ch, "How can I be of assistance, sir gamemaster?") + npc_message("How can I be of assistance, sir gamemaster?") elseif (rights >= 4) then - npc_message(npc, ch, "What feature would you like to debug, developer?") + npc_message("What feature would you like to debug, developer?") elseif (rights >= 2) then - npc_message(npc, ch, "How can I assist you in your testing duties?") + npc_message("How can I assist you in your testing duties?") elseif (rights >= 1) then - npc_message(npc, ch, "What do you want, lowly player?") + npc_message("What do you want, lowly player?") else - npc_message(npc, ch, "...aren't you supposed to be banned??") + npc_message("...aren't you supposed to be banned??") end - local v = npc_choice(npc, ch, "Guns! Lots of guns!", - "A Christmas party!", - "To make a donation.", - "Slowly count from one to ten.", - "Tablepush Test") + local v = npc_choice("Guns! Lots of guns!", + "A Christmas party!", + "To make a donation.", + "Slowly count from one to ten.", + "Tablepush Test") if v == 1 then - npc_message(npc, ch, "Sorry, this is a heroic-fantasy game, I do not have any gun.") + npc_message("Sorry, this is a heroic-fantasy game, I do not have any gun.") elseif v == 2 then local n1, n2 = chr_inv_count(ch, 524, 511) if n1 == 0 or n2 ~= 0 then - npc_message(npc, ch, "Yeah right...") + npc_message("Yeah right...") else - npc_message(npc, ch, "I can't help you with the party. But I see you have a fancy hat. I could change it into Santa's hat. Not much of a party, but it would get you going.") - v = npc_choice(npc, ch, "Please do.", "No way! Fancy hats are classier.") + npc_message("I can't help you with the party. But I see you have a fancy hat. I could change it into Santa's hat. Not much of a party, but it would get you going.") + v = npc_choice("Please do.", "No way! Fancy hats are classier.") if v == 1 then chr_inv_change(ch, 524, -1, 511, 1) end @@ -51,14 +51,14 @@ function npc1_talk(npc, ch) elseif v == 3 then if chr_money_change(ch, -100) then - npc_message(npc, ch, string.format("Thank you for you patronage! You are left with %d GP.", chr_money(ch))) + npc_message(string.format("Thank you for you patronage! You are left with %d GP.", chr_money(ch))) local g = tonumber(chr_get_quest(ch, "001_donation")) if not g then g = 0 end g = g + 100 chr_set_quest(ch, "001_donation", g) - npc_message(npc, ch, string.format("As of today, you have donated %d GP.", g)) + npc_message(string.format("As of today, you have donated %d GP.", g)) else - npc_message(npc, ch, "I would feel bad taking money from someone that poor.") + npc_message("I would feel bad taking money from someone that poor.") end elseif v == 4 then @@ -95,6 +95,6 @@ function npc1_talk(npc, ch) print("---------------"); end - npc_message(npc, ch, "See you later!") + npc_message("See you later!") end diff --git a/example/scripts/npcs/emotemaker.lua b/example/scripts/npcs/emotemaker.lua index 0f54663..ee8928b 100644 --- a/example/scripts/npcs/emotemaker.lua +++ b/example/scripts/npcs/emotemaker.lua @@ -21,11 +21,10 @@ function emote_talk(npc, ch) elseif emo_state == EMOTE_HAPPY then state = "happy" end - npc_message(npc, ch, string.format("The emotional palm seems %s.", state)) - v = npc_choice(npc, ch, - "Stupid palm, you are ugly and everyone hates you!", - "You are such a nice palm, let me give you a hug.", - "Are you a cocos nucifera or a syagrus romanzoffiana?") + npc_message(string.format("The emotional palm seems %s.", state)) + v = npc_choice("Stupid palm, you are ugly and everyone hates you!", + "You are such a nice palm, let me give you a hug.", + "Are you a cocos nucifera or a syagrus romanzoffiana?") if (v == 1) then emo_state = EMOTE_SAD diff --git a/example/scripts/npcs/healer.lua b/example/scripts/npcs/healer.lua index 3569673..910e221 100644 --- a/example/scripts/npcs/healer.lua +++ b/example/scripts/npcs/healer.lua @@ -5,8 +5,8 @@ --]] function Healer(npc, ch) - npc_message(npc, ch, "Do you need healing?") - local c = npc_choice(npc, ch, "Heal me fully", "Heal 100 HP", "Don't heal me") + npc_message("Do you need healing?") + local c = npc_choice("Heal me fully", "Heal 100 HP", "Don't heal me") if c == 1 then being_heal(ch) elseif c == 2 then diff --git a/example/scripts/npcs/merchant.lua b/example/scripts/npcs/merchant.lua index 2ef0a6b..bcec5fa 100644 --- a/example/scripts/npcs/merchant.lua +++ b/example/scripts/npcs/merchant.lua @@ -12,9 +12,7 @@ function Merchant(npc, ch, buy_sell_table) - local function say(message) - npc_message(npc, ch, message) - end + local say = npc_message -- Important note: You can add two tables made of trinoms here when calling the -- merchant function. E.g.: Merchant(npc, ch, buy_table, sell_table) @@ -56,7 +54,7 @@ function Merchant(npc, ch, buy_sell_table) table.insert (choice_table, "Tell me about the objects on this map") table.insert (choice_table, "Nevermind...") - local v = npc_choice(npc, ch, choice_table) + local v = npc_choice(choice_table) --Debug and learning purpose --for i,k in ipairs(choice_table) do print(i,k) end @@ -67,7 +65,7 @@ function Merchant(npc, ch, buy_sell_table) if v == 1 then -- "To buy." - local buycase = npc_trade(npc, ch, false, buy_sell_table[1]) + local buycase = npc_trade(false, buy_sell_table[1]) if buycase == 0 then say "What do you want to buy?" elseif buycase == 1 then @@ -80,7 +78,7 @@ function Merchant(npc, ch, buy_sell_table) if buy_sell_table[2] == nil then -- "To sell stuff..." - local sellcase = npc_trade(npc, ch, true) + local sellcase = npc_trade(true) if sellcase == 0 then say "Ok, what do you want to sell?" elseif sellcase == 1 then @@ -90,7 +88,7 @@ function Merchant(npc, ch, buy_sell_table) end else -- "Can you make me a price for what I have?" - local sellcase = npc_trade(npc, ch, true, buy_sell_table[2]) + local sellcase = npc_trade(true, buy_sell_table[2]) if sellcase == 0 then say "Here we go:" elseif sellcase == 1 then diff --git a/example/scripts/npcs/postman.lua b/example/scripts/npcs/postman.lua index 95e6844..c0901f8 100644 --- a/example/scripts/npcs/postman.lua +++ b/example/scripts/npcs/postman.lua @@ -11,17 +11,17 @@ ---------------------------------------------------------------------------------- function post_talk(npc, ch) - npc_message(npc, ch, "Hello " .. being_get_name(ch)) + npc_message("Hello " .. being_get_name(ch)) local strength = being_get_attribute(ch, ATTR_STRENGTH) - npc_message(npc, ch, "You have " .. tostring(strength) .. " strength") - npc_message(npc, ch, "What would you like to do?") - local answer = npc_choice(npc, ch, "View Mail", "Send Mail", "Nothing") + npc_message("You have " .. tostring(strength) .. " strength") + npc_message("What would you like to do?") + local answer = npc_choice("View Mail", "Send Mail", "Nothing") if answer == 1 then local sender, post = chr_get_post(ch) if sender == "" then - npc_message(npc, ch, "No Post right now, sorry") + npc_message("No Post right now, sorry") else - npc_message(npc, ch, tostring(sender) .. " sent you " .. tostring(post)) + npc_message(tostring(sender) .. " sent you " .. tostring(post)) end end if answer == 2 then -- cgit