I do it with on hit scripts and enemy tagging. For example: My fire sword does a bonus 1-6 damage in the on hit script, but does a check for the enemy tag. If the enemy tag has "ice", the on-hit script will do extra damage (eg. x2 bonus). If the enemy tag is "fire", it does no extra damage. If it's neither, it just does the normal bonus 1-6 extra damage.