def combatAnim(self,target):
     #print "combat de base pour animated creature"
     if target is not self :
         phase1 = (target.center,10, None,partial(self.combat,*(target,)))
         phase2=(self.center,10,None,None)
         animated_sprite=self
         for b in self.bonus :
             animated_sprite=b.attackAnimationSprite(animated_sprite)
         a=Animation(animated_sprite,[phase1]+[phase2]*(animated_sprite==self),animated_sprite!=self)
         a.phase_time = 2 # l attaque ne fait plus que 9/10 du trajet
     else :
         self.combat(target)
Exemple #2
0
 def combatAnim(self, target):
     #print "combat de base pour animated creature"
     if target is not self:
         phase1 = (target.center, 10, None, partial(self.combat,
                                                    *(target, )))
         phase2 = (self.center, 10, None, None)
         animated_sprite = self
         for b in self.bonus:
             animated_sprite = b.attackAnimationSprite(animated_sprite)
         a = Animation(animated_sprite,
                       [phase1] + [phase2] * (animated_sprite == self),
                       animated_sprite != self)
         a.phase_time = 2  # l attaque ne fait plus que 9/10 du trajet
     else:
         self.combat(target)
Exemple #3
0
 def spellEffect(self,spell,origin,targets) :
    if hasattr(self,"verbose") and self.verbose>4 : print "      ",self.name,"appel de spellEffect ",spell.getInlineDescription()
    if origin.max_pv==0 :
        origin.pv=-1
    for t in reversed(targets) :
         if not (t is origin) :
             eff=partial(spell.effect,origin,t)
             sp=Sprite(origin,"gameAnimationImages/boule_energie_verte.png",[180,180])
             if isinstance(t,Player) : t=t.icon
             phase0=(t.getPosition(),10,None,eff)    
             Animation(sp,[phase0],True)
         else :
             #spell.player = self
             spell.effect(origin,t)
Exemple #4
0
    def effect(self, origin, target):
        if target.pv > 0:
            from copy import copy
            from Creature import AnimatedCreature, Creature
            from cardPowers import CriDeGuerre
            if isinstance(target, Creature):
                #print "avant transfo card=",target.card.name
                target.is_dead = True  # evite effet raleDAgonie
                target.die()
                for b in target.bonus:  # il faut quand meme enlever les bonus
                    #print "removed ",b
                    b.removed()
                oldcard = target.card
                newmonster = copy(self.monster)
                newmonster.bonus = copy(self.monster.bonus)
                for b in reversed(newmonster.bonus):
                    if isinstance(b, CriDeGuerre):
                        newmonster.bonus.remove(b)
                newmonster.costint = int(newmonster.getCost())
                newmonster.starcost = newmonster.getStars()
                if isinstance(target, AnimatedCreature):
                    target = AnimatedCreature(
                        target, newmonster, target.player,
                        simultaneous=1)  #this makes invocator move

                    def oldation(x):
                        x.card = oldcard  # after creature appears

                    from functools import partial
                    effect = partial(oldation, target)
                    destination = None
                    phase0 = (destination, 20, None, effect)
                    from Sprites import Animation
                    Animation(target, [phase0])
                else:
                    target = Creature(target, newmonster, target.player)
                    target.card = oldcard
                #target.
            else:
                if not "simu" in origin.player.name:
                    print "no effect on ", target
Exemple #5
0
 def __init__(self, origin, card, player, simultaneous=1):
     #print "animated creature init ",card.name,origin,card
     # creature is init only after effect
     if not hasattr(card, "image"):
         name = card.name.replace(" ", "_")
         try:
             card.image = pygame.image.load("Cards/" + name + ".png")
         except:
             import glob
             lina = glob.glob("*" + name +
                              "*.png") + glob.glob("*/*" + name + "*.png")
             if lina:
                 card.image = pygame.image.load(lina[0])
             else:
                 screen_info = pygame.display.Info(
                 )  #Required to set a good resolution for the game screen
                 height, width = screen_info.current_h, screen_info.current_w
                 print "image manquante ,name=", name
                 card.image = card.createImage(True)
                 pygame.image.save(card.image, name + ".png")
                 card.image = pygame.image.load(name + ".png")
                 pygame.display.set_mode((width, height))
     Sprite.__init__(self, origin,
                     pygame.transform.scale(card.image, (136, 200)))
     self.game = player.game
     self.player = player
     self.index = len(player.army) + simultaneous - 1
     self.graphism = copy(card.image)
     self.name = card.name  # ligne utile pour debug de getplace
     player.orderArmy(add=simultaneous)
     effect = partial(self.appear,
                      *(origin, card, player))  # creature appears only then
     if card.pv > 0:
         destination = self.getPlace(add=simultaneous)
     else:
         destination = [800, 450]
     phase0 = (destination, 10, self.size, effect)
     Animation(origin, [phase0])
     self.all_effects = {}
Exemple #6
0
 def takePlace(self, add=0):
     #print "          take place de",self,self.name
     Animation(self, [(self.getPlace(add), 3, self.size, None)])
Exemple #7
0
 def sufferDamageAnimation(self, damage):
     #Sprite(sprite,"gameAnimationImages/stone.png")
     phase1 = (self.center, 5, [4. * damage] * 2, self.updateImage)
     Animation(Sprite(self, wound_img), [phase1], True)
Exemple #8
0
 def castSpellAnimation(
         self):  #print "launch from",origin,"  army is ",self.army
     sp = Sprite(self, "gameAnimationImages/boule_energie_bleue.png",
                 [20, 20])
     phase0 = (self.getPosition(), 8, [250, 250], None)
     Animation(sp, [phase0], True)