(Read a question about this somewhere, but can't find the thread again, so made a new one)
Re: Awakening on QC after "almost" dying on new islands: QC is the default resurrection point for all locations which are not near one of the original taverns. Reasoning: QC as piratehideout is just the safe place where your mates would take you heal your "almost" fatal wounds.
But you can easily define other "casualty clearing stations" for the new islands. The code for that is at the bottom of program\seadogs.c :
switch(islandID)
{
case "FalaiseDeFleur":
loc = "Falaise_de_fleur_Tavern_upstairs";
chr = characterFromID("Falaise_de_fleur_officiant");
break;
....
case "IslaMuelle":
loc = "Muelle_Tavern_upstairs";
chr = characterFromID("Muelle_officiant");
break;
//default: // scheffnow - bfd
loc = "QC_Tavern_upstairs";
chr = characterFromID("QC_officiant");
setCharacterShipLocation(mc, "QC_port");
}
There is a "case" for each old island. You simply have to add new cases for new islands before the default QC section.
Details:
case is the ID of the island where you "almost" die, as defined in islands\islands_init.c
loc is the id of the location where you regain consciousness, choose any location you like from locations\init\....c
chr is the taverngirl which nurses you back to life. I'd simply skip that for the new islands, that saves a lot of work and you have probably heard the tale of your healing often enough. Instead add a marker attribute that we'll use later to skip the whole "Ah, you have survived..." bedroomscene.
So a case for the island of Saint Martin which lets you wake up in the mansion bedroom at Marigot would look like this:
case "SaintMartin":
loc = "Marigot_mansion_bedroom";
mc.notaverngirl = 1;
break;
The bedroomscene is being triggered by this section:
//start bedroomscene
WaitDate("", 0,0,4,0,0);
ChangeCharacterAddress(chr, loc, "goto3");
DoReloadCharacterToLocation(loc, "goto", "goto2");
Locations[FindLocation(loc)].reload.l1.disable = 0;
Log_SetStringToLog(LanguageConvertString(tmpLangFileID,"You regain consciousness after a long feverish sleep"));
PlaySound("AMBIENT\SHOP\sigh2.wav");
Lai_SetActorType(chr);
LAi_ActorTurnToCharacter(chr, mc);
LAi_ActorDialog(chr,mc, "", 4.0, 1.0);
Put a check for our marker attribute before that so that the scene runs only for the old islands:
if(CheckAttribute(mc,"notaverngirl")
{
//no bedroomscene, only teleport
DoReloadCharacterToLocation(loc, "goto", "goto2");
Log_SetStringToLog(LanguageConvertString(tmpLangFileID,"You regain consciousness after a long feverish sleep"));
DeleteAttribute(mc,"notaverngirl");
}
else
{
//start bedroomscene, as before
WaitDate("", 0,0,4,0,0);
....
LAi_ActorDialog(chr,mc, "", 4.0, 1.0);
}
Re: Awakening on QC after "almost" dying on new islands: QC is the default resurrection point for all locations which are not near one of the original taverns. Reasoning: QC as piratehideout is just the safe place where your mates would take you heal your "almost" fatal wounds.
But you can easily define other "casualty clearing stations" for the new islands. The code for that is at the bottom of program\seadogs.c :
switch(islandID)
{
case "FalaiseDeFleur":
loc = "Falaise_de_fleur_Tavern_upstairs";
chr = characterFromID("Falaise_de_fleur_officiant");
break;
....
case "IslaMuelle":
loc = "Muelle_Tavern_upstairs";
chr = characterFromID("Muelle_officiant");
break;
//default: // scheffnow - bfd
loc = "QC_Tavern_upstairs";
chr = characterFromID("QC_officiant");
setCharacterShipLocation(mc, "QC_port");
}
There is a "case" for each old island. You simply have to add new cases for new islands before the default QC section.
Details:
case is the ID of the island where you "almost" die, as defined in islands\islands_init.c
loc is the id of the location where you regain consciousness, choose any location you like from locations\init\....c
chr is the taverngirl which nurses you back to life. I'd simply skip that for the new islands, that saves a lot of work and you have probably heard the tale of your healing often enough. Instead add a marker attribute that we'll use later to skip the whole "Ah, you have survived..." bedroomscene.
So a case for the island of Saint Martin which lets you wake up in the mansion bedroom at Marigot would look like this:
case "SaintMartin":
loc = "Marigot_mansion_bedroom";
mc.notaverngirl = 1;
break;
The bedroomscene is being triggered by this section:
//start bedroomscene
WaitDate("", 0,0,4,0,0);
ChangeCharacterAddress(chr, loc, "goto3");
DoReloadCharacterToLocation(loc, "goto", "goto2");
Locations[FindLocation(loc)].reload.l1.disable = 0;
Log_SetStringToLog(LanguageConvertString(tmpLangFileID,"You regain consciousness after a long feverish sleep"));
PlaySound("AMBIENT\SHOP\sigh2.wav");
Lai_SetActorType(chr);
LAi_ActorTurnToCharacter(chr, mc);
LAi_ActorDialog(chr,mc, "", 4.0, 1.0);
Put a check for our marker attribute before that so that the scene runs only for the old islands:
if(CheckAttribute(mc,"notaverngirl")
{
//no bedroomscene, only teleport
DoReloadCharacterToLocation(loc, "goto", "goto2");
Log_SetStringToLog(LanguageConvertString(tmpLangFileID,"You regain consciousness after a long feverish sleep"));
DeleteAttribute(mc,"notaverngirl");
}
else
{
//start bedroomscene, as before
WaitDate("", 0,0,4,0,0);
....
LAi_ActorDialog(chr,mc, "", 4.0, 1.0);
}