Todd Mitchell wrote: > Another big thing along the same lines would be to clean up the spell > and skill stuff... I don't know how the spell and skill wrappers can > be loaded into the plugin any longer now that they are dynamically > loaded from the arches, but this is a lot of legacy code in the > plugin. The solution to the skill stuff could be to remove the SkillXxx() wrapper functions and to convert skill ids into skill names: GetSkillExperience(object who, string skill) SetSkillExperience(object who, string skill, long exp) You could use these functions as follows: who = CFPython.WhoIsActivator() exp = CFPython.GetSkillExperience(who, "alchemy") if exp != None: CFPython.SetSkillExperience(who, "alchemy", exp+1) else: CFPython.Write("You do not know how to do alchemy!", who) For the spell related functions, the following code did work for me: who = CFPython.WhoIsActivator() # learn a spell spell = CFPython.CreateObject("spell_large_fireball", (0, 0)) CFPython.AcquireSpell(who, spell) CFPython.RemoveObject(spell) # forget a spell CFPython.ForgetSpell(who, "large fireball") Note: I had to create the spell object with CreateObject() at the (arbitrary) position (0, 0) because I could not find a function to create a (spell-)object that is not part of a map (and not inside an inventory). That said, I think the spell wrapper functions are not needed anymore and could be removed.