示例#1
0
 public override void WriteXml(XmlWriter writer)
 {
     writer.WriteAttributeString("ActionType", ActionType.ToString());
     writer.WriteAttributeString("ItemTarget", ItemTarget.ToString());
     writer.WriteAttributeString("ItemQuality", ItemQuality.ToString());
     writer.WriteAttributeString("ItemId", ItemId.ToString());
 }
        /// <summary>
        /// </summary>
        /// <param name="t">
        /// </param>
        /// <param name="o">
        /// </param>
        /// <param name="statId">
        /// </param>
        /// <param name="statValue">
        /// </param>
        /// <returns>
        /// </returns>
        /// <exception cref="NotImplementedException">
        /// </exception>
        public static Expression <Func <IInstancedEntity, bool> > BuildExpression(
            ItemTarget t,
            Operator o,
            int statId,
            int statValue)
        {
            switch (o)
            {
            case Operator.GreaterThan:
            case Operator.LessThan:
            case Operator.EqualTo:
            case Operator.TestNumPets:
            case Operator.BitAnd:
            case Operator.NotBitAnd:
            case Operator.BitOr:
            case Operator.Unequal:
            case Operator.Not:
                Func <int, int, bool> tmp = SwitchStatOperator((int)o).Compile();
                Func <IInstancedEntity, IInstancedEntity> tmp2 = GetTarget(t).Compile();
                return(k => tmp.Invoke(tmp2.Invoke(k).Stats[statId].Value, statValue));

            case Operator.HasNotFormula:

                return(k => ((Character)GetTarget(t).Compile().Invoke(k)).HasNano(statValue));

            case Operator.FlyingAllowed:
                return(k => true);

            default:

                throw new NotImplementedException("Operator " + o.ToString() + " not implemented yet.");
            }
        }
        /// <summary>
        /// </summary>
        /// <param name="t">
        /// </param>
        /// <param name="o">
        /// </param>
        /// <param name="statId">
        /// </param>
        /// <param name="statValue">
        /// </param>
        /// <returns>
        /// </returns>
        /// <exception cref="NotImplementedException">
        /// </exception>
        public static Expression<Func<IInstancedEntity, bool>> BuildExpression(
            ItemTarget t, 
            Operator o, 
            int statId, 
            int statValue)
        {
            switch (o)
            {
                case Operator.GreaterThan:
                case Operator.LessThan:
                case Operator.EqualTo:
                case Operator.TestNumPets:
                case Operator.BitAnd:
                case Operator.NotBitAnd:
                case Operator.BitOr:
                case Operator.Unequal:
                    Func<int, int, bool> tmp = SwitchStatOperator((int)o).Compile();
                    Func<IInstancedEntity, IInstancedEntity> tmp2 = GetTarget(t).Compile();
                    return k => tmp.Invoke(tmp2.Invoke(k).Stats[statId].Value, statValue);
                case Operator.HasNotFormula:

                    return k => ((Character)GetTarget(t).Compile().Invoke(k)).HasNano(statValue);
                default:

                    throw new NotImplementedException("Operator " + o.ToString() + " not implemented yet.");
            }
        }
示例#4
0
 void Start()
 {
     retrievedAllItems = false;
     scriptItemTarget  = theLips.GetComponent <ItemTarget>();
     trnLips           = theLips.transform;
     scriptInv         = GameObject.FindWithTag("InventoryManager").GetComponent <Inventory>();
     currentLevel      = 1;
 }
示例#5
0
 public MenuItem(string caption, ItemTarget itemTarget, ItemType itemType, 
                 string cmd, string param, string directory, MenuItem menuUp)
 {
     this.caption = caption;
     this.itemType = itemType;
     this.itemTarget = itemTarget;
     this.cmd = cmd;
     this.param = param;
     this.directory = directory;
     this.menuUp = menuUp;
 }
示例#6
0
        public void Write(ref PacketWriter data)
        {
            data.WriteUInt32((uint)TargetMask);

            if (Convert.ToBoolean(TargetMask & (SpellCastTargetFlags.Unit | SpellCastTargetFlags.CorpseAlly | SpellCastTargetFlags.Gameobject | SpellCastTargetFlags.CorpseEnemy | SpellCastTargetFlags.UnitMinipet)))
            {
                data.WritePackedGuid(ObjectTargetGUID);
            }

            if (Convert.ToBoolean(TargetMask & (SpellCastTargetFlags.Item | SpellCastTargetFlags.TradeItem)))
            {
                if (ItemTarget != null)
                {
                    data.WriteUInt64(ItemTarget.GetPackGUID());
                }
                else
                {
                    data.WriteUInt8(0);
                }
            }

            if (Convert.ToBoolean(TargetMask & SpellCastTargetFlags.SourceLocation))
            {
                data.WritePackedGuid(Src.TransportGUID); // relative position guid here - transport for example
                if (Src.TransportGUID != 0)
                {
                    data.WriteBytes(Src.TransportOffset.WriteXYZStream());
                }
                else
                {
                    data.WriteBytes(Src.Position.WriteXYZStream());
                }
            }

            if (Convert.ToBoolean(TargetMask & SpellCastTargetFlags.DestLocation))
            {
                data.WritePackedGuid(Dst.TransportGUID); // relative position guid here - transport for example
                if (Dst.TransportGUID != 0)
                {
                    data.WriteBytes(Dst.TransportOffset.WriteXYZStream());
                }
                else
                {
                    data.WriteBytes(Dst.Position.WriteXYZStream());
                }
            }

            if (Convert.ToBoolean(TargetMask & SpellCastTargetFlags.String))
            {
                data.WriteString(strTarget);
            }
        }
示例#7
0
 public void Consume(ItemTarget target, ResourceScriptableObject resource)
 {
     if (target == ItemTarget.Adult)
     {
         float currentHungerVal = playerHungerCurrent + resource.hungerGainRate * Time.deltaTime;
         playerHungerCurrent = Mathf.Clamp(currentHungerVal, 0, GameInfo.playerHungerMax);
         float currentThirstVal = playerThirstCurrent + resource.thirstGainRate * Time.deltaTime;
         playerThirstCurrent = Mathf.Clamp(currentThirstVal, 0, GameInfo.playerThirstMax);
         float currentSanityVal = playerSanityCurrent + resource.sanityGainRate * Time.deltaTime;
         playerSanityCurrent = Mathf.Clamp(currentSanityVal, 0, GameInfo.playerSanityMax);
     }
     else
     {
         print("Consume resource baby not implemented");
     }
 }
示例#8
0
        void Update(Unit caster)
        {
            ObjectTarget = ObjectTargetGUID != 0 ? ((ObjectTargetGUID == caster.GetGUIDLow()) ? caster : ObjMgr.GetObject <WorldObject>(caster, ObjectTargetGUID)) : null;

            ItemTarget = null;
            if (caster is Player)
            {
                Player player = caster.ToPlayer();
                if (Convert.ToBoolean(TargetMask & SpellCastTargetFlags.Item))
                {
                    ItemTarget = player.GetItemByGuid(ItemTargetGUID);
                }
                else if (Convert.ToBoolean(TargetMask & SpellCastTargetFlags.TradeItem))
                {
                    //if (ItemTargetGUID == (uint)TradeSlots.NONTRADED) // here it is not guid but slot. Also prevents hacking slots
                    //if (TradeData* pTrade = player->GetTradeData())
                    //ItemTarget = pTrade->GetTraderData()->GetItem(TradeSlots.NONTRADED);
                }

                if (ItemTarget != null)
                {
                    ItemTargetEntry = ItemTarget.GetEntry();
                }
            }

            // update positions by transport move
            if (HasSrc() && Src.TransportGUID != 0)
            {
                WorldObject transport = ObjMgr.GetObject <WorldObject>(caster, Src.TransportGUID);
                if (transport != null)
                {
                    Src.Position.Relocate(transport.Position);
                    Src.Position.RelocateOffset(Src.TransportOffset);
                }
            }

            if (HasDst() && Dst.TransportGUID != 0)
            {
                WorldObject transport = ObjMgr.GetObject <WorldObject>(caster, Dst.TransportGUID);
                if (transport != null)
                {
                    Dst.Position.Relocate(transport.Position);
                    Dst.Position.RelocateOffset(Dst.TransportOffset);
                }
            }
        }
示例#9
0
 public void BuildItemFromScriptableObject(ItemScriptableObject scriptableItem)
 {
     this.itemName                      = scriptableItem.itemName;
     this.myType                        = scriptableItem.itemType;
     this.myTarget                      = scriptableItem.itemTarget;
     this.readyness                     = scriptableItem.itemReadyness;
     this.hungerValue                   = scriptableItem.hungerValue;
     this.thirstValue                   = scriptableItem.thirstValue;
     this.sanityValue                   = scriptableItem.sanityValue;
     this.diaperValue                   = scriptableItem.diaperValue;
     this.attentionValue                = scriptableItem.attentionValue;
     this.preparedTime                  = 0;
     this.timeUntilPrepared             = scriptableItem.timeUntilPrepared;
     this.timeUntilOverPrepared         = scriptableItem.timeUntilOverPrepared;
     this.underPreparedPenaltyAdder     = scriptableItem.underPreparedPenaltyAdder;
     this.overPreparedPenaltyMultiplier = scriptableItem.overPreparedPenaltyMultiplier;
     this.myIcon                        = scriptableItem.myIcon;
     this.myIcon_Over                   = scriptableItem.myIcon_Over;
     this.myIcon_Under                  = scriptableItem.myIcon_Under;
 }
示例#10
0
    public void Consume(ItemTarget target, Item item)
    {
        if (item.GetReadyness() == Readyness.Overcooked)
        {
            item.hungerValue *= item.overPreparedPenaltyMultiplier;
            item.thirstValue *= item.overPreparedPenaltyMultiplier;
            item.sanityValue *= item.overPreparedPenaltyMultiplier;
        }
        else if (item.GetReadyness() == Readyness.Undercooked)
        {
            item.hungerValue += item.underPreparedPenaltyAdder;
            item.thirstValue += item.underPreparedPenaltyAdder;
            item.sanityValue += item.underPreparedPenaltyAdder;
        }

        if (target == ItemTarget.Adult)
        {
            float currentHungerVal = playerHungerCurrent + item.hungerValue;
            playerHungerCurrent = Mathf.Clamp(currentHungerVal, 0, GameInfo.playerHungerMax);
            float currentThirstVal = playerThirstCurrent + item.thirstValue;
            playerThirstCurrent = Mathf.Clamp(currentThirstVal, 0, GameInfo.playerThirstMax);
            float currentSanityVal = playerSanityCurrent + item.sanityValue;
            playerSanityCurrent = Mathf.Clamp(currentSanityVal, 0, GameInfo.playerSanityMax);
        }
        else if (target == ItemTarget.Baby)
        {
            float currentHungerVal = babyHungerCurrent + item.hungerValue;
            babyHungerCurrent = Mathf.Clamp(currentHungerVal, 0, GameInfo.babyHungerMax);
            float currentThirstVal = babyThirstCurrent + item.thirstValue;
            babyThirstCurrent = Mathf.Clamp(currentThirstVal, 0, GameInfo.babyThirstMax);
            float currentDiaperVal = babyDiaperCurrent + item.diaperValue;
            babyDiaperCurrent = Mathf.Clamp(currentDiaperVal, 0, GameInfo.babyDiaperMax);
            float currentAttentionVal = babyAttentionCurrent + item.attentionValue;
            babyAttentionCurrent = Mathf.Clamp(currentAttentionVal, 0, GameInfo.babyAttentionMax);
        }
    }
示例#11
0
 void Start()
 {
     retrievedAllItems = false;
     scriptItemTarget = theLips.GetComponent<ItemTarget>();
     trnLips = theLips.transform;
     scriptInv = GameObject.FindWithTag("InventoryManager").GetComponent<Inventory>();
     currentLevel = 1;
 }
示例#12
0
 public void SetTarget(ItemTarget target)
 {
     mTarget = target;
 }
 /// <summary>
 /// </summary>
 /// <param name="t">
 /// </param>
 /// <returns>
 /// </returns>
 public static Expression<Func<IInstancedEntity, IInstancedEntity>> GetTarget(ItemTarget t)
 {
     switch (t)
     {
         case ItemTarget.Self:
             return (k) => k;
         case ItemTarget.Fightingtarget:
             return (k) => ((ITargetingEntity)k).Playfield.FindByIdentity(((ITargetingEntity)k).FightingTarget);
         case ItemTarget.Target:
             return (k) => ((ITargetingEntity)k).Playfield.FindByIdentity(((ITargetingEntity)k).SelectedTarget);
         case ItemTarget.User:
             return (k) => k;
         case ItemTarget.Wearer:
             return (k) => k;
         default:
             return (k) => k;
     }
 }
        /// <summary>
        /// </summary>
        /// <param name="t">
        /// </param>
        /// <returns>
        /// </returns>
        public static Expression <Func <IInstancedEntity, IInstancedEntity> > GetTarget(ItemTarget t)
        {
            switch (t)
            {
            case ItemTarget.Self:
                return((k) => k);

            case ItemTarget.Fightingtarget:
                return((k) => ((ITargetingEntity)k).Playfield.FindByIdentity(((ITargetingEntity)k).FightingTarget));

            case ItemTarget.Target:
                return((k) => ((ITargetingEntity)k).Playfield.FindByIdentity(((ITargetingEntity)k).SelectedTarget));

            case ItemTarget.User:
                return((k) => k);

            case ItemTarget.Wearer:
                return((k) => k);

            default:
                return((k) => k);
            }
        }