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)
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)
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)
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
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 = {}
def takePlace(self, add=0): #print " take place de",self,self.name Animation(self, [(self.getPlace(add), 3, self.size, None)])
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)
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)