From 6665424d9782a0cea43b65d549faaa166b3da874 Mon Sep 17 00:00:00 2001 From: Allanis <allanis@saracraft.net> Date: Sun, 28 Apr 2013 09:23:16 +0100 Subject: [PATCH] [Add] Couple more commodities. --- dat/commodity.xml | 18 ++++++++++++++++++ dat/missions/cargo.lua | 15 ++++++++++++--- dat/missions/es_cargo.lua | 14 +++++++++++--- dat/planet.xml | 8 +++++++- scripts/ai/merchant.lua | 22 ++++++++++++++-------- src/ai.c | 22 ++++++++++++++++------ src/mission.h | 2 +- 7 files changed, 79 insertions(+), 22 deletions(-) diff --git a/dat/commodity.xml b/dat/commodity.xml index 04636d2..e675783 100644 --- a/dat/commodity.xml +++ b/dat/commodity.xml @@ -11,6 +11,24 @@ <high>240</high> <medium>210</medium> <low>180</low> +</commodity> + <commodity name="Industrial Goods"> + <description>Your basic industrial goods. From cutting lasers to prcessed metals.</description> + <high>420</high> + <medium>340</medium> + <low>280</low> +</commodity> + <commodity name="Medicine"> + <description>An assortment of medicines sutable for curing all sorts of ailments.</description> + <high>900</high> + <medium>750</medium> + <low>550</low> +</commodity> + <commodity name="Luxury Goods"> + <description>All kinds of high quality luxary goods.</description> + <high>760</high> + <medium>630</medium> + <low>470</low> </commodity> <commodity name = "Parcels"> </commodity> diff --git a/dat/missions/cargo.lua b/dat/missions/cargo.lua index c83ad74..680ba67 100644 --- a/dat/missions/cargo.lua +++ b/dat/missions/cargo.lua @@ -43,10 +43,19 @@ function create() -- More mission specifics. carg_mass = rnd.int(10, 30) - i = rnd.int(1) - if i == 0 then carg_type = "Food" - elseif i == 1 then carg_type = "Ore" + i = rnd.int(12) + if i < 5 then + carg_type = "Food" + elseif i < 8 then + carg_type = "Ore" + elseif i < 10 then + carg_type = "Industrial Goods" + elseif i < 12 then + carg_type = "Luxary Goods" + else + carg_type = "Medicine" end + misn.setDesc(string.format(misn_desc, planet, system, carg_mass, carg_type)) reward = misn_dist * carg_mass * (250+rnd.int(150)) + carg_mass * (150+rnd.int(75)) + diff --git a/dat/missions/es_cargo.lua b/dat/missions/es_cargo.lua index 5a7d431..0775c05 100644 --- a/dat/missions/es_cargo.lua +++ b/dat/missions/es_cargo.lua @@ -42,9 +42,17 @@ function create() -- More mission specifics. carg_mass = rnd.int(10, 30) - i = rnd.int(1) - if i == 0 then carg_type = "Food" - elseif i == 1 then carg_type = "Ore" + i = rnd.int(12) + if i < 5 then + carg_type = "Food" + elseif i < 8 then + carg_type = "Ore" + elseif i < 10 then + carg_type = "Industrial Goods" + elseif i < 12 then + carg_type = "Luxary Goods" + else + carg_type = "Medicine" end misn.setDesc(string.format(misn_desc, carg_mass, carg_type, planet, system)) diff --git a/dat/planet.xml b/dat/planet.xml index 294ca76..0505c15 100644 --- a/dat/planet.xml +++ b/dat/planet.xml @@ -17,6 +17,8 @@ <commodities> <commodity>Food</commodity> <commodity>Ore</commodity> + <commodity>Industrial Goods</commodity> + <commodity>Medicine</commodity> </commodities> </general> <GFX> @@ -63,7 +65,8 @@ <main>5</main> </tech> <commodities> - <commodity>Food</commodity> + <commodity>Food</commodity> + <commodity>Medicine</commodity> </commodities> </general> <GFX> @@ -103,6 +106,9 @@ <commodities> <commodity>Food</commodity> <commodity>Ore</commodity> + <commodity>Industrial Goods</commodity> + <commodity>Medicine</commodity> + <commodity>Luxury Goods</commodity> </commodities> </general> <GFX> diff --git a/scripts/ai/merchant.lua b/scripts/ai/merchant.lua index effa9b4..b60e2bd 100644 --- a/scripts/ai/merchant.lua +++ b/scripts/ai/merchant.lua @@ -41,15 +41,21 @@ function attacked(attacker) end function create() - ai.setcredits(ai.rnd(200, ai.shipprice()/100)) + ai.setcredits(ai.rnd(200, ai.shipprice()/100)) - num = ai.rnd(0,1) - if num == 0 then - cargo = "Food" - elseif num == 1 then - cargo = "Ore" - end - ai.setcargo(cargo, ai.rnd(0, ai.cargofree())) + num = ai.rnd(12) + if num < 5 then + cargo = "Food" + elseif num < 8 then + cargo = "Ore" + elseif num < 10 then + cargo = "Industrial Goods" + elseif num < 12 then + cargo = "Luxary Goods" + else + cargo = "Medicine" + end + ai.setcargo(cargo, ai.rnd(0, ai.cargofree())) end -- Runs away. diff --git a/src/ai.c b/src/ai.c index 7469b17..26c0927 100644 --- a/src/ai.c +++ b/src/ai.c @@ -952,14 +952,24 @@ static int ai_shipprice(lua_State* L) { // Return a number between low and high. static int ai_rng(lua_State* L) { - MIN_ARGS(2); + int o; - int l, h; + o = lua_gettop(L); - if(lua_isnumber(L,1)) l = (int)lua_tonumber(L, 1); - if(lua_isnumber(L,1)) h = (int)lua_tonumber(L, 2); + if(o == 0) lua_pushnumber(L, RNGF()); // Random double 0 <= x <= 1. + else if(o == 1) { // Random int o <= x <= param. + if(lua_isnumber(L, -1)) + lua_pushnumber(L, RNG(0, (int)lua_tonumber(L, -1))); + else return 0; + } + else if(o >= 2) { // Random int param 1 <= x <= param 2. + if(lua_isnumber(L, -1) && lua_isnumber(L, -2)) + lua_pushnumber(L, + RNG((int)lua_tonumber(L, -2), (int)lua_tonumber(L, -1))); + else return 0; + } + else return 0; - lua_pushnumber(L, RNG(l,h)); - return 1; + return 1; // Unless it's returned 0 already it'll always return a param. } diff --git a/src/mission.h b/src/mission.h index bf70523..8892105 100644 --- a/src/mission.h +++ b/src/mission.h @@ -65,7 +65,7 @@ extern Mission player_missions[MISSION_MAX]; Mission* missions_computer(int* n, int faction, char* planet, char* system); // Player accepted mission - mission computer. void mission_accept(Mission* mission); -void mission_bar(int faction, char* planet, char* system); +void missions_bar(int faction, char* planet, char* system); // Misc. int mission_getID(MissionData* misn);