Traveller: Mongoose 2nd Ed

Show off your RPG maps, campaigns, and tokens. Share your gaming experiences and stories under General Discussion and save this forum for things you've created that may help others run their own games. Use the subforums when appropriate.

Moderators: dorpond, trevor, Azhrei, Gamerdude

Post Reply
allanimal
Kobold
Posts: 6
Joined: Thu Feb 21, 2013 12:00 am

Traveller: Mongoose 2nd Ed

Post by allanimal »

Does anyone use MapTool for Mongoose Traveller 2nd ed?
I do, and I'm working on some very basic macros for the game.
So far I have a skill check macro, that I have shared below.
It requires that the stats & skills are included in the token properties.
Stats need an entry for "stat" and "statCurrent" - such as "Endurance" and "EnduranceCurrent".
Skills should default at -3, which I have setup in my campaign properties. I'd gladly share that as well if anyone is interested, though it is quite basic at the moment.
In addition to the player tokens, I am working on star system token properties as well, so the players can easily reference the characteristics of the star systems they have visited (and others they happen to have information on). That's proving to require much more work, as my scripts to generate the star map from my data files are not working at the moment...

I hope this helps someone out there. I'm sure there's someone else playing traveller with MapTool.

Code: Select all

[H: skillList = "Admin , Advocate , Animals [Handling] , Animals [Veterinary] , Animals [Training] , Art [Performer] , Art [Holography] , Art [Instrument] , Art [Visual Media] , Art [Write] , Astrogation , Athletics [Dexterity] , Athletics [Endurance] , Athletics [Strength] , Broker , Carouse , Deception , Diplomat , Drive [Hovercraft] , Drive [Mole] , Drive [Track] , Drive [Walker] , Drive [Wheel] , Electronics [Comms] , Electronics [Computers] , Electronics [Remote Ops] , Electronics [Sensors] , Engineer [J-drive] , Engineer [Life Support] , Engineer [M-drive] , Engineer [Power] , Explosives , Flyer [Airship] , Flyer [Grav] , Flyer [Ornithopter] , Flyer [Rotor] , Flyer [Wing] , Gambler , Gun Combat [Archaic] , Gun Combat [Energy] , Gun Combat [Slug] , Gunner [Capital] , Gunner [Ortillery] , Gunner [Screen] , Gunner [Turret] , Heavy Weapons [Artillery] , Heavy Weapons [Man Portable] , Heavy Weapons [Vehicle] , Investigate , Jack-of-All-Trades , Language [Anglic] , Language [Aslan] , Language [Oynprith] , Language [Vargr] , Language [Vilani] , Language [Zdetl] , Leadership , Mechanic , Medic , Melee [Blade] , Melee [Bludgeon] , Melee [Natural] , Melee [Unarmed] , Navigation , Persuade , Pilot [Capital Ships] , Pilot [Small Craft] , Pilot [Spacecraft] , Profession [Belter] , Profession [Biologicals] , Profession [Civil Engineering] , Profession [Construction] , Profession [Hydroponics] , Profession [Merchant] , Profession [Polymers] , Recon , Science [Archaeology] , Science [Astronomy] , Science [Biology] , Science [Chemistry] , Science [Cosmology] , Science [Cybernetics] , Science [Economics] , Science [Genetics] , Science [History] , Science [Linguistics] , Science [Philosophy] , Science [Physics] , Science [Planetology] , Science [Psionicology] , Science [Psychology] , Science [Robotics] , Science [Sophontology] , Science [Xenology] , Seafarer [Ocean Ships] , Seafarer [Personal] , Seafarer [Sail] , Seafarer [Submarine] , Stealth , Steward , Streetwise , Survival , Tactics [Military] , Tactics [Naval] , Vacc Suit , Psionic [Awareness] , Psionic [Clairvoyance] , Psionic [Telekinesis] , Psionic [Telepathy] , Psionic [Teleportation]"]
[H: statList = "Strength,Dexterity,Endurance,Intelligence,Education,Social,Psionic"]
[H: rollTypeList = "Normal,Boon,Bane"]
[H: TimingList = "Seconds,Combat Rounds,Tens of seconds,Minutes,Tens of minutes,Hours,Four hours,Tens of hours,Days"]
[H: DifficultyList = "Formidable (14+), Very Difficult (12+), Difficult (10+), Average (8+), Routine (6+), Easy (4+), Simple (2+)"]
[H: abort(input(
   strformat("input.rolltype|%{rollTypeList}|Choose Roll Type|RADIO|ORIENT=H SELECT=0"),
   strformat("input.skill|%{skillList}|Pick a skill|LIST|VALUE=STRING SELECT=40"),
   strformat("input.stat|%{statList}|Pick a stat|RADIO|VALUE=STRING SELECT=1"),
   strformat("input.difficulty|%{DifficultyList}|Pick the Difficulty|RADIO|ORIENT=V SELECT=3"),
   "input.mod|0|Additional Modifier|TEXT",
   strformat("input.DefaultTiming|%{TimingList}|Enter Defualt Timeframe|RADIO|ORIENT=H SELECT=0"),
   "input.TimeFrameShift|0|Enter Timeframe Steps Shift (- for faster, + for slower)|TEXT"
))]
[H: statValue = getProperty(input.stat)]

[H,switch(input.rolltype),code:
case 0: {
	[H: RolltypeText = "Normal Roll -"]
	[H: dieroll = 2d6]
	[H: BoonBaneExtraText = ""]
};
case 1: {
	[H: RolltypeText = "Boon Roll -"]
	[H: dieroll1 = 1d6]
	[H: dieroll2 = 1d6]
	[H: dieroll3 = 1d6]
	[H: dieroll = dieroll1+dieroll2]
	[H, if(dieroll1 < dieroll2 && dieroll1 < dieroll3) : dieroll = dieroll2+dieroll3]
	[H, if(dieroll2 < dieroll1 && dieroll2 < dieroll3) : dieroll = dieroll1+dieroll3]
	[H: BoonBaneExtraText = " || Boon Roll Dice Breakdown: " + dieroll1 + ", " + dieroll2 + ", " + dieroll3]
};
case 2: {
	[H: RolltypeText = "Bane Roll -"]
	[H: dieroll1 = 1d6]
	[H: dieroll2 = 1d6]
	[H: dieroll3 = 1d6]
	[H: dieroll = dieroll1+dieroll2]
	[H, if(dieroll1 > dieroll2 && dieroll1 > dieroll3) : dieroll = dieroll2+dieroll3]
	[H, if(dieroll2 > dieroll1 && dieroll2 > dieroll3) : dieroll = dieroll1+dieroll3]
	[H: BoonBaneExtraText = " || Bane Roll Dice Breakdown: " + dieroll1 + ", " + dieroll2 + ", " + dieroll3]
};
]

[H: skillDM = getProperty(input.skill)]
[H: CurrentStat = getProperty(input.stat+"Current")]
[H: statDM = floor((CurrentStat-6)/3)]
[H, if(CurrentStat > 0): statDM = floor((CurrentStat-6)/3) ; statDM = -3]

[H: finaltimeframe = input.DefaultTiming + input.TimeFrameShift]
<!-- deal with case where going out of bounds -->
[H, if(finaltimeframe < 0) : finaltimeframe = 0]
[H, if(finaltimeframe > 8) : finaltimeframe = 8]

[H: timingDM = 2*(finaltimeframe-input.DefaultTiming)]

[h,switch(finaltimeframe),code:
case 0: {	
	[h: timeRollMultiplier = 1]
	[h: timeFrameText = " Seconds"]
};
case 1: {	
	[h: timeRollMultiplier = 1]
	[h: timeFrameText = " Combat Rounds"]
};
case 2: {	
	[h: timeRollMultiplier = 10]
	[h: timeFrameText = " Seconds"]
};
case 3: {	
	[h: timeRollMultiplier = 1]
	[h: timeFrameText = " Minutes"]
};
case 4: {	
	[h: timeRollMultiplier = 10]
	[h: timeFrameText = " Minutes"]
};
case 5: {	
	[h: timeRollMultiplier = 1]
	[h: timeFrameText = " Hours"]
};
case 6: {	
	[h: timeRollMultiplier = 4]
	[h: timeFrameText = " Hours"]
};
case 7: {	
	[h: timeRollMultiplier = 10]
	[h: timeFrameText = " Hours"]
};
case 8: {	
	[h: timeRollMultiplier = 1]
	[h: timeFrameText = " Days"]
};
]
[H: timeroll = 1d6*timeRollMultiplier]


[h,switch(input.difficulty),code:
case 0: {	
	[h: targetRoll = 14]
	[h: difficultyText = " Formidable "]
};
case 1: {	
	[h: targetRoll = 12]
	[h: difficultyText = " Very Difficult "]
};
case 2: {	
	[h: targetRoll = 10]
	[h: difficultyText = " Difficult "]
};
case 3: {	
	[h: targetRoll = 8]
	[h: difficultyText = " Average "]
};
case 4: {	
	[h: targetRoll = 6]
	[h: difficultyText = " Routine "]
};
case 5: {	
	[h: targetRoll = 4]
	[h: difficultyText = " Easy "]
};
case 6: {	
	[h: targetRoll = 2]
	[h: difficultyText = " Simple "]
};
]

[H: sCheckTotal = dieroll+skillDM+statDM+timingDM+input.mod]
[H: effect = sCheckTotal - targetRoll]


[H: sCheck = "<b>Total: " + sCheckTotal + "</b> || <b>Effect: " + effect + "</b> || Die Roll: " + dieroll + ", Skill DM: " + skillDM + ", Stat DM: " + statDM + ", Time Shift DM: " + timingDM + ", Misc DMs: " + input.mod + " || Target: " + targetRoll + " || Time Required: " + timeroll + timeFrameText + BoonBaneExtraText]

[H: output = "<b>"+ token.name + "</b> -- <i> " + RolltypeText + difficultyText + input.skill + " (" + input.stat + ") Check</i>" + ":  " + sCheck]

[R, S, G: output ]

allanimal
Kobold
Posts: 6
Joined: Thu Feb 21, 2013 12:00 am

Re: Traveller: Mongoose 2nd Ed

Post by allanimal »

I found a bug that comes up on boon/bane rolls.
Actually a player found it - rolled a boon and got 1,1,2 - due to the bug, it calculated 2 instead of the proper 3.
Even without the bug, that horrible roll ruined that character's day... :D

anyway... Here's the fix.
Swap out case 1 & 2 of this switch

Code: Select all

[H,switch(input.rolltype),code: ...
with:

Code: Select all

case 1: {
	[H: RolltypeText = "Boon Roll -"]
	[H: dieroll1 = 1d6]
	[H: dieroll2 = 1d6]
	[H: dieroll3 = 1d6]
	[H: dieroll = dieroll1+dieroll2]
	[H, if(dieroll1 <= dieroll2 && dieroll1 <= dieroll3) : dieroll = dieroll2+dieroll3]
	[H, if(dieroll2 <= dieroll1 && dieroll2 <= dieroll3) : dieroll = dieroll1+dieroll3]
	[H: BoonBaneExtraText = " || Boon Roll Dice Breakdown: " + dieroll1 + ", " + dieroll2 + ", " + dieroll3]
};
case 2: {
	[H: RolltypeText = "Bane Roll -"]
	[H: dieroll1 = 1d6]
	[H: dieroll2 = 1d6]
	[H: dieroll3 = 1d6]
	[H: dieroll = dieroll1+dieroll2]
	[H, if(dieroll1 >= dieroll2 && dieroll1 >= dieroll3) : dieroll = dieroll2+dieroll3]
	[H, if(dieroll2 >= dieroll1 && dieroll2 >= dieroll3) : dieroll = dieroll1+dieroll3]
	[H: BoonBaneExtraText = " || Bane Roll Dice Breakdown: " + dieroll1 + ", " + dieroll2 + ", " + dieroll3]
};
]

NoStick
Kobold
Posts: 1
Joined: Sat Aug 06, 2016 2:41 pm

Re: Traveller: Mongoose 2nd Ed

Post by NoStick »

Good job! Looking forward to more.

I am new to the RPToolset, but am willing to help out with Traveller related stuff!

Post Reply

Return to “User Creations”