• 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!

Baltimore Steam Propulsion Laboratory

Kazen Dukzom

Landlubber
Is it possible for a very earlier version of a Steam ship to be created and work in the game? I am not asking you modders out there to make it but I am just wondering if it is possible.
 
We don't know, but we've got some vague ideas of things we can try to make it work.
It's something I'd definitly like to see and we've actually been discussing the past couple of weeks.
 
If someone would add a cylinder and little deckhouse to the top of a frigate I'll gladly call her an experimental screw frigate (with lots of black smoke if you please), or else add the aforesaid and paddlewheels for the other type. Easy, non?
 
In my mailbox today were some plans of a paddlewheel steamer. It's a relatively small ship, compared to the great vessels we're working on here on a regular basis.

But first I propose we attempt a modification of an existing ship to accomodate steam propulsion; the first steam engines were nothing but power-assist devices to compliment wind propulsion. We just need to jury rig a funnel and some steampunk bits to make it look the part. If a paddlewheel is a challenge to model, then just do away with it and we'll imagine is a screw-powered vessel.
 
If this was added into the game, maybe coal could be added to the store. You would have to buy coal in order to run the steam ship but if you run out of coal you could still use your sails.
 
I'd love to see this ship in game

http://en.wikipedia.org/wiki/French_ship_Napol%C3%A9on_%281850%29

Oh dear, the name! :3

But look at that thing go - 14 knots, 5000 tons... way more fun than a 8 knot 1st rate ship!
 
I'd love to see this ship in game

http://en.wikipedia....A9on_%281850%29

Oh dear, the name! :3

But look at that thing go - 14 knots, 5000 tons... way more fun than a 8 knot 1st rate ship!


If someone could find the plans, I might make it my next project
rolleyes.gif
 
She looks quite like the Constitution, no? Would just need some stacks added. :rolleyes:
 
No need plans. Constitution steampunk version - the heavy frigate design was used by the French as well, anyway!
 
Yes my sentiments exactly! Modern modular construction technique!

I did suggest a razeed frigate originating from the HMS Bellona... two ships with one project. Everyone's silent so they must be shocked at the very idea :3

But if done - like historical accounts would suggest, these methods gave very powerful frigates that sailed much better than the "original" which was too weak to stand in the line of battle anyway.
 
If this project is to be done, I agree with the coal idea ;)

Can set it up just like the FOOD, but I wonder if when it runs out we can get the ship to stop :shrug
 
For now, we're wondering if we can get the ship to move forward regardless of wind strength. :wacko:
 
Welcome to the future, gentlemen!

We are also able to move ships at any speed independent of wind direction and strength.

For now, we're wondering if we can get the ship to move forward regardless of wind strength. :wacko:

*pouts* Time to rename this thread!
 

Attachments

  • S1.jpg
    S1.jpg
    29.7 KB · Views: 387
I have been able to make this code a part of the secondly update done for all ships in the game,
instead of the Sea AI update every minute. I think this should give better results.
For one, the smoke thickness based on "engine power" setting now updates immediately.
In PROGRAM\SEA_AI\AIShip.c:
Code:
	// PB: Steam Ships -->
else
{
if(!CheckAttribute(rCharacter,"LastSailState")) rCharacter.LastSailState = makeint(fSailState/10 * 2);
}

if(SteamShip(rCharacter))
{
float fX, fY, fZ;
fX = 0; fY = 0; fZ = 0;
if(CheckAttribute(rCharacter,"Ship.pos.x")) fX=stf(rCharacter.Ship.pos.x);
if(CheckAttribute(rCharacter,"Ship.pos.y")) fY=stf(rCharacter.Ship.pos.y);
if(CheckAttribute(rCharacter,"Ship.pos.z")) fZ=stf(rCharacter.Ship.pos.z);
if(fX != 0 && fY != 0 && fZ != 0)
{
switch(sti(rCharacter.LastSailState))
{
case 0: StackSteam(rCharacter, 1); break;
case 1: StackSteam(rCharacter, 3); break;
case 2: StackSteam(rCharacter, 6); break;
}
}
}
// PB: Steam Ships <--
The new StackSteam function generates a certain number of smoke puffs in one second.

Note to Snow White Sorrow: All your previous values had to be changed to per second.
If you want, you're welcome to change the new values if you feel they're not quite right.

And if anyone wants to know how it's really done, these two new functions have been added to PROGRAM\NK.c:
Code:
void StackSteam(aref rCharacter, int puffs_per_second)
// Character and number of tentacles
{
if (!bSeaActive) return;
int delay = 0;
for (int i=0; i < puffs_per_second; i++)
{
PostEvent("CreateStackSteam", delay, "i", rCharacter);
delay = delay + 1000/puffs_per_second;
}
}

#event_handler("CreateStackSteam", "StackSteamPuff");
void StackSteamPuff()
{
if (!bSeaActive) return;
aref rCharacter = GetEventData();

float fX, fY, fZ, fAY;
fX = 0; fY = 0; fZ = 0;
if(CheckAttribute(rCharacter,"Ship.pos.x")) fX=stf(rCharacter.Ship.pos.x);
else return;
if(CheckAttribute(rCharacter,"Ship.pos.y")) fY=stf(rCharacter.Ship.pos.y);
else return;
if(CheckAttribute(rCharacter,"Ship.pos.z")) fZ=stf(rCharacter.Ship.pos.z);
else return;
if(CheckAttribute(rCharacter,"Ship.Ang.y")) fAY=stf(rCharacter.Ship.Ang.y);
else return;

float gX, gY, gZ;
gX = 0; gY = 0; gZ = 0;
gX=GetCharacterShipValue(rCharacter, "stack1X");
gY=GetCharacterShipValue(rCharacter, "stack1Y");
gZ=GetCharacterShipValue(rCharacter, "stack1Z");
CreateParticleSystemX("steamer_smoke",fX + gX*cos(fAY) + gZ*sin(fAY), fY + gY, fZ + gX*sin(fAY) + gZ*cos(fAY), 6.0, 4.0, 0.0, 0);

if(HasCharacterShipAttribute(rCharacter, "stack2X") || HasCharacterShipAttribute(rCharacter, "stack2Y") || HasCharacterShipAttribute(rCharacter, "stack2Z"))
{
gX = 0; gY = 0; gZ = 0;
gX=GetCharacterShipValue(rCharacter, "stack2X");
gY=GetCharacterShipValue(rCharacter, "stack2Y");
gZ=GetCharacterShipValue(rCharacter, "stack2Z");
CreateParticleSystemX("steamer_smoke",fX + gX*cos(fAY) + gZ*sin(fAY), fY + gY, fZ + gX*sin(fAY) + gZ*cos(fAY), 6.0, 4.0, 0.0, 0);
}
}
In my previous edition (unreleased), the x,y,z of the smoke emitting spot would rotate in a wrong kind of way,
but now the smoke emissions really remain attached to the ship, also if you move the spot around with the ships_init values.
Once we've got an actual steam powered ship model, we will have to set the x,y,z values so the smoke emits from the correct spot.
 
Back
Top