@Pieter Boelen I believe Punitive Squadrons trigger after a certain negative relation is met but I'll test it out tonight, It would be a bummer if it doesn't work. As far as the code it was added to the bottom of init.Goods under Program/Store don't know if it was added by the GOF modders I can only assume so. Yes the cannons do have weight values in POTC Cannons.Init but the values themselves don't change anything or impact cargo weight.
Here's the code:
////////////////////////////////////////////////////// ïóøêè ýòî òîâàð - boal 27/07/06
Goods[GOOD_CANNON_4].Name = "Cannon_4";
Goods[GOOD_CANNON_4].CannonIdx = CANNON_TYPE_CANNON_LBS4;
Goods[GOOD_CANNON_4].Cost = Cannon[CANNON_TYPE_CANNON_LBS4].Cost;
Goods[GOOD_CANNON_4].Weight = Cannon[CANNON_TYPE_CANNON_LBS4].Weight;
Goods[GOOD_CANNON_4].FireRange = Cannon[CANNON_TYPE_CANNON_LBS4].FireRange;
Goods[GOOD_CANNON_4].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS4].DamageMultiply;
Goods[GOOD_CANNON_4].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS4]));
Goods[GOOD_CANNON_4].Units = 1;
Goods[GOOD_CANNON_4].AfraidWater = 0;
Goods[GOOD_CANNON_4].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_4].canbecontraband = 0;
Goods[GOOD_CANNON_8].Name = "Cannon_8";
Goods[GOOD_CANNON_8].CannonIdx = CANNON_TYPE_CANNON_LBS8;
Goods[GOOD_CANNON_8].Cost = Cannon[CANNON_TYPE_CANNON_LBS8].Cost;
Goods[GOOD_CANNON_8].Weight = Cannon[CANNON_TYPE_CANNON_LBS8].Weight;
Goods[GOOD_CANNON_8].FireRange = Cannon[CANNON_TYPE_CANNON_LBS8].FireRange;
Goods[GOOD_CANNON_8].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS8].DamageMultiply;
Goods[GOOD_CANNON_8].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS8]));
Goods[GOOD_CANNON_8].Units = 1;
Goods[GOOD_CANNON_8].AfraidWater = 0;
Goods[GOOD_CANNON_8].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_8].canbecontraband = 0;
Goods[GOOD_CANNON_12].Name = "Cannon_12";
Goods[GOOD_CANNON_12].CannonIdx = CANNON_TYPE_CANNON_LBS12;
Goods[GOOD_CANNON_12].Cost = Cannon[CANNON_TYPE_CANNON_LBS12].Cost;
Goods[GOOD_CANNON_12].Weight = Cannon[CANNON_TYPE_CANNON_LBS12].Weight;
Goods[GOOD_CANNON_12].FireRange = Cannon[CANNON_TYPE_CANNON_LBS12].FireRange;
Goods[GOOD_CANNON_12].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS12].DamageMultiply;
Goods[GOOD_CANNON_12].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS12]));
Goods[GOOD_CANNON_12].Units = 1;
Goods[GOOD_CANNON_12].AfraidWater = 0;
Goods[GOOD_CANNON_12].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_12].canbecontraband = 0;
Goods[GOOD_CANNON_16].Name = "Cannon_16";
Goods[GOOD_CANNON_16].CannonIdx = CANNON_TYPE_CANNON_LBS16;
Goods[GOOD_CANNON_16].Cost = Cannon[CANNON_TYPE_CANNON_LBS16].Cost;
Goods[GOOD_CANNON_16].Weight = Cannon[CANNON_TYPE_CANNON_LBS16].Weight;
Goods[GOOD_CANNON_16].Units = 1;
Goods[GOOD_CANNON_16].AfraidWater = 0;
Goods[GOOD_CANNON_16].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_16].canbecontraband = 0;
Goods[GOOD_CANNON_16].FireRange = Cannon[CANNON_TYPE_CANNON_LBS16].FireRange;
Goods[GOOD_CANNON_16].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS16].DamageMultiply;
Goods[GOOD_CANNON_16].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS16]));
Goods[GOOD_CANNON_20].Name = "Cannon_20";
Goods[GOOD_CANNON_20].CannonIdx = CANNON_TYPE_CANNON_LBS20;
Goods[GOOD_CANNON_20].Cost = Cannon[CANNON_TYPE_CANNON_LBS20].Cost;
Goods[GOOD_CANNON_20].Weight = Cannon[CANNON_TYPE_CANNON_LBS20].Weight;
Goods[GOOD_CANNON_20].FireRange = Cannon[CANNON_TYPE_CANNON_LBS20].FireRange;
Goods[GOOD_CANNON_20].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS20].DamageMultiply;
Goods[GOOD_CANNON_20].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS20]));
Goods[GOOD_CANNON_20].Units = 1;
Goods[GOOD_CANNON_20].AfraidWater = 0;
Goods[GOOD_CANNON_20].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_20].canbecontraband = 0;
Goods[GOOD_CANNON_24].Name = "Cannon_24";
Goods[GOOD_CANNON_24].CannonIdx = CANNON_TYPE_CANNON_LBS24;
Goods[GOOD_CANNON_24].Cost = Cannon[CANNON_TYPE_CANNON_LBS24].Cost;
Goods[GOOD_CANNON_24].Weight = Cannon[CANNON_TYPE_CANNON_LBS24].Weight;
Goods[GOOD_CANNON_24].Units = 1;
Goods[GOOD_CANNON_24].AfraidWater = 0;
Goods[GOOD_CANNON_24].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_24].canbecontraband = 0;
Goods[GOOD_CANNON_24].FireRange = Cannon[CANNON_TYPE_CANNON_LBS24].FireRange;
Goods[GOOD_CANNON_24].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS24].DamageMultiply;
Goods[GOOD_CANNON_24].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS24]));
Goods[GOOD_CANNON_28].Name = "Cannon_28";
Goods[GOOD_CANNON_28].CannonIdx = CANNON_TYPE_CANNON_LBS28;
Goods[GOOD_CANNON_28].Cost = Cannon[CANNON_TYPE_CANNON_LBS28].Cost;
Goods[GOOD_CANNON_28].Weight = Cannon[CANNON_TYPE_CANNON_LBS28].Weight;
Goods[GOOD_CANNON_28].FireRange = Cannon[CANNON_TYPE_CANNON_LBS28].FireRange;
Goods[GOOD_CANNON_28].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS28].DamageMultiply;
Goods[GOOD_CANNON_28].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS28]));
Goods[GOOD_CANNON_28].Units = 1;
Goods[GOOD_CANNON_28].AfraidWater = 0;
Goods[GOOD_CANNON_28].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_28].canbecontraband = 0;
Goods[GOOD_CANNON_32].Name = "Cannon_32";
Goods[GOOD_CANNON_32].CannonIdx = CANNON_TYPE_CANNON_LBS32;
Goods[GOOD_CANNON_32].Cost = Cannon[CANNON_TYPE_CANNON_LBS32].Cost;
Goods[GOOD_CANNON_32].Weight = Cannon[CANNON_TYPE_CANNON_LBS32].Weight;
Goods[GOOD_CANNON_32].Units = 1;
Goods[GOOD_CANNON_32].AfraidWater = 0;
Goods[GOOD_CANNON_32].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_32].canbecontraband = 0;
Goods[GOOD_CANNON_32].FireRange = Cannon[CANNON_TYPE_CANNON_LBS32].FireRange;
Goods[GOOD_CANNON_32].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS32].DamageMultiply;
Goods[GOOD_CANNON_32].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS32]));
Goods[GOOD_CANNON_36].Name = "Cannon_36";
Goods[GOOD_CANNON_36].CannonIdx = CANNON_TYPE_CANNON_LBS36;
Goods[GOOD_CANNON_36].Cost = Cannon[CANNON_TYPE_CANNON_LBS36].Cost;
Goods[GOOD_CANNON_36].Weight = Cannon[CANNON_TYPE_CANNON_LBS36].Weight;
Goods[GOOD_CANNON_36].FireRange = Cannon[CANNON_TYPE_CANNON_LBS36].FireRange;
Goods[GOOD_CANNON_36].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS36].DamageMultiply;
Goods[GOOD_CANNON_36].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS36]));
Goods[GOOD_CANNON_36].Units = 1;
Goods[GOOD_CANNON_36].AfraidWater = 0;
Goods[GOOD_CANNON_36].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_36].canbecontraband = 0;
Goods[GOOD_CANNON_42].Name = "Cannon_42";
Goods[GOOD_CANNON_42].CannonIdx = CANNON_TYPE_CANNON_LBS42;
Goods[GOOD_CANNON_42].Cost = Cannon[CANNON_TYPE_CANNON_LBS42].Cost;
Goods[GOOD_CANNON_42].Weight = Cannon[CANNON_TYPE_CANNON_LBS42].Weight;
Goods[GOOD_CANNON_42].Units = 1;
Goods[GOOD_CANNON_42].AfraidWater = 0;
Goods[GOOD_CANNON_42].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_42].canbecontraband = 0;
Goods[GOOD_CANNON_42].FireRange = Cannon[CANNON_TYPE_CANNON_LBS42].FireRange;
Goods[GOOD_CANNON_42].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS42].DamageMultiply;
Goods[GOOD_CANNON_42].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS42]));
Goods[GOOD_CANNON_48].Name = "Cannon_48";
Goods[GOOD_CANNON_48].CannonIdx = CANNON_TYPE_CANNON_LBS48;
Goods[GOOD_CANNON_48].Cost = Cannon[CANNON_TYPE_CANNON_LBS48].Cost;
Goods[GOOD_CANNON_48].Weight = Cannon[CANNON_TYPE_CANNON_LBS48].Weight;
Goods[GOOD_CANNON_48].FireRange = Cannon[CANNON_TYPE_CANNON_LBS48].FireRange;
Goods[GOOD_CANNON_48].DamageMultiply = Cannon[CANNON_TYPE_CANNON_LBS48].DamageMultiply;
Goods[GOOD_CANNON_48].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CANNON_LBS48]));
Goods[GOOD_CANNON_48].Units = 1;
Goods[GOOD_CANNON_48].AfraidWater = 0;
Goods[GOOD_CANNON_48].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CANNON_48].canbecontraband = 0;
Goods[GOOD_CULVERINE_4].Name = "Culverine_4";
Goods[GOOD_CULVERINE_4].CannonIdx = CANNON_TYPE_CULVERINE_LBS4;
Goods[GOOD_CULVERINE_4].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS4].Cost;
Goods[GOOD_CULVERINE_4].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS4].Weight;
Goods[GOOD_CULVERINE_4].Units = 1;
Goods[GOOD_CULVERINE_4].AfraidWater = 0;
Goods[GOOD_CULVERINE_4].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_4].canbecontraband = 0;
Goods[GOOD_CULVERINE_4].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS4].FireRange;
Goods[GOOD_CULVERINE_4].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS4].DamageMultiply;
Goods[GOOD_CULVERINE_4].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS4]));
Goods[GOOD_CULVERINE_8].Name = "Culverine_8";
Goods[GOOD_CULVERINE_8].CannonIdx = CANNON_TYPE_CULVERINE_LBS8;
Goods[GOOD_CULVERINE_8].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS8].Cost;
Goods[GOOD_CULVERINE_8].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS8].Weight;
Goods[GOOD_CULVERINE_8].Units = 1;
Goods[GOOD_CULVERINE_8].AfraidWater = 0;
Goods[GOOD_CULVERINE_8].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_8].canbecontraband = 0;
Goods[GOOD_CULVERINE_8].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS8].FireRange;
Goods[GOOD_CULVERINE_8].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS8].DamageMultiply;
Goods[GOOD_CULVERINE_8].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS8]));
Goods[GOOD_CULVERINE_12].Name = "Culverine_12";
Goods[GOOD_CULVERINE_12].CannonIdx = CANNON_TYPE_CULVERINE_LBS12;
Goods[GOOD_CULVERINE_12].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS12].Cost;
Goods[GOOD_CULVERINE_12].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS12].Weight;
Goods[GOOD_CULVERINE_12].Units = 1;
Goods[GOOD_CULVERINE_12].AfraidWater = 0;
Goods[GOOD_CULVERINE_12].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_12].canbecontraband = 0;
Goods[GOOD_CULVERINE_12].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS12].FireRange;
Goods[GOOD_CULVERINE_12].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS12].DamageMultiply;
Goods[GOOD_CULVERINE_12].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS12]));
Goods[GOOD_CULVERINE_16].Name = "Culverine_16";
Goods[GOOD_CULVERINE_16].CannonIdx = CANNON_TYPE_CULVERINE_LBS16;
Goods[GOOD_CULVERINE_16].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS16].Cost;
Goods[GOOD_CULVERINE_16].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS16].Weight;
Goods[GOOD_CULVERINE_16].Units = 1;
Goods[GOOD_CULVERINE_16].AfraidWater = 0;
Goods[GOOD_CULVERINE_16].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_16].canbecontraband = 0;
Goods[GOOD_CULVERINE_16].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS16].FireRange;
Goods[GOOD_CULVERINE_16].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS16].DamageMultiply;
Goods[GOOD_CULVERINE_16].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS16]));
Goods[GOOD_CULVERINE_20].Name = "Culverine_20";
Goods[GOOD_CULVERINE_20].CannonIdx = CANNON_TYPE_CULVERINE_LBS20;
Goods[GOOD_CULVERINE_20].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS20].Cost;
Goods[GOOD_CULVERINE_20].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS20].Weight;
Goods[GOOD_CULVERINE_20].Units = 1;
Goods[GOOD_CULVERINE_20].AfraidWater = 0;
Goods[GOOD_CULVERINE_20].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_20].canbecontraband = 0;
Goods[GOOD_CULVERINE_20].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS20].FireRange;
Goods[GOOD_CULVERINE_20].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS20].DamageMultiply;
Goods[GOOD_CULVERINE_20].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS20]));
Goods[GOOD_CULVERINE_24].Name = "Culverine_24";
Goods[GOOD_CULVERINE_24].CannonIdx = CANNON_TYPE_CULVERINE_LBS24;
Goods[GOOD_CULVERINE_24].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS24].Cost;
Goods[GOOD_CULVERINE_24].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS24].Weight;
Goods[GOOD_CULVERINE_24].Units = 1;
Goods[GOOD_CULVERINE_24].AfraidWater = 0;
Goods[GOOD_CULVERINE_24].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_24].canbecontraband = 0;
Goods[GOOD_CULVERINE_24].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS24].FireRange;
Goods[GOOD_CULVERINE_24].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS24].DamageMultiply;
Goods[GOOD_CULVERINE_24].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS24]));
Goods[GOOD_CULVERINE_28].Name = "Culverine_28";
Goods[GOOD_CULVERINE_28].CannonIdx = CANNON_TYPE_CULVERINE_LBS28;
Goods[GOOD_CULVERINE_28].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS28].Cost;
Goods[GOOD_CULVERINE_28].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS28].Weight;
Goods[GOOD_CULVERINE_28].Units = 1;
Goods[GOOD_CULVERINE_28].AfraidWater = 0;
Goods[GOOD_CULVERINE_28].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_28].canbecontraband = 0;
Goods[GOOD_CULVERINE_28].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS28].FireRange;
Goods[GOOD_CULVERINE_28].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS28].DamageMultiply;
Goods[GOOD_CULVERINE_28].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS28]));
Goods[GOOD_CULVERINE_32].Name = "Culverine_32";
Goods[GOOD_CULVERINE_32].CannonIdx = CANNON_TYPE_CULVERINE_LBS32;
Goods[GOOD_CULVERINE_32].Cost = Cannon[CANNON_TYPE_CULVERINE_LBS32].Cost;
Goods[GOOD_CULVERINE_32].Weight = Cannon[CANNON_TYPE_CULVERINE_LBS32].Weight;
Goods[GOOD_CULVERINE_32].Units = 1;
Goods[GOOD_CULVERINE_32].AfraidWater = 0;
Goods[GOOD_CULVERINE_32].type = TRADE_TYPE_CANNONS;
Goods[GOOD_CULVERINE_32].canbecontraband = 0;
Goods[GOOD_CULVERINE_32].FireRange = Cannon[CANNON_TYPE_CULVERINE_LBS32].FireRange;
Goods[GOOD_CULVERINE_32].DamageMultiply = Cannon[CANNON_TYPE_CULVERINE_LBS32].DamageMultiply;
Goods[GOOD_CULVERINE_32].ReloadTime = sti(GetCannonReloadTime(&Cannon[CANNON_TYPE_CULVERINE_LBS32]));
}