Jump to content

011121

Vote Enabled
  • Posts

    668
  • Joined

  • Last visited

Everything posted by 011121

  1. I have trouble seein how gremlins have a chance against pandora. Lots of low wp models is a perfect set up for pandora to just clean house.
  2. That's what I mean you can't get the benefit of ad from another model but you also don't get the benefit of ad on the librarian. Worst of both worlds, really.
  3. The other abilities of the librarian are good, but it's arcane reservoir is a liability overall.
  4. I'm surprised zoraida didn't hex any thing off of anybody. Levi is a crew that critically depends on certain talents.
  5. That's why I said little benefit instead of no benefit.
  6. I think you misread me as that's what I said
  7. You're probably right, I don't have the book.
  8. A big hand of cards would make a collodi alpha strike more dangerous of course.
  9. iggy isn't just for kaeris. He gives neverborn something they sorely lacked before- ranged firepower (no pun intended). He does synergize well with kaeris but can work in other groups, especially pandora/zoraida.
  10. I can't recommend copellius highly enough. With the sole exception of the doppelganger he's the best utility model for neverborn. I'm not a fan of the twins (although that's more aesthetic than rules wise) so I'd drop then in a heartbeat to get the Copp and another alp. Speaking of which a single alp is of limited use, two is way better (and more is better still even after the, much deserved, alp bomb cuddle). Collodi is an awesome addition to any neverborn force, particularly zoraida but still true of the dreamer.
  11. if you are playing the dreamer (you said nightmares, so I'm assuming) then you should have no problems being just as fast as she is, and you have at least as many jerk moves to pull on her. The issue may be one of learning a lot of your crews tricks. just generally- remember you can't charge what you can't see, even if you're a coryphee. So use stitched together fog to limit their ability to cause mayhem. The coryphee duet is a big danger but it's a single model which makes it ideal or one of the 17 ways that copellius gives out paralyze. Ditto Cassandra. Other than doves collette's crew has no flight, no float, and no arachnid whereas the dreamer's has easy access to them. Place models up on things and laugh at the dancers below. Colette's crew has a good amount of living models and not great will power...and you have access to tons of terrifying. Alps can both give slow and mess with people who have fast. Copellius LOVES living enemies. Lilitu can be used to pull enemy models out of position. Doppelganger helps you win initiative which can be really useful against a crew like Colette's. Tuco has terrifying plus a big shotgun. Just general ideas, it will depend a lot on what exactly your dad uses and what you have available or can proxy.
  12. Doesn't sound like collodi got much if anything in the new book (but that's fair given he did very well in book 3). ---------- Post added at 11:07 AM ---------- Previous post was at 10:54 AM ---------- As someone else pointed out it sounds like the hard thing is going to be using the rail golem with kaeris but keeping it out of her accelerant pulse. I do look forward to having the rail golem deliver union miners to locations via file false claim, Choo choo!
  13. Which is the big drawback to the freikorps librarian, she has arcane reservoir but you get little benefit from it as you have to discard a card per turn (or paralyze her) so she basically prevents you from getting a "real" arcane reservoir some other way.
  14. Mcmourning is a beat stick with impressive healing and pretty quick. Just don't run him down an alley way at Ramos and a Brass Arachnid (as I did) unless you like the smell of burnt doctor.
  15. aSeamus has anathema which makes terrifying very powerful, but yeah terrifying is sort of limited usually. The addition of the ten thunders may increase the number of living models in play, at least in the near term..
  16. paint job could certainly help him match other nephilim.
  17. Okay, I've made a lot of improvements to the original code. Now Flips (i.e +++ or --), decks, cards, and damage profiles (i.e. 3/4/6) are objects. Methods include the original fixed and opposed tests along with an attack evaluation (returning a flip object used for damage determination), damage determination, and a composite full attack routine method that combines a opposed duel, attack resolution and damage determination into one. I feel pretty good about the code although I ran into a brick wall with the timeit feature when trying to determine whether keeping the cards as objects that contain individual variables is better than storing the value and suit data in either a list or tuple. I would still be very keen to hear if anyone has gotten similar results independently. here's the code: [code]'''/ Created on Aug 18, 2012 @author: 011121 ''' from random import choice ''' ######################################################################## Data structures ''' ''' object that contains a value and suit along with getter methods for both and custom comparison and to string methods. Comparison looks first at value, then at suit. ''' class Card: def __init__(self, value, suit): self.suit = suit self.value = value def getSuit(self): return self.suit def getValue(self): return self.value def __cmp__(self, other): if (self.value < other.value): return -1 elif (self.value > other.value): return 1 elif (self.getSuit() == other.getSuit()): return 0 else: return 1 def __str__(self): value = str(self.getValue()) suit = self.getSuit() return(value + suit) ''' Represents flip modifications to draws. object that contains a value and sign along with getter methods for both and to string methods. ''' class Flip: def __init__(self, value, sign): self.sign = sign self.value = value def getSign(self): return self.sign def getValue(self): return self.value def __str__(self): value = str(self.getValue()) sign = self.getSign() return(value + sign) defaultFlip = Flip(0, "+") ''' Represents a damage profile. object that contains values for three grades of damage. ''' class Damage: def __init__(self, weak = "weak", moderate = "moderate", severe = "severe"): self.damage = (weak, moderate, severe) def getDamage(self, type): return self.damage[type] def __str__(self): return(str(self.damage)) defaultDamage = Damage() ''' object that contains card objects, when instantiated creates a full deck of 54 cards including both jokers. cardDraw method selects a random card, removes it from the deck and returns it. ''' class Deck: def __init__(self, used = None): self.deck = [] suits = ["R", "C", "T", "M"] for suit in suits: for num in range(13): self.deck.append(Card(num+1, suit)) self.deck.append(Card(14, "J")) #red joker self.deck.append(Card(0, "J")) #black joker if (used != None): for item in used: self.deck.remove(item) def __str__(self): string = "" for card in self.deck: string += str(card) + " " return string def cardDraw(self): card = choice(self.deck) self.deck.remove(card) return card ''' end of structures ############################################################################ Methods ''' ''' this method draws one or more cards and determines result based on flips ''' def drawResult(deck, flip = defaultFlip): draw = [] for i in range (1 + flip.getValue()): attackValue = deck.cardDraw().getValue() draw.append(attackValue) if (0 in draw): card = 0 elif (flip.getSign() == "+"): card = max(draw) elif (flip.getSign() == "-"): card = min(draw) return card ''' this method runs a single opposed duel. Additional flip and flip sign paramerets are used to define positive and negative flips. A duel where the attacker has --- would be run by calling opposedDuel with attackerAdditionalFlips = 3 and attackerFlipSign = "-" ''' def opposedDuel(attackerDeck, attackerStat, defenderDeck, defenderStat, attackerFlip = defaultFlip, defenderFlip = defaultFlip): 'attacker draws' attackCard = drawResult(attackerDeck, attackerFlip) 'defender draws' defendCard = drawResult(defenderDeck, defenderFlip) 'duel resolution' success = (attackCard + attackerStat) - (defendCard + defenderStat) return success ''' this method runs a single simple duel. Additional flip and flip sign paramerets are used to define positive and negative flips. A duel where the model has --- would be run by calling fixedDuel with additionalFlips = 3 and flipSign = "-" ''' def fixedDuel(deck, stat, target, flip = defaultFlip): 'model draws' result = drawResult(deck, flip) success = result + stat - target return success ''' evaluates the result of an opposed duel as an attack, returns a flip object ''' def evalAttack(success): if(success < 0): result = None elif(success == 0): result = Flip(2, "-") elif(success < 6): result = Flip(1, "-") elif(success < 11): result = defaultFlip else: result = Flip(1, "+") return result ''' makes a damage flip, returning the type of damage done based on a damage object ''' def damageFlip (deck, damage = defaultDamage, flip = defaultFlip): 'model draws' success = drawResult(deck, flip) 'determine damage' if (success == 0): result = 0 elif (success < 6): result = damage.getDamage(0) elif (success < 11): result = damage.getDamage(1) else: result = damage.getDamage(2) return result ''' runs a full attack routine including damage if the attack hits. returns the damage inflicted. ''' def attackAndDamage(attackDeck, attackStat, defendDeck, defendStat, damage = defaultDamage): result = opposedDuel(attackDeck, attackStat, defendDeck, defendStat) print ("opposed test " + str(result)) result = evalAttack(result) print ("attack result " + str(result)) if (result != None): result = damageFlip(attackDeck, damage, result) else: result = 0 return result ''' end of methods ################################################################################# Test harnesses ''' ''' test harness for testing fixed duel for a set number of repetitions ''' def testFixedDuel(repetitions, stat, target, flips = defaultFlip): successRate = 0 for i in range(repetitions): deck = Deck() success = fixedDuel(deck, stat, target, flips) if (success >= 0): successRate += 1 return float(successRate)/repetitions ''' test harness for testing oposed duel for a set number of repetitions ''' def testOpposedDuel(repetitions, attackerStat, defenderStat, attackerFlips = defaultFlip, defenderFlips = defaultFlip): successRate = 0 for i in range(repetitions): attackerDeck = Deck() defenderDeck = Deck() success = opposedDuel(attackerDeck, attackerStat, defenderDeck, defenderStat, attackerFlips, defenderFlips) if (success >= 0): successRate += 1 return float(successRate)/repetitions if __name__ == '__main__': pass [/code]
  18. 1) There aren't any books you absolutely have to have. You can download the PDF version of the rules manual. That said a hard copy of the rules manual is certainly handy. 2) good to get covers a lot of ground. Austringers are popular. The new guild rifleman sound like they will be popular once they are out. Some people really like the executioner. Some like Samual Hopkins. Hoffman is probably the most competitive guild master. Really it just depends on what you end up liking. I can't speak much to the other two questions. Oh, and welcome aboard.
  19. Sounds like they have a few aspects that may make hamelin and maybe Levi sweat.
  20. Why Collodi specifically? He's no more affected by anti-construct stuff than say Ramos or Hoffman, and he doesn't really rely on the enemy having taken x to be effective.
  21. even before willie there was Pere Ravage...
×
×
  • Create New...

Important Information