Added an overpowered eagle boss. To avoid seing it too often, entities now have a certain chance of being spawned. Closes #19.
This commit is contained in:
parent
3ace133037
commit
424044a5e4
|
@ -30,6 +30,7 @@ class TexturePack:
|
||||||
TEDDY_BEAR: str
|
TEDDY_BEAR: str
|
||||||
TIGER: str
|
TIGER: str
|
||||||
WALL: str
|
WALL: str
|
||||||
|
EAGLE: str
|
||||||
|
|
||||||
ASCII_PACK: "TexturePack"
|
ASCII_PACK: "TexturePack"
|
||||||
SQUIRREL_PACK: "TexturePack"
|
SQUIRREL_PACK: "TexturePack"
|
||||||
|
@ -76,6 +77,7 @@ TexturePack.ASCII_PACK = TexturePack(
|
||||||
TEDDY_BEAR='8',
|
TEDDY_BEAR='8',
|
||||||
TIGER='n',
|
TIGER='n',
|
||||||
WALL='#',
|
WALL='#',
|
||||||
|
EAGLE='µ',
|
||||||
)
|
)
|
||||||
|
|
||||||
TexturePack.SQUIRREL_PACK = TexturePack(
|
TexturePack.SQUIRREL_PACK = TexturePack(
|
||||||
|
@ -103,4 +105,5 @@ TexturePack.SQUIRREL_PACK = TexturePack(
|
||||||
TEDDY_BEAR='🧸',
|
TEDDY_BEAR='🧸',
|
||||||
TIGER='🐅',
|
TIGER='🐅',
|
||||||
WALL='🧱',
|
WALL='🧱',
|
||||||
|
EAGLE='🦅',
|
||||||
)
|
)
|
||||||
|
|
|
@ -100,3 +100,12 @@ class TeddyBear(Monster):
|
||||||
maxhealth: int = 50, *args, **kwargs) -> None:
|
maxhealth: int = 50, *args, **kwargs) -> None:
|
||||||
super().__init__(name=name, strength=strength,
|
super().__init__(name=name, strength=strength,
|
||||||
maxhealth=maxhealth, *args, **kwargs)
|
maxhealth=maxhealth, *args, **kwargs)
|
||||||
|
|
||||||
|
class GiantSeaEagle(Monster):
|
||||||
|
"""
|
||||||
|
An eagle boss
|
||||||
|
"""
|
||||||
|
def __init__(self, name: str = "eagle", strength: int = 1000,
|
||||||
|
maxhealth: int = 5000, *args, **kwargs) -> None:
|
||||||
|
super().__init__(name=name, strength=strength,
|
||||||
|
maxhealth=maxhealth, *args, **kwargs)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
from math import sqrt
|
from math import sqrt
|
||||||
from random import choice, randint
|
from random import choice, randint, choices
|
||||||
from typing import List, Optional, Any
|
from typing import List, Optional, Any
|
||||||
|
|
||||||
from .display.texturepack import TexturePack
|
from .display.texturepack import TexturePack
|
||||||
|
@ -146,7 +146,8 @@ class Map:
|
||||||
tile = self.tiles[y][x]
|
tile = self.tiles[y][x]
|
||||||
if tile.can_walk():
|
if tile.can_walk():
|
||||||
break
|
break
|
||||||
entity = choice(Entity.get_all_entity_classes())()
|
entity = choices(Entity.get_all_entity_classes(),\
|
||||||
|
weights = Entity.get_weights(), k=1)[0]()
|
||||||
entity.move(y, x)
|
entity.move(y, x)
|
||||||
self.add_entity(entity)
|
self.add_entity(entity)
|
||||||
|
|
||||||
|
@ -349,10 +350,19 @@ class Entity:
|
||||||
"""
|
"""
|
||||||
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, Heart
|
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, Heart
|
||||||
from squirrelbattle.entities.monsters import Tiger, Hedgehog, \
|
from squirrelbattle.entities.monsters import Tiger, Hedgehog, \
|
||||||
Rabbit, TeddyBear
|
Rabbit, TeddyBear, GiantSeaEagle
|
||||||
from squirrelbattle.entities.friendly import Merchant, Sunflower
|
from squirrelbattle.entities.friendly import Merchant, Sunflower
|
||||||
return [BodySnatchPotion, Bomb, Heart, Hedgehog, Rabbit, TeddyBear,
|
return [BodySnatchPotion, Bomb, Heart, Hedgehog, Rabbit, TeddyBear,
|
||||||
Sunflower, Tiger, Merchant]
|
Sunflower, Tiger, Merchant, GiantSeaEagle]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_weights() -> list:
|
||||||
|
"""
|
||||||
|
Returns a weigth list associated to the above function, to
|
||||||
|
be used to spawn random entities with a certain probability.
|
||||||
|
"""
|
||||||
|
return [3, 5, 6, 5, 5, 5,
|
||||||
|
5, 4, 4, 1]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_all_entity_classes_in_a_dict() -> dict:
|
def get_all_entity_classes_in_a_dict() -> dict:
|
||||||
|
@ -361,7 +371,7 @@ class Entity:
|
||||||
"""
|
"""
|
||||||
from squirrelbattle.entities.player import Player
|
from squirrelbattle.entities.player import Player
|
||||||
from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit, \
|
from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit, \
|
||||||
TeddyBear
|
TeddyBear, GiantSeaEagle
|
||||||
from squirrelbattle.entities.friendly import Merchant, Sunflower
|
from squirrelbattle.entities.friendly import Merchant, Sunflower
|
||||||
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, \
|
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, \
|
||||||
Heart, Sword
|
Heart, Sword
|
||||||
|
@ -377,6 +387,7 @@ class Entity:
|
||||||
"Merchant": Merchant,
|
"Merchant": Merchant,
|
||||||
"Sunflower": Sunflower,
|
"Sunflower": Sunflower,
|
||||||
"Sword": Sword,
|
"Sword": Sword,
|
||||||
|
"Eagle": GiantSeaEagle,
|
||||||
}
|
}
|
||||||
|
|
||||||
def save_state(self) -> dict:
|
def save_state(self) -> dict:
|
||||||
|
|
Loading…
Reference in New Issue