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

Cursed Ship Decks and Towns

With this idea of candles, is it possible to show many houses burning ? I could use this effect for the assassin main quest <img src="style_emoticons/<#EMO_DIR#>/ohmy.gif" style="vertical-align:middle" emoid=":eek:" border="0" alt="ohmy.gif" />

Edit : I didn't see the reply in the previous post <img src="style_emoticons/<#EMO_DIR#>/boom.gif" style="vertical-align:middle" emoid=":boom" border="0" alt="boom.gif" />
 
You don't need candles for burning houses. You don't need seperate locators either. You could just create some particle systems.
<a href="http://forum.piratesahoy.net//index.php?s=&showtopic=13244&view=findpost&p=320474" target="_blank">See here</a> for an example of particle systems at sea; should work on land too.
 
and there is enough fire with this system ? <img src="style_emoticons/<#EMO_DIR#>/unsure.gif" style="vertical-align:middle" emoid=":?" border="0" alt="unsure.gif" />
 
Maybe not with just one particle system, but you can add as many of them as you want.
The only thing I wonder about is the time they stay active. The fires may go out after a while, which you probably don't want.
Still, a bit of quest delay work should be able to solve that too. <img src="style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" />

Edit: Another thought - we could look into the way it's handled on some of the boarding decks. There's always something ablaze on some of those.
 
I want much fire and they can stay active. <img src="style_emoticons/<#EMO_DIR#>/unsure.gif" style="vertical-align:middle" emoid=":?" border="0" alt="unsure.gif" />
I agree about the fire in some boarding decks : it could be a solution.

The idea is to have later in the main quest an entire village burning due to a Spanish attack.

Can you check that over the next days ?
 
that would surely depend on high system specs...alot of fire and particles will have a large drain on the CPU. Its a nice idea though...just that loads of particles cause lagg in every game...
 
It could indeed cause a bit of lag, but you only get bad performance hits if you go <i>waaay</i> overboard with the amount of particle systems.
If you recall the boarding decks that have the fire, there's no real noticeable lag on those, is there?

I'll see what I can do for you for the fire. In any case, I'll check how it's handled for those boarding decks.
It might be a simple thing like just adding some "fire" locators to the location file. <img src="style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" />
 
Thanks for confirming, Thomas. It should then be pretty simple to add those for a burning town effect. <img src="style_emoticons/<#EMO_DIR#>/w00t.gif" style="vertical-align:middle" emoid=":woot" border="0" alt="w00t.gif" />
 
I totally forgot that adding locators through code on-the-fly is TOTALLY possible. Maximues wrote the WriteLocatorGlobal function for that:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void WriteLocatorGlobal(string locationID, string locatorGroup, string locatorName, string locatorText, int charIndex, float posX, float posY, float posZ, bool bTempLocator)
{
    if (FindLocation(locationID) < 0) return; // KK

    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).tmpLocator = bTempLocator;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).corpseIdx = charIndex;
    if(sti(charIndex)<0) { wholeWorld.(locationID).locators.(locatorGroup).(locatorName).corpseIdx = -1; }
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).text = locatorText;

    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).x = posX;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).y = posY;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).z = posZ;

    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vx.x = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vx.y = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vx.z = 0.0;

    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vy.x = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vy.y = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vy.z = 0.0;

    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vz.x = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vz.y = 0.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).vz.z = 0.0;

    wholeWorld.(locationID).locators_radius.(locatorGroup).(locatorName) = 2.0;
    wholeWorld.(locationID).locators.(locatorGroup).(locatorName).radius = 1.5;

    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).corpseIdx = charIndex;
    if(sti(charIndex)<0) { locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).corpseIdx = -1; }
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).tmpLocator = bTempLocator;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).text = locatorText;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).x = posX;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).y = posY;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).z = posZ;

    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vx.x = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vx.y = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vx.z = 0.0;

    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vy.x = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vy.y = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vy.z = 0.0;

    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vz.x = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vz.y = 0.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).vz.z = 0.0;

    locations[FindLocation(locationID)].locators_radius.(locatorGroup).(locatorName) = 2.0;
    locations[FindLocation(locationID)].locators.(locatorGroup).(locatorName).radius = 1.5;
}<!--c2--></div><!--ec2-->
See here it's use for adding camp fires to QC port and Guadeloupe:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void AddNewLocators()
{
    WriteLocatorGlobal("QC_port", "camp_fire", "campfire", "", -1, 1.6411, 2.2977, -5.4587, false);
    Locations[FindLocation("QC_port")].models.night.lights.camp_fire = "heater";
    Locations[FindLocation("QC_port")].locators_radius.camp_fire = 3.0;

    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire1", "", -1, 20.4638252, 4.1738091, -3.6956100, false);
    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire2", "", -1, 20.4540234, 4.2214670, 9.8807011, false);
    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire3", "", -1, 24.2642326, 6.3004465, 9.8717833, false);
    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire4", "", -1, 24.2460709, 6.3005228, 5.9918156, false);
    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire5", "", -1, 24.2430992, 6.3004966, 0.2543197, false);
    WriteLocatorGlobal("Guadeloupe_Port", "camp_fire", "campfire6", "", -1, 24.2746677, 6.3004422, -3.5939960, false);
    Locations[FindLocation("Guadeloupe_Port")].models.night.lights.camp_fire = "heater";
    Locations[FindLocation("Guadeloupe_Port")].locators_radius.camp_fire = 4.0;
}<!--c2--></div><!--ec2-->
And, more relevant, it's of course also used for corpse looting!<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->WriteLocatorGlobal(chr.location, "box", newLocName, TranslateString("","body_of_"+chr.sex)+" "+GetMySimpleName(chr), sti(chr.index), stf(chr.deathx), stf(chr.deathy), stf(chr.deathz), true);<!--c2--></div><!--ec2-->
I hand't realized it before, but that provides us with a wealth of new options! <img src="style_emoticons/<#EMO_DIR#>/w00t.gif" style="vertical-align:middle" emoid=":woot" border="0" alt="w00t.gif" />
 
Thanks Pieter, I need to test this code. <img src="style_emoticons/<#EMO_DIR#>/cheers.gif" style="vertical-align:middle" emoid=":cheers" border="0" alt="cheers.gif" />
 
Would anybody be willing in any way to make a Flying Dutchman deck location?
 
It does. A Flying Dutchman deck, even just a retexture, would be quite welcome.
Deep One used to be fairly good at cursed retextures... :rolleyes:
 
Found this while adding in the new subforums and thought it was worth a BUMP!

What do you think: You take a little rest from from your quest coding, take this location (first image, mine)
http://forum.piratesahoy.net//porting-weapons-t15509.html/page__view__findpost__p__359986
and code this idea:
http://forum.piratesahoy.net//cursed-ship-decks-and-towns-t13017.html/page__view__findpost__p__310998

In that time I'll model ship's inside dungeon...

After that we'll think about duchmens decks... OK?
 
My internet is slow atm and wont speed up to either tonight at midnight or tomorrow at midnight, I can take a look then :onya
 
Isn't there a mine town location in one of the Russian games/mods? Can use that one. :cheeky
 
SD, sorry I havnt been able to take a look yet, I started uni on thursday and I have been at a mates place since thursday and havnt had much time :(
 
Back
Top