コード例 #1
0
        public override void Damage(short damage)
        {
            HotbarWidget widget = (HotbarWidget)game.Gui.hudScreen.hotbar;

            //short damage2 = widget.damage;
            //damage2 += damage;
            //if (widget.damageTime <= 0) {
            widget.DoAnim(damage);
            //} else {
            //	widget.DoAnim(damage2);
            //}
            Health  -= damage;
            HurtTime = 10;
        }
コード例 #2
0
ファイル: Survival.cs プロジェクト: TheMegaPVP/ClassiCubeSVL
        public void Tick()
        {
            LocalPlayer p = game.LocalPlayer;

            if (p.onGround)
            {
                if (!wasOnGround)
                {
                    if (p.fallDistance >= 3.5f)
                    {
                        //short damage = (short)Math.Ceiling(((p.fallDistance * 0.5f) - 1.5f));
                        short damage = (short)(p.fallDistance - 3f);
                        if (damage > 0)
                        {
                            p.Damage(damage);
                        }
                    }
                    p.fallDistance = 0;
                }
            }

            wasOnGround = p.onGround;

            HotbarWidget widget = (HotbarWidget)game.Gui.hudScreen.hotbar;

            if (widget.damageTime > 0)
            {
                widget.damageTime -= 1;
            }

            if (widget.pop > 0)
            {
                widget.pop -= 1;
            }

            if (game.World.blocks1 == null)
            {
                return;
            }
            int headX = Utils.Floor(p.EyePosition.X);
            int headY = Utils.Floor(p.EyePosition.Y);
            int headZ = Utils.Floor(p.EyePosition.Z);

            if (game.World.IsValidPos(headX, headY, headZ))
            {
                BlockID headBlock   = game.World.blocks2[(headY * game.World.Length + headZ) * game.World.Width + headX];
                bool    headInWater = (headBlock == Block.Water || headBlock == Block.StillWater);
                if (headInWater && p.Air != 0)
                {
                    widget.inWater = true;
                    p.Air         -= 1;
                }
                else if (headInWater && p.Air == 0)
                {
                    widget.inWater = true;
                    if (drownTimer <= 0)
                    {
                        p.Damage(2);
                        drownTimer = 11;
                    }
                    else
                    {
                        drownTimer -= 1;
                    }
                }
                else
                {
                    widget.inWater = false;
                    p.Air          = 300;
                    drownTimer     = 0;
                }
            }
            else
            {
                widget.inWater = false;
                p.Air          = 300;
                drownTimer     = 0;
            }
            if (p.TouchesAnyLava())
            {
                if (lavaTimer == 0)
                {
                    p.Damage(10);
                    lavaTimer = 11;
                }
                else
                {
                    lavaTimer -= 1;
                }
            }
            else if (lavaTimer != 0)
            {
                lavaTimer -= 1;
            }

            CheckPlayerDied();

            if (pickDelay > 0)
            {
                pickDelayed = true;
                pickDelay  -= 1;
                return;
            }
            bool pickBegan = false;

            if (pickDelay == 0 && pickDelayed && pickingBlock)
            {
                pickBegan = true;
            }
            pickDelayed = false;
            if (game.World.blocks1 == null || game.World.blocks1.Length == 0)
            {
                return;
            }
            Vector3I pos = game.SelectedPos.BlockPos;

            if (pos.X < 0 || pos.Y < 0 || pos.Z < 0 ||
                pos.X >= game.World.Width || pos.Y >= game.World.Height || pos.Z >= game.World.Length)
            {
                return;
            }
            byte selectedBlock = (byte)game.SelectedPos.Block;

            if (pickingBlock)
            {
                if (blockList[selectedBlock] == 0)
                {
                    game.Picking.pickProg = 10;
                    game.Picking.UpdateTexture(game.SelectedPos);
                }
                else if (blockList[selectedBlock] < 0)
                {
                    game.Picking.pickProg = 0;
                    return;
                }
                else                    // if (pickTime >= blockList[selectedBlock]) {
                                        //game.Picking.pickProg += (1f/blockList[selectedBlock]) * (1f/30f) * 10;
                {
                    if (pickBegan)
                    {
                        game.Picking.pickingBlock = true;
                    }
                    else
                    {
                        game.Picking.pickProg += 1f / (3 * blockList[selectedBlock]);
                    }
                    game.Picking.UpdateTexture(game.SelectedPos);
                }
            }

            BlockID old = game.World.GetBlock(pos.X, pos.Y, pos.Z);

            if (game.Picking.pickProg >= 10 && old != 0)
            {
                game.UpdateBlock(pos.X, pos.Y, pos.Z, Block.Air);
                game.UserEvents.RaiseBlockChanged(pos, old, Block.Air);
                HandleDelete(old, pos);
                game.Picking.pickProg = 0;
                game.Picking.UpdateState(game.SelectedPos);
                pickDelay = 5;
                game.Picking.pickingBlock = false;
                pickingBlock = false;
            }
            tickCount++;
        }