Exemplo n.º 1
0
 def onMoveFinished(self):
     if self.visual:
         self.visual.onMoveFinished()
     if self.fall_damage > 0:
         self.takeDamage(
             DamagePacket("fall", self, self.fall_damage, "fall"))
         self.fall_damage = 0
     for trap in self.tile.traps:
         trap.trigger(self)
Exemplo n.º 2
0
 def targetAction(self):
     for target in self.target_list:
         if type(target) == TacticsCharacter:
             target.takeDamage(
                 DamagePacket(self.source, target, 4, "cold", "freeze"))
         if type(target) == TacticsTile:
             if target.visual:
                 self.explosions.append(
                     Explosion(self.application, target.coords, "freeze"))
             for surface in target.surface_effects:
                 surface.stopBurning()
             if target.getSurface() == "Water":
                 self.application.world.addSurfaceAt(target, "ice")
Exemplo n.º 3
0
	def scoreAction(self, action, target, world):
		score = 0
		if action.name == "Kick":
			score += self.scoreDamage(DamagePacket(world.current_character_turn, target, 6, "kinetic", "push"))
		elif action.name == "Throw Stone":
			score += self.scoreDamage(DamagePacket(world.current_character_turn, target, 4, "kinetic"))
		elif action.name == "Fireball":
			targeting_rules = TargetingRules(action.targeting_rules.trajectory, action.targeting_rules.area, False, True, False, False)
			targets = world.getTargetsInArea(world.current_character_turn, target, targeting_rules)
			for aoe_target in targets:
				if type(aoe_target) == TacticsCharacter:
					if aoe_target.cur_HP > 0:
						score += self.scoreDamage(DamagePacket(world.current_character_turn, aoe_target, 5 - 2 * gridhelper.horizontalDistance(target.coords, aoe_target.coords), "fire", "burn"))
		elif action.name == "Cone of Cold":
			targeting_rules = TargetingRules(action.targeting_rules.trajectory, action.targeting_rules.area, False, True, False, False)
			targets = world.getTargetsInArea(world.current_character_turn, target, targeting_rules)
			for aoe_target in targets:
				if type(aoe_target) == TacticsCharacter:
					if aoe_target.cur_HP > 0:
						score += self.scoreDamage(DamagePacket(world.current_character_turn, aoe_target, 4, "cold", "freeze"))
		self.actions_considered += 1
		return score * uniform(1, 1.1)
Exemplo n.º 4
0
 def targetAction(self):
     if self.source.visual:
         self.application.sound_fire.play()
     for target in self.target_list:
         if type(target) == TacticsCharacter:
             target.takeDamage(
                 DamagePacket(
                     self.source, target,
                     5 - 2 * gridhelper.horizontalDistance(
                         target.coords, self.initial_target.coords), "fire",
                     "burn"))
         if type(target) == TacticsTile:
             if target.visual:
                 self.explosions.append(
                     Explosion(self.application, target.coords,
                               "explosion"))
             for surface in target.surface_effects:
                 surface.startBurning()
Exemplo n.º 5
0
 def targetAction(self):
     self.initial_target.takeDamage(
         DamagePacket(self.source, self.initial_target, 0, "mental",
                      "pull"))
Exemplo n.º 6
0
 def targetAction(self):
     self.initial_target.takeDamage(
         DamagePacket(self.source, self.initial_target, 4, "kinetic"))
Exemplo n.º 7
0
 def trigger(self, character):
     character.takeDamage(
         DamagePacket(self, character, 2, "piercing", "reduce AP"))
     self.destroy()
Exemplo n.º 8
0
 def opportunityAttack(self, target):
     if self.visual:
         self.visual.opportunityAttack(target)
     target.takeDamage(DamagePacket(self, target, 6, "kinetic"))
     self.opportunity_attacks -= 1
Exemplo n.º 9
0
 def burn(self):
     self.takeDamage(DamagePacket("fire", self, 1, "fire"))