begin on activate makes the script trigger when the activator is pressed but i want the effect to occur when the player stands on the square... i was thinking i might have to use a trigger zone but im not entirely sure.
As far as I remember you will need a trigger zone for OnTrigger to work, yes. OnActivate only triggers when "activated" as in pushing a button. Just "touching" an activator will not trigger any event.
And I, too, am pretty sure you don't need explicit references in an object script, because the implicit self is default, no matter what block type you're in. Since this is an activator (I know they can cast) and the script is running on it, there should be no trouble (the activator will be the caster). However, I'm just saying this because I never needed such in my own scripts. I could as well be wrong. (My casting activators always are Persistent References though, so maybe that's indeed a requirement.)
I don't know how you could use a timer, if there are only block types which trigger only "once", though. I think a GameMode block is inevitable to this purpose.
And yes, get rid of those numbers at the beginning of any EditorIDs. They're just known to cause trouble, so it's best not to use them at all to begin with. For some things they work, for some they don't, but you'll just get confused which those are, so why even bother? Prefixing IDs with a special mod-prefix of mine is always my preference anyways.