Thats the way I play it, when I tested it out. Havent keep the logs and savegameI think I may be playing the Quest in the wrong way - perhaps you are supposed to play it as an agent of the Governor
because I though it was solved.
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!
Quick links for Beyond New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
- Bug Tracker on Github
Quick links for Maelstrom
- Download the latest version of Maelstrom
- Download the latest version of ERAS II
- Download the latest version of New Horizons on Maelstrom
Quick links for PotC: New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
Thanks to YOUR votes, GOG.com now sells:
- Sea Dogs
- Sea Dogs: Caribbean Tales
- Sea Dogs: City of Abandoned Ships
Vote now to add Pirates of the Caribbean to the list!
Quick links for AoP2: Gentlemen of Fortune 2
- Downloads and info
- ModDB Profile
- Forums Archive
A Pirate Podcast with Interviews
Music, Comedy and all things Pirate!
- Episode Guide - About - Subscribe -
- Twitter - Facebook - iTunes - Android -
- Youtube - Fill the Coffers -
Thats the way I play it, when I tested it out. Havent keep the logs and savegameI think I may be playing the Quest in the wrong way - perhaps you are supposed to play it as an agent of the Governor
OPIUM SMUGGLING set new ambush
Quest name Set_Next_Ambush FOUND in CommonQuestComplete
SETTING MUSIC: music_english_governor
SETTING MUSIC: music_english_governor
Quest name Hand in Final Smuggling Report FOUND in SideQuestComplete <<<<<<----- Hand in Final report
Reload: Process started for locator_name = reload1 and lockedReloadLocator =
reload_cur_island_index = -1
reload_cur_location_index = 404
reload_island_index = -1
reload_location_index = 399
Start reload
PauseAllSounds
ReloadStartFade
ItemLogic: On unload location
ReloadEndFade
** Whr: CreateWeatherEnvironment - iCurWeatherhour = 9, theHour = 9
Equip Character Donald Aguilar with blade4+3 his nation: 0 blade nation=
Equip Character Patrick Buttery with blade49 his nation: 0 blade nation=
Equip Character Christian Brazier with blade20 his nation: 0 blade nation=
Equip Character Gryffen Maiden with bladeC18+1 his nation: 0 blade nation=
Equip Character Henry Frere with blade1+3 his nation: 0 blade nation=
Equip Character Edmond Freeland with bladeC6 his nation: 0 blade nation=
ItemLogic: On load location Grand_Cayman_town
ItemLogic: found 0 buttons
ItemLogic -> randItem draw: no model for item Grand_Cayman_town.spyglass1
Quest name Opium_Ambush FOUND in CommonQuestComplete <<<<<------ Still trying to generate Soldier Ambush
OPIUM SMUGGLING set new ambush
Quest name Set_Next_Ambush FOUND in CommonQuestComplete
SETTING MUSIC: music_eng_town
SETTING MUSIC: music_eng_town
Each time you'll start a game the buyers will be selected randomly, so this will be different every time. It's even possible one buyer might be in the opium den . Hence the rule you need to go to one other buyer before going back to the previous one. There is a sligt possebility there are 2 character on jamaica chosen. But if that is the case you are just very lucky .
That is strange! The quest close and Fast travel enabled when I leave the Governor or it was doing itWhen I then leave the Governor - Fast Travel in the Port & Town is still disabled
That is strange! The quest close and Fast travel enabled when I leave the Governor or it was doing it
when I tested it. (see post 17 here)
The GetSmugglingGuildMembers function contains a check on the "questchar" attribute so quest characters won't be added.Is the Buyers List supposed to include Quest Characters - what happens if you do that quest first and they are not there when you come to do the Opium Quest
I just checked: It is generated at the moment you go through the "Opium/Smuggling explanation dialog".Does this mean that the Buyers are selected when you first start the game ?
Good question! They don't have the "questch" attribute, so yes they could. Which is probably bad once you have hired them.Is it possible that it could select say Nigel Blythe - or Artois Voysey on Nevis -- or Rhys Bloom in Port Royale.
She is a special case. She's sort-of "half" a quest character, because she's also a sort-of regular citizen.My Buyers List for Opium included - Rian Dekkers - One of the women outside Kralendijk Townhall - who starts The Strange things Going On in the Caribbean Side-quest
I think the culprit is here:I still have the problem of Fast Travel not being restored when I finish the quest.
Attached is a Save in Cayman Port - I have to go to Cayman Governor - give him last report - exit - then go back and talk to him again ( say Have you had time to look at the reports I made ) - this generates final entry in the Quest Book and ends the quest . { Quest book does not close as there is not code for that - updated Quests_side.c file attached to correct this}
When I then leave the Governor - Fast Travel in the Port & Town is still disabled -
case "Opium_Ambush":
//Clean up previous dialog
if(CheckAttribute(pchar,"quest.opium_smuggling.guards.send"))
{
if(sti(pchar.quest.opium_smuggling.guards.send) > -1)
{
sld = getCharacter(sti(pchar.quest.opium_smuggling.guards.send));
LAi_SetGuardianType(sld);
sld.Dialog.CurrentNode = "First time";
}
}
pchar.quest.opium_smuggling.guards.send = -1;
//Time for the ambush
if(CheckCharacterItem(pchar,"opium"))
{
//Only go if the character has opium
int radius = 30;
int closeidx = FindGuards(radius); //return -1 if there are no guards nearby; otherwise it returns the closes guard in the quest attributes
String guardid = "Guard"+closeidx;
if(closeidx > 0)
{
//If the closest guard is still too far away, they won't spot you and you'll be safe
if(stf(pchar.quest.opium_smuggling.guards.(guardid).dist) < 25)
{
//There are type guard close by so they can ambush you
int chance = getOpiumCaughtChance();
if(DEBUG_SMUGGLING>2)trace("OPIUM SMUGGLING check if guard talks to you with chance: "+chance);
if(rand(100)<chance)
{
sld = getCharacter(sti(pchar.quest.opium_smuggling.guards.(guardid).idx));
if(DEBUG_SMUGGLING>2)trace("OPIUM SMUGGLING send guard: "+sld.id);
LAi_SetActorType(sld);
LAi_ActorDialog(sld, pchar, "", 120, 0);
pchar.quest.opium_smuggling.guards.send = pchar.quest.opium_smuggling.guards.(guardid).idx;
sld.Dialog.Filename.SmugglerGuard = "Smuggler_Guard.c";
sld.Dialog.CurrentNode = "OpiumCaught";
}
}
}
}
if((GetDataYear() >= sti(pchar.quest.opium_smuggling.expyear)) && (GetDataMonth() >= sti(pchar.quest.opium_smuggling.expmonth)) && (GetDataDay() >= sti(pchar.quest.opium_smuggling.expday)))
{
if(DEBUG_SMUGGLING>2)trace("OPIUM SMUGGLING expired");
}
else
{
Lai_QuestDelay("Set_Next_Ambush",0);
}
break;
case "Set_Next_Ambush":
if(pchar.quest.opium_smuggling.active == "1")
{
if(DEBUG_SMUGGLING>2)trace("OPIUM SMUGGLING set new ambush");
pchar.quest.opium_smugglingset.win_condition.l1 = "ExitFromLocation";
pchar.quest.opium_smugglingset.win_condition.l1.location = pchar.location;
pchar.quest.opium_smugglingset.win_condition = "Opium_Ambush";
}
else
{
if(DEBUG_SMUGGLING>0)trace("OPIUM SMUGGLING ended");
}
break;
I think the AllowFastTravelForSmuggling() function should already do that. That one DOES have a CheckCharacterItem(pchar,"opium") line.When Fast Travel is disabled - Is it possible to have the normal Fast Travel disabled X icon used - instead of having all the icons display with the log message at the top left of the screen. ( see Images )
Out of curiosity, can you give Opium to your officers? If so, that would be an exploit. If not, the solution might be simple.
Also after the guard challenges you and you surrender the Opium - Fast travel appears to remain disabledThe "Next Ambush" ALWAYS gets set if you have pchar.quest.opium_smuggling.active == "1" .
And that gets set to "0" ONLY if you get caught by a "Smuggler Guard" and decide not to fight.
case "Buy1":
TakeNItems(PChar, "opium", 1);
AddDialogExitQuest("Opium_set_first_ambush"); <<<<<<<<<<<<
AddMoneyToCharacter(PChar, -1*sti(NPChar.opiumprice)*1);
PlayStereoSound("INTERFACE\took_item.wav");
dialog.text = DLG_TEXT[16];
Link.l1 = DLG_TEXT[17]
Link.l1.go = "Exit";
break;
case "Buy12":
TakeNItems(PChar, "opium", 12);
AddDialogExitQuest("Opium_set_first_ambush"); <<<<<<<<<<<<
AddMoneyToCharacter(PChar, -1*sti(NPChar.opiumprice)*12);
PlayStereoSound("INTERFACE\took_item.wav");
dialog.text = DLG_TEXT[16];
Link.l1 = DLG_TEXT[17]
Link.l1.go = "Exit";
break;
case "Buy72":
TakeNItems(PChar, "opium", 72);
AddDialogExitQuest("Opium_set_first_ambush"); <<<<<<<<<<<<<
AddMoneyToCharacter(PChar, -1*sti(NPChar.opiumprice)*72);
PlayStereoSound("INTERFACE\took_item.wav");
dialog.text = DLG_TEXT[16];
Link.l1 = DLG_TEXT[17]
Link.l1.go = "Exit";
break;
}
}
That doesn't sound good, does it? Maybe should be made into a Quest Item so they can't be given away?Yes you can give the Opium to your Officers - this appears to stop the guards from spotting you.
Try executing pchar.quest.opium_smuggling.active = 0; through console and see if that helps.Also after the guard challenges you and you surrender the Opium - Fast travel appears to remain disabled
That is probably intentional. You should be able to get caught if you carry opium, regardless of whether you work for the governor or not.The Fast travel is always disabled if you buy Opium from the Opium Den – whether or not you are doing the Opium Quest:
That sounds unintentional. I figure ideally it should happen if you carry opium.Getting Opium other ways – eg finding it on the bodies of dead smugglers on the beach – does not affect the guards or Fast Travel .
@Talisman: Would you agree with me that it would make sense if the "potentially getting caught" functionality is linked to "carrying opium" rather than any sort of quest-related stuff?
I have some ideas on how to rework the code to make that happen. Might simplify things a bit....
That doesn't sound good, does it? Maybe should be made into a Quest Item so they can't be given away?
Alternatively, ideally officers should be checked as well. But that does nothing to solve your problem.
Is there something missing from that sentence?That would make sense - also put something in the quest book entry which
You mean to remove those Opium items from the Smuggler start, right?If you start a game with the occupation Smuggler - you are given some Opium among the starting items ( have to be removed otherwise the guards will catch you right at the beginning of the game before you have even got started. )
I think just setting the item price to 0 will serve to do that.Also you will probably have to stop the player transfering the Opium to their Officers.
n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 100, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium
n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium
With the price = 0 trick I suggest above, I think that should indeed remain working.If you make Opium a Quest item - will the player still be able to use it - and thus benefit/suffer from the effects as at present ?
Is there something missing from that sentence?
You mean to remove those Opium items from the Smuggler start, right?
That's easy.
I think just setting the item price to 0 will serve to do that.
In initItems.c find:
Replace with:Code:n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 100, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium
Then press F11 to make the change take effect.Code:n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium
With the price = 0 trick I suggest above, I think that should indeed remain working.
I'd appreciate if you double-check that though.
Good question.Will this affect the price that the opium is sold for in the Opium den ?
int GetOpiumPrice()
{
return 100;
}
Try executing pchar.quest.opium_smuggling.active = 0; through console and see if that helps.
You may have to reload to another (two?) locations before it would have an effect.
I think just setting the item price to 0 will serve to do that.
In initItems.c find:
Replace with:Code:n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 100, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium
Then press F11 to make the change take effect.Code:n = InitItem(n,"opium", "", "Levis", 2, 0.00, 1, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1); // Opium