Just an idea about slaves

Archmaster

Chieftain
Joined
Aug 9, 2020
Messages
3
First of all, congratulations on the excellent work done and thank you very much for giving a new life to a game that is played lightly and gives us a lot of entertainment! In the last game I made, an idea came up that I think the game lacks and that I leave you here to analyze the possibility of implementing if you think it would be useful: we can also sell the slaves to other European powers and even to the natives. Best regards from this fan!
upload_2020-8-9_11-43-12.png
 
....we can also sell the slaves to other European powers and even to the natives.
The idea (in different variations) has been suggested a couple of times in RaR already. :)
(Looking at the origins of this mod, it is really an old project. Even if it changed its name a couple of times.)

-----

The Pros:

Well yes, it is definitely realistic / immersive / flavourful.
Slave Trade existed in history as we all know.

I also do understand that some players do not like to use the Slaves Units (they e.g. get by events) and might prefer to just sell them.
(Yes they are really cheap labour but they also have disadvantages, like e.g. running away and revoluting to balance their low costs.)

The Cons:

One problem with such a suggestion is that gameplay value (in terms of strategic choices and impact) of such a "Slave Trade" feature is quite low.
Such a feature would most likely end up as just another "cash cow" or just a convenient method to get rid of unwanted Units for Human Player.

AI would not profit at all if Player sells it those Slave Units. (And of course AI is not smart enough to use the feature strategically itself.)
Colonial AI should use its money in better ways - meaning more strategic - than buying slaves from Human Player.
Native AI really does not need slaves and unless we reprogram Native AI would use them very pointlessly.

The main problem with such a feature however is simply the effort for such a feature is incredibly high.
The "Trade Screen" (which would probalby be the most appropriate solution) is heavily hardcoded in exe and "hacking into it" by DLL is really difficult and risky.
Implementing a full fledged feature to model "Slave Trade" in other ways would also be lots of effort for little value.

It is of course also a matter of personal taste.
I myself am not interested in a big feature "Triangle Trade with Slaves".
I am also afraid that such a big feature could break gameplay balance.

-----

Summary:

It is really unlikely that this will be implemented.
Effort vs. gameplay value simply does not match.

For a "small flavour feature", it is simply not worth the effort required.
And a really big "Triangle Trade Feature" could really break gameplay balance and would be even much more effort.

If another modder wants to create a good technical concept and implement it, I do not mind though. :dunno:
(But as I said, it is much more effort than it sounds.)

-----

Best regards from this fan!
Always nice to hear that this mod still has some fans. :)
 
Last edited:
One way to deal with unwanted slaves is to unload them in Africa. Just load them on a ship and drop them on the beach. This kind of simulates a slave trade though of course you get no money. You also have a pool of free slaves if you need them in the future.

Maybe we could make a random event where you are offered the chance to sell a slave? Similar to the way the king will buy your first converted native. If I understand how this works though, it would only happen once and only remove one unit at a time.
 
Maybe we could make a random event where you are offered the chance to sell a slave?
Similar to the way the king will buy your first converted native.
If I understand how this works though, it would only happen once and only remove one unit at a time.

Well sure, we could technically have a repeating random Python event, allowing to sell a Slave from time to time.
It is easy to do, but most likely I would just get really annoyed by it after the first time. :(

Of course that random Python event could be triggered only once for a bit of story and flavour.
I really do not mind further small Python events for flavour. :)

Summary:

I am fine with implementing a small (one time) Python event for flavour. :thumbsup:
(Of course with different immersive choices.)
 
Last edited:
Thank you for the explanation. Yes, in fact it seems that it can actually generate one more money cow and that it could bring some more mismatch in relation to AI ...
random events is always fun. Of course, I am one of those players that in fact does not use slaves as they end up escaping and then I have to start capturing them again, which ends up giving more work than I benefit.
A related idea: bounty hunters: unit that captures runaway slaves (automatically preferably) and brings them back for a price? does your presence in a colony decrease the possibility of slave flight by 50%? and yet another idea: for a certain price, can a slave be promoted to a free slave?
another idea not related to slaves but to animals: a scout-like skill that makes them automatically hunt animals?
Thanks again!
upload_2020-8-10_11-33-24.png
 
@Archmaster:
To your suggestions (Bounty Hunter feature, Slave becoming Freed Slave for Gold, Automated Animal Hunting, ...)
Pretty much the same answer as here:

Effort vs. gameplay value simply does not match.
(At least not for me.)
 
Last edited:
I wrote up the text for a Python event that involves selling a native slave. Are you interested in using this event or would you rather make your own? I will see if I can even get it working in the game. I poked around some of the XML files: CIV4EventTriggerInfos, CIV4EventInfos, CIV4GameText_Colonization_Events. It looks mostly self explanatory but I'm probably missing some of the files I would need to edit. I can probably work out what do within each file. Also, is there a way to trigger an event manually in the game for testing?

The trigger will be that the player has at least 1 native slave. The player is given 3 options: 1) Retain the native slave (no change) 2) Grant the native slave their freedom (the native slave is lost, gain a converted native, lose 200 gold in payment to the former owner) and 3) Sell the slave aboard a slave ship (the native slave is lost, gain 100 gold, -1 relations with a nearby tribe(maybe?))

I usually end up with at least one native slave in almost of all my games, whether I want one or not, so I think the subject is big enough to justify having a Python event. It would also let players who weren't actively seeking out slaves unload one if they attained it by accident.
 
@Acheron81

The Python Event (for flavour) is fine for me. :)

If you want to implement one of your own, go ahead. :thumbsup:
You can later on share your changes and we could check and integrate.

But it should be only a "One Time Event" - not triggered every time you have a slave.
(Just the first time for flavour and a bit of story.)

And you are right:
If you can use existing functionality it can fully be done in XML (without programming).
It is really not that difficult - actually really easy if you have done it a couple of times.

And yes, these are all the XML-files you need to edit for a Python Event:
  • CIV4EventTriggerInfos (Trigger Condition and Basic Setup)
  • CIV4EventInfos (Trigger Options and Effects)
  • CIV4GameText_Colonization_Events (Texts to be displayed)
Manually triggering existing events for testing can be done by pressing:

CTRL + SHIFT+ E (if I am correct at the moment - I would need to test again on my PC)
However: The Trigger conditions must still be fulfilled. Otherwise simply nothing will happen
 
Last edited:
Thanks for the help. :) Yes, it will be a one time event, with a little bit of generic backstory that might apply to any colony. It should have a similar feel to the events already in game. I’ll see if I can get it implemented and test it out..
 
Well, I created the event but I'm not really satisfied with the way it works. When I imagined how this scenario would play out, the slave would be removed from one of your cities where they were working a plot or a building. After failing to make this happen and then looking at some of the other events I don't think it's possible to do with the given functions. It would only work if the slave was outside the city, like fortified, sleeping or moving around the map. I think this is because the event system was just ported over from civ4 BTS where you never have units inside the city (just a number of citizens inside and then military units fortified outside the city). All they did when porting it over was remove the civ4 functions that don't work in colonization. They barely added any colonization specific functionality at all.

To me, this just kills the immersion for this event. It could still be done where you sell a slave outside the city, but how often do you keep slaves just sitting around doing nothing? Also, there's already an event in the game called Brave Native Slave which is very similar. So adding this new event would be almost redundant. I still think having some way of selling slaves would be a good addition to the mod, but maybe an event is not the best way of doing it. :undecide:
 
Did you look into the mechanics that allow slaves to revolt from settlements?
The code should remove a slave citizen and grand a hostile neutral unit, maybe those lines can be repurposed to achieve your idea.

Regards
XSamatan
 
Did you look into the mechanics that allow slaves to revolt from settlements?
That is a "real full feature" that needed programming in C++ you are talking about.
It is not the easy Python System (configurable by XML) every beginners can learn in a couple of hours.

Acheron81 just wanted to create a "Python Event" - it is really simple because you can access (hidden DLL functionality) by XML config but it is also extremely limited.
(Unless of course some programmer expands the DLL functionality in the background and makes it accessible by easy XML or you start writing Python code to access DLL functions indirectly).

The DLL (C++ Programming) on the otherside is extremely powerful but also difficult to understand for beginners.
(You really need to know programming and need to build up some experience to understand how Civ4Col code works.)
 
Last edited:
No problem, I was just trying to explain. :)

Spoiler :

The thing is that without being able to really program, you will not be able to add "new features" meaning "new game mechanics".
The other big challenge is to create really good graphics (e.g. 3D graphics for Units or Leaders).

In XML you can only use or balance fully existing systems that have been made accessible to XML (adding Units, adding small Events, ...).
And even our XML has partially become so complicated that anybody not experienced or not technically skilled has problems to understand it.

---------

Everything that is just a little bit more complex requires really a lot of skill and experience.
That is the main reasons why we have so few Civ4Col modders. :(

To become a skilled and experienced Civ4Col modder really takes motivation, time and perseverance.
(There are maybe 5 people left that I would call "skilled and experienced" Civ4Col modders.)

---------

For Civ4BTS modders it would probably be relatively easy to switch to modding Civ4Col.
But chances are really low that many of them would be interested.
 
Well, I created the event but I'm not really satisfied with the way it works.
Why not share it anyways? :dunno:

Even it is just able to remove a Unit on the Map (not inside a City).
For a one time "flavour event" that is good enough - it is not supposed to trigger all the time anyways. :thumbsup:

When I imagined how this scenario would play out, the slave would be removed from one of your cities where they were working a plot or a building.
...
It would only work if the slave was outside the city, like fortified, sleeping or moving around the map.
Exactly, that is how the Python Event System currently works - if you use only XML without programming.
(Unless somebody invest the effort to expand it of course to make more functions accessible to XML.)

You can only remove Units on a Plot on the map.
(You can check for Units within the Cities or total Units you own as well though.)

I think this is because the event system was just ported over from civ4 BTS ...
That is correct, the Python Event System was ported from Civ4BTS.

All they did when porting it over was remove the civ4 functions that don't work in colonization.
They barely added any colonization specific functionality at all.
Here I need to say a few words. :)
"They" is not Firaxis. Civ4Col Vanilla did not have any real events at all.

The Original System was just a bare bone "Pop-Up" System for Tutorial messages.
The people that transformed it into an Event System were modders.

We modders created the first events in TAC and also added new capabilites to the Python Event System.
Later in RaR and now in WTP as well further events and further capabilities were added again.

But yes, it is still a primitive system that can not handle a lot of complex things. :dunno:
(Unless you add new DLL-capabilities and make them accessible to DLL or code Python logic to access DLL indirectly.)

For simple one-time events just for flavour it is ok though and most events we created I really like. :dunno:
(Simply do not expect to use it to create "real features" in terms of "new game mechanics" without programming.)
 
Last edited:
Sorry, I didn't realize it was the work of modders. You're exactly right, I thought it was Firaxis. When the events popped up in game I was always thinking "Why did they do it that way? I would do it like this." Now I get it. :)

I was reluctant to share the event because I thought the outcomes didn't really match up with the story. So I changed the story a little bit. Now the slave is being charged with neglecting their duties. That might explain why they're outside the city and not doing any work. I attached the files if you want to take a look.
 

Attachments

  • SELL_NATIVE_SLAVE.zip
    120.4 KB · Views: 32
Sorry, I didn't realize it was the work of modders. You're exactly right, I thought it was Firaxis.
Most new players can probably hardly imagine how disappointed the first players like me were when we first played Civ4Col Vanilla. :)

Spoiler :

Not even did they not implement any new features for their remake of the Original based on the new engine of CivBTS - which could do much more.
They had even dropped several old features of the Original (like e.g. "Learning by Doing", "Savannah Tiles", "Natives Stealing Guns and Weapons", ...)

The first thing we modders actually did (e.g. in TAC) was to recreate all the missing features from the Original game.
(e.g. "Learning by Doing" - as a feature the Original game had - was the first real feature I ever implemented for Civ4Col.)

Civ4Col was often just considered a low quality mod of Civ4BTS by many players. :(
Only years later - mainly because of mods - people started to really consider it a game of its own.

----

The bad news:

The low quality of Civ4Col Vanilla did really cost us lots of players and community.
Thus Civ4Col modding scene was always really tiny compared to Civ4BTS.

Civ4Col could never fully recover from the bad start caused by the flawed Vanilla.
Many potential players never found out that years later great mods corrected all those flaws and created many great features on top.

But the good news was:

Civ4Col
contains all the modding capabilities that Civ4BTS has.
So we modders started dreaming of all the cool features we could create ...

12 years later this dreaming resulted in todays WTP. :)
 
Last edited:
Oh my gosh, it's been so long since I played vanilla that I totally forgot there were no Savannah tiles. As I recall they removed the Mixed Forest tile also. I liked that one because it kept most of the cash crops out of the colder latitudes. And yes disappointment is how I would describe my experience with vanilla too. My main complaint with the civilization series has always been that the map generator was never improved. I'm still not entirely sure what the distinction is supposed to be between "grasslands" and "plains", even though we've had them since civ 1. :confused: It becomes an issue when you try to map a place like the American midwest, which one is it? What we need is 10 or 12 different climate types, desert scrubland, mediterranean, subtropical, rainforest etc. It seems like the next logical step in map design. But I still like Firaxis, at least they're still making turn based strategy games. So I guess, thanks for making the mod and bringing colonization up to the standard it should be at. :)
 
Top Bottom