Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Poll

See Episode 11, Which contract should we take?

Contract 1, FedCom Extraction Raid
- 4 (100%)
Contract 2, Outworlds Alliance Recon Raid
- 0 (0%)
Contract 3, FedCom Recon Raid #1
- 0 (0%)
Contract 4, FedCom Recon Raid #2
- 0 (0%)
None of the above - wait a month and try again (please post to specify acceptable contract criteria)
- 0 (0%)

Total Members Voted: 4


Pages: 1 ... 30 31 [32] 33 34 ... 40

Author Topic: Let's Play MegaMek (Against the Bot campaign)  (Read 75015 times)

Rince Wind

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #465 on: December 17, 2015, 01:30:38 pm »

That it why I compared them to their peers one sizelevel up. Like UAC/5 to AC/10.
As you have to roll on the cluster table (? I guess this is what Sandblaster and Cluster hitter is for?) you often end up only hitting with one projectile, so over time the AC/10 does more damage. UAC/5 is a bit lighter and has more range. I'll pass on that for not jamming (though it is a 1 in 36 chance, to bad it happened to both of them in the same turn, propabilities be damned! :D) and more consistent damage.
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #466 on: December 17, 2015, 01:40:54 pm »

The extra range helps :P
Logged

Rince Wind

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #467 on: December 17, 2015, 01:44:15 pm »

Of course. But the extra damage helps even more in my opinion. :D
I think every lance has PPC(s) and LRMs, so I am usually not lacking in that department.
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #468 on: December 17, 2015, 01:46:00 pm »

The lack of a minimum range also aids quite a bit.
Logged

Rince Wind

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #469 on: December 17, 2015, 01:56:52 pm »

The UAC/5 has a minimum range though. :P
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #470 on: December 17, 2015, 01:58:51 pm »

The UAC/5 has a minimum range though. :P

Because the UAC/5 is anti-aircraft material :P

Figured this would be the best place to ask on b12.

I am interested in running a battletech/mechwarrior rpg for my gaming group after reading this lets play a bit and I am not sure which edition to get. Anyone have any recommendations whether I should do Classic BattleTech RPG or the current edition A Time for War?

I am looking into it now... I'll tell you if it is any good.

But honestly my opinion is it depends what you want to do with your game.

---

Little Known fact.

1 C-bill = 2.5 Modern USD
« Last Edit: December 18, 2015, 12:52:12 pm by Neonivek »
Logged

Hanzoku

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #471 on: December 21, 2015, 04:34:46 am »

Episode 11 – Relic Raiders

Spoiler: Setup (click to show/hide)

Spoiler: Round 3 (click to show/hide)

Spoiler: Round 4 (click to show/hide)

Spoiler: Round 5 (click to show/hide)

Spoiler: Round 6 (click to show/hide)

Spoiler: Victory (click to show/hide)

Spoiler: The Duel (click to show/hide)

We have a choice of four contracts, three from the Federated Commonwealth, one from the Outworlds Alliance, and all targeting the Draconis Combine.

Code: (Contract 1, FedCom Extraction Raid) [Select]
Location: Capra
Days to Location: 78
Ally Rating: Regular/D
Enemy Rating: Regular/D
Contract length: 3 months
Command Rights: House
Transport Terms: 45%
Salvage Rights: 20%
Straight Support: 0%
Battle Loss Compensation: 100%
Estimated Total Profit: 10,516,402 C-Bills

Code: (Contract 2, Outworlds Alliance Recon Raid) [Select]
Location: Suianheer
Days to Location: 139
Aly Rating: Regular/D
Enemy Rating: Green/F
Contract Length: 3 months
Command Rights: House
Transport Terms: 30%
Salvage Rights: 0%
Straight Support: 0%
Battle Loss Compensation: 40%
Estimated Total Profit: 4,908,559

Code: (Contract 3, FedCom Recon Raid #1) [Select]
Location: An Ting
Days to Location: 86
Ally Rating: Regular/D
Enemy Rating: Regular/D
Contract length: 3 months
Command Rights: House
Transport Terms: 55%
Salvage Rights: 30%
Straight Support: 40%
Battle Loss Compensation: 0%
Estimated Total Profit: 10,762,005

Code: (Contract 4, FedCom Recon Raid #2) [Select]
Location: Styx
Days to Location: 104
Ally Rating: Green/D
Enemy Rating: Green/F
Contract Length: 3 months
Command Rights: House
Transport Terms: 0%
Salvage Rights: 0%
Straight Support: 0%
Battle Loss Compensation: 100%
Estimated Total Profit: 6,188,782

My preference is for the Extraction Raid or FedCom Recon Raid #1, based on the better salvage rights those contracts have. Of the two, I think the Extraction Raid is slightly better still, as any units we do lose will be fully compensated, making it easier to purchase replacements.

I'll be taking a short break through the Christmas and New Year holidays, and will pick up new episodes in January. I'll still be around and talking.

Also, if people want to see some one-shot encounters, feel free to ask - duels between specific pilots, what happens if both of the Recon lances tangle with the Command lance, whatever strikes your fancy.
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #472 on: December 21, 2015, 05:02:42 am »

Yeah I am feeling the Extraction Raid as well. While a contract with higher salvage would be preferable the fact of the matter is that these are only 3 month contracts (which end quickly) and even the highest salvage rate between them is only 30% (10 more)

As well 100% Battle Loss Compensation is made of gold!

10 mil for 3 months isn't bad... I've certainly had 3 month contracts end after the first mission.
Logged

Taricus

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #473 on: December 21, 2015, 05:21:14 am »

Yeah, the extraction raid seems good. As if we didn't need another mission in which to embarrass FedSun forces by being more competant than them.
Logged
Quote from: evictedSaint
We sided with the holocaust for a fucking +1 roll

EuchreJack

  • Bay Watcher
  • Lord of Norderland - Lv 20 SKOOKUM ROC
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #474 on: December 21, 2015, 11:00:54 am »

Extraction Raid.  We can handle the Regular forces with their D rated equipment.  Its the better contract by every factor.

I'm a little leery of serving the FedComs again, but their money is good.

I'm honored to have secured us a Star League Era mech.

Just for fun, I would like to see a Simulated Battle between our Commander Han Zoku and myself, recreating the final duel with myself acting the role of the Guard's Major.  Would be nice to see how things could have gone differently if he was facing a competent competitor.  I'm sure Jack's ego could survive if he loses the duel (the boss is suppose to be the best, after all).  And Han could blame the weight advantage if he lost.

Hanzoku

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #475 on: December 21, 2015, 11:27:44 am »

Sure, though just warning you, you're likely to win it - the BattleMaster trades a PPC to have a crapton more armor and a stronger shortrange weapons array. If you get into melee, it's all over for Han as you'll kick his legs off.

But we'll see what the match turns out :)
Logged

Anvilfolk

  • Bay Watcher
  • Love! <3
    • View Profile
    • Portuguese blacksmithing forum!
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #476 on: December 21, 2015, 11:31:43 am »

I don't suppose we've put any points into negotiation, allowing us to reroll some of the contract parts?

Also, the script seems to not be recognising some whitespace on your computer, but seems to work on mine. Can you try this and see if it fixes having units named, say "Wasp 1A" and another called "     Wasp 1A", which are supposed to be the same? Hope this workaround works.

Code: [Select]
import re

with open ("round.txt", "r") as myfile:
    data=myfile.readlines()
   
data = [line.strip('\n').strip('\r').strip('\t') for line in data]
data = list(filter("".__ne__, data))

class Unit:
    def __init__(self, name, faction):
        self.name = name
        self.faction = faction
        self.timesFired = 0
        self.timesFiredHit = 0
        self.timesFiredAt = 0
        self.timesFiredAtHit = 0
        self.damageTaken = 0
        self.damageDealt = 0
       
        self.kick = False
        self.kicked = 0
        self.punch = 0
        self.punched = 0
        self.physTarget = None
        self.physDamage = 0
       
        self.lastPartHit = None
        self.crits = []
        self.destroyedParts = []
       
        self.destroyed = ""
        self.prone = False
        self.immobile = False
   
    def __str__(self):
        return "("+self.faction+") " + self.name
   
    def asList(self):
        l = []
        l.append("("+ self.faction +") " + self.name)
        if self.timesFired > 0:
            l.append("   Fired " + str(self.timesFired) + " times, hit " + str(self.timesFiredHit) + " times for " +str(self.damageDealt)+" damage")
        if self.damageTaken > 0 or self.timesFiredAt > 0:
            l.append("   Fired at " + str(self.timesFiredAt) + " times, hit " + str(self.timesFiredAtHit) + " times for " + str(self.damageTaken) +" damage")
        if self.kick:
            pd = " for " + str(self.physDamage) + " damage" if (self.physDamage > 0) else " and missed!"
            l.append("   Kicked " + str(self.physTarget) + pd)
        if self.punch > 0:
            pd = " " + str(self.punch) +" times for " + str(self.physDamage) + " damage" if (self.physDamage > 0) else " and missed!"
            l.append("   Punched " + str(self.physTarget) + pd)
        if self.punched > 0 or self.kicked > 0:
            l.append("   Was punched " + str(self.punched) + " times and kicked " + str(self.kicked) + " times.")
        if len(self.crits) > 0:
            l.append("   Crits received: " + ", ".join(self.crits))
        if len(self.destroyedParts) > 0:
            l.append("   Destroyed parts: " + ", ".join(self.destroyedParts))
        if self.prone:
            l.append("   PRONE")
        if self.immobile:
            l.append("   IMMOBILE")
        if len(self.destroyed) > 0:
            l.append("   DESTROYED ("+self.destroyed+")")
        return l

def getNextLine():
    global data
    line = data[0]
    data = data[1:]
    return line

faction = "\(([^\)]+?(?: *\(Reinforcements\))?)\)"
unitName = "([^\(]*(?: *\([^\)]+\))?(?: *#\d+)?) " + faction
weaponName = "([a-zA-Z/0-9 ]+)"
   
unitFire = re.compile('Weapons fire for ' + unitName)
unitPhys = re.compile('Physical attacks for ' + unitName)
weaponsFire = re.compile('\s*'+weaponName+' at '+unitName+'; needs -?\d+, rolls \d+ : (misses|hits)\s*(?:\([^\)]+\))?\s*([A-Z]+)?')
missileFire = re.compile('\s*'+weaponName+' at '+unitName+'; needs -?\d+, rolls \d+ : (misses|\d+ missile\(s\) hit)')
damageTaken = re.compile('\s*'+unitName+' takes (\d+) damage to ([A-Z]+)')
physAttack = re.compile('\s*(Kick|Punch)\s*(?:\([^\)]+\))? at '+unitName+'; needs -?\d+, rolls \d+ : (misses|hits)\s*(?:\([^\)]+\))?\s*([A-Z]+)?')
falling = re.compile('\s*'+unitName+' falls ')
critical = re.compile('CRITICAL HIT on ([^.]+).')
destroyedParts = re.compile('SECTION DESTROYED')
destroyed = re.compile('\*\*\* '+unitName+' DESTROYED by ([^!]+)! \*\*\*')
transferDamage = re.compile('(\d+) damage transfers to [A-Z]+')
vehicleImmobilised = re.compile('Major damage, vehicle immobile.')


units = dict()

def getUnit(name, faction):
    global units
    if name+faction not in units:
        units[name+faction] = Unit(name, faction)
    return units[name+faction]
   
currentUnit = None
targetUnit = None
physical = False

while len(data) > 0:
    line = getNextLine()
   
    # Check if this is a firing line
    r = unitFire.match(line)
    if r is not None:
        physical = False
        currentUnit = getUnit(r.group(1), r.group(2))
        targetUnit = None
        continue
   
    r = unitPhys.match(line)
    if r is not None:
        physical = True
        currentUnit = getUnit(r.group(1), r.group(2))
        targetUnit = None
        continue
   
    r = weaponsFire.search(line)
    if r is not None:
        currentUnit.timesFired += 1
        targetUnit = getUnit(r.group(2), r.group(3))
        targetUnit.timesFiredAt += 1
        if r.group(4) == "hits":
            currentUnit.timesFiredHit += 1
            targetUnit.timesFiredAtHit += 1
        continue
       
    r = missileFire.search(line)
    if r is not None:
        currentUnit.timesFired += 1
        targetUnit = getUnit(r.group(2), r.group(3))
        targetUnit.timesFiredAt += 1
        if r.group(4) != "misses":
            currentUnit.timesFiredHit += 1
            targetUnit.timesFiredAtHit += 1
        continue
   
    r = physAttack.search(line)
    if r is not None:
        targetUnit = getUnit(r.group(2), r.group(3))
        currentUnit.physTarget = targetUnit
        if r.group(1) == "Kick":
            currentUnit.kick = True
            if r.group(4) == "hits":
                targetUnit.kicked += 1
        elif r.group(1) == "Punch":
            currentUnit.punch += 1
            if r.group(4) == "hits":
                targetUnit.punched += 1
        continue

    r = falling.search(line)
    if r is not None:
        currentUnit = None
        targetUnit = getUnit(r.group(1), r.group(2))
        targetUnit.prone = True
        continue
       
    r = damageTaken.search(line)
    if r is not None:
        targetUnit.damageTaken += int(r.group(3))
        targetUnit.lastPartHit = r.group(4)
        if currentUnit is None:
            continue
        if physical:
            currentUnit.physDamage += int(r.group(3))
        else:
            currentUnit.damageDealt += int(r.group(3))
        continue   
   
    r = transferDamage.search(line)
    if r is not None:
        targetUnit.damageTaken -= int(r.group(1))
        if physical and currentUnit is not None:
            currentUnit.physDamage -= int(r.group(1))
        elif not physical and currentUnit is not None:
            currentUnit.damageDealt -= int(r.group(1))
        continue
   
    r = critical.search(line)
    if r is not None:
        targetUnit.crits.append(r.group(1) + "["+targetUnit.lastPartHit+"]")
        continue
   
    r = destroyedParts.search(line)
    if r is not None:
        targetUnit.destroyedParts.append(targetUnit.lastPartHit)
        continue
       
    r = destroyed.search(line)
    if r is not None:
        unit = getUnit(r.group(1), r.group(2))
        unit.destroyed = r.group(3)
        continue
   
    r = vehicleImmobilised.search(line)
    if r is not None:
        targetUnit.immobile = True
        continue
   
   
factions = {}
def getFaction(name):
    global factions
    if name not in factions:
        factions[name] = {}
    return factions[name]

for unit in units.values():
    f = getFaction(unit.faction)
    f[unit.name] = unit

output = []
   
sortedFactions = sorted(factions.keys())
for factionName in sortedFactions:
    unitList = getFaction(factionName)
    sortedUnitList = sorted(unitList.keys())
    for unitName in sortedUnitList:
        output = output + unitList[unitName].asList() + [""]
       
   
with open ("round2.txt", "w") as myfile:
    myfile.write("\n".join(output))

Knave

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #477 on: December 21, 2015, 11:59:41 am »

Nice that we were able to get the Battlemaster!

I'll agree that the extraction raid looks the best deal, pity about the low salvage rate, but at least they'll cover all our lost mechs.
Logged

Neonivek

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #478 on: December 21, 2015, 12:59:06 pm »

Honestly why aren't there like... Mech feet blades?
Logged

Hanzoku

  • Bay Watcher
    • View Profile
Re: Let's Play MegaMek (Against the Bot campaign)
« Reply #479 on: December 21, 2015, 01:22:58 pm »

I'm getting the image of a mech on skates with a hockey-stick shaped club, piloted by an angry and drunken Canadian. >_>

We have one point in Negotiation, but the only thing I seem to reroll is the command rights, and they always end up worse.

Huh, I feel the need to experiment and stick high levels of negotiation on administrators of each type and see if you need a certain type of administrator to reroll salvage for example.
Logged
Pages: 1 ... 30 31 [32] 33 34 ... 40