← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/feature-1478-stone-mine-streamline into lp:widelands

 

Teppo Mäenpää has proposed merging lp:~widelands-dev/widelands/feature-1478-stone-mine-streamline into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/feature-1478-stone-mine-streamline/+merge/215594

For background, see discussion in forum thread 1478 (About empty mines).

This merge would lead to miners gaining experience with a small probability, when they are trying to extract something out of an empty mine. The "small probability" is configurable, currently (branch revision 6939) there is a 1-in-6 change of gaining experience.

-- 
https://code.launchpad.net/~widelands-dev/widelands/feature-1478-stone-mine-streamline/+merge/215594
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/feature-1478-stone-mine-streamline into lp:widelands.
=== modified file 'src/logic/production_program.cc'
--- src/logic/production_program.cc	2014-03-16 20:55:15 +0000
+++ src/logic/production_program.cc	2014-04-14 04:13:39 +0000
@@ -1119,6 +1119,16 @@
 			char * endp;
 			unsigned long long int const value = strtoull(parameters, &endp, 0);
 			m_chance = value;
+			if (*endp != ' ' or value < 1 or 100 < value)
+				throw game_data_error
+					("expected %s but found \"%s\"",
+					 "percentage", parameters);
+			parameters = endp;
+		}
+		{
+			char * endp;
+			unsigned long long int const value = strtoull(parameters, &endp, 0);
+			m_training = value;
 			if (*endp or value < 1 or 100 < value)
 				throw game_data_error
 					("expected %s but found \"%s\"",
@@ -1240,6 +1250,10 @@
 			snprintf
 				(ps.m_result_buffer, sizeof(ps.m_result_buffer),
 				 _("Can’t find any more resources!"));
+			// Gain experience
+			if (m_training >= game.logic_rand() % 100) {
+			  ps.train_workers(game);
+			}
 			return ps.program_end(game, Failed);
 		}
 	}

=== modified file 'src/logic/production_program.h'
--- src/logic/production_program.h	2014-02-22 18:04:02 +0000
+++ src/logic/production_program.h	2014-04-14 04:13:39 +0000
@@ -427,9 +427,10 @@
 		virtual void informPlayer(Game &, ProductionSite &) const;
 	private:
 		Resource_Index m_resource;
-		uint8_t        m_distance;
-		uint8_t        m_max;
-		uint8_t        m_chance;
+		uint8_t        m_distance; // width/radius of mine
+		uint8_t        m_max;  // Can work up to this percent (of total mountain resources)
+		uint8_t        m_chance; // odds of finding resources from empty mine
+		uint8_t        m_training; // probability of training in _empty_ mines
 	};
 
 	struct ActCheck_Soldier : public Action {

=== modified file 'src/logic/productionsite.cc'
--- src/logic/productionsite.cc	2014-03-16 21:41:57 +0000
+++ src/logic/productionsite.cc	2014-04-14 04:13:39 +0000
@@ -856,10 +856,8 @@
 		m_statistics.erase(m_statistics.begin(), m_statistics.begin() + 1);
 		m_statistics.push_back(result == Completed);
 		if (result == Completed) {
-			for (uint32_t i = descr().nr_working_positions(); i;)
-				m_working_positions[--i].worker->gain_experience(game);
+			train_workers(game);
 			m_result_buffer[0] = '\0';
-			Building::workers_changed();
 		}
 		calc_statistics();
 		break;
@@ -876,6 +874,14 @@
 	m_program_time = schedule_act(game, m_post_timer);
 }
 
+void ProductionSite::train_workers(Game & game)
+{
+	for (uint32_t i = descr().nr_working_positions(); i;)
+		m_working_positions[--i].worker->gain_experience(game);
+	Building::workers_changed();
+}
+
+
 /// Changes the default anim string to \li anim
 void ProductionSite::set_default_anim(std::string anim)
 {

=== modified file 'src/logic/productionsite.h'
--- src/logic/productionsite.h	2014-04-06 10:50:39 +0000
+++ src/logic/productionsite.h	2014-04-14 04:13:39 +0000
@@ -211,6 +211,7 @@
 
 	void program_start(Game &, const std::string & program_name);
 	virtual void program_end(Game &, Program_Result);
+	virtual void train_workers(Game &);
 
 	void calc_statistics();
 	void try_start_working(Game &);

=== modified file 'tribes/atlanteans/coalmine/conf'
--- tribes/atlanteans/coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/coalmine/conf	2014-04-14 04:13:39 +0000
@@ -30,13 +30,13 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=coal 4 100 5
-produce=coal:2
-animate=working 20000
-mine=coal 4 100 5
-produce=coal:2
-animate=working 20000
-mine=coal 4 100 5
+mine=coal 4 100 5 2
+produce=coal:2
+animate=working 20000
+mine=coal 4 100 5 2
+produce=coal:2
+animate=working 20000
+mine=coal 4 100 5 2
 produce=coal:3
 
 [idle]

=== modified file 'tribes/atlanteans/crystalmine/conf'
--- tribes/atlanteans/crystalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/crystalmine/conf	2014-04-14 04:13:39 +0000
@@ -35,16 +35,16 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=granit 4 100 5
-produce=stone:2
-animate=working 20000
-mine=granit 4 100 5
-produce=stone:2
-animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
+produce=stone:2
+animate=working 20000
+mine=granit 4 100 5 2
+produce=stone:2
+animate=working 20000
+mine=granit 4 100 5 2
 produce=stone
 animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
 produce=quartz
 
 [mine_quartz]
@@ -53,13 +53,13 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
 produce=stone:2
 animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
 produce=stone quartz
 animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
 produce=quartz:2
 
 [mine_diamond]
@@ -68,13 +68,13 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=granit 4 100 5
-produce=diamond
-animate=working 20000
-mine=granit 4 100 5
-produce=diamond
-animate=working 20000
-mine=granit 4 100 5
+mine=granit 4 100 5 2
+produce=diamond
+animate=working 20000
+mine=granit 4 100 5 2
+produce=diamond
+animate=working 20000
+mine=granit 4 100 5 2
 produce=stone
 
 [work]

=== modified file 'tribes/atlanteans/goldmine/conf'
--- tribes/atlanteans/goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/goldmine/conf	2014-04-14 04:13:39 +0000
@@ -31,13 +31,13 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=gold 4 100 5
-produce=goldore
-animate=working 20000
-mine=gold 4 100 5
-produce=goldore
-animate=working 20000
-mine=gold 4 100 5
+mine=gold 4 100 5 2
+produce=goldore
+animate=working 20000
+mine=gold 4 100 5 2
+produce=goldore
+animate=working 20000
+mine=gold 4 100 5 2
 produce=goldore
 
 [idle]

=== modified file 'tribes/atlanteans/ironmine/conf'
--- tribes/atlanteans/ironmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/ironmine/conf	2014-04-14 04:13:39 +0000
@@ -31,13 +31,13 @@
 consume=smoked_fish,smoked_meat:2 bread:2
 sleep=45000
 animate=working 20000
-mine=iron 4 100 5
+mine=iron 4 100 5 2
 produce=ironore
 animate=working 20000
-mine=iron 4 100 5
+mine=iron 4 100 5 2
 produce=ironore:2
 animate=working 20000
-mine=iron 4 100 5
+mine=iron 4 100 5 2
 produce=ironore:2
 
 [idle]

=== modified file 'tribes/atlanteans/well/conf'
--- tribes/atlanteans/well/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/well/conf	2014-04-14 04:13:39 +0000
@@ -19,7 +19,7 @@
 [work]
 sleep=20000
 animate=working 20000
-mine=water 1 100 65
+mine=water 1 100 65 2
 produce=water
 
 [idle]

=== modified file 'tribes/barbarians/coalmine/conf'
--- tribes/barbarians/coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/coalmine/conf	2014-04-14 04:13:39 +0000
@@ -27,7 +27,7 @@
 sleep=45000
 consume=ration
 animate=working 20000
-mine=coal 2 33 5
+mine=coal 2 33 5 17
 produce=coal:2
 
 [idle]

=== modified file 'tribes/barbarians/deep_coalmine/conf'
--- tribes/barbarians/deep_coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deep_coalmine/conf	2014-04-14 04:13:39 +0000
@@ -30,10 +30,10 @@
 sleep=42000
 consume=snack
 animate=working 18000
-mine=coal 2 66 5
+mine=coal 2 66 5 17
 produce=coal:2
 animate=working 18000
-mine=coal 2 66 5
+mine=coal 2 66 5 17
 produce=coal:2
 
 [idle]

=== modified file 'tribes/barbarians/deep_goldmine/conf'
--- tribes/barbarians/deep_goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deep_goldmine/conf	2014-04-14 04:13:39 +0000
@@ -30,10 +30,10 @@
 sleep=42000
 consume=snack
 animate=working 18000
-mine=gold 2 66 5
+mine=gold 2 66 5 17
 produce=goldore:2
 animate=working 18000
-mine=gold 2 66 5
+mine=gold 2 66 5 17
 produce=goldore:2
 
 [idle]

=== modified file 'tribes/barbarians/deep_oremine/conf'
--- tribes/barbarians/deep_oremine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deep_oremine/conf	2014-04-14 04:13:39 +0000
@@ -30,10 +30,10 @@
 sleep=43000
 consume=snack
 animate=working 18000
-mine=iron 2 66 5
+mine=iron 2 66 5 17
 produce=ironore
 animate=working 18000
-mine=iron 2 66 5
+mine=iron 2 66 5 17
 produce=ironore:1
 
 [build]

=== modified file 'tribes/barbarians/deeper_coalmine/conf'
--- tribes/barbarians/deeper_coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deeper_coalmine/conf	2014-04-14 04:13:39 +0000
@@ -29,10 +29,10 @@
 sleep=40000
 consume=meal
 animate=working 16000
-mine=coal 2 100 10
+mine=coal 2 100 10 2
 produce=coal:2
 animate=working 16000
-mine=coal 2 100 10
+mine=coal 2 100 10 2
 produce=coal:3
 
 [idle]

=== modified file 'tribes/barbarians/deeper_goldmine/conf'
--- tribes/barbarians/deeper_goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deeper_goldmine/conf	2014-04-14 04:13:39 +0000
@@ -29,10 +29,10 @@
 sleep=40000
 consume=meal
 animate=working 16000
-mine=gold 2 100 10
+mine=gold 2 100 10 2
 produce=goldore:2
 animate=working 18000
-mine=gold 2 100 10
+mine=gold 2 100 10 2
 produce=goldore:2
 
 [idle]

=== modified file 'tribes/barbarians/deeper_oremine/conf'
--- tribes/barbarians/deeper_oremine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/deeper_oremine/conf	2014-04-14 04:13:39 +0000
@@ -29,13 +29,13 @@
 consume=meal
 sleep=40000
 animate=working 16000
-mine=iron 2 100 10
+mine=iron 2 100 10 2
 produce=ironore
 animate=working 16000
-mine=iron 2 100 10
+mine=iron 2 100 10 2
 produce=ironore:2
 animate=working 16000
-mine=iron 2 100 10
+mine=iron 2 100 10 2
 produce=ironore:2
 
 [idle]

=== modified file 'tribes/barbarians/goldmine/conf'
--- tribes/barbarians/goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/goldmine/conf	2014-04-14 04:13:39 +0000
@@ -28,7 +28,7 @@
 sleep=45000
 consume=ration
 animate=working 20000
-mine=gold 2 33 5
+mine=gold 2 33 5 17
 produce=goldore
 
 [idle]

=== modified file 'tribes/barbarians/granitemine/conf'
--- tribes/barbarians/granitemine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/granitemine/conf	2014-04-14 04:13:39 +0000
@@ -25,7 +25,7 @@
 consume=ration
 sleep=20000
 animate=working 20000
-mine=granit 2 100 5
+mine=granit 2 100 5 17
 produce=raw_stone:2
 
 [idle]

=== modified file 'tribes/barbarians/oremine/conf'
--- tribes/barbarians/oremine/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/oremine/conf	2014-04-14 04:13:39 +0000
@@ -28,7 +28,7 @@
 sleep=45000
 consume=ration
 animate=working 20000
-mine=iron 2 33 5
+mine=iron 2 33 5 17
 produce=ironore
 
 [idle]

=== modified file 'tribes/barbarians/well/conf'
--- tribes/barbarians/well/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/well/conf	2014-04-14 04:13:39 +0000
@@ -19,7 +19,7 @@
 [work]
 sleep=20000
 animate=working 20000
-mine=water 1 100 65
+mine=water 1 100 65 2
 produce=water
 
 [idle]

=== modified file 'tribes/empire/coalmine/conf'
--- tribes/empire/coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/coalmine/conf	2014-04-14 04:13:39 +0000
@@ -30,10 +30,10 @@
 sleep=45000
 consume=beer ration
 animate=working 20000
-mine=coal 2 50 5
+mine=coal 2 50 5 17
 produce=coal:2
 animate=working 20000
-mine=coal 2 50 5
+mine=coal 2 50 5 17
 produce=coal
 
 [idle]

=== modified file 'tribes/empire/deep_coalmine/conf'
--- tribes/empire/deep_coalmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/deep_coalmine/conf	2014-04-14 04:13:39 +0000
@@ -31,10 +31,10 @@
 sleep=42000
 consume=beer meal
 animate=working 18000
-mine=coal 2 100 5
+mine=coal 2 100 5 2
 produce=coal:2
 animate=working 18000
-mine=coal 2 100 5
+mine=coal 2 100 5 2
 produce=coal:3
 
 [idle]

=== modified file 'tribes/empire/deep_goldmine/conf'
--- tribes/empire/deep_goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/deep_goldmine/conf	2014-04-14 04:13:39 +0000
@@ -31,10 +31,10 @@
 sleep=43000
 consume=meal wine
 animate=working 18000
-mine=gold 2 100 5
+mine=gold 2 100 5 2
 produce=goldore
 animate=working 18000
-mine=gold 2 100 5
+mine=gold 2 100 5 2
 produce=goldore:2
 
 [idle]

=== modified file 'tribes/empire/deep_marblemine/conf'
--- tribes/empire/deep_marblemine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/deep_marblemine/conf	2014-04-14 04:13:39 +0000
@@ -30,10 +30,10 @@
 sleep=43000
 consume=meal wine
 animate=working 18000
-mine=granit 2 100 5
+mine=granit 2 100 5 2
 produce=marble:2
 animate=working 18000
-mine=granit 2 100 5
+mine=granit 2 100 5 2
 produce=marble stone:2
 
 [idle]

=== modified file 'tribes/empire/deep_oremine/conf'
--- tribes/empire/deep_oremine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/deep_oremine/conf	2014-04-14 04:13:39 +0000
@@ -31,10 +31,10 @@
 sleep=43000
 consume=meal beer
 animate=working 18000
-mine=iron 2 100 5
+mine=iron 2 100 5 2
 produce=ironore:2
 animate=working 18000
-mine=iron 2 100 5
+mine=iron 2 100 5 2
 produce=ironore:2
 
 [idle]

=== modified file 'tribes/empire/goldmine/conf'
--- tribes/empire/goldmine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/goldmine/conf	2014-04-14 04:13:39 +0000
@@ -31,10 +31,10 @@
 sleep=45000
 consume=ration wine
 animate=working 20000
-mine=gold 2 50 5
+mine=gold 2 50 5 17
 produce=goldore
 animate=working 20000
-mine=gold 2 50 5
+mine=gold 2 50 5 17
 produce=goldore
 
 [idle]

=== modified file 'tribes/empire/marblemine/conf'
--- tribes/empire/marblemine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/marblemine/conf	2014-04-14 04:13:39 +0000
@@ -31,20 +31,20 @@
 sleep=20000
 consume=wine ration
 animate=working 20000
-mine=granit 2 50 5
+mine=granit 2 50 5 17
 produce=marble:2
 animate=working 20000
-mine=granit 2 50 5
+mine=granit 2 50 5 17
 produce=marble stone
 
 [mine_stone]
 sleep=20000
 consume=ration wine
 animate=working 20000
-mine=granit 2 50 5
+mine=granit 2 50 5 17
 produce=stone marble
 animate=working 20000
-mine=granit 2 50 5
+mine=granit 2 50 5 17
 produce=stone:2
 
 [work]

=== modified file 'tribes/empire/oremine/conf'
--- tribes/empire/oremine/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/oremine/conf	2014-04-14 04:13:39 +0000
@@ -31,10 +31,10 @@
 sleep=45000
 consume=ration beer
 animate=working 20000
-mine=iron 2 50 5
+mine=iron 2 50 5 17
 produce=ironore
 animate=working 20000
-mine=iron 2 50 5
+mine=iron 2 50 5 17
 produce=ironore:2
 
 [idle]

=== modified file 'tribes/empire/well/conf'
--- tribes/empire/well/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/well/conf	2014-04-14 04:13:39 +0000
@@ -22,7 +22,7 @@
 [work]
 sleep=20000
 animate=working 20000
-mine=water 1 100 65
+mine=water 1 100 65 2
 produce=water
 
 [idle]


Follow ups