• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

WIP Improvements to Smuggling.

Checked it realy quick. Best way imo would be:
in
Code:
case "Send Officer time expired":
add a line which says:
Code:
DeleteAttribute(Pchar,"quest.Contraband.scout.done");
Then move (so remove it where it is now) the line
Code:
Pchar.quest.Contraband.scout.done = true;
to the questcase below like this:
Code:
case "Send Officer Gone":
           NPChar = characterFromID(PChar.quest.Contraband.officerID);
           //LAi_SetOfficerType(NPChar);
           ChangeCharacterAddressGroup(NPChar,"none","",""); //We don't have to see him anymore
           if(CheckAttribute(Pchar,"quest.Contraband.scout.done"))
           {
                if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" from location");
                Pchar.quest.Contraband.scout.done = true;
                PChar.quest.Contraband_Scouting.win_condition.l1 = "Timer";
                PChar.quest.Contraband_Scouting.win_condition.l1.date.day = GetAddingDataDay(0, 0, 1);
                PChar.quest.Contraband_Scouting.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 1);
                PChar.quest.Contraband_Scouting.win_condition.l1.date.year = GetAddingDataYear(0, 0, 1);
                PChar.quest.Contraband_Scouting.win_condition = "Send Officer time expired";
                if(DEBUG_SMUGGLING>0)trace("SMUGGLING timer set 1 day later ");
           }
       break;
yesbox, gotcha. but shouldnt it be if(!CheckAttribute(PChar,"quest.Contraband.scout.done")), otherwise it wont run ever since its set to true in the if? or have I misread the code?
 
at this point that solution made my day xD
would something like this work?
Code:
 ...
            //LAi_ActorGoToLocation(NPChar,"reload","reload1", "none", "", "", "Send Officer Gone",10);
            PChar.quest.Send_Officer_Gone.win_condition.l1 = "ExitFromLocation";
            PChar.quest.Send_Officer_Gone.win_condition.l1.location = PChar.location;
            PChar.quest.Send_Officer_Gone.win_condition.l2 = "Timer";
            PChar.quest.Send_Officer_Gone.win_condition.l2.date.hour = GetAddingTimeDay(1,0);
            PChar.quest.Send_Officer_Gone.win_condition = "Send Officer Gone";
        break;
You still want that "LAi_ActorGoToLocation" - actually, now you want to be sure that he doesn't disappear, you can go back to using the original "LAi_ActorGoToLocator". Change "reload" and "reload1" to be a locator somewhere near the bar, and clear "Send Officer Gone" - you do not now want the next quest case to trigger when he arrives at his locator.

If you have a "win_condition.l1" and a "win_condition.l2" then both must be satisfied before the quest case will trigger. This is useful if you need several things to happen before the next part of the quest. (I once set up a five-level win condition. In "Ardent", one way to stage the kidnap is to force your way in at night. So, it needs to be night time, guard 1 needs to be dead, guard 2 needs to be dead, you need to be in possession of a lockpick and you need to be standing by the door.) If you want the quest case to trigger if either condition is met then both need to be "win_condition.l1", and with different names. So:
Code:
            PChar.quest.Send_Officer_Gone1.win_condition.l1 = "ExitFromLocation";
            PChar.quest.Send_Officer_Gone1.win_condition.l1.location = PChar.location;
            PChar.quest.Send_Officer_Gone1.win_condition = "Send Officer Gone";
            PChar.quest.Send_Officer_Gone2.win_condition.l1 = "Timer";
            PChar.quest.Send_Officer_Gone2.win_condition.l1.date.hour = GetAddingTimeDay(1,0);
            PChar.quest.Send_Officer_Gone2.win_condition = "Send Officer Gone";
Next, "Send Officer Gone" needs to shut down whichever one didn't trigger.
Code:
       case "Send Officer Gone":
           PChar.quest.Send_Officer_Gone1.over = "yes";
           PChar.quest.Send_Officer_Gone2.over = "yes";
...
That way, if you trigger it by standing at the bar and telling the tavern keeper that you want to use a room, but only for a few hours, 8 hours, several times; then you won't trigger it again when you leave the tavern.

I think, but not 100% sure, that LAi_SetActorType(NPChar); makes them wander around, so either it triggers when you leave the location or after 15 ingame minutes (EDIT: the timer cant take minutes) 1 ingame hour if you decide to wait around the bar room/other location for an entire day for some reason. :p
'LAi_SetActorType' makes the character stand still unless you make him do something else with a different command. 'LAi_SetCitizenType(NPChar)' is the one which makes the character wander around aimlessly. And 'LAi_SetOfficerType(NPChar);' makes the character follow you around the room, though unless he really is an officer, he won't follow you to another area.
 
You still want that "LAi_ActorGoToLocation" - actually, now you want to be sure that he doesn't disappear, you can go back to using the original "LAi_ActorGoToLocator". Change "reload" and "reload1" to be a locator somewhere near the bar, and clear "Send Officer Gone" - you do not now want the next quest case to trigger when he arrives at his locator.

If you have a "win_condition.l1" and a "win_condition.l2" then both must be satisfied before the quest case will trigger. This is useful if you need several things to happen before the next part of the quest. (I once set up a five-level win condition. In "Ardent", one way to stage the kidnap is to force your way in at night. So, it needs to be night time, guard 1 needs to be dead, guard 2 needs to be dead, you need to be in possession of a lockpick and you need to be standing by the door.) If you want the quest case to trigger if either condition is met then both need to be "win_condition.l1", and with different names. So:
Code:
            PChar.quest.Send_Officer_Gone1.win_condition.l1 = "ExitFromLocation";
            PChar.quest.Send_Officer_Gone1.win_condition.l1.location = PChar.location;
            PChar.quest.Send_Officer_Gone1.win_condition = "Send Officer Gone";
PChar.quest.Send_Officer_Gone1.win_condition.l1 = "Timer";
PChar.quest.Send_Officer_Gone2.win_condition.l1.date.hour = GetAddingTimeDay(1,0);
PChar.quest.Send_Officer_Gone2.win_condition = "Send Officer Gone";[/code]
Next, "Send Officer Gone" needs to shut down whichever one didn't trigger.
Code:
       case "Send Officer Gone":
           PChar.quest.Send_Officer_Gone1.over = "yes";
           PChar.quest.Send_Officer_Gone2.over = "yes";
...
That way, if you trigger it by standing at the bar and telling the tavern keeper that you want to use a room, but only for a few hours, 8 hours, several times; then you won't trigger it again when you leave the tavern.

'LAi_SetActorType' makes the character stand still unless you make him do something else with a different command. 'LAi_SetCitizenType(NPChar)' is the one which makes the character wander around aimlessly. And 'LAi_SetOfficerType(NPChar);' makes the character follow you around the room, though unless he really is an officer, he won't follow you to another area.
aha, that makes perfect sense! :type1 gonna go that route then

my worry with using the LAi_ActorGoToLocation is that you can send them to scout when youre at other locations than the tavern, so dunno what happens elsewhere. walking around aimlessly (asking questions, scouting the area perhaps) is maybe a more failsafe way?
 
True - if the officer isn't in the tavern then going to the bar is not an option. :rumgone In that case, 'LAi_SetCitizenType(NPChar)' would seem to be the way to go. You can talk to an officer who is in "citizen" mode, so perhaps set up some dialog where he tells you not to blow his cover.
 
True - if the officer isn't in the tavern then going to the bar is not an option. :rumgone In that case, 'LAi_SetCitizenType(NPChar)' would seem to be the way to go. You can talk to an officer who is in "citizen" mode, so perhaps set up some dialog where he tells you not to blow his cover.
righto, how bout this?
Code:
case "Send Officer to scout":
            //Levis add smuggling questbook
            Preprocessor_AddQuestData("location",locations[FindLocation(Pchar.quest.contraband.CurrentPlace)].name);
            questbookname = "smuggle&number="+Pchar.amount_smuggleruns; //Set a questname
            AddQuestRecord(questbookname, 11);
            Preprocessor_Remove("location");
            Pchar.quest.Contraband.scout.done = true;
            //In 1 day he has to return
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            RemovePassenger(PChar, NPChar);
            NPChar.StoredFellow = True;
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" as officer");
            LAi_SetCitizenType(NPChar);
            NPChar.Dialog.CurrentNode = "blowmycover";
            RemoveOfficersIndex(pchar, GetCharacterIndex(NPChar.id));
            //LAi_ActorGoToLocation(NPChar,"reload","reload1", "none", "", "", "Send Officer Gone",10);
            PChar.quest.Send_Officer_Gone1.win_condition.l1 = "ExitFromLocation";
            PChar.quest.Send_Officer_Gone1.win_condition.l1.location = PChar.location;
            PChar.quest.Send_Officer_Gone2.win_condition.l1 = "Timer";
            PChar.quest.Send_Officer_Gone2.win_condition.l1.date.hour = GetAddingTimeDay(1,0);
            PChar.quest.Send_Officer_Gone1.win_condition = "Send Officer Gone";
            PChar.quest.Send_Officer_Gone2.win_condition = "Send Officer Gone";
        break;

        case "Send Officer Gone":
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            //LAi_SetOfficerType(NPChar);
            PChar.quest.Send_Officer_Gone1.over = "yes";
            PChar.quest.Send_Officer_Gone2.over = "yes";
            ChangeCharacterAddressGroup(NPChar,"none","",""); //We don't have to see him anymore
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" from location");
            PChar.quest.Contraband_Scouting.win_condition.l1 = "Timer";
            PChar.quest.Contraband_Scouting.win_condition.l1.date.day = GetAddingDataDay(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.year = GetAddingDataYear(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition = "Send Officer time expired";
            if(DEBUG_SMUGGLING>0)trace("SMUGGLING timer set 1 day later ");
        break;

Code:
case "blowmycover":
            Diag.TempNode = Diag.CurrentNode;
            if(PChar.sex == "woman"){ Preprocessor_Add("sir", XI_ConvertString("ma'am")); }
            else{ Preprocessor_Add("sir",XI_ConvertString("sir")); }
            d.Text = DLG_TEXT[198]; <--- "Can't talk now, ma'am/sir! You're going to get us caught!"
            Link.l1 = "...";
            Link.l1.go = "Exit"
        break;
the dialog is reset in the later quest cases, so that should solve itself and go back to normal afterwards
 
I suspect you're going to get some error messages about that 1 hour timer. Here's where it's checked, in "PROGRAM\QUESTS\quests_check.c":
Code:
    case "Timer":
       if( GetDataYear() < sti(condition.date.year) ) return false;
       if( GetDataYear() > sti(condition.date.year) ) return true;
       if( GetDataMonth() < sti(condition.date.month) ) return false;
       if( GetDataMonth() > sti(condition.date.month) ) return true;
       if( GetDataDay() < sti(condition.date.day) ) return false;
       if( GetDataDay() > sti(condition.date.day) ) return true;
       // NK to use hour if there 04-09-18 -->
       if(CheckAttribute(condition,"date.hour"))
       {
           if( sti(environment.date.hour) < sti(condition.date.hour) ) { return false; }
       }
       // NK <--
       return true;
   break;
You need the year, month, day and hour. The hour is optional, which is why the timer in "Send Officer Gone" doesn't give errors for not having one. But it looks as though "quests_check" assumes that a "Timer" condition will set year, month and day, and doesn't bother checking if they are in fact set. So:
Code:
           PChar.quest.Send_Officer_Gone2.win_condition.l1 = "Timer";
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.hour = GetAddingTimeDay(1,0);
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.day = GetDataDay();
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.month = GetDataMonth();
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.year = GetDataYear();
The other problem is, what is this timer supposed to achieve? If time passes and you haven't left the location, then one hour later, case "Send Officer Gone" triggers anyway. It tries to make the officer disappear using 'ChangeCharacterAddressGroup(NPChar,"none","","")'. But if that worked, we wouldn't be on Plan B in the first place...
 
This way the officer won't walk to the door anymore ;).
You still want the
Code:
LAi_ActorGoToLocation(NPChar,"reload","reload1", "none", "", "", "Send Officer Gone",10);
just remove the "Send Officer Gone" part.
 
I suspect you're going to get some error messages about that 1 hour timer. Here's where it's checked, in "PROGRAM\QUESTS\quests_check.c":
Code:
    case "Timer":
       if( GetDataYear() < sti(condition.date.year) ) return false;
       if( GetDataYear() > sti(condition.date.year) ) return true;
       if( GetDataMonth() < sti(condition.date.month) ) return false;
       if( GetDataMonth() > sti(condition.date.month) ) return true;
       if( GetDataDay() < sti(condition.date.day) ) return false;
       if( GetDataDay() > sti(condition.date.day) ) return true;
       // NK to use hour if there 04-09-18 -->
       if(CheckAttribute(condition,"date.hour"))
       {
           if( sti(environment.date.hour) < sti(condition.date.hour) ) { return false; }
       }
       // NK <--
       return true;
   break;
You need the year, month, day and hour. The hour is optional, which is why the timer in "Send Officer Gone" doesn't give errors for not having one. But it looks as though "quests_check" assumes that a "Timer" condition will set year, month and day, and doesn't bother checking if they are in fact set. So:
Code:
           PChar.quest.Send_Officer_Gone2.win_condition.l1 = "Timer";
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.hour = GetAddingTimeDay(1,0);
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.day = GetDataDay();
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.month = GetDataMonth();
           PChar.quest.Send_Officer_Gone2.win_condition.l1.date.year = GetDataYear();
right, ofc. gonna fix!
The other problem is, what is this timer supposed to achieve? If time passes and you haven't left the location, then one hour later, case "Send Officer Gone" triggers anyway. It tries to make the officer disappear using 'ChangeCharacterAddressGroup(NPChar,"none","","")'. But if that worked, we wouldn't be on Plan B in the first place...
yeah, I figured it cant hurt to try and make them disappear after an hour anyway, maybe it will work one day :p I can remove the change address bit tho since it doesnt do anything rn, but the timer for their return doesnt start until the "send officer gone" is triggered if I understand correctly? so the 1h timer is for if you hang around, you still get the time in one day.
 
This way the officer won't walk to the door anymore ;).
You still want the
Code:
LAi_ActorGoToLocation(NPChar,"reload","reload1", "none", "", "", "Send Officer Gone",10);
just remove the "Send Officer Gone" part.
my plan now is for them to wander around the area until you leave instead of going to the door, since they absolutely refuse to disappear under any circumstances and just stand there :eek::p
 
yeah, I figured it cant hurt to try and make them disappear after an hour anyway, maybe it will work one day :p I can remove the change address bit tho since it doesnt do anything rn, but the timer for their return doesnt start until the "send officer gone" is triggered if I understand correctly? so the 1h timer is for if you hang around, you still get the time in one day.
It's the 1 hour timer I was wondering about - you wait around for an hour, the officer tries to disappear and fails as usual, and then nothing happens when you leave the room because "Send Officer Gone" has already triggered. One day later, as you say, the officer should return with the time, unless the mission failed.
 
It's the 1 hour timer I was wondering about - you wait around for an hour, the officer tries to disappear and fails as usual, and then nothing happens when you leave the room because "Send Officer Gone" has already triggered. One day later, as you say, the officer should return with the time, unless the mission failed.
I reasoned that previously, tho they didnt disappear at the door, they did disappear when you left and returned which I took to mean that the address group thing worked, just not immediately as it should. but ofc that doesnt help when the timer is there as a fail safe in case you dont leave the area... but I dunno what to do instead, otherwise the 1 day timer doesnt start until you leave with the ExitFromLocation, and since you could in theory stay there for days by waiting in the tavern hall by talking to the bartender you would never get the time. but then I havent written any other quests yet so that doesnt mean theres no obvious solution Im missing :p

should probably try it out in-game, Ill report back
 
Took a swing at it myself.
This work:

Code:
case "Send Officer to scout":
            //Levis add smuggling questbook
            Preprocessor_AddQuestData("location",locations[FindLocation(Pchar.quest.contraband.CurrentPlace)].name);
            questbookname = "smuggle&number="+Pchar.amount_smuggleruns; //Set a questname
            AddQuestRecord(questbookname, 11);
            Preprocessor_Remove("location");
            Pchar.quest.Contraband.scout.done = true;
            //In 1 day he has to return
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            NPChar.StoredFellow = True;
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" as officer");
            LAi_SetActorType(NPChar);
            LAi_ActorRunToLocation(NPChar, "reload", "reload1", "None", "", "", "Send Officer Gone", -1);
        break;

        case "Send Officer Gone":
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            RemovePassenger(PChar, NPChar);
            BLI_UpdateOfficers();
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" from location");
            PChar.quest.Contraband_Scouting.win_condition.l1 = "Timer";
            PChar.quest.Contraband_Scouting.win_condition.l1.date.day = GetAddingDataDay(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.year = GetAddingDataYear(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition = "Send Officer time expired";
            if(DEBUG_SMUGGLING>0)trace("SMUGGLING timer set 1 day later ");
        break;

also a little change is needed in another case:
Code:
case "Send Officer back in slot":
            if(DEBUG_SMUGGLING>0) trace("SMUGGLING officer becomes passenger again");
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            DeleteAttribute(NPChar,"StoredFellow");
            AddPassenger(PChar, NPChar, 0);
            LAi_SetOfficerType(NPChar);
            SetOfficersIndex(Pchar, -1, sti(NPChar.index)); // PB: Use index instead of reference
            NPChar.dialog.currentnode = "hired";            // PB: Reset his dialog
            BLI_UpdateOfficers();
        break;

The problem was that removing the officer will set it's location to "none" already, so when the changecharacter addressgroup is called it sees the character is in location none already so it will try to teleport it to the locator instead of logoff the character.
By calling the removing only after the officer left the location it will work.
 
Took a swing at it myself.
This work:

Code:
case "Send Officer to scout":
            //Levis add smuggling questbook
            Preprocessor_AddQuestData("location",locations[FindLocation(Pchar.quest.contraband.CurrentPlace)].name);
            questbookname = "smuggle&number="+Pchar.amount_smuggleruns; //Set a questname
            AddQuestRecord(questbookname, 11);
            Preprocessor_Remove("location");
            Pchar.quest.Contraband.scout.done = true;
            //In 1 day he has to return
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            NPChar.StoredFellow = True;
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" as officer");
            LAi_SetActorType(NPChar);
            LAi_ActorRunToLocation(NPChar, "reload", "reload1", "None", "", "", "Send Officer Gone", -1);
        break;

        case "Send Officer Gone":
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            RemovePassenger(PChar, NPChar);
            BLI_UpdateOfficers();
            if(DEBUG_SMUGGLING>2)trace("SMUGGLING removed "+NPChar.id+" from location");
            PChar.quest.Contraband_Scouting.win_condition.l1 = "Timer";
            PChar.quest.Contraband_Scouting.win_condition.l1.date.day = GetAddingDataDay(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.month = GetAddingDataMonth(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition.l1.date.year = GetAddingDataYear(0, 0, 1);
            PChar.quest.Contraband_Scouting.win_condition = "Send Officer time expired";
            if(DEBUG_SMUGGLING>0)trace("SMUGGLING timer set 1 day later ");
        break;

also a little change is needed in another case:
Code:
case "Send Officer back in slot":
            if(DEBUG_SMUGGLING>0) trace("SMUGGLING officer becomes passenger again");
            NPChar = characterFromID(PChar.quest.Contraband.officerID);
            DeleteAttribute(NPChar,"StoredFellow");
            AddPassenger(PChar, NPChar, 0);
            LAi_SetOfficerType(NPChar);
            SetOfficersIndex(Pchar, -1, sti(NPChar.index)); // PB: Use index instead of reference
            NPChar.dialog.currentnode = "hired";            // PB: Reset his dialog
            BLI_UpdateOfficers();
        break;

The problem was that removing the officer will set it's location to "none" already, so when the changecharacter addressgroup is called it sees the character is in location none already so it will try to teleport it to the locator instead of logoff the character.
By calling the removing only after the officer left the location it will work.
it works! by the gods it really works! you have saved me so much headache :love
 
I think these are the files with relevant changes since I last shared the progress :onya the quests_common is pretty much the one @Levis shared, but with the XP received for successful scouting tuned
 

Attachments

  • smuggling.c
    74.3 KB · Views: 149
  • quests_common.c
    228.5 KB · Views: 156
  • Enc_Officer_dialog.h
    10.8 KB · Views: 136
So here are some of my idea's about smuggling after thinking about it a bit more:

Smuggling Quest for Govenor
I think this quest should only be done once (maybe per nation) and should only trigger if the smuggling state on the island is above a certain treshold.
The quest can only be done if you have a LOM for this nation.

Reoccuring Smuggling quest for govenor
There should be a land based quest where you try to hunt down the smugglers for the govenor. This could also increase your rank for the nation. This would be interesting for characters who specialized more in melee combat instead of naval combat. I think a quest like this should look a bit like:
- The governor says that there are smugglers on the island and he tasks you with finding them and getting rid of them and confiscate their wares.
- You will need to ask people in town to find out if they know anything. Persuading people to tell you anything will be judged on different skills and your rank.
- At one point you will find someone who will tell you where the smugglers are hiding and you can go there.
- You can now decided to fight the smugglers and take their goods. Or let them go and take their goods, or something more sneaky maybe ;).
- Once you confiscated the goods you return to the governor to hand in the goods and get your reward.
That shouldn't be to hard to make but I think it would make going up the ranks a bit more interesting because you can choose to do this or the ship hunting quest.

Questbook entries
At the moment the Opium quest for the govenor and just finding opium conflict with each other. these should be split apart, so the first time you encounter opium you know what to do with it if you encounter it by accident but you dont have a quest in your questbook which can only be finished by returning it to the govenor.

The Opium Expansion
I would like to add a "little" quest after you've done some opium runs where another opium den can be opened somewhere on the caribbean. And you can get more buyers, so slowly you can get the whole caribbean addicted to opium if you want to :p.
Also I would like to add a maximum production rate for the opium den(s), so the first opium quests aren't that hard, but once they start asking for more opium you might need to buy some at the opium den and then wait for a while before getting more (increasing the chance of getting caught). And this would also make another opium den usefull because you could sail to this other den for the rest of the order.

Interface improvements
The tradebook interface should show more info about the smuggling state etc, so I will see if I can improve this interface and maybe make a special "tab" inside the tradebook.

Penalty for getting caught for beginners
If you are a low level character and you are caught smuggling the penalty is the same as when you are a high character, but as a high level character you can just fight your way out while as a low level character you must hope to flee away. Which makes it nice, but maybe if you are smuggling "small" amounts there should be an option to just pay a fine and get over it. If you just found a few pieces of contraband on sea and want to sell these and get caught I'd recon just paying a fine would be a valid option. If this fine scales to the amount you are smuggling by the time you've got your hold full of stuff to smuggle you probably wont be able to pay this fine (I would sugest to have a cap on the fine, say if it's larger then 10000 or so it wont be an option anymore just incase people have way to much money to spend) so you will have to fight yourself out.
Also I would like to introduce the "oh shit scenario" for smuggling. At the moment the coastguard will either appear from sea or from land. If they appear from sea there will be a ship waiting for you, and if they appear from land there wont (don't know if people picked up on this already ;) ). But the "oh shit scenario" would only trigger for island with a high smuggling state and if you are above a certain level. It will spawn guards from both sides, and also leave one or two to defend the exit while the rest go and chase you. This won't happen very often, but I think the moment this will happen and you are able to fight your way out it would feel so satisfying. Especially the first time it happens to you, that's why I call it the "oh shit scenario". It's not to discourage players to smuggle. It's to increase the risk to smuggle to islands with a high smuggling state. The return to smuggling to these islands would be very high, so the risk should be high too.

--

Any comments?
 
Any comments?
I'll give it a shot...

I think this quest should only be done once (maybe per nation)
Why do you reckon it should not be repeatable?

should only trigger if the smuggling state on the island is above a certain treshold
Makes sense, I suppose.

Reoccuring Smuggling quest for govenor
There should be a land based quest where you try to hunt down the smugglers for the govenor. This could also increase your rank for the nation. This would be interesting for characters who specialized more in melee combat instead of naval combat. I think a quest like this should look a bit like:
- The governor says that there are smugglers on the island and he tasks you with finding them and getting rid of them and confiscate their wares.
- You will need to ask people in town to find out if they know anything. Persuading people to tell you anything will be judged on different skills and your rank.
- At one point you will find someone who will tell you where the smugglers are hiding and you can go there.
- You can now decided to fight the smugglers and take their goods. Or let them go and take their goods, or something more sneaky maybe ;).
- Once you confiscated the goods you return to the governor to hand in the goods and get your reward.
That shouldn't be to hard to make but I think it would make going up the ranks a bit more interesting because you can choose to do this or the ship hunting quest.
Without a LoM, the Ship Hunting Quests are a good way to sink/capture some enemy ships without being considered a pirate in response.
You also gain points with the issuing nation, which reduces the price of a LoM. So that makes these types of quests quite useful if you don't have a LoM.
On the other hand, once you do have a LoM, you can capture/sink whatever enemy ship/town you want, so you're no longer limited to only Ship Hunting Quests.
So should the Smuggling Quest also be available when you don't have a LoM?

Questbook entries
At the moment the Opium quest for the govenor and just finding opium conflict with each other. these should be split apart, so the first time you encounter opium you know what to do with it if you encounter it by accident but you dont have a quest in your questbook which can only be finished by returning it to the govenor.
For "just finding the opium", could you add an explanation in the item description? Then you might not need a quest for that at all?

The Opium Expansion
I would like to add a "little" quest after you've done some opium runs where another opium den can be opened somewhere on the caribbean. And you can get more buyers, so slowly you can get the whole caribbean addicted to opium if you want to :p.
Also I would like to add a maximum production rate for the opium den(s), so the first opium quests aren't that hard, but once they start asking for more opium you might need to buy some at the opium den and then wait for a while before getting more (increasing the chance of getting caught). And this would also make another opium den usefull because you could sail to this other den for the rest of the order.
Could be fun, but I'm not sure how many people do active smuggling these days. Unless people want to play that, it may not be worth the effort... :unsure

Interface improvements
The tradebook interface should show more info about the smuggling state etc, so I will see if I can improve this interface and maybe make a special "tab" inside the tradebook.
More information sounds useful.
Would there be any way to limit that information so that a new tab wouldn't be required?
If information is more clicks away, people might not bother to look at it. Plus, it might take more time to develop.

Penalty for getting caught for beginners
If you are a low level character and you are caught smuggling the penalty is the same as when you are a high character, but as a high level character you can just fight your way out while as a low level character you must hope to flee away. Which makes it nice, but maybe if you are smuggling "small" amounts there should be an option to just pay a fine and get over it. If you just found a few pieces of contraband on sea and want to sell these and get caught I'd recon just paying a fine would be a valid option. If this fine scales to the amount you are smuggling by the time you've got your hold full of stuff to smuggle you probably wont be able to pay this fine (I would sugest to have a cap on the fine, say if it's larger then 10000 or so it wont be an option anymore just incase people have way to much money to spend) so you will have to fight yourself out.
Also I would like to introduce the "oh shit scenario" for smuggling. At the moment the coastguard will either appear from sea or from land. If they appear from sea there will be a ship waiting for you, and if they appear from land there wont (don't know if people picked up on this already ;) ). But the "oh shit scenario" would only trigger for island with a high smuggling state and if you are above a certain level. It will spawn guards from both sides, and also leave one or two to defend the exit while the rest go and chase you. This won't happen very often, but I think the moment this will happen and you are able to fight your way out it would feel so satisfying. Especially the first time it happens to you, that's why I call it the "oh shit scenario". It's not to discourage players to smuggle. It's to increase the risk to smuggle to islands with a high smuggling state. The return to smuggling to these islands would be very high, so the risk should be high too.
Considering how few people do smuggling these days (I think both @Grey Roger and especially @Hylie Pistof barely ever do it these days),
something probably needs be done to encourage people again before making things harder. :oops:

@DeathDaisy, @ANSEL, @Jason, @pedrwyth, @LarryHookins and @Bathtub-pirate, what do you people think about smuggling these days?
 
Governor quests: I do like the idea of being more active in tracking down smugglers and bringing them to justice, rather than the current quest which is little more than a standard smuggling run with a "get out of jail free" card thrown in. The one where you track down and arrest or kill the smugglers could be a replacement for the existing one.

Opium expansion: I am strongly opposed to this on two grounds. One is moral - to me, casting the player as a drug pusher is little better than casting the player as a rapist, which at least has the dubious advantage of being realistic as such things did happen back then. So the other objection is realism - there was no opium smuggling in any period covered by PoTC:NH. Opium simply wasn't available in the west. There was some importing of opium into China, thanks to our old friends the East India Trading Company, who regarded it as more profitable than silver when it came to trading for Chinese silk, but it wasn't smuggling. Eventually it led to an addiction problem and the Chinese tried to ban it, which led to the Opium Wars - but even the first of those would barely fit onto the end of our "Napoleonic" period. If you do want to expand opium, maybe add a quest in which you're supposed to track down the low-lifes who are smuggling the stuff, not by smuggling it yourself but by talking to people and following leads. Perhaps have it lead back to the East India Trading Company. Either expose their operation to the governor, who then closes them down (you can still buy a Merchant Licence from the Dutch company if you need one), or end with a big battle against some EITC agents or possibly some ships.

Interface changes: not really needed, as you can see changes in smuggling state in tavern news.

Penalty for getting caught for beginners: Having the option to pay a fine on the spot rather than fight the coastguard could be a good idea, but you should still have the options to run away or fight. As for the scenario with extra guards, I agree with @Pieter Boelen - it may not be intended to discourage people from smuggling but that is very likely to be the effect.

Personally, now that the curse of the never-ending "Smuggler's Life for Me" quest has been lifted, I've been playing a smuggler FreePlay character and it's now quite enjoyable as well as profitable. Whether the "oh shit" scenario would be enough to once again put me off smuggling entirely, I'm not sure - but it would certainly deter some other people.
 
Opium expansion: I am strongly opposed to this on two grounds. One is moral - to me, casting the player as a drug pusher is little better than casting the player as a rapist
Fair point. I've got to agree there. :onya

I would only make an exception to that IF reputation and fame are made to play a far bigger role in the game than they currently are.
This is something I have wished for a long time and wanted to implement as well, if only I'd have had the time to actually do it.
That way you could do immoral things, but the game would clearly show it to be immoral and give you the appropriate consequences.
This would create an "evil" way of playing the game, which ideally should be possible, interesting and challenging to do, but would still very clearly be evil.
 
I really enjoy the smuggling now :)

alright, so some thoughts
Reoccuring Smuggling quest for govenor
There should be a land based quest where you try to hunt down the smugglers for the govenor. This could also increase your rank for the nation. This would be interesting for characters who specialized more in melee combat instead of naval combat. I think a quest like this should look a bit like:
- The governor says that there are smugglers on the island and he tasks you with finding them and getting rid of them and confiscate their wares.
- You will need to ask people in town to find out if they know anything. Persuading people to tell you anything will be judged on different skills and your rank.
- At one point you will find someone who will tell you where the smugglers are hiding and you can go there.
- You can now decided to fight the smugglers and take their goods. Or let them go and take their goods, or something more sneaky maybe ;).
- Once you confiscated the goods you return to the governor to hand in the goods and get your reward.
That shouldn't be to hard to make but I think it would make going up the ranks a bit more interesting because you can choose to do this or the ship hunting quest.
this sounds cool, was thinking recently itd be cool with some more detectivy quests
The Opium Expansion
I would like to add a "little" quest after you've done some opium runs where another opium den can be opened somewhere on the caribbean. And you can get more buyers, so slowly you can get the whole caribbean addicted to opium if you want to :p.
Also I would like to add a
not sure about this, gotta agree with @Pieter Boelen and @Grey Roger. while I definitely dont think playing a drug smuggler is little better than playing a rapist which is a really upsetting thing to say, its a lot of work for what what is a dark and reprehensible subset of the more morally gray regular smuggling, which in turn is already not as popular as I hope it can one day be
Interface improvements
The tradebook interface should show more info about the smuggling state etc, so I will see if I can improve this interface and maybe make a special "tab" inside the tradebook.
adding a line for smuggling state would be very useful! but a tab might be overkill:p
Penalty for getting caught for beginners
If you are a low level character and you are caught smuggling the penalty is the same as when you are a high character, but as a high level character you can just fight your way out while as a low level character you must hope to flee away. Which makes it nice, but maybe if you are smuggling "small" amounts there should be an option to just pay a fine and get over it. If you just found a few pieces of contraband on sea and want to sell these and get caught I'd recon just paying a fine would be a valid option. If this fine scales to the amount you are smuggling by the time you've got your hold full of stuff to smuggle you probably wont be able to pay this fine (I would sugest to have a cap on the fine, say if it's larger then 10000 or so it wont be an option anymore just incase people have way to much money to spend) so you will have to fight yourself out.
Also I would like to introduce the "oh shit scenario" for smuggling. At the moment the coastguard will either appear from sea or from land. If they appear from sea there will be a ship waiting for you, and if they appear from land there wont (don't know if people picked up on this already ;) ). But the "oh shit scenario" would only trigger for island with a high smuggling state and if you are above a certain level. It will spawn guards from both sides, and also leave one or two to defend the exit while the rest go and chase you. This won't happen very often, but I think the moment this will happen and you are able to fight your way out it would feel so satisfying. Especially the first time it happens to you, that's why I call it the "oh shit scenario". It's not to discourage players to smuggle. It's to increase the risk to smuggle to islands with a high smuggling state. The return to smuggling to these islands would be very high, so the risk should be high too.
might be worth checking the punishments for smuggling historically? if fining happened then thats fine (heu heu), otherwise a juicy bribe is already an alternative if I remember correctly? maybe worth expanding?

I think the o shit thing might be fun if it happens to high level, notorious smugglers trying to bite more than they can chew. if you are a melee powerhouse, cutting a way through the guards to escape is exciting, but the combat system, in my exp, doesnt leave a lot of room for tactics and mobility, so if they just swarm you and kill you, thats frustrating
 
Back
Top