Triggers will execute in the order they are declared, meaning a trigger in the start of the map code will execute before a trigger in the end of the map code. This also applies if both the triggers have the same event.
Condiitions will fire in the order they are added to the trigger.
The first one is relatively simple:
Cant touch this onLearn
Unit - A unit Learns a skill
(Learned Hero Skill) Equal to to *Some Spell*
(Learned skill level) Equal to 1
Trigger - Add to Cant touch this Activate <gen> the event...
Function callback shouldn't return a boolean.
Neither should act2.
I'm amazed that it doesn't crash your editor, it would in the old days.
EVENT_PLAYER_HERO_SKILL gives you access to GetLearnedSkillLevel().
Always use GetTriggerUnit() when appliable, in this case GetLearningUnit() ==...
Static methods can easily be private, it however disables access to the method from outside the struct.
local thistype thisshould always be used inside a struct, at least in my opinion. Are you wondering what you should assign as value?