From 7b9eff218df8d045ab432dae899ed92df5922657 Mon Sep 17 00:00:00 2001 From: Justin Lewis Date: Thu, 18 Feb 2010 00:07:09 +0000 Subject: Lots of changes, animation, and partial battle engine. --- diff --git a/MAFH.activity/constants.py b/MAFH.activity/constants.py index be419d1..91441ad 100644 --- a/MAFH.activity/constants.py +++ b/MAFH.activity/constants.py @@ -8,10 +8,11 @@ MAP_PATH = BASE_PATH + "map/" MENU_PATH = BASE_PATH + "image/menu/" HUD_PATH = BASE_PATH + "image/hud/" ENV_PATH = BASE_PATH + "image/environment/" +ITEM_PATH = BASE_PATH + "image/item/" PUZZLE_PATH = BASE_PATH + "image/puzzle/" FMC_PATH = BASE_PATH + "fmc/" -TOUR_PATH = BASE_PATH + "/image/tutorial/" -CHAR_PATH = BASE_PATH + "/image/character/" +TOUR_PATH = BASE_PATH + "image/tutorial/" +CHAR_PATH = BASE_PATH + "image/character/" DOOR_ORDER = ['N','S','E','W'] DOOR_INDEX = { diff --git a/MAFH2/Actor.py b/MAFH2/Actor.py new file mode 100644 index 0000000..ce52558 --- /dev/null +++ b/MAFH2/Actor.py @@ -0,0 +1,84 @@ +class Actor: + def __init__(self): + self.MHP = 40 #maximum health points (base HP) + self.HP = 40 #current health points + self.BHP = 0 #bonus health points (from equipment) + self.ATT = 10 #base attack power + self.BAB = 0 #bonus attack power (from battle timer) + self.BAE = 0 #bonus attack power (from equipment) + self.DEF = 1 #base defense power + self.BDE = 0 #bonus defense power(from equipment) + self.AL = 0 #Attack Level (0-?) + + #returns actor's current attack power + def attackPower(self): + return (self.ATT+self.BAE) + + #returns actor's current attack level + def attackLevel(self): + return (self.AL) + + #returns actor's maximum health + def maxHealthPoints(self): + return (self.HP + self.BHP) + + #returns actor's current health + def healthPoints(self): + return (self.HP) + + #returns actor's current defense power + def defensePower(self): + return (self.DEF + self.BDE) + + #returns actor's equipped items + def equipment(self): + return self.eqItems_Ar + + #returns actor's current inventory + def inventory(self): + return self.inv_Ar + + #sets enemy's current health + def setHealth(self,_HP): + self.HP = _HP + + #sets enemy's bonus health + def setBonusHP(self,_BHP): + self.BHP = _BHP + + #sets enemy's bonus attack power (from battle timer) + def setBonusAP(self,_BAP): + self.BAP = _BAP + + #sets enemy's bonus attack power (from equipment) + def setBonusAE(self,_BAE): + self.BAE = _BAE + + #sets enemy's bonus defense power (from equipment) + def setBonusDE(self,_BDE): + self.BDE = _BDE + + #increases player's current health by given amount + def giveHealth(self,_inc): + self.HP += _inc + if self.HP > self.MHP : + self.HP = self.MHP + + #player is attacked by given damage + def defendAttack(self,dmg): + self.HP -= (dmg - self.defensePower()) + if self.HP<0: + self.HP=0 + elif self.HP>self.MHP: + self.HP=self.MHP + + #returns player's list of attacks that are currently available for use + def availableAttacks(self): + return self.attacks_Ar + + #add item to equipment + def addEquipment(self,_item): + print("add equip") + + def remEquipment(self,_item): + print("remove equip") diff --git a/MAFH2/AnimatedSprite.py b/MAFH2/AnimatedSprite.py new file mode 100644 index 0000000..c2eddc0 --- /dev/null +++ b/MAFH2/AnimatedSprite.py @@ -0,0 +1,64 @@ +import pygame + +class Spritesheet: + """ + Class from http://www.scriptedfun.com/transcript-2-using-sprite-sheets-and-drawing-the-background/ + + This class can be used to seporate images from the sprite sheet + """ + def __init__(self, filename): + self.sheet = pygame.image.load(filename).convert() + + def imgat(self, rect, colorkey = None): + rect = pygame.Rect(rect) + image = pygame.Surface(rect.size).convert() + image.blit(self.sheet, (0, 0), rect) + if colorkey is not None: + if colorkey is -1: + colorkey = image.get_at((0, 0)) + image.set_colorkey(colorkey, pygame.RLEACCEL) + return image + + def imgsat(self, rects, colorkey = None): + imgs = [] + for rect in rects: + imgs.append(self.imgat(rect, colorkey)) + return imgs + + def img_extract( self, cols, rows, width, height ): + rect_list = [] + for y in range(0, rows): + for x in range(0, cols): + rect_list.append( (width*x, height*y, width, height) ) + return self.imgsat( rect_list, -1 ) + + +class AnimatedSprite(pygame.sprite.Sprite): + """ + http://shinylittlething.com/2009/07/21/pygame-and-animated-sprites/ + """ + + def __init__(self, images, fps = 10): + pygame.sprite.Sprite.__init__(self) + self._images = images + + # Track the time we started, and the time between updates. + # Then we can figure out when we have to switch the image. + self._start = pygame.time.get_ticks() + self._delay = 1000 / fps + self._last_update = 0 + self._frame = 0 + + # Call update to set our first image. + self.update(pygame.time.get_ticks()) + + def update(self, t): + # Note that this doesn't work if it's been more that self._delay + # time between calls to update(); we only update the image once + # then, but it really should be updated twice. + + if t - self._last_update > self._delay: + self._frame += 1 + if self._frame >= len(self._images): self._frame = 0 + self.image = self._images[self._frame] + self._last_update = t diff --git a/MAFH2/BattleEngine.py b/MAFH2/BattleEngine.py new file mode 100644 index 0000000..c31c4d3 --- /dev/null +++ b/MAFH2/BattleEngine.py @@ -0,0 +1,57 @@ +from GameEngine import GameEngineElement +from Enemy import get_enemy +import pygame + +from constants import CHAR_PATH + +from gettext import gettext as _ + +class BattleEngine(GameEngineElement): + def __init__(self, dgn): + GameEngineElement.__init__(self, has_draw=True, has_event=True) + + self.dgn = dgn + self.current_room = dgn.get_current_room() + + self.enemy_list = [] + + for i in range(0,4): + e_index = self.current_room.get_enemy( i ) + + if e_index != '0': + self.enemy_list.append( get_enemy( e_index ) ) + + + self.game_engine.start_event_timer(1, 150) + + self.add_to_engine() + self.game_engine.get_object('mesg').add_line( _('Enemies present, prepare to fight!') ) + + def __attack_phase(self): + # Enemy Attack + # Check player health + pass + + def __end_battle(self): + #Give items if any + #self terminate + pass + + def event_handler(self, event): + if event.type == pygame.USEREVENT+1: + return True + + # We don't want to allow other things to run durning battle + return True + + def draw(self, screen): + x=250 + y=150 + i = 1 + + tick_time = pygame.time.get_ticks() + + for enemy in self.enemy_list: + enemy.sprite.update( tick_time ) + screen.blit(enemy.sprite.image, (x+(i*200),y,200,200)) + i = i+1 diff --git a/MAFH2/Dungeon.py b/MAFH2/Dungeon.py index df3f7de..9528407 100644 --- a/MAFH2/Dungeon.py +++ b/MAFH2/Dungeon.py @@ -5,11 +5,12 @@ from gettext import gettext as _ from GameEngine import GameEngineElement +from BattleEngine import BattleEngine from Map import Map from Room import Room from Items import get_item from constants import ( - MAP_PATH, ENV_PATH, RIGHT, LEFT, NORTH, SOUTH, EAST, + MAP_PATH, ENV_PATH, ITEM_PATH, RIGHT, LEFT, NORTH, SOUTH, EAST, WEST, UNLOCKED_DOOR, LOCKED_DOOR, PUZZLE_DOOR, LOCKED_PUZZLE_DOOR, ENTRANCE_DOOR, EXIT_DOOR ) @@ -79,9 +80,10 @@ class Dungeon(GameEngineElement): def __load_images(self): - LVL_PATH = ENV_PATH + LVL_PATH = ENV_PATH + "ice/" - for img_key in ['FLR', 'FR', 'FL', 'F', 'LR', 'L', 'R', '_']: + #for img_key in ['FLR', 'FR', 'FL', 'F', 'LR', 'L', 'R', '_']: + for img_key in ['room','side','front']: self.__images[img_key] = pygame.image.load(LVL_PATH+img_key.lower()+".gif") def get_current_room(self): @@ -156,6 +158,7 @@ class Dungeon(GameEngineElement): self.game_engine.get_object('mesg').add_line(_("You enter room at %i,%i")%(dX, dY)) profile.move_to( dX, dY ) self.game_engine.get_object('map').update_macro() + self.check_for_enemies() else: #Entrance or exit may be on a boarder of the grid door_flag = self.rooms[profile.position].get_door( dc ) @@ -164,6 +167,11 @@ class Dungeon(GameEngineElement): # TODO: Next Dungeon pass + def check_for_enemies(self): + current_room = self.get_current_room() + if current_room.has_enemy: + self.game_engine.add_object('battle', BattleEngine( self ) ) + def item_pickup(self): profile = self.game_engine.get_object('profile') current_room = self.rooms[profile.position] @@ -234,14 +242,43 @@ class Dungeon(GameEngineElement): #ANIMATION return True + def normalize_dir( self ): + profile = self.game_engine.get_object('profile') + dir = profile.playerFacing + + if dir == NORTH: + return 'W', 'N', 'E' + + elif dir == SOUTH: + return 'E', 'S', 'W' + + elif dir == EAST: + return 'N', 'E', 'S' + + elif dir == WEST: + return 'S', 'W', 'N' + def draw(self, screen): profile = self.game_engine.get_object('profile') dir = profile.playerFacing current_room = self.rooms[profile.position] + + + screen.blit(self.__images['room'],(0,0,1200,700)) + + left, front, right = self.normalize_dir() + if current_room.get_door( left ) != '0': + screen.blit(self.__images['side'],(2,15,192, 559)) + + if current_room.get_door( front ) != '0': + screen.blit(self.__images['front'],(453,0,192, 559)) + + if current_room.get_door( right ) != '0': + screen.blit(pygame.transform.flip(self.__images['side'], True, False),(1010,10,192, 559)) + + # Draw background - door_cfg = current_room.door_str( dir ) - screen.blit(self.__images[door_cfg],(0,0,1200,700)) # Draw Items img_list = [] @@ -259,7 +296,7 @@ class Dungeon(GameEngineElement): path = get_item( item_key[0] ).path if not self.__images.has_key( path ): - self.__images[path] = pygame.image.load(ENV_PATH + path) + self.__images[path] = pygame.image.load(ITEM_PATH + path) img_list.append( self.__images[path] ) diff --git a/MAFH2/Enemy.py b/MAFH2/Enemy.py new file mode 100644 index 0000000..0f58cbb --- /dev/null +++ b/MAFH2/Enemy.py @@ -0,0 +1,59 @@ +from gettext import gettext as _ +from constants import CHAR_PATH +class InvalidEnemyException(Exception): pass + +import pygame +from Actor import Actor +from AnimatedSprite import Spritesheet, AnimatedSprite +ENEMY = { + '1':{'name':_('Wizard Adept'),'img':"concept_wizard.png",'hp':20,'att':2,'weak':'special', 'sprite':(1,1,181,365)}, + '2':{'name':_('Goblin'),'img':"concept_goblin.png",'hp':40,'att':3,'weak':'fire','sprite':(1,1,217,317)}, + '3':{'name':_('Orc'),'img':"concept_orc.png",'hp':50,'att':5,'weak':'lightning','sprite':(1,1,264,338)}, + '4':{'name':_('Stone Golem'),'img':"concept_orc.png",'hp':10,'att':6,'weak':'missile','sprite':(1,1,264,338)}, + '5':{'name':_('Serratula'),'img':"Crab.png",'hp':125,'att':12,'weak':'crit','sprite':(1,1,400,400)}, + '6':{'name':_('Feren'),'img':"faren.png",'hp':1500,'att':10,'weak':'special','sprite':(1,1,250,250)}, + '7':{'name':_('Cave Crab'),'img':"Crab.png",'hp':50,'att':7,'weak':'missile','sprite':(1,1,400,400)}, + '8':{'name':_('Frost Giant'),'img':"frost_giant.png",'hp':45,'att':9,'weak':'fire','sprite':(1,1,250,250)}, + #UPDATE BONESPROUT VALUES + '9':{'name':_('Bonesprout'),'img':"bonesprout.png",'hp':45,'att':9,'weak':'fire','sprite':(1,1,250,250)}, + 'a':{'name':_('anim_test'),'img':"anim_test.gif",'hp':45,'att':9,'weak':'fire','sprite':(3,2, 156, 166)} +} + +class Enemy(Actor): + def __init__(self, id): + Actor.__init__(self) + id = 'a' + self.weakness=None + self.eqItems_Ar = [] #equipped items + self.attacks_Ar = [] #associated array for attack string names and attack power values + self.eqItem_Ar = [] + self.inv_Ar = [] + self.attacks_Ar = [] + col,row,width,height = ENEMY[id]['sprite'] + self.sprite=AnimatedSprite(Spritesheet(CHAR_PATH + ENEMY[id]['img']).img_extract(col,row,width,height)) + self.place=0 + + #load image based on type later + self.name=ENEMY[id]['name'] + #self.sprite.image=pygame.image.load(CHAR_PATH + ENEMY[id]['img']) + self.HP = ENEMY[id]['hp'] + self.MHP=ENEMY[id]['hp'] + self.ATT = ENEMY[id]['att'] + self.weakness=ENEMY[id]['weak'] + + #returns player's current attack power + def attackPower(self,name): + if name=="basic": + return self.ATT+self.BAE + elif name=="critical": + return int((self.ATT+self.BAE) * 1.5) + elif name=="special": + return int((self.ATT+self.BAE) * 1.3) + + +def get_enemy(key): + if key in ENEMY: + return Enemy( key ) + else: + raise InvalidEnemyException() + diff --git a/MAFH2/Hero.py b/MAFH2/Hero.py new file mode 100644 index 0000000..f55ccac --- /dev/null +++ b/MAFH2/Hero.py @@ -0,0 +1,112 @@ +from Actor import Actor +from Items import get_item + +####################################################################### +#Hero class - represents the player in battle and holds all of their data +########################################################################## +class Hero(Actor): + def __init__(self): + Actor.__init__(self) + + self.weapon=None + self.armor=None + self.accessory=None + self.eqItem=[] #player can equip up to 4 usable items to use in battle + self.inv_Ar = [] #inventory + self.attacks_Ar = [] #associated array for attack string names and attack power values + self.currentInput="" + self.currentProb1=0 + self.currentProb2=0 + self.currentAnswer=0 + self.fractionSum=0 + self.akhal=0 + + #amulet=get_item('1') + #calculator=get_item('s') + #emptyItem=None + #self.eqItem=[emptyItem,emptyItem,emptyItem,emptyItem] + #self.inv_Ar=[amulet,calculator] + + #returns player's current attack power + def attackPower(self,name): + if name=="basic": + return self.ATT+self.BAE + elif name=="critical": + return self.ATT+self.BAE+self.BAB + elif name=="Fire": + return self.ATT+self.BAB + elif name=="Heal": + return self.BAB-10 + elif name=="Lightning": + return self.ATT+self.BAB + elif name=="Division": + return (self.ATT+self.BAE+self.BAB)*1.5 + elif name=="Missile": + return self.ATT+self.BAB + def setBonusAP(self,BAP): + self.BAB=BAP +#****INVENTORY MUTATORS********************************************# + #add item to equipment + def equip(self,item): + #add _item to equipment + if item.type=="Weapon": + if not self.weapon==None: + self.inv_Ar.append(self.weapon) + self.weapon=item + self.inv_Ar.remove(item) + self.BAE=item.power + elif item.type=="Armor": + if not self.armor==None: + self.inv_Ar.append(self.armor) + self.armor=item + self.inv_Ar.remove(item) + self.BDE=item.power + elif item.type=="Accessory": + if not self.accessory==None: + self.inv_Ar.append(self.accessory) + self.accessory=item + self.inv_Ar.remove(item) + self.BHP=item.power + elif item.type=="Usable": + if self.HP < self.MHP: + self.HP+=int(self.MHP*item.power) + self.player.migrateMessages("You heal for "+repr(int(self.MHP*item.power))) + self.inv_Ar.remove(item) + else: + self.player.migrateMessages("You are already at full health") + if self.HP>self.MHP: + self.HP=self.MHP + + + #remove item from equipment + def remEquipment(self,item): + if item != None: + if item.type=="Weapon": + self.weapon=None + self.BAE=0 + self.inv_Ar.append(item) + elif item.type=="Armor": + self.armor=None + self.BDE=0 + self.inv_Ar.appen(item) + elif item.type=="Accessory": + self.accessory=None + self.BHP=0 + self.inv_Ar.append(item) + elif item==None: + i=0 + else: + if item in self.eqItem: + self.eqItem[self.eqItem.index(item)]=None + self.inv_Ar.append(item) + #remove _item from equipment -- leave cell empty + + #add item to inventory + def addInventory(self,item): + self.inv_Ar.append(item) + #add _item to end of inventory + + def remInventory(self,item): + self.inv_Ar.remove(item) + #remove _item from inventory +#end class Hero diff --git a/MAFH2/MafhActivity.py b/MAFH2/MafhActivity.py index efb80a2..84a64a0 100644 --- a/MAFH2/MafhActivity.py +++ b/MAFH2/MafhActivity.py @@ -24,7 +24,8 @@ def menu_called(id, menu): if not ge.has_object('profile'): ge.add_object( 'profile', - Profile( name_entry_cb=lambda: ge.add_object('comic', Comic(FMC_PATH+"FMC1/",None,start_game)) ) ) + #Profile( name_entry_cb=lambda: ge.add_object('comic', Comic(FMC_PATH+"FMC1/",None,start_game)) ) ) + Profile( name_entry_cb=start_game )) elif id == 'controls': menu.remove_from_engine() diff --git a/MAFH2/Profile.py b/MAFH2/Profile.py index 5f28589..5f801c0 100644 --- a/MAFH2/Profile.py +++ b/MAFH2/Profile.py @@ -2,6 +2,7 @@ import pygame from GameEngine import GameEngineElement from constants import MENU_PATH, NORTH, SOUTH, EAST, WEST, RIGHT, LEFT +from Hero import Hero from gettext import gettext as _ @@ -12,6 +13,7 @@ class Profile(GameEngineElement): self.dungeon_id = "al1.txt" self.position = (-1, -1) self.playerFacing=NORTH + self.hero = Hero() # 4 types of stats and difficulties self.problem_stats = {} diff --git a/MAFH2/assets b/MAFH2/assets deleted file mode 120000 index 111cf4a..0000000 --- a/MAFH2/assets +++ /dev/null @@ -1 +0,0 @@ -../MAFH.activity/assets/ \ No newline at end of file diff --git a/MAFH2/assets/image/character/Crab.png b/MAFH2/assets/image/character/Crab.png new file mode 100755 index 0000000..ad520f8 --- /dev/null +++ b/MAFH2/assets/image/character/Crab.png Binary files differ diff --git a/MAFH2/assets/image/character/anim_test.gif b/MAFH2/assets/image/character/anim_test.gif new file mode 100755 index 0000000..6693e7a --- /dev/null +++ b/MAFH2/assets/image/character/anim_test.gif Binary files differ diff --git a/MAFH2/assets/image/character/bonesprout.png b/MAFH2/assets/image/character/bonesprout.png new file mode 100644 index 0000000..07c69e6 --- /dev/null +++ b/MAFH2/assets/image/character/bonesprout.png Binary files differ diff --git a/MAFH2/assets/image/character/concept_goblin.png b/MAFH2/assets/image/character/concept_goblin.png new file mode 100644 index 0000000..3393810 --- /dev/null +++ b/MAFH2/assets/image/character/concept_goblin.png Binary files differ diff --git a/MAFH2/assets/image/character/concept_orc.png b/MAFH2/assets/image/character/concept_orc.png new file mode 100644 index 0000000..6579935 --- /dev/null +++ b/MAFH2/assets/image/character/concept_orc.png Binary files differ diff --git a/MAFH2/assets/image/character/concept_wizard.png b/MAFH2/assets/image/character/concept_wizard.png new file mode 100644 index 0000000..3ae43ce --- /dev/null +++ b/MAFH2/assets/image/character/concept_wizard.png Binary files differ diff --git a/MAFH2/assets/image/character/faren.png b/MAFH2/assets/image/character/faren.png new file mode 100644 index 0000000..40ed3db --- /dev/null +++ b/MAFH2/assets/image/character/faren.png Binary files differ diff --git a/MAFH2/assets/image/character/frost_giant.png b/MAFH2/assets/image/character/frost_giant.png new file mode 100644 index 0000000..1c6d2d8 --- /dev/null +++ b/MAFH2/assets/image/character/frost_giant.png Binary files differ diff --git a/MAFH2/assets/image/character/merchant.png b/MAFH2/assets/image/character/merchant.png new file mode 100644 index 0000000..b02804c --- /dev/null +++ b/MAFH2/assets/image/character/merchant.png Binary files differ diff --git a/MAFH2/assets/image/environment/astral/room.gif b/MAFH2/assets/image/environment/astral/room.gif new file mode 100644 index 0000000..2869b75 --- /dev/null +++ b/MAFH2/assets/image/environment/astral/room.gif Binary files differ diff --git a/MAFH2/assets/image/environment/ice/front.gif b/MAFH2/assets/image/environment/ice/front.gif new file mode 100644 index 0000000..fcd2508 --- /dev/null +++ b/MAFH2/assets/image/environment/ice/front.gif Binary files differ diff --git a/MAFH2/assets/image/environment/ice/room.gif b/MAFH2/assets/image/environment/ice/room.gif new file mode 100755 index 0000000..13f3040 --- /dev/null +++ b/MAFH2/assets/image/environment/ice/room.gif Binary files differ diff --git a/MAFH2/assets/image/environment/ice/side.gif b/MAFH2/assets/image/environment/ice/side.gif new file mode 100644 index 0000000..ae2d086 --- /dev/null +++ b/MAFH2/assets/image/environment/ice/side.gif Binary files differ diff --git a/MAFH2/assets/image/environment/stone/room.gif b/MAFH2/assets/image/environment/stone/room.gif new file mode 100755 index 0000000..544853d --- /dev/null +++ b/MAFH2/assets/image/environment/stone/room.gif Binary files differ diff --git a/MAFH2/assets/image/item/Armor.gif b/MAFH2/assets/image/item/Armor.gif new file mode 100755 index 0000000..1d2060e --- /dev/null +++ b/MAFH2/assets/image/item/Armor.gif Binary files differ diff --git a/MAFH2/assets/image/item/Big Key.gif b/MAFH2/assets/image/item/Big Key.gif new file mode 100755 index 0000000..f839ad7 --- /dev/null +++ b/MAFH2/assets/image/item/Big Key.gif Binary files differ diff --git a/MAFH2/assets/image/item/Diamond.gif b/MAFH2/assets/image/item/Diamond.gif new file mode 100755 index 0000000..a39a9c0 --- /dev/null +++ b/MAFH2/assets/image/item/Diamond.gif Binary files differ diff --git a/MAFH2/assets/image/item/Elixir.gif b/MAFH2/assets/image/item/Elixir.gif new file mode 100755 index 0000000..15bfefc --- /dev/null +++ b/MAFH2/assets/image/item/Elixir.gif Binary files differ diff --git a/MAFH2/assets/image/item/Emerald.gif b/MAFH2/assets/image/item/Emerald.gif new file mode 100755 index 0000000..326be17 --- /dev/null +++ b/MAFH2/assets/image/item/Emerald.gif Binary files differ diff --git a/MAFH2/assets/image/item/High Elixir.gif b/MAFH2/assets/image/item/High Elixir.gif new file mode 100755 index 0000000..722e5f3 --- /dev/null +++ b/MAFH2/assets/image/item/High Elixir.gif Binary files differ diff --git a/MAFH2/assets/image/item/Nostrum.gif b/MAFH2/assets/image/item/Nostrum.gif new file mode 100755 index 0000000..17d7c41 --- /dev/null +++ b/MAFH2/assets/image/item/Nostrum.gif Binary files differ diff --git a/MAFH2/assets/image/item/Panacea.gif b/MAFH2/assets/image/item/Panacea.gif new file mode 100755 index 0000000..9654773 --- /dev/null +++ b/MAFH2/assets/image/item/Panacea.gif Binary files differ diff --git a/MAFH2/assets/image/item/Remedy.gif b/MAFH2/assets/image/item/Remedy.gif new file mode 100755 index 0000000..bc9986a --- /dev/null +++ b/MAFH2/assets/image/item/Remedy.gif Binary files differ diff --git a/MAFH2/assets/image/item/Ruby.gif b/MAFH2/assets/image/item/Ruby.gif new file mode 100755 index 0000000..afaf80a --- /dev/null +++ b/MAFH2/assets/image/item/Ruby.gif Binary files differ diff --git a/MAFH2/assets/image/item/Sapphire.gif b/MAFH2/assets/image/item/Sapphire.gif new file mode 100755 index 0000000..6ce67e4 --- /dev/null +++ b/MAFH2/assets/image/item/Sapphire.gif Binary files differ diff --git a/MAFH2/assets/image/item/Small Key.gif b/MAFH2/assets/image/item/Small Key.gif new file mode 100755 index 0000000..ca4c2fc --- /dev/null +++ b/MAFH2/assets/image/item/Small Key.gif Binary files differ diff --git a/MAFH2/assets/image/item/Weapon.gif b/MAFH2/assets/image/item/Weapon.gif new file mode 100755 index 0000000..a26dd14 --- /dev/null +++ b/MAFH2/assets/image/item/Weapon.gif Binary files differ diff --git a/MAFH2/assets/image/item/noItem.gif b/MAFH2/assets/image/item/noItem.gif new file mode 100755 index 0000000..5ed379f --- /dev/null +++ b/MAFH2/assets/image/item/noItem.gif Binary files differ diff --git a/MAFH2/assets/image/menu/mafh_splash.gif b/MAFH2/assets/image/menu/mafh_splash.gif new file mode 100755 index 0000000..7a3cafa --- /dev/null +++ b/MAFH2/assets/image/menu/mafh_splash.gif Binary files differ diff --git a/MAFH2/assets/map/al1.txt b/MAFH2/assets/map/al1.txt new file mode 100755 index 0000000..24f25a5 --- /dev/null +++ b/MAFH2/assets/map/al1.txt @@ -0,0 +1,20 @@ +Dungeon 1 +al1.txt +3x5 +0 +al2.txt +Nx0000Eu00000lv000000 +0000WuEu01100rb000000 +00SuWu0000000lh000000 +00Su000000000qv000000 +000000000000000000000 +NuSl000000000lhlh0000 +Nu0000Eu0300000000000 +00SuWuEu00000lv000000 +Nl00Wu000000000000000 +000000000000000000000 +NuSu000000000lv000000 +000000000000000000000 +000000000000000000000 +NuSe00000000000000000 +000000000000000000000 diff --git a/MAFH2/assets/map/al2.txt b/MAFH2/assets/map/al2.txt new file mode 100755 index 0000000..ff1512d --- /dev/null +++ b/MAFH2/assets/map/al2.txt @@ -0,0 +1,33 @@ +Dungeon 2 +al2.txt +4x7 +0 +al3.txt +00Su000000000qv000000 +000000000000000000000 +000000000000000000000 +000000000000000000000 +NuSu00000010200000000 +000000000000000000000 +NxSu00000000000000000 +000000000000000000000 +NuSu00000000000000000 +000000000000000000000 +NuSl00000000000000000 +00Su000000131rb000000 +Nu0000Eu020002b000000 +0000WuEu0000000000000 +NlSuWuEl0000000000000 +Nu00Wl000000000000000 +000000000000000000000 +000000000000000000000 +NuSu000002020lhlh0000 +000000000000000000000 +00Su00EuS00002v000000 +0000WuEu0000000000000 +Nu00Wu000000000000000 +000000000000000000000 +NuSe00000000000000000 +000000000000000000000 +000000000000000000000 +000000000000000000000 diff --git a/MAFH2/assets/map/al3.txt b/MAFH2/assets/map/al3.txt new file mode 100644 index 0000000..dc06c2c --- /dev/null +++ b/MAFH2/assets/map/al3.txt @@ -0,0 +1,21 @@ +Dungeon 3 +al3.txt +4x4 +0 +al4.txt +00Sl00Eu0500000000000 +0000Wu0000000rv000000 +000000000000000000000 +NxSu0000S000000000000 +Nl0000Eu0440000lb0000 +00SuWu000000000000000 +00Sl00El000007v000000 +Nu00Wl000330000000000 +000000000000000000000 +NuSu00Eu0200000000000 +NlSuWu0000000lhlv0000 +000000000000000000000 +000000000000000000000 +Nu0000Eu00000qv000000 +NpSeWp000000000000000 +000000000000000000000 diff --git a/MAFH2/assets/map/al4.txt b/MAFH2/assets/map/al4.txt new file mode 100755 index 0000000..6d109bc --- /dev/null +++ b/MAFH2/assets/map/al4.txt @@ -0,0 +1,25 @@ +Dungeon 4 +al4.txt +4x5 +0 +al5.txt +000000000000000000000 +00Su00Eu00000rvqv0000 +0000WuEu0000000000000 +00SuWu000000000000000 +00Su00Eu0000000000000 +Nu00Wu000000000000000 +000000000000000000000 +Nu0000Ex0000000000000 +Nu0000Eu0000000000000 +00SuWuEu0000000000000 +0000WuEu0000000000000 +00SuWu000000000000000 +000000000000000000000 +Nu0000000000000000000 +000000000000000000000 +NuSu00000000000000000 +000000000000000000000 +00Se00Eu0000000000000 +0000WuEu0000000000000 +Nu00Wu000000000000000 diff --git a/MAFH2/assets/map/al5.txt b/MAFH2/assets/map/al5.txt new file mode 100755 index 0000000..cb2f87e --- /dev/null +++ b/MAFH2/assets/map/al5.txt @@ -0,0 +1,25 @@ +Dungeon 5 +al5.txt +5x4 +0 +bl1.txt +0000Wu000000000000000 +00Su00000000000000000 +000000000000000000000 +00Su00Eu0000000000000 +0000WuEl0000000000000 +0000WxEu0000000000000 +NuSuWuEu0000000000000 +0000WuEu0000000000000 +NuSuWuEu00000qv000000 +0000Wu000000000000000 +000000000000000000000 +NuSu000000000rv000000 +000000000000000000000 +NuSu00000000000000000 +000000000000000000000 +000000Eu0000000000000 +Nu00WuEu0000000000000 +00SeWuEu0000000000000 +Nu00WuEu0000000000000 +0000Wu000000000000000 diff --git a/MAFH2/assets/map/bl1.txt b/MAFH2/assets/map/bl1.txt new file mode 100755 index 0000000..6149542 --- /dev/null +++ b/MAFH2/assets/map/bl1.txt @@ -0,0 +1,30 @@ +Dungeon 6 +bl1.txt +5x5 +1 +bl2.txt +00Su00Eu00000qh0000000000 +0000WuEu00700000000000000 +0000WuEu00000000000000000 +0000WpEu00000000000000000 +0000WuEe00000000000000000 +NuSb000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +Nu0000Eu00800000000000000 +0000WuEu00000000000000000 +0000WuEu00000000000000000 +00SuWu0000880000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +NuSu00Eu00000000000000000 +0000Wu000700800rb00000000 +0000WxEu00000000000000000 +0000WuEu00000000000000000 +0000WuEu00000000000000000 +Nu00Wu00S0000000000000000 +0000000000000000000000000 diff --git a/MAFH2/assets/map/bl2.txt b/MAFH2/assets/map/bl2.txt new file mode 100755 index 0000000..2421f1e --- /dev/null +++ b/MAFH2/assets/map/bl2.txt @@ -0,0 +1,30 @@ +Dungeon 6 +bl2.txt +5x5 +1 +bl3.txt +00Su00Eu0000000000000 +0000WuEu0000000000000 +0000WuEu0000000000000 +00SuWu000000000000000 +00Su00Ee0000000000000 +NuSu00000000000000000 +00Su00Ex0000000000000 +000000Eu0000000000000 +NuSuWu000000000000000 +NuSu00000000000000000 +NuSu00000000000000000 +Nu0000Eu0000000000000 +00SuWu000000000000000 +NuSu00000000000000000 +NuSu00000000000000000 +NuSu00Eu0000000000000 +0000Wu000000000000000 +Nu0000Eu0000000000000 +Nu00Wu000000000000000 +NuSu00000000000000000 +Nu0000Eu0000000000000 +0000WuEu00000rv000000 +0000WuEu0000000000000 +0000WuEu0000000000000 +Nu00Wu000000000000000 diff --git a/MAFH2/assets/map/bl3.txt b/MAFH2/assets/map/bl3.txt new file mode 100644 index 0000000..26ff527 --- /dev/null +++ b/MAFH2/assets/map/bl3.txt @@ -0,0 +1,21 @@ +Dungeon 6 +bl3.txt +4x4 +1 +bl4.txt +00SuWeEu00000000000000000 +00SuWu0000000000000000000 +00Sb00Eu00000000000000000 +00SuWu0000000000000000000 +NuSu00Eu00000000000000000 +Nu00Wu0000000rv0000000000 +NpSx00Ep00000000000000000 +NuSuWb0000000000000000000 +NuSu00El00000000000000000 +00SlWl0000000qv0000000000 +00Sp00Ep00000000000000000 +NuSuWp0000000000000000000 +Nu0000Eu00000000000000000 +Nl00WuEu00000000000000000 +Np00WuEu00000000000000000 +NuWu000000000000000000000 diff --git a/MAFH2/assets/map/bl4.txt b/MAFH2/assets/map/bl4.txt new file mode 100755 index 0000000..69b1a02 --- /dev/null +++ b/MAFH2/assets/map/bl4.txt @@ -0,0 +1,30 @@ +Dungeon 6 +bl4.txt +5x5 +1 +bl5.txt +00Su00Eu00000000000000000 +0000WuEu00000000000000000 +NeSlWuEu00000000000000000 +0000WuEu00000000000000000 +00SuWu0000000000000000000 +NuSu000000000000000000000 +0000000000000000000000000 +NlSx000000000000000000000 +0000000000000000000000000 +NuSu000000000000000000000 +NuSu00El00000000000000000 +0000WlEx00000000000000000 +0000000000000000000000000 +0000WxEl00000000000000000 +NuSuWl0000000000000000000 +NuSu000000000000000000000 +0000000000000000000000000 +NxSl000000000000000000000 +0000000000000000000000000 +NuSu000000000000000000000 +Nu0000Eu00000000000000000 +0000WuEu00000000000000000 +Nl00WuEu00000000000000000 +0000WuEu00000000000000000 +NuWu000000000000000000000 diff --git a/MAFH2/assets/map/bl5.txt b/MAFH2/assets/map/bl5.txt new file mode 100644 index 0000000..ee3bf03 --- /dev/null +++ b/MAFH2/assets/map/bl5.txt @@ -0,0 +1,6 @@ +Dungeon 6 +bl5.txt +4x4 +1 +0 +Ne00000000000000000000000 -- cgit v0.9.1