<NME> a_ward_trap.cs
<BEF> ﻿using UnityEngine;
using System.Collections;

public class a_ward_trap : trap_base
{
    //?
    /*
	 * Magic ward traps.
	 * NPC collides with one it will set off a spell property object.
	 */

    public SpellProp spellprop;//The spell properties of the ward.
    public bool CanHitPlayer = true;
    protected override void Start()
    {
        base.Start();
        this.gameObject.layer = LayerMask.NameToLayer("Ward");
        BoxCollider bx = this.gameObject.GetComponent<BoxCollider>();
        if (bx == null)
        {
            bx = this.gameObject.AddComponent<BoxCollider>();
        }

			if (npc!=null)//Has the collision hit an npc
			{
				spellprop.init(SpellEffect.UW1_Spell_Effect_RuneofWarding);
				if(spellprop.BaseDamage!=0)
				{
						npc.ApplyAttack(spellprop.BaseDamage);
                    switch (item_id)
                    {
                        case 414: //flam trap
                            {
                                SpellProp_Fireball sppf = new SpellProp_Fireball();
                                sppf.init(SpellEffect.UW2_Spell_Effect_Fireball, UWCharacter.Instance.gameObject);
                                spellprop = sppf;
                                break;
                            }
                        case 415://tym trap
                            {
                                SpellProp_Tym spty = new SpellProp_Tym();
                                spty.init(SpellEffect.UW2_Spell_Effect_Paralyze, UWCharacter.Instance.gameObject);
                                spellprop = spty;
                                break;
                            }
                        default:
                            Debug.Log("unimplemented ward trap type " + item_id);
                            break;
                    }
                    break;
                }
            default://UW1 rune of warding
                {
                    SpellProp_RuneOfWarding spIJ = new SpellProp_RuneOfWarding();//myObj.AddComponent<SpellProp_RuneOfWarding>();
                    spIJ.init(SpellEffect.UW1_Spell_Effect_RuneofWarding, UWCharacter.Instance.gameObject);
                    spellprop = spIJ;
                    CanHitPlayer = false;
                    break;
                }
        }

    }

    void OnTriggerEnter(Collider other)
    {
        //Get the NPC that hit the ward
        NPC npc = other.gameObject.GetComponent<NPC>();

        if (npc != null)//Has the collision hit an npc
        {
            if (spellprop.BaseDamage != 0)
            {
                npc.ApplyAttack(spellprop.BaseDamage);
            }
            spellprop.onImpact(npc.transform);
            spellprop.onHit(npc.gameObject.GetComponent<ObjectInteraction>());
            objInt().consumeObject();
        }
        else
        {
            if (other.gameObject.GetComponent<UWCharacter>() )
            {
                if (CanHitPlayer)
                {
                    if (spellprop.BaseDamage != 0)
                    {
                        UWCharacter.Instance.ApplyDamage(spellprop.BaseDamage);
                    }
                    spellprop.onHitPlayer();
                    objInt().consumeObject();
                }
            }
            else
            {
                if (_RES == GAME_UW2)
                {//An object has been thrown at the trap to consume it.
                    objInt().consumeObject();
                }
            }
        }

    }
}

<MSG> Summon AIs will now follow and help the player in combat. 
The caster responsible for a spell is now tracked.
Fixes to AI bugs
<DFF> @@ -23,7 +23,7 @@ public class a_ward_trap : trap_base {
 
 			if (npc!=null)//Has the collision hit an npc
 			{
-				spellprop.init(SpellEffect.UW1_Spell_Effect_RuneofWarding);
+				spellprop.init(SpellEffect.UW1_Spell_Effect_RuneofWarding,GameWorldController.instance.playerUW.gameObject);
 				if(spellprop.BaseDamage!=0)
 				{
 						npc.ApplyAttack(spellprop.BaseDamage);

Summon AIs will now follow and help the player in combat.  The caster responsible for a spell is now tracked. Fixes to AI bugs