Weapon InheritanceProgression

Defeating a boss or completing a challenge awards the player that enemy's attack capability.

The Mega Man pattern: defeat the boss and inherit its weapon — its mace flies to the hero, who takes on the boss's colour and wields it.

How weapon inheritance works in Godot

Beating a boss grants its weapon: a defeated signal hands a WeaponData into your inventory, where weapon-switching picks it up. Pure data flow.

Signalsprimitive

The boss emits defeated with its signature weapon attached. The reward is decoupled from the fight — the boss doesn't know what happens next.

signal defeated(reward: WeaponData)
func die():
    defeated.emit(my_weapon)
    queue_free()

Resourceprimitive

The awarded weapon is just another WeaponData. Inheritance is adding it to the same array your weapon-switching already walks.

func _on_boss_defeated(reward):
    GameState.owned_weapons.append(reward)

Dictionaryprimitive

Track which bosses are beaten so the weapon stays granted across save/load and never re-awards.

var defeated_bosses := {}
defeated_bosses["airman"] = true

In short: Boss defeated signal → add_item(boss.weapon_resource) in GameState; weapon becomes available in weapon_switching

Retro games that use weapon inheritance

6 catalogued game(s) use this mechanic, spanning 1987–1994.

Related progression mechanics

▶ Explore Weapon Inheritance interactively — see every game + the Godot system