I like the feature that some bombhits start fires on ships, but IMHO the developers have (again) failed to exploit all the gameplay possibilities that this offers.
In the Age of Sail fire was one of the most feared disasters. On a wooden ship with tarred rigging fire was difficult to contain and often meant the loss of vessel, stores AND lifeboats.
To reflect this a little more in PotC I increased the damage and especially the burntime of the fires, which is fairly easy. One just has to add two factors in Sea_aiAIShip.c, one for the burntime here
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->float Ship_GetTotalFireTime(ref rCharacter)
{
int iRepairSkill = MakeInt(stf(rCharacter.TmpSkill.Repair) * 10.0);
return MakeFloat(5 + 3 * (10 - iRepairSkill)) *10; // ccc added " *10 " for longer firetime
}<!--c2--></div><!--ec2-->
and one for the damage here
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void Ship_FireDamage()
{
....
int iSClass = GetCharacterShipClass(rOurCharacter);
float fHP = (8 - iSClass) * (0.5 + frnd() * 0.5) * 2; // ccc added " *2 " for more firedamage
int iTime = 1000 + rand(500);
....<!--c2--></div><!--ec2-->
The size of the factors is of course a matter of taste. As above they mean that if you manage to set a ship ablaze it will die slowly, like a mammoth bleeding to death from a caveman's spear(s). That has quite an effect on battletactics: it allows you to destroy superior ships by means of `hit-and`-run bombattacks.
Of course your own ship will suffer the same damage from fire, and it would be very frustrating to watch helplessly as your ship slowly smolders away. So I added the "firedrill" feature that allows the player to extinguish fires on his own ship.
To activate that I "abused" the "Use potion" / "C" key that the legendary AlexusB has made for us (much thanks again <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="
" border="0" alt="smile.gif" /> ) As it was hitting "c" at sea would also consume a potion, but it would be wasted without effect in shipview mode. So I think it makes sense and doesn't diminish AB's mod if in seaview mode I let the "C" key heal the ship instead of nothing <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="
" border="0" alt="smile.gif" />
That can be done in seadogs.c . I inserted a section into AB's mod which remains otherwise untouched:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// boal -->
switch(ControlName)
{
case "BOAL_UsePotion":
ref mch = GetMainCharacter();
// ccc firedrill
if( bSeaActive && !bAbordageStarted ) // checks if you are in sailing mode
{
mch.firedrill = 1; // adds attribute to player as "marker" that firedrill is ordered
}
else
// ccc firedrill end, original potionuse mod continues
{
aref arItm;
int itmIdx;
itmIdx = FindPotionFromChr(mch, &arItm, 0);<!--c2--></div><!--ec2-->
It looks of course much better if we add some effects and make the "shipdefense" perk a requirement:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// boal -->
switch(ControlName)
{
case "BOAL_UsePotion":
ref mch = GetMainCharacter();
// ccc firedrill
if( bSeaActive && !bAbordageStarted ) // checks if you are in sailing mode
{
Log_SetStringToLog("All hands execute fire drill ! NOW !!"); // just a screenmessage
if(CheckOfficersPerk(mch,"BasicBattleState")) // starts firedrill only if you have shipdefense ability
{
mch.firedrill = 1; // adds attribute to player as "marker" that firedrill is ordered
PlaySound("clear_for_action"); // just soundeffect
PlaySound("objectsabordageabordage_loosing.wav");
}
else
{
Log_SetStringToLog("?? Captain, what's a firedrawl ?"); // just a screenmessage
Log_SetStringToLog("Your crew seems to lack SHIPDEFENSE ability..."); // just a screenmessage
PlaySound("voiceEng_m_a_022.wav"); // just soundeffect
}
}
else
// ccc firedrill end, original potionuse mod continues
{
aref arItm;
int itmIdx;
itmIdx = FindPotionFromChr(mch, &arItm, 0);<!--c2--></div><!--ec2-->
In the Age of Sail fire was one of the most feared disasters. On a wooden ship with tarred rigging fire was difficult to contain and often meant the loss of vessel, stores AND lifeboats.
To reflect this a little more in PotC I increased the damage and especially the burntime of the fires, which is fairly easy. One just has to add two factors in Sea_aiAIShip.c, one for the burntime here
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->float Ship_GetTotalFireTime(ref rCharacter)
{
int iRepairSkill = MakeInt(stf(rCharacter.TmpSkill.Repair) * 10.0);
return MakeFloat(5 + 3 * (10 - iRepairSkill)) *10; // ccc added " *10 " for longer firetime
}<!--c2--></div><!--ec2-->
and one for the damage here
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void Ship_FireDamage()
{
....
int iSClass = GetCharacterShipClass(rOurCharacter);
float fHP = (8 - iSClass) * (0.5 + frnd() * 0.5) * 2; // ccc added " *2 " for more firedamage
int iTime = 1000 + rand(500);
....<!--c2--></div><!--ec2-->
The size of the factors is of course a matter of taste. As above they mean that if you manage to set a ship ablaze it will die slowly, like a mammoth bleeding to death from a caveman's spear(s). That has quite an effect on battletactics: it allows you to destroy superior ships by means of `hit-and`-run bombattacks.
Of course your own ship will suffer the same damage from fire, and it would be very frustrating to watch helplessly as your ship slowly smolders away. So I added the "firedrill" feature that allows the player to extinguish fires on his own ship.
To activate that I "abused" the "Use potion" / "C" key that the legendary AlexusB has made for us (much thanks again <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="


That can be done in seadogs.c . I inserted a section into AB's mod which remains otherwise untouched:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// boal -->
switch(ControlName)
{
case "BOAL_UsePotion":
ref mch = GetMainCharacter();
// ccc firedrill
if( bSeaActive && !bAbordageStarted ) // checks if you are in sailing mode
{
mch.firedrill = 1; // adds attribute to player as "marker" that firedrill is ordered
}
else
// ccc firedrill end, original potionuse mod continues
{
aref arItm;
int itmIdx;
itmIdx = FindPotionFromChr(mch, &arItm, 0);<!--c2--></div><!--ec2-->
It looks of course much better if we add some effects and make the "shipdefense" perk a requirement:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// boal -->
switch(ControlName)
{
case "BOAL_UsePotion":
ref mch = GetMainCharacter();
// ccc firedrill
if( bSeaActive && !bAbordageStarted ) // checks if you are in sailing mode
{
Log_SetStringToLog("All hands execute fire drill ! NOW !!"); // just a screenmessage
if(CheckOfficersPerk(mch,"BasicBattleState")) // starts firedrill only if you have shipdefense ability
{
mch.firedrill = 1; // adds attribute to player as "marker" that firedrill is ordered
PlaySound("clear_for_action"); // just soundeffect
PlaySound("objectsabordageabordage_loosing.wav");
}
else
{
Log_SetStringToLog("?? Captain, what's a firedrawl ?"); // just a screenmessage
Log_SetStringToLog("Your crew seems to lack SHIPDEFENSE ability..."); // just a screenmessage
PlaySound("voiceEng_m_a_022.wav"); // just soundeffect
}
}
else
// ccc firedrill end, original potionuse mod continues
{
aref arItm;
int itmIdx;
itmIdx = FindPotionFromChr(mch, &arItm, 0);<!--c2--></div><!--ec2-->