How do I trigger a script when a hero reaches a certain level?
Jump to navigation
Jump to search
There's no script trigger specifically for a hero gaining a level, so you will need to do the check yourself in the right place, using the hero levelled script command. There are two cases in which a hero might gain a level: because the player won a battle, or due to a script command such as give experience.
Use an after-battle script to check whether the hero levelled. Each map has its own after-battle script, so set the same script as the after-battle script on all maps.
Let's say you want to see if hero Bob has just reached level 10:
plotscript, check level up, begin
variable(hero)
hero := find hero(hero:Bob)
if (hero levelled(hero)) then (
# OK, Bob just gained at least one level... did they gain level 10?
# Check if they're level 10 or higher, and weren't before.
# If we never heroes never gained more than one level per battle, we could just
# check "get hero level(hero) == 10" instead.
if (get hero level(hero) >= 10 && get hero level(hero) -- hero levelled(hero) < 10) then (
# Stuff that should happen...
show textbox(42)
)
)
end
If you use any command such as give experience, just call the check level up script immediately afterwards.