I understood the problem, yes. That is why I was thinking of allowing the crew on deck to have a "stop this mod" dialog option as well.I think the problem is that if all the crewmembers ashore are killed - players can forget that they have asked them to come ashore and wonder why all these additional encounters are happening the next time they go ashore since they have no crewmembers with them. ( players can forget during the time it takes to sail from one island to another that they have activated this mod)
But then you still have to remember, so that may not quite be good enough.
The way it works is that when a crewmember is killed ashore, one of your ship crew is taken away too.Would it be possible - if all the crewmembers ashore are killed - then the next time the player goes ashore they are replaced by another group - so that the players knows that they still have these guys with them and will have the extra encounters until they tell these guys to get lost ( either ashore or on ship).
If you want more, you have to return to your ship ask for it.
"Automatically replacing them" is certainly possible, but then where would those crewmembers logically come from?
And how big of a group? The game doesn't store the amount you originally asked for, because some can die and you can get more during the game from the extra encounters too.
So the number may change all the time.
It would be easy enough to have a "minimum number of 1" though so you always keep one crewmember to talk to.
Effectively that would appear like an immortal crewmember though even if your ship crew does keep decreasing as the guy keeps dying.
Alternate solution in PROGRAM\Loc_ai\LAi_init.c:
Code:
// SCREWFACE : crewmembers on shore mod
bool LandCrew = LANDCREWMEMBERS;
if (LandCrew)
{
if (loc.type == "Shop") LandCrew = false;
if (loc.type == "residence") LandCrew = false;
if (loc.type == "house") LandCrew = false;
if (GetAttribute(loc , "vcskip") == true) LandCrew = false; // PB
if (GetAttribute(mainChr, "vcskip") == true) LandCrew = false; // PB
if (LandCrew)
{
crew = characterFromID("Treas_Crewmember_1");
maxcrew = GetMaxLandCrew(mainChr.Ship.Crew.Quantity);
if (maxCrew > 0)
{
for(con = 1; con <= 10 ; con++)
{
crew = characterFromID("Treas_Crewmember_" + con);
if(Lai_IsDead(crew))
{
RemoveCharacterCrew(mainChr,1);
if(MAX_CREWMEMBERS > 0){MAX_CREWMEMBERS = MAX_CREWMEMBERS-1;}
if(MAX_CREWMEMBERS == 0) LANDCREWMEMBERS = false; // PB: If all your crew died, disable this mod
}
Basically I can think of the following "solutions":
- Enforce a minimum of 1 crew to stay with you on the next location reload, regardless of how many die (not entirely logical)
- Allow switching this mod off through the crewmembers on deck too (still need to remember that it is on)
- Have a reminder of some kind that it is still on (more coding required )
- Have it auto-disable with the above code
I think that last option is the simplest and most effective one, so I think I'll go with that one for now.