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); } } } }
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); }
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)); } }
/// <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)); } } }
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. }
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; } }
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); }
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); }
/// <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); }
/// <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; }
/// <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; } } }
/*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)); } }
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(); }
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. } } }
/// <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; }
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); }
/// <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)); } } }
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(); } }
/* * 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. }
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!"); } }
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)); } } } } } }
/// <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); } }
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); } }
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. } }
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.*/ } } }