Author Topic: Ship-to-Ship Battles  (Read 483 times)

Legacy_Wids

  • Jr. Member
  • **
  • Posts: 55
  • Karma: +0/-0
Ship-to-Ship Battles
« on: January 22, 2012, 09:35:11 am »


               Maybe some of you have had experience with this sort of action before, so I thought I might do well to ask here.  Or maybe I should have asked in Toolset instead of Scripting.  These questions are maybe half-scripting-related and half-toolset-related, after all.

So I'm angling to submit some player-created content to the Pirate Isles of the Forgotten Realms server (my roleplay server of choice).  There are oodles of islands in the Pirate Isles archipelago, and curiously enough, no one has created the Dragonisle for the server yet.  So I thought I might try my hand at it.

For those not entirely savvy about the Forgotten Realms and the Sea of Fallen Stars, the Dragonisle is home to Immurk's Hold, which is basically one big pirate haven with over 4,000 people (mostly pirates, smugglers and other seafaring scumbags, of course) and with over 50 ships calling the port home.  Once you're in the port's waters, you're okay, as long as you don't pick any fights...pirate's code and all that jazz.  It's when you're out on the deep sea around the Dragonisle that you're likely to run into trouble.

The primary island in the server's setting is nearby Prespur, and Prespur's two port towns are Palaggar (outpost of Cormyr) and Uarhold (outpost of Sembia).  Uarhold has had trouble with merrow effectively blockading their port, so almost all of the ships leaving Prespur depart from Palaggar.  Alternately, nearby Ilthan is a cyclops-infested island with a cove frequented by pirates and smugglers, and travellers can buy passage out of Ilthan as well.

Both Palaggar and Ilthan have sea captains who will agree to take you to various ports and islands through the course of conversation.  Here be questions:

1)  If a chat option were to take characters to the Dragonisle (after deducting the captain's fee), is it possible for the chat option's script to roll a "random encounter" die and, if the wrong number comes up, divert the character to an alternate area for a pirate raid with a ship-to-ship battle instead?

2)  If several characters are going to the Dragonisle together as a party, would it be possible to send all of them to the ship battle if one character rolls his or her way into it, rather than split the party up if some of them ace the encounter check (and continue on their way to Immurk's Hold unimpeded) and the rest flub it?  We're assuming that they're all booking passage on the same ship, after all.


As for the ship-to-ship battle itself, there is a tileset option or two where you have, for example, a merchant ship and a weathered ship joined with a gangplank...a passable option for representing a boarding attempt at sea.  But there may be other means of getting onto the other ship and teaching the scurvy dogs a lesson: jumping from gunwale to gunwale or from deck to deck, or cutting a stay or a shroud (or some other line in your ship's rigging) and swinging across.  If there are multiple ships in the pirate fleet, these means may be the only ways of getting to them all.

(Unfortunately, the tileset terrain and placeables don't seem to have any way to climb a mast and teeter across a spar to leap onto the other ship's spars and board her that way.  So apparently that option's out.)

Huzzah, more questions:

3)  Ship-to-ship battles in tabletop D&D are easy to manage, with such useful Skills as Balance, Climb, Jump, Use Rope and (provided you're not one of those types who's dumb enough to wear full plate armor at sea) Swim.  Bioware didn't include these Skills in Neverwinter Nights, so we have to come up with suitable substitutes:

3a)  For jumping across a gap and landing on the other ship, the Jump skill.  Jump is Strength-based, with a DC dependent on the height or distance to be covered by the jump.  For want of a Jump skill in NWN, will transition blocks which check Tumble be good enough (even though Tumble is Dexterity-based)?  Or would a simple Strength check suffice?

3b)  For swinging on the rigging, I'm not sure; either Climb (for scurrying up the mast, pulling up a halyard and swinging across) or Use Rope (for unknotting a shroud and swinging from the deck) would normally work.  We don't have Climb or Use Rope, Climb is Strength-based and Use Rope is Dexterity-based.  I'm not sure what NWN skill could substitute for either; Disable Trap is Intelligence-based, and Set Trap doesn't make much sense.  Straight Strength or Dexterity checks, then?

3c)  If the check for jumping or swinging fails, it's time to take a salty bath!  A character who falls into the water could make a follow-up Swim check...say, to paddle over to the other ship and climb a warp or a fallen mooring line to get aboard.  Swim is Strength-based, and I have no idea what Skill in NWN can provide a suitable substitute.  Pure Strength check, then?

3d)  How would I get the Swim check to first make sure that the character is unencumbered before allowing the character a chance to swim across to the other ship?  An Encumbered character couldn't do much more than tread water, and a Heavily Encumbered character would sink like a rock.  But, given the tileset limitations--and considering that most characters on the Pirate Isles server have Rings of Water Breathing--I suppose we can mercifully put Encumbered and Heavily Encumbered characters back on their originating ship, wherever they can climb back up.  Tempting though it may be to simply drown the heavily packed fools and let Umberlee have 'em like they deserve, that might be considered rude.

3e)  What's the best way to make a placeable (such as a hanging rope) clickable and useable--with a scripted dice roll to check success or failure--without triggering a conversation?  Conversations can't start in the middle of combat, and you need to be able to get onto the other ship even if a band of pirates are throwing darts at you.

4)   When the pirates are all dead and the fighting's all done, it's time to continue on your merry way.  Clicking on your ship's rudder wheel should be enough to send your character to the Dragonisle, Palaggar or Ilthan, but how can we get the ship's wheel to first check and make sure that all of the pirates are dead?

5)  Spiteful pirates facing defeat might set their own ship ablaze to prevent the victors from capturing it or plundering its hold.  What would be a good way to handle this?

6)  Wouldn't it be nice if the ships in Neverwinter Nights could actually move?  'Posted


That's all the questions I can think up for now.  If I think of any more, I'll be sure to ask them.  'Posted

Thanks in advance.

(And what in blazes does all of this rum-swillin' nautical terminology mean?  We've discussed all that rot here and there, too.  'Posted )
               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Ship-to-Ship Battles
« Reply #1 on: January 22, 2012, 02:19:30 pm »


               This might get you started with the skill checks:

 Have you seen Old Man Whistler's script that handles skills not included?

You could use something like that or introduce new custom content (skills) to your server.
               
               

               


                     Modifié par henesua, 22 janvier 2012 - 02:19 .
                     
                  


            

Legacy_Wids

  • Jr. Member
  • **
  • Posts: 55
  • Karma: +0/-0
Ship-to-Ship Battles
« Reply #2 on: January 27, 2012, 10:59:14 am »


               Thank you.  '<img'>
               
               

               
            

Legacy_GhostOfGod

  • Hero Member
  • *****
  • Posts: 1490
  • Karma: +0/-0
Ship-to-Ship Battles
« Reply #3 on: January 27, 2012, 09:28:16 pm »


               1.) Is easily doable. But there is just one hickup. If this is a multiplayer server where several people/groups could end up in the same area/ship battle you will run into some issues. So some different options to think about.
-Having multiple areas that are exactly the same. If one is in use, jump group to the next area.
-Just let group 2 show up in the same area. They could help out.
-NWNX I believe has the ability to create an area on the fly. It just copies a particular area. So if NWNX is an option you may want to go with that. I don't have any experience with this method but it might be an option for you.

2.) Also very doable. But again there are some things to take into consideration.
-Does just everyone standing on the ship get jumped to the ship battle after one person talks to the NPC (and rolls the battle)?
-Would it just be party members that get jumped to the battle?
-What if party member 1 makes it to the isle but then party member 2 talks to NPC and ends up in the battle?
-Would it only be party members standing on the ship, in the same area or a certain distance from other members?

I'd say the easiest solution for this would just check the "No Interrupt" box on the NPC so that only one person can talk to him at a time. Then only the party of whoever happens to be talking to said NPC would be considered. If the one person talking to the NPC makes his role, the whole party gets jumped to a safe happy location. If the one person fails, the whole party jumps to ship battle. And I'd do a check to make sure these party members were at least in the same area. Even better though, standing on the ship. But that's just me.

3 abcd.) What henesua posted. : )
e. - Place your placeable. Check it as "useable" and probably "plot" so no one can destroy it (unless you want it to be destroyable). Put script in the placeable's OnUsed event that does the die roll/checks and then whatever else is supposed to happen save or fail.

4.) Can also be done. Could be done some different ways though depending on how you do things.
-If the amount of pirates that spawn changes based on how many players are in the party...
-You discussed the possibility of the pirates destroying there own ship...
-The amount of pirates is always a constant number...

But basically you will be using some variables. Say you have it set up to spawn 8 npc pirates at the beginning of the battle. So you could set an int variable "pirates_to_kill" to 8 on the area. Then in the OnDeath script for the pirates, you have it set another int variable on the area, "pirates_killed", Then do a check when you use the rudder wheel to make sure these variable match. If so then all the pirates are dead and you can jump the party to the next area. And of course there are those weird occasions when something could go wrong so it might be a good idea to have some sort of fail safe to still get off the ship and back to land. Maybe each party member could abandon ship and swim for the nearest shore. It'd be fun to have this option always available anyway, for those party members who just want to leave all their friends to fight. haha. Or the fight is too tough and they want to live to see another day.

5.) Taking #4 into consideration you'd have to make sure that if the pirates burned their own ship and that was the end of the battle, that those variables mentioned would match in the same manner so that the rudder wheel would know it was ok to jump the party to next area. Or you could set a completely different variable on the area if the pirates decided to burn their ship. Then the rudder wheel script could check for either the amount of pirates killed or the burned ship variable. Also after using the rudder wheel the script would need to reset the variables so the next player/group won't have issues.
As far as actually handling when the pirates would decide to burn their own ship...maybe the pirates OnDamaged script? Random roll. Say a d20 and it rolls 20, that pirates decides "F" this, and starts the fire which could then execute another script that does whatever, spawns a whole bunch of flame placeables, all the pirates die, you and party members take fire damage while standing on the pirate ship, etc...

6.) Yeah. Wouldn't that be nice.

On a side note I know that at least on one of the ships, the crows nest is "walkable". You just have to jump to an object on it. Could be done using a rope or whatever.

If you decide how you want to put it all together and need help with specific scripts, feel free to ask of course.

Good luck.
               
               

               


                     Modifié par GhostOfGod, 27 janvier 2012 - 10:15 .