Esempio n. 1
0
        /// <summary>
        /// Called when the entity is attacked.
        /// </summary>
        public override bool AttackEntityFrom(DamageSource par1DamageSource, int par2)
        {
            if (WorldObj.IsRemote || IsDead)
            {
                return(true);
            }

            SetForwardDirection(-GetForwardDirection());
            SetTimeSinceHit(10);
            SetDamageTaken(GetDamageTaken() + par2 * 10);
            SetBeenAttacked();

            if (GetDamageTaken() > 40)
            {
                if (RiddenByEntity != null)
                {
                    RiddenByEntity.MountEntity(this);
                }

                for (int i = 0; i < 3; i++)
                {
                    DropItemWithOffset(Block.Planks.BlockID, 1, 0.0F);
                }

                for (int j = 0; j < 2; j++)
                {
                    DropItemWithOffset(Item.Stick.ShiftedIndex, 1, 0.0F);
                }

                SetDead();
            }

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Called when the entity is attacked.
        /// </summary>
        public override bool AttackEntityFrom(DamageSource par1DamageSource, int par2)
        {
            if (WorldObj.IsRemote || IsDead)
            {
                return(true);
            }

            Func_41029_h(-Func_41030_m());
            Func_41028_c(10);
            SetBeenAttacked();
            Func_41024_b(Func_41025_i() + par2 * 10);

            if (Func_41025_i() > 40)
            {
                if (RiddenByEntity != null)
                {
                    RiddenByEntity.MountEntity(this);
                }

                SetDead();
                DropItemWithOffset(Item.MinecartEmpty.ShiftedIndex, 1, 0.0F);

                if (MinecartType == 1)
                {
                    EntityMinecart entityminecart = this;
label0:

                    for (int i = 0; i < entityminecart.GetSizeInventory(); i++)
                    {
                        ItemStack itemstack = entityminecart.GetStackInSlot(i);

                        if (itemstack == null)
                        {
                            continue;
                        }

                        float f  = Rand.NextFloat() * 0.8F + 0.1F;
                        float f1 = Rand.NextFloat() * 0.8F + 0.1F;
                        float f2 = Rand.NextFloat() * 0.8F + 0.1F;

                        do
                        {
                            if (itemstack.StackSize <= 0)
                            {
                                goto label0;
                            }

                            int j = Rand.Next(21) + 10;

                            if (j > itemstack.StackSize)
                            {
                                j = itemstack.StackSize;
                            }

                            itemstack.StackSize -= j;
                            EntityItem entityitem = new EntityItem(WorldObj, PosX + f, PosY + f1, PosZ + f2, new ItemStack(itemstack.ItemID, j, itemstack.GetItemDamage()));
                            float      f3         = 0.05F;
                            entityitem.MotionX = (float)Rand.NextGaussian() * f3;
                            entityitem.MotionY = (float)Rand.NextGaussian() * f3 + 0.2F;
                            entityitem.MotionZ = (float)Rand.NextGaussian() * f3;
                            WorldObj.SpawnEntityInWorld(entityitem);
                        }while (true);
                    }

                    DropItemWithOffset(Block.Chest.BlockID, 1, 0.0F);
                }
                else if (MinecartType == 2)
                {
                    DropItemWithOffset(Block.StoneOvenIdle.BlockID, 1, 0.0F);
                }
            }

            return(true);
        }