Jump to content

011121

Vote Enabled
  • Posts

    668
  • Joined

  • Last visited

Posts posted by 011121

  1. I don't know why so few people like the wendigo. I've only played one game with raspy but the wendigo did very well. It killed an enemy, healed off the corpse, and tied up a peacekeeper long enough for raspy to get away. EOP plays to raspy's strengths while the wendigo covers her weaknesss.

  2. As long as you can't pass counters off, and it doesn't seem like you can, that really doesn't seem that bad. It works for nico but frankly he's pretty easily the weakest of a weak faction already. Plus even if he has 50 zombies it only takes one action by lady J (as an example) to nuke them all. Live by the corpse counter die by the corpse counter...

  3. I've been kicking around ideas for a Collodi Tactica, something much more in depth than what you find at Pullmyfinger, more in line with the Pandora Tactica by Karn. But I'm a lazy lazy man, so I'll be posting snippets here and inviting all of you to make your own contributions or challenge my assertions.

    Once it seems like we've plumbed the depths I'll stick it all together into a doc and host it on googledocs.

    Ready, Set, Strategerize.

    ---------- Post added at 06:54 PM ---------- Previous post was at 06:10 PM ----------

    The Master Manipulator - Tactic

    A puppeteer who uses marionettes is referred to as a manipulator, and that's Collodi through and through. This tactic is the quintessential alpha strike by collodi using his marionettes to do the damage.

    Range- Almost unlimited but the further away the attack comes from the fewer total attacks as you use marionettes for movement instead of range. If the target is within 5" you can make ~19 marionette attacks. At 16" away you can get ~10 attacks. At 32" away you're looking at ~2 attacks. The exact number of attacks depends on the ability to discard cards for flurry and the amount of melee expert given by Breathe Life.

    Damage Potential- Average damage per attack by defense of the target assuming no defensive abilities that cause negative flips or armor:

    1: 1.32

    2: 1.16

    3: 1.02

    4: 0.88

    5: 0.73

    6: 0.62

    7: 0.50

    8: 0.41

    9: 0.32

    10: 0.25

    So an attack from 16" away at a target with a def of 6 will do an average of 6 points of damage (10 atacks x .62 damage/attack). Damage done is reduced in the case if multiple targets as flurry can only target a single target.

    Set Up- Ideally you want Collodi and all the marionettes you plan to attack with to start within 4" and none further than 6" away. Collodi goes first, uses (2) Puppet Show to give all the marionettes fast, then casts (1) Breathe Life with casting expert to give 2-4 of the marionettes melee expert. Collodi ends his turn with Holding the Strings activating the marionettes to go together immediately (which is why you want them all within 6" of Collodi initially even the ones that are just being used to move, otherwise instead of an alpha strike you have to trade activations with the opponent).

    Attack Procedure- Move towards the target using as many marionettes as necessary. Once Collodi is close to the target additional marionettes can (0) Retract to Collodi with full ap. A marionette can flurry (at the cost of one card) which when added to fast and melee expert gives a total of 5 attacks.

    Post Attack- If the target is killed before all marionettes are committed the remaining marionettes can either go after additional close by targets or be used to pull Collodi back away from the site of the hideous dismembering.

    Risks- Depending on the range the target was from Collodi before the attack, most of the marionettes and Collodi are likely to be clustered together. Enemy pulses and blasts may cause carnage among the closely packed dolls. Because the alpha strike condenses so many activations into one it is likely to come early in he turn, leaving lots of opportunities for the enemy to counterattack the dolls with little risk. Additionally this attack is quite card intensive as you are discarding 1-4 cards for flurries plus any cheating.

    ---------- Post added at 07:44 PM ---------- Previous post was at 06:54 PM ----------

    Gettin Boogey with It- Tactic

    Those oogey boogey Stitched Togethers allow Collodi to make a WP based assault upon the enemy.

    Range- Collodi can reach the stitched from anywhere on the table but the Stitched need to be close to the enemy already. Because of the relatively short range this tactic is ideal for situations in which you know the enemy is heading towards a specific part of the table (as when you have supply wagon or treasure hunt strategy).

    Damage Potential-

    Gamble Your Life, damage done by target wp

    1: 3.86

    2: 3.63

    3: 3.36

    4: 3.09

    5: 2.84

    6: 2.56

    7: 2.28

    8: 1.98

    9: 1.68

    10: 1.42

    Gamble Your Life, damage taken by target wp

    1: 0.45

    2: 0.59

    3: 0.77

    4: 0.97

    5: 1.16

    6: 1.42

    7: 1.68

    8: 1.97

    9: 2.28

    10: 2.55

    Deepest Fear, damage done by target wp

    1: 1.86

    2: 1.67

    3: 1.48

    4: 1.31

    5: 1.12

    6: 0.93

    7: 0.77

    8: 0.64

    9: 0.51

    10: 0.40

    Set Up- The stitched should ideally be within 6" of the enemy but can be up to 14" away (two 4" walks plus one (1) Gamble your Life with fast). If Collodi is not within 4" of the stitched, begin by activating a marionette who pulls Collodi towards the stitched. The opponent gets a turn. Repeat until Collodi is within 4" of the stitched's current location AND within 4" of where the stitched plans to be for it's attack (this should always be doable as the stitched has a walk of 4"). Collodi goes after the opponent's turn and uses (2) Puppet Show to give the stitched fast and casting expert to cast (1) Breathe Life to give the stitched Casting Expert. Finally Collodi uses (0) Doll Friend to activate a Stitched.

    Attack Procedure- The Stitched Together move forward if necessary (remaining within 4" of Collodi to get his +2 WP bonus). Spend any general AP not used for walking to get in range to use (1) Gamble Your Life. Casting Expert can be used for a cast of (1) Deepest Fear. Against heavily armored enemies, or enemies with very high Wp/low Df deepest Fear may be better than Gamble your Life. It may be advantageous to use (0) Gamble ahead of time to drain cards from the enemy hand or (0) Creepy Fog to protect the Stitched and Collodi/Marionettes from ranged retaliation. Repeat with any additional Stitched Togethers in range of Collodi. Be careful not to block line of sight for other stitched with creepy fog.

    Post Attack- Unused marionettes can be used to pull Collodi back to a safer position, but if you do and the opponent kills the stitched you will miss out on the wp bonus for the Does Not Die reactivation. It may be better to use the creepy fog to limit reprisals.

    Risks- since the attack is potentially spread across several activations the enemy has opportunities to see it coming and move to negate it. Gamble Your Life has the potential to back fire but with a WP 8 it's not a big risk against most opponents. The bigger risk is that the attack relies on knowing where the enemy will go so that you can have your stitched nearby.

    ---------- Post added at 08:08 PM ---------- Previous post was at 07:44 PM ----------

    Pull my.. String- Movement Shenanigans

    Collodi possesses a pretty unique movement method hat makes him one of the fastest if not the very fastest master in Malifaux. By himself Collodi is a slug with a walk of 2 and charge of 5, but walking is for saps. Collodi really moves by being pulled by his marionettes.

    Process-

    1) activate a marionette who immediately is pushed toward Collodi until within 8".

    2) usually the marionette will now (0) Retract into base contact with Collodi, touching his base on whatever side is towards the direction he is to be moved.

    3) Marionette walks up to 5" from Collodi.

    4) Marionette uses the (1) Pull Strings action to move up to 5" more (up to the maximum of 8" away from Collodi and pulls Collodi into base contact with it. Yes you can put Collodi on whatever side of the marionette you want!

    5) repeat steps 1-4 with additional marionettes

    Using this technique Collodi can move more than 32" in one turn with 4 marionettes. The "more than" is due to using the base to base shenanigans (steps 2 and 4) to get a couple more inches.

    Important note- Collodi's Filled with Stones spell reduces a doll's movement by -1/-1 but if used on a marionette it does not slow down Collodi as a 4" walk pls a 4" Pull Strings still gets the marionette to the maximum 8" away from Collodi that they can get to anyway.

  4. Okay so let's say I bury one of collodi's four marionettes with a stitched. That mari is now out of play. The rare limit controls how many of a model you can have in play at a time. So Collodi makes a new marionette bring him back up to 4.

    What happens at the end of the turn when the abducted marionette would be unburied? Is it just lost? Does it remain buried until a turn ends with less than 4 marionettes on the table? Does it come back to the table under the heading of "rules on cards over come rules in the book" and the card says the marionette comes back while the book says it can't?

  5. One thing that bothers me about my beloved Collodi is why he uses scrap counters to make marionettes instead of corpse counters. The fluff makes it clear that he takes the souls of victims to make his "children."

    I think it'd make more sense, and probably be cooler, for him to have grave robber instead of scavenger and for puppet tools to use a corpse counter (or some new unique counter ala eye) instead of scrap. It'd be a lot more fun to taunt the opponent by referring to your marionettes with the names of his dead minions...well, more fun for me anyway.

    Thoughts?

  6. I'm open to other ideas of how to determine the odds besides running a multitude of simulations but I'm just not aware of any realistic options. If you try calculating the odds directly it quickly spirals out of control when you do anything more complicated than an opposed duel with no + or - flips.

    But as before if anyone has a good idea of how to do it I'm happy to write the code...

  7. Just to round out the options I'd say collodi. He can be run on his own or as a henchman to others. He works with the stitched you already have. Best there's nothing outside of his box set you have to buy for him.

    On the downside plystyle he's sort of similar to the dreamer as a fast ambush predator. On the plus side he's less likely to provoke the hate the dreamer sometimes gets (and Pandora is another widely hated master, unfortunately).

    I'd follow Collodi with Zoraida. And that's almost exactly what I did buy for my neverborn (plus a few single models to fill things out).

  8. The issue with that is, as jonas notes, you have over 25 million combinations of opening hands. In order to simulate the event accurately you'd have to run the simulation with every possible opening hand or, at the very least, a goodly proportion of them.

    With a much better computer It could certainly be done but my little netbook isn't handling it.

  9. The main drawback of teddy is his mediocre speed. The dreamer fixes that with all the bury/unbury shenanigans. So Teddy works just fine with the dreamer. Personally I much prefer Copellius for the cost though. Teddy can kill things pretty good and is pretty tough. Copellius can kill things pretty good, can slow, can paralyze, can cause models to fall back, can summon alps. He's not as tough as Teddy but his retribution of 4 wounds on whomever kills him makes taking him down painful. If you need a pure beatstick you already have LCB who puts teddy to shame.

    Some people like to run teddyx3 dreamer lists. Sounds like goofy fun if not super effective for a lot of strategies.

  10. I wouldn't go that far. He's very fast but there are certain match ups that are awfully hard as a collodi player (Kaeris, Perdita, Lady Justice, and really any very shooty army leap to mind) if you actually have to engage the enemy. If you can rely on speed to do the strategy then yeah, he's completely awesome.

  11. somehow paying 7 soulstones (or more if bought as a merc) just for the ability to get an extra card (which is all you get if you don't sacrifice a card) is one hell of a steep cost.

    Compare to the Arcane Effigy which gives you the extra card and is still able to act costs 3 or fewer soulstones.

    But having the librarian means both you don't get the extra card (or you wasted 7ss) and you still can't get the extra card from taking an Effigy, which is why I said the worst of both worlds, not only not having the benefit but forgoing any chance to get the benefit.

    Again that's not to say the other things the librarian brings to the table aren't worthwhile, it's just pointing out that it's arcane reservoir/receptacle combo is a liability and a bigger one than it first appears.

  12. Desolation engine:

    hex off lost focus to prevent recreating a desolation engine. similarly taking away desolate warping prevents it creating SPA with attacks.

    Alyce:

    You can take off the ca bonus, the card draw bonus, or the reactivate spell.

    Of course you can't strip everything, or even most things but if you see the opponent is using something, take it away. In the above game taking out the desolation engine's ability to respawn and maybe Alyce's burn out could have been key.

  13. corrected the damage flip method to make an additional flip if the red joker is flipped.

    [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 in case of red joker a second damage flip is also done' if (success == 0): result = 0 elif (success < 6): result = damage.getDamage(0) elif (success < 11): result = damage.getDamage(1) else: result = damage.getDamage(2) if (success == 14): result = str(result) + " and " + str(damageFlip(deck, damage)) 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) result = evalAttack(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]

    Since we've been talking about the doppelganger's ability to help you win initiative 68.7% of the time given the usual caveats (fresh deck, no cheating or soulstone use).

×
×
  • Create New...

Important Information