Ejemplo n.º 1
0
    public void GiveKeyOfTruth()
    {
        if (HasGivenKey == false)
        {
            //Code to spawn key of truth in player hand
            //Debug.Log ("You get the key of truth");
            UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, StringController.str_none_of_your_skills_improved_));            //No skills appear
            //inputctrl.text=UWHUD.instance.MessageScroll.text;
            Shrine.HasGivenKey = true;
            //create the key of truth.
            ObjectLoaderInfo newobjt = ObjectLoader.newObject(225, 0, 0, 0, 256);
            GameObject       key     = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.InventoryMarker.gameObject, GameWorldController.instance.InventoryMarker.transform.position).gameObject;
            GameWorldController.MoveToInventory(key);
            ObjectInteraction myObjInt = key.GetComponent <ObjectInteraction>();


            /*ObjectInteraction myObjInt = ObjectInteraction.CreateNewObject(225);
             * myObjInt.gameObject.transform.parent=GameWorldController.instance.InventoryMarker.transform;
             * GameWorldController.MoveToInventory(myObjInt.gameObject);*/
            UWCharacter.Instance.playerInventory.ObjectInHand = myObjInt.name;
            UWHUD.instance.CursorIcon        = myObjInt.GetInventoryDisplay().texture;
            UWCharacter.InteractionMode      = UWCharacter.InteractionModePickup;
            InteractionModeControl.UpdateNow = true;
        }
    }
    /// <summary>
    /// Creates bridges in a line
    /// </summary>
    /// <param name="triggerX"></param>
    /// <param name="triggerY"></param>
    void CreateBridges(int triggerX, int triggerY)
    {
        int dirX = 0; int dirY = 0;

        GetDirectionsForBridgeTrap(ref dirX, ref dirY);

        for (int i = 0; i < quality; i++)
        {
            int tileX = triggerX + dirX * i;
            int tileY = triggerY + dirY * i;
            if (TileMap.ValidTile(tileX, tileY))
            {
                //Create a bridge at this tile. Only if no bridge is already there.
                if (ObjectLoader.findObjectByTypeInTile(CurrentObjectList().objInfo, (short)tileX, (short)tileY, ObjectInteraction.BRIDGE) == -1)
                {
                    ObjectLoaderInfo newObj = ObjectLoader.newObject(356, 40, 0, 0, 256);
                    newObj.xpos = 4; newObj.ypos = 4; newObj.zpos = zpos;
                    // bridge texture will be set by  (bridge.enchantment << 3) | bridge.flags & 0x3F;
                    newObj.flags       = (short)(owner & 0x7);
                    newObj.enchantment = (short)((owner >> 3) & 0x1);
                    newObj.heading     = heading;
                    newObj.ObjectTileX = (short)tileX;
                    newObj.ObjectTileY = (short)tileY;
                    Vector3 pos = ObjectLoader.CalcObjectXYZ(newObj.index, 0);
                    ObjectInteraction.CreateNewObject(CurrentTileMap(), newObj, CurrentObjectList().objInfo, GameWorldController.instance.LevelModel, pos);
                }
            }
        }
    }
Ejemplo n.º 3
0
    private bool PickUpSeed()
    {
        ObjectLoaderInfo newseed = ObjectLoader.newObject(290, 40, 16, 1, 256);

        newseed.is_quant = 1;
        ObjectInteraction newseedobj = ObjectInteraction.CreateNewObject
                                       (
            CurrentTileMap(),
            newseed,
            CurrentObjectList().objInfo,
            GameWorldController.instance.InventoryMarker.gameObject,
            CurrentTileMap().getTileVector(TileMap.ObjectStorageTile, TileMap.ObjectStorageTile)
                                       );

        GameWorldController.MoveToInventory(newseedobj.gameObject);
        UWCharacter.Instance.ResurrectPosition = Vector3.zero;
        UWCharacter.Instance.ResurrectLevel    = 0;
        UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, 9));
        CurrentObjectInHand = newseedobj;
        //newseedobj.UpdateAnimation();
        //UWHUD.instance.CursorIcon = newseedobj.GetWorldDisplay().texture;
        UWCharacter.InteractionMode      = UWCharacter.InteractionModePickup;
        InteractionModeControl.UpdateNow = true;

        objInt().consumeObject();
        return(true);
    }
Ejemplo n.º 4
0
    public override bool use()
    {
        if (CurrentObjectInHand == null)
        {
            if ((objInt().PickedUp == true))
            {
                ObjectLoaderInfo newtree = ObjectLoader.newWorldObject(458, 40, 16, 1, 256);
                newtree.is_quant = 1;
                ObjectInteraction.CreateNewObject
                (
                    CurrentTileMap(),
                    newtree,
                    CurrentObjectList().objInfo,
                    GameWorldController.instance.DynamicObjectMarker().gameObject,
                    CurrentTileMap().getTileVector(TileMap.visitTileX, TileMap.visitTileY)
                );

                UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, 12));

                //UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                UWCharacter.Instance.ResurrectPosition = UWCharacter.Instance.transform.position;
                UWCharacter.Instance.ResurrectLevel    = (short)(GameWorldController.instance.LevelNo + 1);
                objInt().consumeObject();
                return(true);
            }
            else
            {
                return(false);
            }
        }
        else
        {
            return(ActivateByObject(CurrentObjectInHand));
        }
    }
Ejemplo n.º 5
0
 /// <summary>
 /// Populates the container based on what is linked to the objInt
 /// </summary>
 /// <param name="cn">Cn.</param>
 /// <param name="objInt">Object int.</param>
 public static void PopulateContainer(Container cn, ObjectInteraction objInt, ObjectLoader objList)
 {
     //cn.ObjectsAccepted=-1;//For now default to accept all
     cn.Capacity = 40;
     for (int i = 0; i <= cn.MaxCapacity(); i++)
     {                        //init the variables.
         if (cn.items[i] == null)
         {
             cn.items[i] = "";
         }
     }
     if (objInt.link != 0)                           //Container has objects
     {
         ObjectLoaderInfo tmpobj = ObjectLoader.getObjectInfoAt(objInt.link, objList);
         //int count = 0;
         if (ObjectLoader.GetItemTypeAt(objInt.link, objList) != ObjectInteraction.LOCK)
         {
             cn.AddItemToContainer(ObjectLoader.UniqueObjectName(tmpobj));
         }
         while (tmpobj.next != 0)
         {
             tmpobj = ObjectLoader.getObjectInfoAt((int)tmpobj.next, objList);                                        //objList[tmpobj.next];
             cn.AddItemToContainer(ObjectLoader.UniqueObjectName(tmpobj));
         }
     }
 }
Ejemplo n.º 6
0
    private void LeftOvers()
    {
        int LeftOverToCreate = -1;

        switch (item_id)
        {
        case 176:
        case 177:    //meat
            LeftOverToCreate = 197; break;

        case 186:    //honeycomb
            LeftOverToCreate = 210; break;

        case 187:
        case 188:
        case 189:    //bottles.
            LeftOverToCreate = 317; break;
        }

        if (LeftOverToCreate != -1)
        {
            ObjectLoaderInfo newobjt = ObjectLoader.newObject(LeftOverToCreate, 40, 0, 0, 256);
            newobjt.InUseFlag = 1;
            ObjectInteraction created = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, GameWorldController.instance.InventoryMarker.transform.position);
            GameWorldController.MoveToWorld(created.gameObject);
            CurrentObjectInHand = created;
            //UWHUD.instance.CursorIcon = created.GetInventoryDisplay().texture;
            UWCharacter.InteractionMode = UWCharacter.InteractionModePickup;
        }
    }
	/*
	An arrow trap is used to fire projectiles (usually at the player).
	The item type created is controlled by the object quality and owner
	target = (currobj.quality << 5) | currobj.owner; //This is set in UWexporter

	The vector is simply the heading of the trap.

	Examples of usage
	The mine collapse on level2
	The skulls launched at the player on level3 -Troll area.
	*/

	public override void ExecuteTrap (object_base src, int triggerX, int triggerY, int State)
	{
		int item_index=  (quality << 5) | owner;

		ObjectLoaderInfo newobjt= ObjectLoader.newWorldObject(item_index,0,0,0,256);
		GameObject myObj = ObjectInteraction.CreateNewObject(CurrentTileMap(),newobjt,CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, this.transform.position).gameObject;
		if (ObjectTileX == TileMap.ObjectStorageTile)
		{
			Vector3 pos = CurrentTileMap().getTileVector(triggerX,triggerY);
			pos = new Vector3(pos.x,this.transform.position.y,pos.z);
			myObj.transform.position=pos;
		}
		else
		{
			myObj.transform.position = this.transform.position;			
		}
		myObj.transform.rotation = this.transform.rotation;	
		if (myObj.GetComponent<Rigidbody>()==null)
		{
			myObj.AddComponent<Rigidbody>();
		}

		UnFreezeMovement(myObj);
		myObj.GetComponent<Rigidbody>().collisionDetectionMode=CollisionDetectionMode.Continuous;
		myObj.GetComponent<Rigidbody>().AddForce(myObj.transform.forward* 20.0f *((float)(owner)));
		
		GameObject myObjChild = new GameObject(myObj.name + "_damage");
		myObjChild.transform.position =myObj.transform.position;
		myObjChild.transform.parent =myObj.transform;
		ProjectileDamage pd= myObjChild.AddComponent<ProjectileDamage>();
		pd.Source=this.gameObject;//Traps don't need to be identified.
		pd.Damage=10;//Dunno what drives damage here?
		pd.AttackCharge=100f;
		pd.AttackScore=15;//down the middle.
	}
Ejemplo n.º 8
0
    protected override void Start()
    {
        base.Start();
        if (_RES == GAME_UW2)
        {
            if (SpellObjectOwnerToCreate == -1)
            {            //This is  wand with infinite charges. Does not use a spell object for it's enchantment.
                //Debug.Log("linking wand " + this.name + " to an existing spell");
                //SpellObjectLink = ObjectLoader.getObjectIntAt(objInt().link).link;
            }
            else
            {
                if (objInt().PickedUp)
                {                //A wand and spell in the inventory loaded from a playerdat file. Need to create it's spell object now
                    ObjectLoaderInfo  newobjt = ObjectLoader.newObject(288, SpellObjectQualityToCreate, SpellObjectOwnerToCreate, SpellObjectLink, 256);
                    ObjectInteraction spell   = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.LevelMarker().gameObject, GameWorldController.instance.LevelMarker().position);
                    objInt().link = newobjt.index;
                }
            }
        }        //UW2 stores enchantments on the player.dat. This is not properly implemented yet


        if (ObjectLoader.getObjectIntAt(objInt().link) != null)
        {
            SpellObjectLink = ObjectLoader.getObjectIntAt(objInt().link).link;
        }
    }
Ejemplo n.º 9
0
 public static GameObject SpawnHitImpact(int Item_ID, Vector3 ImpactPosition, int StartFrame, int EndFrame)
 {
     try
     {
         ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(Item_ID, 40, StartFrame, 1, 256);
         if (newobjt != null)
         {
             ObjectInteraction objInt = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, ImpactPosition);
             //objInt.GetComponent<AnimationOverlay>().Looping = false;
             objInt.GetComponent <AnimationOverlay>().StartFrame       = StartFrame;
             objInt.GetComponent <AnimationOverlay>().NoOfFrames       = EndFrame - StartFrame;
             objInt.GetComponent <AnimationOverlay>().StartingDuration = objInt.GetComponent <AnimationOverlay>().NoOfFrames;
             objInt.gameObject.layer = LayerMask.NameToLayer("Animation");
             return(objInt.gameObject);
         }
         else
         {
             return(null);
         }
     }
     catch
     {
         return(null);
     }
 }
    private void CreateRuneStone(int ItemID)
    {
        ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(ItemID, 0, 0, 1, 256);
        GameObject       myObj   = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, new Vector3(64.5f, 4.0f, 24.5f)).gameObject;

        UnFreezeMovement(myObj);
    }
Ejemplo n.º 11
0
    public static GameObject SpawnHitImpact(int Item_ID, Vector3 ImpactPosition, int StartFrame, int EndFrame)
    {
        ObjectLoaderInfo  newobjt = ObjectLoader.newObject(Item_ID, 40, StartFrame, 1, 256);
        ObjectInteraction objInt  = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, ImpactPosition);

        objInt.GetComponent <AnimationOverlay>().Looping    = false;
        objInt.GetComponent <AnimationOverlay>().StartFrame = StartFrame;
        objInt.GetComponent <AnimationOverlay>().NoOfFrames = EndFrame - StartFrame;
        return(objInt.gameObject);
    }
Ejemplo n.º 12
0
    /// <summary>
    /// Creates the fish that the player has caught.
    /// </summary>
    /// <returns>The fish.</returns>
    ObjectInteraction CreateFish()
    {
        ObjectLoaderInfo  newobjt = ObjectLoader.newObject(182, 40, 0, 1, 256);
        ObjectInteraction fishy   = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.InventoryMarker.gameObject, GameWorldController.instance.InventoryMarker.transform.position);

        fishy.gameObject.name = ObjectLoader.UniqueObjectName(newobjt);
        fishy.isquant         = 1;
        GameWorldController.MoveToInventory(fishy.gameObject);
        return(fishy);
    }
Ejemplo n.º 13
0
    /// <summary>
    /// Creates the fish that the player has caught.
    /// </summary>
    /// <returns>The fish.</returns>
    GameObject CreateFish()
    {
        ObjectLoaderInfo newobjt = ObjectLoader.newObject(182, 40, 0, 1, 256);
        GameObject       fishy   = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.InventoryMarker.gameObject, GameWorldController.instance.InventoryMarker.transform.position).gameObject;

        fishy.name = ObjectLoader.UniqueObjectName(newobjt);
        GameWorldController.MoveToInventory(fishy);
        //newobjt.index= UWCharacter.Instance.playerInventory.ItemCounter++;

        //fishy.GetComponent<Food>().Nutrition=5;
        return(fishy);       // ObjectInteraction.CreateNewObject(182).gameObject;
    }
Ejemplo n.º 14
0
    /// <summary>
    /// Creates a new spell trap in the object list
    /// </summary>
    public override void InventoryEventOnLevelEnter()
    {
        if (_RES == GAME_UW2)
        {
            return;
        }                                                   //UW2 stores enchantments on the player.dat. This is not implemented yet
        base.InventoryEventOnLevelEnter();
        //Create a spell trap and store it on the map. This occurs before the list is rendered.
        ObjectLoaderInfo newobj = ObjectLoader.newObject(390, SpellObjectQualityToCreate, SpellObjectOwnerToCreate, SpellObjectLink, 256);

        //ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobj,GameWorldController.instance.LevelMarker().gameObject,new Vector3(99f*1.2f,0,99f*1.2f));
        objInt().link = newobj.index;
    }
    /// <summary>
    /// Handle player choosing how many items to pick up in a stack
    /// </summary>
    /// <param name="quant"></param>
    public void OnSubmitPickup(int quant)
    {
        InputField inputctrl = UWHUD.instance.InputControl;

        inputctrl.text = "";
        inputctrl.gameObject.SetActive(false);
        WindowDetect.WaitingForInput = false;
        ConversationVM.EnteringQty   = false;
        if (ConversationVM.InConversation == false)
        {
            UWHUD.instance.MessageScroll.Clear();
            Time.timeScale = 1.0f;
        }
        else
        {
            UWHUD.instance.ConversationButtonParent.SetActive(true);
            UWHUD.instance.MessageScroll.Set("");
            // UWHUD.instance.MessageScroll.NewUIOUt.text = InventorySlot.TempLookAt;//Restore original text
        }

        if (quant == 0)
        {//cancel
            QuantityObj = null;
        }
        if (QuantityObj != null)
        {//Just do a normal pickup.
            if (quant >= QuantityObj.GetComponent <ObjectInteraction>().link)
            {
                CurrentObjectInHand = QuantityObj;
                if (this.slotIndex >= 11)
                {
                    UWCharacter.Instance.playerInventory.currentContainer.RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                }
                UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
            }
            else
            {
                //split the obj.
                ObjectInteraction objI = QuantityObj.GetComponent <ObjectInteraction>();
                objI.link = objI.link - quant;
                ObjectLoaderInfo newObj = ObjectLoader.newWorldObject(objI.item_id, objI.quality, objI.owner, quant, -1);
                newObj.is_quant = 1;
                ObjectInteraction NewObjI = ObjectInteraction.CreateNewObject(CurrentTileMap(), newObj, CurrentObjectList().objInfo, GameWorldController.instance.InventoryMarker, GameWorldController.instance.InventoryMarker.transform.position);
                GameWorldController.MoveToInventory(NewObjI);
                CurrentObjectInHand = NewObjI;
                ObjectInteraction.Split(objI, NewObjI);
                UWCharacter.Instance.playerInventory.Refresh();
                QuantityObj = null;
            }
        }
    }
Ejemplo n.º 16
0
    /*protected override void Start ()
     *  {
     *          base.Start ();
     *          //this.transform.localScale = new Vector3(4f,4f,4f);
     *  }*/

    public override bool ActivateByObject(ObjectInteraction ObjectUsed)
    {
        if (ObjectUsed.item_id == 296)
        {//Bashed with a rock hammer
         //ObjectInteraction newObj;
            switch (item_id)
            {
            case LargeBoulder1:    //Large Boulders
            case LargeBoulder2:    //Split into two boulders
                for (int i = 0; i < 2; i++)
                {
                    ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(MediumBoulder, 0, 0, 0, 256);
                    ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, this.transform.position + new Vector3(Random.Range(-0.6f, 0.6f), 0.0f, Random.Range(-0.6f, 0.6f)));
                    objInt().BaseObjectData.InUseFlag = 0;
                    Destroy(this.gameObject);
                    ObjectInteraction.DestroyObjectFromUW(this.objInt());
                }
                break;

            case MediumBoulder:    //Boulder. //Split into 2 small boulders
                for (int i = 0; i < 2; i++)
                {
                    ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(342, 0, 0, 0, 256);
                    ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, this.transform.position + new Vector3(Random.Range(-0.6f, 0.6f), 0.0f, Random.Range(-0.6f, 0.6f)));
                    objInt().BaseObjectData.InUseFlag = 0;
                    ObjectInteraction.DestroyObjectFromUW(this.objInt());
                }
                break;

            case SmallBoulder:    //Small boulder
            {
                ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(16, 0, 0, 1, 256);
                newobjt.is_quant = 1;
                newobjt.link     = Random.Range(1, 3);
                ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, this.transform.position + new Vector3(Random.Range(-0.6f, 0.6f), 0.0f, Random.Range(-0.6f, 0.6f)));
                objInt().BaseObjectData.InUseFlag = 0;
                ObjectInteraction.DestroyObjectFromUW(this.objInt());
                break;
            }
            }
            //UWHUD.instance.CursorIcon= UWHUD.instance.CursorIconDefault;
            CurrentObjectInHand = null;
            return(true);
        }
        else
        {
            return(base.ActivateByObject(ObjectUsed));
        }
    }
Ejemplo n.º 17
0
    void SpoilPotion(ObjectInteraction obj)
    {
        obj.ChangeType(228);
        obj.isquant = 0;

        ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(384, 40, 1, 0, 256);

        newobjt.InUseFlag = 1;
        ObjectInteraction created = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, GameWorldController.instance.InventoryMarker.transform.position);

        GameWorldController.MoveToInventory(created);
        created.transform.parent           = GameWorldController.instance.InventoryMarker.transform;
        obj.GetComponent <Potion>().linked = created;
        obj.GetComponent <Potion>().SetDisplayEnchantment();
    }
Ejemplo n.º 18
0
    public void OnSubmitPickup(int quant)
    {
        InputField inputctrl = UWHUD.instance.InputControl;       //UWHUD.instance.MessageScroll.gameObject.GetComponent<UIInput>();

        Time.timeScale = 1.0f;
        inputctrl.gameObject.SetActive(false);
        WindowDetectUW.WaitingForInput = false;
        inputctrl.text = "";
        inputctrl.text = "";
        UWHUD.instance.MessageScroll.Clear();
        //int quant= int.Parse(inputctrl.text);
        if (quant == 0)
        {        //cancel
            QuantityObj = null;
        }
        if (QuantityObj != null)
        {
            if (quant >= QuantityObj.link)
            {
                Pickup(QuantityObj, playerInventory);
            }
            else
            {
                //split the obj.


                ObjectLoaderInfo newobjt = ObjectLoader.newObject(QuantityObj.item_id, QuantityObj.quality, QuantityObj.owner, quant, 256);
                newobjt.is_quant    = QuantityObj.isquant;
                newobjt.flags       = QuantityObj.flags;
                newobjt.enchantment = QuantityObj.enchantment;
                newobjt.doordir     = QuantityObj.doordir;
                newobjt.invis       = QuantityObj.invis;
                ObjectInteraction Split = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.LevelMarker().gameObject, QuantityObj.transform.position);
                newobjt.InUseFlag = 1;
                QuantityObj.link -= quant;

                //GameObject Split = Instantiate(QuantityObj.gameObject);//What we are picking up.
                //Split.GetComponent<ObjectInteraction>().link =quant;
                //Split.name = Split.name+"_"+summonCount++;
                //QuantityObj.link=QuantityObj.link-quant;
                Pickup(Split, playerInventory);
                ObjectInteraction.Split(Split, QuantityObj);
                QuantityObj = null;              //Clear out to avoid weirdness.
            }
        }
    }
Ejemplo n.º 19
0
    /// <summary>
    /// Sends the avatar into the ethereal void.
    /// </summary>
    /// Spins the avatar and the slasher (specific object name) towards a newly spawned moongate.
    IEnumerator SuckItAvatar()
    {
        //Spawn a moon gate at the center of the lava
        ObjectInteraction slasher    = GameWorldController.instance.CurrentObjectList().objInfo[129].instance;             //GameObject.Find("slasher_of_veils_32_33_07_0129");//Assumes slasher will be at this index.
        Vector3           slasherPos = Vector3.zero;

        if (slasher != null)
        {
            slasherPos = slasher.transform.position;
        }
        ObjectLoaderInfo newobjt = ObjectLoader.newObject(346, 0, 0, 0, 256);
        GameObject       myObj   = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(),
                                                                     newobjt,
                                                                     GameWorldController.instance.CurrentObjectList().objInfo,
                                                                     GameWorldController.instance.DynamicObjectMarker().gameObject,
                                                                     GameWorldController.instance.InventoryMarker.transform.position).gameObject;

        GameWorldController.MoveToWorld(myObj.GetComponent <ObjectInteraction>());
        myObj.transform.localPosition = this.transform.position + new Vector3(0.0f, 0.5f, 0.0f);

        //GameObject myInstance = Resources.Load("Models/MoonGate") as GameObject;
        //GameObject newObj = (GameObject)GameObject.Instantiate(myInstance);
        //newObj.transform.parent=GameWorldController.instance.DynamicObjectMarker();
        //	GameWorldController.MoveToWorld(newObj);
        //newObj.transform.localPosition=this.transform.position+new Vector3(0.0f,0.5f,0.0f);
        Quaternion playerRot = UWCharacter.Instance.transform.rotation;
        Quaternion EndRot    = new Quaternion(playerRot.x, playerRot.y, playerRot.z + 1.2f, playerRot.w);
        Vector3    StartPos  = UWCharacter.Instance.transform.position;
        Vector3    EndPos    = myObj.transform.localPosition;
        float      rate      = 1.0f / 2.0f;
        float      index     = 0.0f;

        while (index < 1.0f)
        {
            UWCharacter.Instance.transform.position = Vector3.Lerp(StartPos, EndPos, index);
            UWCharacter.Instance.transform.rotation = Quaternion.Lerp(playerRot, EndRot, index);
            if (slasher != null)
            {
                slasher.transform.position = Vector3.Lerp(slasherPos, EndPos, index);
            }
            index += rate * Time.deltaTime;
            yield return(new WaitForSeconds(0.01f));
        }
        UWCharacter.Instance.transform.rotation = playerRot;
        GameWorldController.instance.SwitchLevel(8, 26, 24);              //One way trip.
    }
    /// <summary>
    /// resets all properties to zero to maintain compatability with UW2
    /// </summary>
    public static void CleanUp(ObjectLoaderInfo obj)
    {
        //TODO:test if this is needed for mobile objects as well.

        obj.item_id     = 0;
        obj.flags       = 0;
        obj.enchantment = 0;
        obj.doordir     = 0;
        obj.invis       = 0;
        obj.is_quant    = 0;
        obj.zpos        = 0;
        obj.xpos        = 0;
        obj.ypos        = 0;
        obj.heading     = 0;
        obj.quality     = 0;
        obj.next        = 0;
        obj.owner       = 0;
        obj.link        = 0;
    }
Ejemplo n.º 21
0
    private void CreateRuneStone(int ItemID)
    {
        //string Item= ItemID.ToString("000");

        ObjectLoaderInfo newobjt = ObjectLoader.newObject(ItemID, 0, 0, 1, 256);
        GameObject       myObj   = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.LevelMarker().gameObject, new Vector3(64.5f, 4.0f, 24.5f)).gameObject;


        //GameObject myObj=  new GameObject("SummonedObject_" + UWCharacter.Instance.PlayerMagic.SummonCount++);
        //myObj.layer=LayerMask.NameToLayer("UWObjects");
        //myObj.transform.parent=GameWorldController.instance.LevelMarker();
        //GameWorldController.MoveToWorld(myObj);
        //ObjectInteraction.CreateObjectGraphics(myObj,_RES +"/Sprites/Objects/Objects_224",true);
        //ObjectInteraction.CreateObjectInteraction(myObj,0.5f,0.5f,0.5f,0.5f, 224, ItemID, ItemID, ObjectInteraction.RUNE, 224, 1, 40, 0, 1, 1, 0, 1, 1, 0, 0, 1);

        //myObj.AddComponent<RuneStone>();

        //myObj.transform.position = new Vector3(64.5f,4.0f,24.5f);
        GameWorldController.UnFreezeMovement(myObj);
    }
Ejemplo n.º 22
0
 /// <summary>
 /// Populates the container based on what is linked to the objInt
 /// </summary>
 /// <param name="cn">Cn.</param>
 /// <param name="objInt">Object int.</param>
 public static void PopulateContainer(Container cn, ObjectInteraction objInt, ObjectLoader objList)
 {
     if (objInt.link != 0)   //Container has objects
     {
         ObjectLoaderInfo tmpobj = ObjectLoader.getObjectInfoAt(objInt.link, objList);
         //int count = 0;
         if (ObjectLoader.GetItemTypeAt(objInt.link, objList) != ObjectInteraction.LOCK)
         {
             cn.AddItemToContainer(tmpobj.instance); //ObjectLoader.UniqueObjectName(tmpobj));
         }
         else
         {
             cn.LockObject = objInt.link;//To preserve the containers lock.
         }
         while (tmpobj.next != 0)
         {
             tmpobj = ObjectLoader.getObjectInfoAt((int)tmpobj.next, objList); //objList[tmpobj.next];
             cn.AddItemToContainer(tmpobj.instance);                           //ObjectLoader.UniqueObjectName(tmpobj));
         }
     }
 }
Ejemplo n.º 23
0
    public void RefreshObjectInfo()
    {
        currObj = GameWorldController.instance.CurrentObjectList().objInfo[ObjectSelect.value];
        //string ObjectName=ObjectLoader.UniqueObjectNameEditor(currObj);
        ObjectItemIds.value    = currObj.item_id;
        ObjectFlagDoorDir.isOn = (currObj.doordir == 1);
        ObjectFlagEnchant.isOn = (currObj.enchantment == 1);
        ObjectFlaginVis.isOn   = (currObj.invis == 1);
        ObjectFlagisQuant.isOn = (currObj.is_quant == 1);
        ObjectFlagValue.text   = currObj.flags.ToString();
        ObjectOwner.text       = currObj.owner.ToString();
        ObjectLink.text        = currObj.link.ToString();
        ObjectNext.text        = currObj.next.ToString();
        ObjectQuality.text     = currObj.quality.ToString();
        if (currObj.instance != null)
        {
            currObj.instance.UpdatePosition();
        }
        ObjectTileX.text = currObj.tileX.ToString();
        ObjectTileY.text = currObj.tileY.ToString();

        ObjectXPos.text = currObj.x.ToString();
        ObjectYPos.text = currObj.y.ToString();
        ObjectZPos.text = currObj.zpos.ToString();

        MobileObjectDetailsPanel.gameObject.SetActive((currObj.index <= 255));
        if (currObj.index <= 255)
        {
            //populate mobile data
            npc_whoami.text     = currObj.npc_whoami.ToString();
            npc_xhome.text      = currObj.npc_xhome.ToString();
            npc_yhome.text      = currObj.npc_yhome.ToString();
            npc_hp.text         = currObj.npc_hp.ToString();
            npc_goal.value      = currObj.npc_goal;
            npc_goaltarget.text = currObj.npc_gtarg.ToString();
            npc_attitude.text   = currObj.npc_attitude.ToString();
            npc_talkedto.text   = currObj.npc_talkedto.ToString();
        }
    }
Ejemplo n.º 24
0
    /*
     * An arrow trap is used to fire projectiles (usually at the player).
     * The item type created is controlled by the object quality and owner
     * target = (currobj.quality << 5) | currobj.owner; //This is set in UWexporter
     *
     * The vector is simply the heading of the trap.
     *
     * Examples of usage
     * The mine collapse on level2
     * The skulls launched at the player on level3 -Troll area.
     */

    public override void ExecuteTrap(object_base src, int triggerX, int triggerY, int State)
    {
        int item_index = (objInt().quality << 5) | objInt().owner;

        ObjectLoaderInfo newobjt = ObjectLoader.newObject(item_index, 0, 0, 0, 256);
        GameObject       myObj   = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.LevelMarker().gameObject, this.transform.position).gameObject;

        myObj.transform.position = this.transform.position;
        myObj.transform.rotation = this.transform.rotation;

        GameWorldController.UnFreezeMovement(myObj);
        myObj.GetComponent <Rigidbody>().collisionDetectionMode = CollisionDetectionMode.Continuous;
        myObj.GetComponent <Rigidbody>().AddForce(myObj.transform.forward * 50.0f * ((float)(objInt().owner)));
        GameObject myObjChild = new GameObject(myObj.name + "_damage");

        myObjChild.transform.position = myObj.transform.position;
        myObjChild.transform.parent   = myObj.transform;
        ProjectileDamage pd = myObjChild.AddComponent <ProjectileDamage>();

        pd.Source       = this.gameObject; //Traps don't need to be identified.
        pd.Damage       = 10;              //Dunno what drives damage here?
        pd.AttackCharge = 100f;
        pd.AttackScore  = 15;              //down the middle.
    }
Ejemplo n.º 25
0
    public override void ExecuteTrap(object_base src, int triggerX, int triggerY, int State)
    {
        GameObject door = GameWorldController.findDoor(triggerX, triggerY);

        if (door != null)
        {
            DoorControl DC = door.GetComponent <DoorControl>();

            switch (quality)
            {
            case 0:            //Just lock
                //Copy the lock object at the link to use on this door
                if (link != 0)
                {                //link to a lock
                    if (ObjectLoader.GetItemTypeAt(link) == ObjectInteraction.LOCK)
                    {
                        ObjectInteraction lockToCopy = ObjectLoader.getObjectIntAt(link);
                        ObjectLoaderInfo  newobjt    = ObjectLoader.newObject(lockToCopy.item_id, lockToCopy.quality, lockToCopy.owner, lockToCopy.link, 256);
                        newobjt.flags       = lockToCopy.flags;
                        newobjt.doordir     = lockToCopy.doordir;
                        newobjt.invis       = lockToCopy.invis;
                        newobjt.enchantment = lockToCopy.enchantment;
                        newobjt.zpos        = lockToCopy.zpos;
                        newobjt.xpos        = lockToCopy.xpos;
                        newobjt.ypos        = lockToCopy.ypos;
                        newobjt.next        = DC.link;               //To allow proper triggering of traps
                        newobjt.InUseFlag   = 1;
                        GameObject Created = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.InventoryMarker.gameObject, GameWorldController.instance.InventoryMarker.transform.position).gameObject;
                        DC.link = newobjt.index;                        //Point the lock at this new lock
                    }
                }
                else
                {                //unlink the lock and tie the locks next back to the door as it's link
                    ObjectInteraction linkedObj = ObjectLoader.getObjectIntAt(DC.link);
                    if (linkedObj != null)
                    {
                        DC.link = linkedObj.next;
                        linkedObj.objectloaderinfo.InUseFlag = 0;
                        Destroy(linkedObj);
                    }
                }
                break;

            case 1:            //try open
                if (TriggerInstantly)
                {
                    DC.UnlockDoor(false);
                    DC.OpenDoor(0f);
                }
                else
                {
                    DC.UnlockDoor(false);
                    DC.OpenDoor(DoorControl.DefaultDoorTravelTime);
                }

                break;

            case 2:            //try close
                if (TriggerInstantly)
                {
                    DC.CloseDoor(0f);
                    DC.LockDoor();
                }
                else
                {
                    DC.CloseDoor(DoorControl.DefaultDoorTravelTime);
                    DC.LockDoor();
                }

                break;

            case 3:            //try toggle
                //TODO:check if toggle respects unlocked status. (door trap 1001 on level 3)
                if (TriggerInstantly)
                {
                    DC.ToggleDoor(0, false);
                }
                else
                {
                    DC.ToggleDoor(DoorControl.DefaultDoorTravelTime, false);
                }
                break;
            }
        }
        else
        {
            Debug.Log("Door not found!");
        }
    }
Ejemplo n.º 26
0
    private void MusicInstrumentInteaction()
    {
        if (Input.GetKeyDown("1"))
        {
            PlayNote(1);
        }
        if (Input.GetKeyDown("2"))
        {
            PlayNote(2);
        }
        if (Input.GetKeyDown("3"))
        {
            PlayNote(3);
        }
        if (Input.GetKeyDown("4"))
        {
            PlayNote(4);
        }
        if (Input.GetKeyDown("5"))
        {
            PlayNote(5);
        }
        if (Input.GetKeyDown("6"))
        {
            PlayNote(6);
        }
        if (Input.GetKeyDown("7"))
        {
            PlayNote(7);
        }
        if (Input.GetKeyDown("8"))
        {
            PlayNote(8);
        }
        if (Input.GetKeyDown("9"))
        {
            PlayNote(9);
        }
        if (Input.GetKeyDown("0"))
        {
            PlayNote(10);
        }
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            //000~001~251~You put the instrument down.
            PlayingInstrument = false;
            CurrentInstrument = "";
            WindowDetectUW.WaitingForInput           = false;
            UWCharacter.Instance.playerMotor.enabled = true;
            UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, StringController.str_you_put_the_instrument_down_));
            GameWorldController.instance.getMus().Resume();
            //354237875
            if (_RES == GAME_UW1)
            {
                if ((NoteRecord == "354237875") && (objInt().item_id == 292))            //Flute only
                {
                    //UWHUD.instance.MessageScroll.Add ("Eyesnack would be proud of your playing");
                    if ((GameWorldController.instance.LevelNo == 2) && (Quest.instance.isCupFound == false) && (objInt().item_id == 292))
                    {
                        int tileX = TileMap.visitTileX;
                        int tileY = TileMap.visitTileY;
                        if (((tileX >= 23) || (tileX <= 27)) && ((tileY >= 43) || (tileY <= 45)))
                        {
                            //create the cup of wonder.

                            ObjectLoaderInfo newobjt = ObjectLoader.newObject(174, 0, 0, 0, 256);
                            GameObject       cup     = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.InventoryMarker.gameObject, GameWorldController.instance.InventoryMarker.transform.position).gameObject;
                            GameWorldController.MoveToInventory(cup);
                            ObjectInteraction myObjInt = cup.GetComponent <ObjectInteraction>();

                            /*	ObjectInteraction myObjInt = ObjectInteraction.CreateNewObject(174);
                             * myObjInt.gameObject.transform.parent=GameWorldController.instance.InventoryMarker.transform;
                             * GameWorldController.MoveToInventory(myObjInt.gameObject);*/
                            UWCharacter.Instance.playerInventory.ObjectInHand = myObjInt.name;
                            UWHUD.instance.CursorIcon        = myObjInt.GetInventoryDisplay().texture;
                            UWCharacter.InteractionMode      = UWCharacter.InteractionModePickup;
                            InteractionModeControl.UpdateNow = true;
                            Quest.instance.isCupFound        = true;
                            //An object appears in the air and falls into your hands
                            UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, 136));
                        }
                    }
                }
            }
        }
    }
Ejemplo n.º 27
0
    /// <summary>
    /// Launchs the ammo.
    /// </summary>
    /// <returns><c>true</c>, if ammo was launched, <c>false</c> otherwise.</returns>
    bool LaunchAmmo(float charge)
    {
        if (currentAmmo != null)
        {
            Ray ray;
            if (UWCharacter.Instance.MouseLookEnabled == true)
            {
                ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
            }
            else
            {
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            }

            RaycastHit hit       = new RaycastHit();
            float      dropRange = 0.5f;
            if (!Physics.Raycast(ray, out hit, dropRange))
            {///Checks No object interferes with the launch
                float      force = 1000.0f * (charge / 100.0f);
                GameObject launchedItem;
                if (currentAmmo.GetQty() == 1)
                {
                    launchedItem = currentAmmo.gameObject;
                    UWCharacter.Instance.playerInventory.RemoveItem(currentAmmo);
                    //launchedItem.transform.parent=GameWorldController.instance.DynamicObjectMarker();
                    GameWorldController.MoveToWorld(launchedItem);
                    launchedItem.transform.position = ray.GetPoint(dropRange - 0.1f);
                }
                else
                {//reduce this quantity by one and create a copy in the world
                    ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(currWeaponRanged.AmmoType(), 40, 0, 1, 256);
                    launchedItem = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, ray.GetPoint(dropRange - 0.1f)).gameObject;
                    currentAmmo.consumeObject();
                }
                launchedItem.GetComponent <ObjectInteraction>().isquant = 1;
                UnFreezeMovement(launchedItem);
                Vector3 ThrowDir = ray.GetPoint(dropRange) - ray.origin;

                ///Apply the force along the direction of the ray that the player has targetted along.
                launchedItem.GetComponent <Rigidbody>().AddForce(ThrowDir * force);
                GameObject myObjChild = new GameObject(launchedItem.name + "_damage");
                myObjChild.transform.position = launchedItem.transform.position;
                myObjChild.transform.parent   = launchedItem.transform;
                ///Appends ProjectileDamage to the projectile to act as the damage delivery method.
                ProjectileDamage pd = myObjChild.AddComponent <ProjectileDamage>();
                pd.Source       = UWCharacter.Instance.gameObject;
                pd.Damage       = (short)currWeaponRanged.Damage(); //   (short)(10.0f*(Charge/100.0f));
                pd.AttackCharge = charge;
                pd.AttackScore  = UWCharacter.Instance.PlayerSkills.GetSkill(Skills.SkillAttack) / 2 + UWCharacter.Instance.PlayerSkills.GetSkill(Skills.SkillMissile);
                return(true);
            }
            else
            {
                return(false);
            }
        }
        else
        {//No ammo?? Should not happen
            return(false);
        }
    }
Ejemplo n.º 28
0
    public override void ExecuteTrap(object_base src, int triggerX, int triggerY, int State)
    {
        Vector3 spawn = CurrentTileMap().getTileVector(ObjectTileX, ObjectTileY);

        spawn = new Vector3(spawn.x, 4.4f, spawn.z);
        int ItemStringIndex = 0;
        int Price           = 0;

        //Pick the item to sell and get its price
        switch (Quest.instance.variables[owner])
        {
        case 0:    //fish
            ItemStringIndex = 182;
            Price           = 3;
            break;

        case 1:    //meat
            ItemStringIndex = 176;
            Price           = 3;
            break;

        case 2:    //ale
            ItemStringIndex = 187;
            Price           = 4;
            break;

        case 3:    //leeches
            ItemStringIndex = 293;
            Price           = 4;
            break;

        case 4:    //water
            ItemStringIndex = 188;
            Price           = 3;
            break;

        case 5:    //dagger
            ItemStringIndex = 3;
            Price           = 11;
            break;

        case 6:    //lockpick
            ItemStringIndex = 257;
            Price           = 6;
            break;

        case 7:    //torch
            ItemStringIndex = 145;
            Price           = 4;
            break;

        default:
            return;
        }

        if (CheckPrice(Price, ObjectTileX, ObjectTileY))
        {//price check
            ObjectLoaderInfo newobjt = ObjectLoader.newObject(ItemStringIndex, 40, 0, 0, 256);
            newobjt.InUseFlag = 1;
            UnFreezeMovement(GameWorldController.MoveToWorld(ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, spawn)).gameObject);
        }
    }
Ejemplo n.º 29
0
    public override bool Eat()
    {    //TODO:Implement drag and drop feeding.
        if (Nutrition() + UWCharacter.Instance.FoodLevel >= 255)
        {
            UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, StringController.str_you_are_too_full_to_eat_that_now_));
            return(false);
        }
        else
        {
            UWCharacter.Instance.FoodLevel = Nutrition() + UWCharacter.Instance.FoodLevel;
            switch (objInt().item_id)    //TODO:update for UW2
            {
            case 192:                    //plants
            case 207:
            case 212:
                UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, StringController.str_the_plant_is_plain_tasting_but_nourishing_));
                break;

            case 217:                    //Dead rotworm
                UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, 234));
                break;

            case 283:                    //Rotworm stew
                UWHUD.instance.MessageScroll.Add(StringController.instance.GetString(1, 235));
                break;

            default:
                UWHUD.instance.MessageScroll.Add("That " + StringController.instance.GetObjectNounUW(objInt()) + foodFlavourText());
                break;
            }
            if (ObjectInteraction.PlaySoundEffects)
            {
                switch (Random.Range(1, 3))
                {
                case 1:
                    UWCharacter.Instance.aud.clip = GameWorldController.instance.getMus().SoundEffects[MusicController.SOUND_EFFECT_EAT_1]; break;

                case 2:
                    UWCharacter.Instance.aud.clip = GameWorldController.instance.getMus().SoundEffects[MusicController.SOUND_EFFECT_EAT_2]; break;

                default:
                    UWCharacter.Instance.aud.clip = GameWorldController.instance.getMus().SoundEffects[MusicController.SOUND_EFFECT_EAT_3]; break;
                }
                UWCharacter.Instance.aud.Play();
            }

            if (_RES == GAME_UW2)
            {            //Some food items leave left overs
                int LeftOverToCreate = -1;
                switch (objInt().item_id)
                {
                case 176:
                case 177:                        //meat
                    LeftOverToCreate = 197; break;

                case 186:                        //honeycomb
                    LeftOverToCreate = 210; break;

                case 187:
                case 188:
                case 189:                        //bottles.
                    LeftOverToCreate = 317; break;
                }

                if (LeftOverToCreate != -1)
                {
                    ObjectLoaderInfo newobjt = ObjectLoader.newObject(LeftOverToCreate, 40, 0, 0, 256);
                    newobjt.InUseFlag = 1;
                    ObjectInteraction created = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newobjt, GameWorldController.instance.CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, GameWorldController.instance.InventoryMarker.transform.position);
                    GameWorldController.MoveToWorld(created.gameObject);
                    UWCharacter.Instance.playerInventory.ObjectInHand = created.name;
                    UWHUD.instance.CursorIcon   = created.GetInventoryDisplay().texture;
                    UWCharacter.InteractionMode = UWCharacter.InteractionModePickup;
                }
            }
            objInt().consumeObject(); //destroy and remove from inventory/world.

            return(true);             //Food was eaten.
        }
    }
Ejemplo n.º 30
0
    public void OnSubmitPickup(int quant)
    {
        InputField inputctrl = UWHUD.instance.InputControl;

        inputctrl.text = "";
        inputctrl.gameObject.SetActive(false);
        WindowDetect.WaitingForInput = false;
        ConversationVM.EnteringQty   = false;
        if (ConversationVM.InConversation == false)
        {
            UWHUD.instance.MessageScroll.Clear();
            Time.timeScale = 1.0f;
        }
        else
        {
            UWHUD.instance.MessageScroll.NewUIOUt.text = InventorySlot.TempLookAt;            //Restore original text
        }

        if (quant == 0)
        {        //cancel
            QuantityObj = null;
        }
        if (QuantityObj != null)
        {        //Just do a normal pickup.
            if (quant >= QuantityObj.GetComponent <ObjectInteraction>().link)
            {
                UWCharacter.Instance.playerInventory.ObjectInHand = QuantityObj.name;
                UWHUD.instance.CursorIcon = QuantityObj.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                if (this.slotIndex >= 11)
                {
                    UWCharacter.Instance.playerInventory.GetCurrentContainer().RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                }
                UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
            }
            else
            {
                //split the obj.
                ObjectInteraction objI = QuantityObj.GetComponent <ObjectInteraction>();
                objI.link = objI.link - quant;
                ObjectLoaderInfo newObj = ObjectLoader.newObject(objI.item_id, objI.quality, objI.owner, quant, -1);
                newObj.is_quant = 1;
                ObjectInteraction NewObjI = ObjectInteraction.CreateNewObject(GameWorldController.instance.currentTileMap(), newObj, GameWorldController.instance.CurrentObjectList().objInfo, GameWorldController.instance.InventoryMarker, GameWorldController.instance.InventoryMarker.transform.position);
                GameWorldController.MoveToInventory(NewObjI);
                UWCharacter.Instance.playerInventory.ObjectInHand = NewObjI.name;
                UWHUD.instance.CursorIcon = NewObjI.GetInventoryDisplay().texture;
                ObjectInteraction.Split(objI, NewObjI);
                UWCharacter.Instance.playerInventory.Refresh(slotIndex);
                QuantityObj = null;


                /*	GameObject Split = Instantiate(QuantityObj);//What we are picking up.
                 *      Split.GetComponent<ObjectInteraction>().link =quant;
                 *      Split.name = Split.name+"_"+UWCharacter.Instance.summonCount++;
                 *      Split.transform.parent=UWCharacter.Instance.playerInventory.InventoryMarker.transform;//this.transform.parent;
                 *      QuantityObj.GetComponent<ObjectInteraction>().link=QuantityObj.GetComponent<ObjectInteraction>().link-quant;
                 *      UWCharacter.Instance.playerInventory.ObjectInHand= Split.name;
                 *      UWHUD.instance.CursorIcon= Split.GetComponent<ObjectInteraction>().GetInventoryDisplay().texture;
                 *      ObjectInteraction.Split (Split.GetComponent<ObjectInteraction>(),QuantityObj.GetComponent<ObjectInteraction>());
                 *      UWCharacter.Instance.playerInventory.Refresh (slotIndex);
                 *      QuantityObj=null;//Clear out to avoid weirdness.*/
            }
        }
    }