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

public class a_ward_trap : trap_base {
	//?
}
                                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> Spell property and trap components of Rune of Warding.
<DFF> @@ -3,4 +3,34 @@ 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.
+
+	protected override void Start ()
+		{
+			base.Start ();
+			this.gameObject.layer = LayerMask.NameToLayer("Ward");
+		}
+
+	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
+			{
+					spellprop.init();
+					if(spellprop.BaseDamage!=0)
+					{
+							npc.ApplyAttack(spellprop.BaseDamage);
+					}
+					spellprop.onImpact(npc.transform);
+					spellprop.onHit(npc.gameObject.GetComponent<ObjectInteraction>());
+					Destroy (this.gameObject);
+			}
+		}
 }

Spell property and trap components of Rune of Warding.