public override void damage(ShapeBase obj, Point3F position, GameBase sourceobject, float damage,
                                    string damagetype)
        {
            Player pobj = obj._ID;

            if (!pobj.isObject() || pobj.getState() == "Dead" || !damage.AsBool())
            {
                return;
            }

            obj.applyDamage(damage);

            GameConnection client = obj["client"];

            if (!client.isObject())
            {
                return;
            }
            if (damagetype != "Suicide")
            {
                pobj.setDamageDirection(sourceobject, new TransformF(position));
            }

            if (pobj.getState() == "Dead")
            {
                client.onDeath(sourceobject, sourceobject["client"].isObject() ? sourceobject["client"] : "0",
                               damagetype, "Body");
            }
        }