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; }
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++; }