Mimic work

This commit is contained in:
aerinon
2023-08-09 12:06:20 -06:00
parent 90f1629f0e
commit 57da9efcb1
8 changed files with 25 additions and 6 deletions

View File

@@ -268,6 +268,8 @@ class EnemySprite(FastEnum):
HeartPiece = 0xeb
SomariaPlatform = 0xed
CastleMantle = 0xee
GreenMimic = 0xef
RedMimic = 0xf0
MedallionTablet = 0xf2
PositionTarget = 0xf3
Boulders = 0xf4
@@ -387,7 +389,7 @@ def init_enemy_stats():
EnemySprite.CannonTrooper: EnemyStats(EnemySprite.CannonTrooper, False, True, 1, health=3, dmg=1),
EnemySprite.CricketRat: EnemyStats(EnemySprite.CricketRat, False, True, 2, health=(2, 8), dmg=(0, 5)),
EnemySprite.Snake: EnemyStats(EnemySprite.Snake, False, True, (1, 7), health=(4, 8), dmg=(1, 5)),
EnemySprite.Keese: EnemyStats(EnemySprite.Keese, False, True, (0, 7), health=(1, 4), ignore=True,
EnemySprite.Keese: EnemyStats(EnemySprite.Keese, False, False, (0, 7), health=(1, 4), ignore=True,
dmg=(0, 5), dmask=0x80),
# skip helmafireball for damage
@@ -495,6 +497,8 @@ def init_enemy_stats():
EnemySprite.MagicShopAssistant: EnemyStats(EnemySprite.MagicShopAssistant, True, ignore=True, dmg=0),
EnemySprite.HeartPiece: EnemyStats(EnemySprite.HeartPiece, True, ignore=True, dmg=0),
EnemySprite.CastleMantle: EnemyStats(EnemySprite.CastleMantle, True, dmg=0),
EnemySprite.GreenMimic: EnemyStats(EnemySprite.GreenMimic, False, True, 5, health=16, dmg=4),
EnemySprite.RedMimic: EnemyStats(EnemySprite.RedMimic, False, True, 5, health=8, dmg=4),
}
return stats
@@ -2346,8 +2350,8 @@ enemy_names = {
0x80: 'Firesnake',
0x81: 'Hover',
0x82: 'AntiFairyCircle',
0x83: 'GreenEyegoreMimic',
0x84: 'RedEyegoreMimic',
0x83: 'GreenEyegore',
0x84: 'RedEyegore',
0x85: 'YellowStalfos', # falling stalfos that shoots head
0x86: 'Kodongo',
0x88: 'Mothula',
@@ -2444,6 +2448,8 @@ enemy_names = {
0xeb: 'HeartPiece',
0xed: 'SomariaPlatform',
0xee: 'CastleMantle',
0xef: 'GreenMimic',
0xf0: 'RedMimic',
0xf2: 'MedallionTablet',
0xf3: 'PositionTarget',
0xf4: 'Boulders'
@@ -2513,6 +2519,7 @@ sprite_translation = {
'GreenEyegoreMimic': EnemySprite.GreenEyegoreMimic,
'GreenGuard': EnemySprite.GreenGuard,
'GreenKnifeGuard': EnemySprite.GreenKnifeGuard,
'GreenMimic': EnemySprite.GreenMimic,
'GreenZirro': EnemySprite.GreenZirro,
'HardhatBeetle': EnemySprite.HardhatBeetle,
'Hinox': EnemySprite.Hinox,
@@ -2542,6 +2549,7 @@ sprite_translation = {
'RedBushGuard': EnemySprite.RedBushGuard,
'RedEyegoreMimic': EnemySprite.RedEyegoreMimic,
'RedJavelinGuard': EnemySprite.RedJavelinGuard,
'RedMimic': EnemySprite.RedMimic,
'RedSpearGuard': EnemySprite.RedSpearGuard,
'RedZazak': EnemySprite.RedZazak,
'Ropa': EnemySprite.Ropa,

View File

@@ -463,6 +463,9 @@ def write_enemy_shuffle_settings(world, player, rom):
if world.dropshuffle[player] in ['underworld']:
rom.write_byte(snes_to_pc(0x368109), 0x01)
if world.enemy_shuffle[player] != 'none':
# enable new mimics
rom.write_byte(snes_to_pc(0x368105), 0x01)
# killable thief
rom.write_byte(snes_to_pc(0x368108), 0xc4)
rom.write_byte(snes_to_pc(0x0DB237), 4) # health value: # todo: thief health value

View File

@@ -360,6 +360,8 @@ def init_sprite_requirements():
SpriteRequirement(EnemySprite.MagicShopAssistant).affix().sub_group(0, 0x4b).sub_group(3, 0x5a),
SpriteRequirement(EnemySprite.SomariaPlatform).affix().sub_group(2, 0x27),
SpriteRequirement(EnemySprite.CastleMantle).affix().sub_group(0, 0x5d),
SpriteRequirement(EnemySprite.GreenMimic).sub_group(1, 0x2c),
SpriteRequirement(EnemySprite.RedMimic).sub_group(1, 0x2c),
SpriteRequirement(EnemySprite.MedallionTablet).affix().sub_group(2, 0x12),
# overlord requirements - encapsulated mostly in the required sheets

View File

@@ -300,3 +300,5 @@ SubClassTable:
0xD5: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
0xD6: [0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
0xD7: [0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0]
0xEF: [0, 1, 1, 2, 2, 1, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0]
0xF0: [0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0]

View File

@@ -38,6 +38,7 @@ UW: # Total 94431
Gibo: 294 # 0.33993% raw:321 2.84071%
GreenBushGuard: 325 # 0.30816% raw:291 2.57522%
GreenEyegoreMimic: 175 # 0.57291% raw:541 4.78761%
GreenMimic: 175 # 0.57291% raw:541 4.78761%
GreenGuard: 55 # 1.80237% raw:1702 15.06195%
GreenKnifeGuard: 621 # 0.16096% raw:152 1.34513%
GreenZirro: 180 # 0.55702% raw:526 4.65487%
@@ -68,6 +69,7 @@ UW: # Total 94431
RedBari: 49 # 2.02688% raw:1914 16.93805%
RedBushGuard: 163 # 0.61526% raw:581 5.14159%
RedEyegoreMimic: 175 # 0.57291% raw:541 4.78761%
RedMimic: 175 # 0.57291% raw:541 4.78761%
RedJavelinGuard: 163 # 0.61526% raw:581 5.14159%
RedSpearGuard: 44 # 2.28527% raw:2158 19.09735%
RedZazak: 294 # 0.33993% raw:321 2.84071%
@@ -137,6 +139,7 @@ OW: # Total 117724
Gibo: 247 # 0.40519% raw:477 4.22124%
GreenBushGuard: 291 # 0.34403% raw:405 3.58407%
GreenEyegoreMimic: 171 # 0.58527% raw:689 6.09735%
GreenMimic: 171 # 0.58527% raw:689 6.09735%
GreenGuard: 48 # 2.06330% raw:2429 21.49558%
GreenKnifeGuard: 589 # 0.16989% raw:200 1.76991%
GreenZirro: 158 # 0.63369% raw:746 6.60177%
@@ -167,6 +170,7 @@ OW: # Total 117724
RedBari: 47 # 2.11767% raw:2493 22.06195%
RedBushGuard: 121 # 0.82651% raw:973 8.61062%
RedEyegoreMimic: 171 # 0.58527% raw:689 6.09735%
RedMimic: 171 # 0.58527% raw:689 6.09735%
RedJavelinGuard: 121 # 0.82651% raw:973 8.61062%
RedSpearGuard: 39 # 2.56617% raw:3021 26.73451%
RedZazak: 247 # 0.40519% raw:477 4.22124%

View File

@@ -65,7 +65,7 @@ SheetChoices:
- slots: [1]
assignments:
1: 0x2c
weight: 2 # Beamos, Popos
weight: 4 # Beamos, Popos, Mimics (2)
- slots: [1]
assignments:
1: 0x49
@@ -131,7 +131,7 @@ SheetChoices:
- slots: [2]
assignments:
2: 0x2e
weight: 4 # GreenEyeGoreMimic(x2!), RedEyeGoreMimic(x2!)
weight: 2 # GreenEyeGoreMimic, RedEyeGoreMimic (Eyegores only)
# Slot 3 (21 enemy types require slot 3)
- slots: [3]