예제 #1
0
    private void _Act(TacticalItem item, EquipSlot.Slot slot)
    {
        ActorAnatomy anatomy;

        actor.anatomy_map.TryGetValue(slot, out anatomy);
        anatomy.Equip(item);
    }
예제 #2
0
    void Attach(EquipSlot.Slot target_slot, TacticalItem item)
    {
        EquipSlot slot;

        slots.TryGetValue(target_slot, out slot);
        slot.Assign(item);
    }
예제 #3
0
    public TacticalItem Detach()
    {
        var cached = item;

        item = null;

        return(cached);
    }
예제 #4
0
 void TestEquip(TacticalActor actor, TacticalItem item)
 {
     TestEquip2H(actor, item);
     TestUnequip(actor, EquipSlot.Slot.arm_l);
     TestEquip2H(actor, item);
     TestUnequip(actor, EquipSlot.Slot.arm_r);
     TestEquip2H(actor, item);
     TestUnequip(actor, EquipSlot.Slot.arm_2h);
 }
예제 #5
0
 private static void AfterShouldDestroyItem_KeepItem(ref bool __result, TacticalItem item)
 {
     try {
         if (!__result || item == null)
         {
             return;
         }
         __result = false;
         Verbo("Force dropping {0}", item.TacticalItemDef?.ViewElementDef?.Name);
     } catch (Exception ex) { Error(ex); }
 }
예제 #6
0
    public override void Equip(TacticalItem item)
    {
        EquipSlot.Slot target_slot = item.target_slot[0];

        Attach(target_slot, item);
        if (target_slot == EquipSlot.Slot.arm_2h)
        {
            Attach(EquipSlot.Slot.arm_r, item);
            pair.Attach(EquipSlot.Slot.arm_l, item);
        }
    }
예제 #7
0
            static bool Prefix(DieAbility __instance, ref bool __result, ref TacticalItem item)
            {
                if (__instance.TacticalActor.IsControlledByPlayer)
                {
                    return(true); // game will let it live...anyway
                }

                __result = false; // never destroy items via RNG;

                return(false);    // returning false here lets us skip the original method used here
            }
예제 #8
0
    void TestEquip2H(TacticalActor actor, TacticalItem item)
    {
        ActEquip action = (ActEquip)actor.actions["Equip Item"];

        action.Act(item);
        var q = actor.QueryAnatomy();

        Assert.IsTrue(q[EquipSlot.Slot.arm_2h] == item.name);
        Assert.IsTrue(q[EquipSlot.Slot.arm_l] == item.name);
        Assert.IsTrue(q[EquipSlot.Slot.arm_r] == item.name);
        Debug.Log("Test Equip 2H completed");
    }
예제 #9
0
    // Use this for initialization
    void Start()
    {
        tactical_actor_prefab     = Resources.Load <TacticalActor>("ActorPrefab");
        tactical_equipment_prefab = Resources.Load <TacticalItem>("ItemPrefab");

        TacticalActor actor_0 = Instantiate(tactical_actor_prefab);
        TacticalItem  item_2h = Instantiate(tactical_equipment_prefab);

        actor_0.Spawn();
        item_2h.Spawn("Gaebolg Spear", EquipSlot.Slot.arm_2h);
        TestEquip(actor_0, item_2h);
    }
예제 #10
0
    public override void UnEquip(EquipSlot.Slot slot)
    {
        TacticalItem item = Detach(slot);

        if (item != null && item.target_slot[0] == EquipSlot.Slot.arm_2h)
        {
            switch (side)
            {
            case Side.l:
                pair.UnEquip(EquipSlot.Slot.arm_r);
                pair.UnEquip(EquipSlot.Slot.arm_2h);
                break;

            case Side.r:
                pair.UnEquip(EquipSlot.Slot.arm_l);
                break;
            }
        }
    }
예제 #11
0
 public abstract void Equip(TacticalItem item);
예제 #12
0
 public override void Equip(TacticalItem item)
 {
 }
예제 #13
0
 public void Assign(TacticalItem _item)
 {
     item = _item;
 }
예제 #14
0
 public EquipSlot()
 {
     item = null;
 }
예제 #15
0
 public void Act(TacticalItem item)
 {
     EquipSlot.Slot slot = item.target_slot[0];
     _Act(item, slot);
 }
예제 #16
0
 public void Act(TacticalItem item, EquipSlot.Slot slot)
 {
     _Act(item, slot);
 }