class CritterBlueCrabSpriteMerger(BaseSpriteMerger): _target_sprite_sheet_path = Path( "Data/Textures/Entities/Critters/blue_crab.png") _grid_hint_size = 8 _origin_map = { Monsters2: { **chunks_from_animation("blue_crab_1", (0, 0, 1, 1), 3), **chunks_from_animation("blue_crab_2", (0, 1, 1, 2), 3), } }
class OlmitedArmoredSpriteMerger(BaseSpriteMerger): _target_sprite_sheet_path = Path( "Data/Textures/Entities/Monsters/olmite_armored.png") _grid_hint_size = 8 _origin_map = { Monsters3: { **chunks_from_animation("olmite_body_armored_1", (0, 0, 1, 1), 4), **chunks_from_animation("olmite_body_armored_2", (0, 1, 1, 2), 4), **chunks_from_animation("olmite_body_armored_3", (0, 2, 1, 3), 2), } }
class GhistSpriteMerger(BaseJsonSpriteMerger): _target_sprite_sheet_path = Path("Data/Textures/Entities/Ghost/ghist.png") _grid_hint_size = 8 _origin_map = { Ghost: { **chunks_from_animation("ghist_angry_0", (0, 0, 1, 1), 3), **chunks_from_animation("ghist_angry_1", (0, 1, 1, 2), 3), **chunks_from_animation("ghist_angry_2", (0, 2, 1, 3), 1), }, JournalPeopleSheet: { "journal_ghost_shopkeeper": (0, 0, 1, 1) }, } _entity_origins = {Ghost: ["ENT_TYPE_MONS_GHIST"]}
class TurkeySpriteMerger(BaseJsonSpriteMerger): _target_sprite_sheet_path = Path( "Data/Textures/Entities/Mounts/turkey.png") _grid_hint_size = 8 _origin_map = { Mounts: { **chunks_from_animation("turkey_neck", (0, 0, 1, 1), 4), }, JournalMonsterSheet: { "journal_turkey": (0, 0, 1, 1) }, JournalItemSheet: { "journal_cooked_turkey": (0, 0, 1, 1) }, ItemSheet: { "cooked_turkey": (0, 0, 1, 1) }, } _entity_origins = {Mounts: ["ENT_TYPE_MOUNT_TURKEY"]}
class OlmiteHelmetSpriteMerger(BaseSpriteMerger): _target_sprite_sheet_path = Path( "Data/Textures/Entities/Monsters/olmite_helmet.png") _grid_hint_size = 8 _origin_map = { Monsters3: { **chunks_from_animation("olmite_helmet_1", (0, 0, 1, 1), 4), **chunks_from_animation("olmite_helmet_2", (0, 1, 1, 2), 4), **chunks_from_animation("olmite_helmet_3", (0, 2, 1, 3), 2), **chunks_from_animation("olmite_helmet_4", (2, 2, 3, 3), 2), **chunks_from_animation("olmite_helmet_5", (0, 3, 1, 4), 4), **chunks_from_animation("olmite_helmet_6", (0, 4, 1, 5), 1), } }
class ItemSheet(BaseSpriteLoader): _sprite_sheet_path = Path("Data/Textures/items.png") _chunk_size = 128 _chunk_map = { "chest": (0, 0, 1, 1), "treasure_chest": (0, 0, 1, 1), "treasure_vaultchest": (0, 0, 1, 1), "chest_open": (1, 0, 2, 1), "crate": (2, 0, 3, 1), "emerald": (3, 0, 4, 1), "sapphire": (4, 0, 5, 1), "ruby": (5, 0, 6, 1), "diamond": (6, 0, 7, 1), "emerald_small": (7, 0, 8, 1), "sapphire_small": (8, 0, 9, 1), "ruby_small": (9, 0, 10, 1), "small_gold_in_block": (10, 0, 11, 1), "gold_in_block": (11, 0, 12, 1), "gold_nugget": (12, 0, 13, 1), "gold_pebble": (13, 0, 14, 1), "gold_bar": (14, 0, 15, 1), "gold_bars": (15, 0, 16, 1), "goldbars": (15, 0, 16, 1), "rock": (0, 1, 1, 2), "arrow_wood": (1, 1, 2, 2), "arrow_stub": (2, 1, 3, 2), "urn_tall": (3, 1, 4, 2), "urn_short": (4, 1, 5, 2), "pot": (4, 1, 5, 2), "urn_pitcher": (5, 1, 6, 2), "udjat_eye": (6, 1, 7, 2), "kapala": (7, 1, 8, 2), "udjat_key": (8, 1, 9, 2), "udjat_chest": (9, 1, 10, 2), "lockedchest": (9, 1, 10, 2), "udjat_chest_open": (10, 1, 11, 2), "ankh": (11, 1, 12, 2), "hedjet": (12, 1, 13, 2), "scepter": (13, 1, 14, 2), "crown": (14, 1, 15, 2), "idol": (15, 1, 16, 2), "bomb_bag": (0, 2, 1, 3), "crate_bombs": (0, 2, 1, 3), "bomb_box": (1, 2, 2, 3), "paste": (2, 2, 3, 3), "compass": (3, 2, 4, 3), "climbing_glove": (4, 2, 5, 3), "climbing_gloves": (4, 2, 5, 3), "pitchers_mitt": (5, 2, 6, 3), "spike_shoes": (6, 2, 7, 3), "spring_shoes": (7, 2, 8, 3), "shoes_spike": (6, 2, 7, 3), "shoes_spring": (7, 2, 8, 3), "cape": (8, 2, 9, 3), "jetpack": (9, 2, 10, 3), "jetpack_back": (10, 2, 11, 3), "back_jetpack": (9, 2, 10, 3), "parachute": (11, 2, 12, 3), "crate_parachute": (11, 2, 12, 3), "parachute1": (12, 2, 13, 3), "parachute2": (13, 2, 14, 3), "parachute3": (14, 2, 15, 3), "tablet_of_destiny": (15, 2, 16, 3), "tablet": (15, 2, 16, 3), "shotgun": (0, 3, 1, 4), "gun_shotgun": (0, 3, 1, 4), "webgun": (1, 3, 2, 4), "gun_webgun": (1, 3, 2, 4), "freeze_ray": (2, 3, 3, 4), "gun_freezeray": (2, 3, 3, 4), "alien_compass": (3, 3, 4, 4), "compass_alien": (3, 3, 4, 4), "plasma_cannon_reloading": (4, 3, 5, 4), "plasma_cannon": (5, 3, 6, 4), "teleporter": (6, 3, 7, 4), "boomerang": (7, 3, 8, 4), "None1": (8, 3, 9, 4), "golden_parachute": (9, 3, 10, 4), "spectacles": (10, 3, 11, 4), "specs": (10, 3, 11, 4), "crumpled_parachute1": (11, 3, 12, 4), "crumpled_parachute2": (12, 3, 13, 4), "crumpled_parachute3": (13, 3, 14, 4), "skeleton_piece": (14, 3, 15, 4), "skull": (15, 3, 16, 4), "crossbow_empty_on_ground": (0, 4, 1, 5), "crossbow": (0, 4, 1, 5), "crossbow_loaded_on_ground": (1, 4, 2, 5), "crossbow_empty_held": (2, 4, 3, 5), "crosbow_loaded_held": (3, 4, 4, 5), "metal_arrow": (4, 4, 5, 5), "wood_arrow_poisoned": (5, 4, 6, 5), "metal_arrow_poisoned": (6, 4, 7, 5), "telepack": (7, 4, 8, 5), "back_telepack": (7, 4, 8, 5), "telepack_on_rope": (8, 4, 9, 5), "crumpled_golden_parachute": (9, 4, 10, 5), "camera": (10, 4, 11, 5), "true_crown": (11, 4, 12, 5), "web": (12, 4, 13, 5), "web1": (12, 4, 13, 5), "web2": (13, 4, 14, 5), "web3": (14, 4, 15, 5), "web4": (15, 4, 16, 5), "bomb": (0, 5, 1, 6), "bomb_exploding1": (1, 5, 2, 6), "bomb_exploding2": (2, 5, 3, 6), "paste_bomb": (3, 5, 4, 6), "paste_bomb_exploding1": (4, 5, 5, 6), "paste_bomb_exploding2": (5, 5, 6, 6), "None2": (6, 5, 7, 6), "None3": (7, 5, 8, 6), "None4": (8, 5, 9, 6), "None5": (9, 5, 10, 6), "None6": (10, 5, 11, 6), "None7": (11, 5, 12, 6), "scarab": (12, 5, 13, 6), **chunks_from_animation("scarab", (12, 5, 13, 6), 4), "rope_pile": (0, 6, 1, 7), "crate_ropes": (0, 6, 1, 7), "bomb_box_damaged1": (1, 6, 2, 7), "bomb_box_damaged2": (2, 6, 3, 7), "vlads_cape": (3, 6, 4, 7), **chunks_from_animation("vlads_cape_worn", (4, 6, 5, 7), 7), "kali_ball": (11, 6, 12, 7), "punishball": (11, 6, 12, 7), "punishball_attach": (11, 6, 12, 7), "kali_chain1": (12, 6, 13, 7), "kali_chain2": (13, 6, 14, 7), "None11": (14, 6, 15, 7), "None12": (15, 6, 16, 7), "machete": (0, 7, 1, 8), **chunks_from_animation("machete_worn", (1, 7, 2, 8), 3), **chunks_from_animation("cape_worn", (4, 7, 5, 8), 12), "mattock": (0, 8, 1, 9), **chunks_from_animation("mattock_worn", (1, 8, 2, 9), 3), "mattock_broken": (4, 8, 5, 9), "flag": (5, 8, 6, 9), **chunks_from_animation("flag_worn", (6, 8, 7, 9), 5), **chunks_from_animation("gold_bar_shiny", (11, 8, 12, 9), 5), "excalibur": (0, 9, 1, 10), **chunks_from_animation("excalibur_worn", (1, 9, 2, 10), 3), "hoverpack": (4, 9, 5, 10), "back_hoverpack": (4, 9, 5, 10), "hoverpack_back": (5, 9, 6, 10), "hoverpack_flicker1": (6, 9, 7, 10), "hoverpack_flicker2": (7, 9, 8, 10), "clone_gun": (8, 9, 9, 10), "clonegun": (8, 9, 9, 10), "clone_gun_two_charges": (9, 9, 10, 10), "clone_gun_one_charge": (10, 9, 11, 10), **chunks_from_animation("gold_bars_shiny", (11, 9, 12, 10), 5), "totem_trap_arm": (0, 10, 1, 11), "lantern": (1, 10, 2, 11), "lamp_hang": (1, 10, 2, 11), "excalibur_in_stone": (2, 10, 3, 11), "excalibur_stone": (3, 10, 4, 11), "excalibur_stone_empty": (3, 10, 4, 11), "torch": (4, 10, 5, 11), "wall_torch": (5, 10, 6, 11), "walltorch": (5, 10, 6, 11), "paper_lantern": (6, 10, 7, 11), "hou_yi_bow": (7, 10, 8, 11), "houyibow": (7, 10, 8, 11), "hou_yi_bow_loaded": (8, 10, 9, 11), "lightarrow": (9, 10, 10, 11), "journal_key": (10, 10, 11, 11), "elixir": (11, 10, 12, 11), "tusk_idol": (12, 10, 13, 11), "eggplant": (13, 10, 14, 11), "note": (14, 10, 15, 11), "journal": (15, 10, 16, 11), "wood_spike": (0, 11, 1, 12), "metal_spike": (1, 11, 2, 12), "landmine_armed": (2, 11, 3, 12), "landmine_deactivated": (3, 11, 4, 12), "landmine": (3, 11, 4, 12), "landmine_exploding1": (4, 11, 5, 12), "landmine_exploding2": (5, 11, 6, 12), "jumppad": (6, 11, 7, 12), "spring_trap": (6, 11, 7, 12), "powerpack": (7, 11, 8, 12), "back_powerpack": (7, 11, 8, 12), "powerpack_back": (8, 11, 9, 12), **chunks_from_animation("sleep_bubble", (9, 11, 10, 12), 8), "yama_pot": (1, 12, 2, 13), "lava_pot": (1, 12, 2, 13), "pot_of_gold": (2, 12, 3, 13), "potofgold": (2, 12, 3, 13), "broken_sword": (3, 12, 4, 13), "excalibur_sword": (3, 12, 4, 13), **chunks_from_animation("broken_sword_worn", (4, 12, 5, 13), 3), "bear_trap_armed": (7, 12, 8, 13), "snap_trap": (7, 12, 8, 13), "bear_trap_closed": (8, 12, 9, 13), "white_flag": (9, 12, 10, 13), "flag_stick": (10, 12, 11, 13), "wooden_idol": (11, 12, 12, 13), "seeded_run_unlocker": (11, 12, 12, 13), "None13": (12, 12, 13, 13), "None14": (13, 12, 14, 13), "None15": (14, 12, 15, 13), "eggplant_bit": (15, 12, 16, 13), "giantfood": (15, 12, 16, 13), "spike_ball": (0, 13, 1, 14), "spikeball_trap": (0, 13, 1, 14), "spikeball_no_bounce": (0, 13, 1, 14), "spikeball": (0, 13, 1, 14), "chainandblocks_ceiling": (0, 13, 1, 14), "key": (1, 13, 2, 14), "skeleton_key": (2, 13, 3, 14), "bone_key": (2, 13, 3, 14), "locked_door": (3, 13, 4, 14), "wooden_shield": (4, 13, 5, 14), "shield_wooden": (4, 13, 5, 14), "wooden_shield_damaged": (5, 13, 6, 14), "metal_shield": (6, 13, 7, 14), "shield_metal": (6, 13, 7, 14), **chunks_from_animation("gold_coin", (7, 13, 8, 14), 6), "snowman": (13, 13, 14, 14), "snowball": (14, 13, 15, 14), "eggplant_crown": (15, 13, 16, 14), "bullet": (0, 14, 1, 15), "webgun_ball": (1, 14, 2, 15), "poison_bubble1": (2, 14, 3, 15), "poison_bubble2": (3, 14, 4, 15), "inkspot": (4, 14, 5, 15), **chunks_from_animation("dice_rolling", (5, 14, 6, 15), 6), "celestial_orb": (11, 14, 12, 15), "cosmic_orb": (11, 14, 12, 15), "royal_jelly": (12, 14, 13, 15), "honey1": (13, 14, 14, 15), "honey_upwards": (13, 14, 14, 15), "honey2": (14, 14, 15, 15), "honey_downwards": (14, 14, 15, 15), "cooked_turkey": (15, 14, 16, 15), "ice_block1": (0, 15, 1, 16), "ice_block2": (1, 15, 2, 16), "clover": (2, 15, 3, 16), "scrap": (3, 15, 4, 16), "cursed_urn": (4, 15, 5, 16), "cursed_pot": (4, 15, 5, 16), "die": (5, 15, 6, 16), "present": (11, 15, 12, 16), "ghist_present": (12, 15, 13, 16), **chunks_from_animation("dice", (5, 15, 6, 16), 6), **chunks_from_animation("present", (11, 15, 12, 16), 6), }
class CharacterSheet(BaseSpriteLoader): _chunk_size = 128 _chunk_map = { "portrait": (12, 1, 16, 7), "standing": (0, 0, 1, 1), **chunks_from_animation("walking", (1, 0, 2, 1), 8), "stunned": (9, 0, 10, 1), **chunks_from_animation("swimming", (10, 0, 11, 1), 6), **chunks_from_animation("crouching", (0, 1, 1, 2), 5), **chunks_from_animation("crawling", (5, 1, 6, 2), 7), **chunks_from_animation("stun", (0, 2, 1, 3), 4), **chunks_from_animation("flip", (4, 2, 5, 3), 7), "holding": (11, 2, 12, 3), **chunks_from_animation("teetering", (0, 3, 1, 4), 8), **chunks_from_animation("ledge_grab", (8, 3, 9, 4), 4), **chunks_from_animation("whipping", (0, 4, 1, 5), 6), **chunks_from_animation("throwing", (6, 4, 7, 5), 5), **chunks_from_animation("enter", (0, 5, 1, 6), 6), **chunks_from_animation("exit", (6, 5, 7, 6), 6), **chunks_from_animation("climbing_ladder", (0, 6, 1, 7), 6), **chunks_from_animation("pushing", (6, 6, 7, 7), 6), **chunks_from_animation("climbing_rope", (0, 7, 1, 8), 10), **chunks_from_animation("crouching_mount", (10, 7, 11, 8), 5), **chunks_from_animation("looking_up", (0, 8, 1, 9), 7), "sitting": (7, 8, 8, 9), **chunks_from_animation("looking_up_sitting", (8, 8, 9, 9), 7), **chunks_from_animation("jumping", (0, 9, 1, 10), 12), "rope_coiled": (12, 9, 13, 10), "rope_top": (13, 9, 14, 10), "rope_unrolled": (13, 9, 14, 10), "rope_short": (14, 9, 15, 10), "rope_burned": (15, 9, 16, 10), **chunks_from_animation("ghosting", (0, 10, 1, 11), 16), "icon": (0, 11, 1, 12), "bag": (1, 11, 2, 12), "playerbag": (1, 11, 2, 12), "wanted": (2, 11, 3, 12), "pointer": (3, 11, 4, 12), **chunks_from_animation("taming", (4, 11, 5, 12), 6), "ghost_stun": (10, 11, 11, 12), "rope_segment": (0, 12, 1, 13), **chunks_from_animation("rope_uncoiling", (1, 12, 2, 13), 4), "rope_end": (5, 12, 6, 13), **chunks_from_animation("rope_burning", (6, 12, 7, 13), 4), **chunks_from_animation("whip", (10, 12, 11, 13), 6), **chunks_from_animation("stun_effect", (0, 13, 1, 14), 12), **chunks_from_animation("petting", (0, 14, 1, 15), 8), }
additional_origins={ Big4: { "crabman_additional": (0, 0, 2, 2), "crabman_open_claw": (2, 0, 3, 1), "crabman_closed_claw": (3, 0, 4, 1), "crabman_chain_claw": (2, 1, 3, 2), } }, ) LavamanderSpriteMerger = _big4_factory( "BigMonsters/lavamander", "journal_lavamander", ["ENT_TYPE_MONS_LAVAMANDER"], additional_origins={ Big4: { **chunks_from_animation("lavamander_additional", (0, 0, 2, 2), 3) } }, ) GiantFlySpriteMerger = _big4_factory( "BigMonsters/giant_fly", "journal_giant_fly", ["ENT_TYPE_MONS_GIANTFLY", "ENT_TYPE_ITEM_GIANTFLY_HEAD"], ) GiantClamSpriteMerger = _big4_factory( "BigMonsters/giant_clam", None, ["ENT_TYPE_ITEM_GIANTCLAM_TOP", "ENT_TYPE_ACTIVEFLOOR_GIANTCLAM_BASE"], additional_origins={ JournalTrapSheet: { "journal_giant_clam": (0, 0, 2, 2)
}, StickerSheet: { "sticker_vlad": (0, 0, 1, 1) }, }, ) LeprechaunSpriteMerger = _basic2_factory("Monsters/leprechaun", "journal_leprechaun", ["ENT_TYPE_MONS_LEPRECHAUN"]) CaveManSpriteMerger = _basic2_factory( "Monsters/cave_man", None, ["ENT_TYPE_MONS_CAVEMAN"], additional_origins={ Basic2: { **chunks_from_animation("caveman_additional_0", (0, 0, 1, 1), 8), **chunks_from_animation("caveman_additional_1", (0, 1, 1, 2), 2), }, JournalMonsterSheet: { "journal_cave_man": (0, 0, 1, 1) }, StickerSheet: { "sticker_cave_man": (0, 0, 1, 1) }, }, ) BodyguardSpriteMerger = _basic2_factory( "People/bodyguard", "journal_tusks_bodyguard", ["ENT_TYPE_MONS_BODYGUARD"], journal_sheet_override=JournalPeopleSheet,