public override void onDisabled(ShapeBase obj, string lastState)
        {
            Player player = obj.getId();

            player.setImageTrigger(0, false);
            GameBaseData item = (((GameBaseData)(player.getMountedImage(Constants.WeaponSlot)))["item"]);

            if (item.isObject())
            {
                int amount = player.getInventory(item["image.ammo"]);

                if (amount.AsBool())
                {
                    player.Throw(item["image.clip"], 1);
                }
            }
            player.tossPatch();
            player.playDeathCry();
            player.playDeathAnimation();

            //If it's a player check.....
            GameConnection client = player["client"];

            if (client.isObject())
            {
                //todo Remove the console.commandToClient since the default one now shows in the Util class.
                console.commandToClient(client, console.addTaggedString("toggleVehicleMapToggle"), new[] { "false" });
            }
            //Util._commandToClient(client, "toggleVehicleMap", false.AsString());

            int ctov = iGlobal["$CorpseTimeoutValue"];

            player.schedule((ctov - 1000).AsString(), "startFade", "1000", "0", "true");
            player.schedule(ctov.AsString(), "delete");
        }
        public override void onImpact(ShapeBase obj, SceneObject collObj, Point3F vec, float len)
        {
            Player     player = obj.getId();
            TransformF p      = player.getTransform() + new TransformF(vec);

            float speedDamageScale = len + this["speedDamageScale"].AsFloat();

            //Do not confuse the player.event_damage with the PlayerData.event_damage...
            player.damage(0, p.GetPosition(), speedDamageScale, "Impact");
        }
        public override void onDamage(ShapeBase obj, float delta)
        {
            Player player = obj.getId();

            // This method is invoked by the ShapeBase code whenever the
            // object's damage level changes.
            if ((delta <= 0) || player.getState() == "Dead")
            {
                return;
            }
            // Apply a damage flash
            player.setDamageFlash(1);
            // If the pain is excessive, let's hear about it.
            if (delta > 10)
            {
                player.playPain();
            }
        }
        public override void onCollision(ShapeBase obj, SceneObject col, Point3F vec, float len)
        {
            Player player = obj.getId();

            if (player.getState() == "Dead")
            {
                return;
            }
            // Try and pickup all items
            if (col.getClassName() == "Item")
            {
                player.pickup(col.ID, 1);
                return;
            }

            if (col.GetType() != typeof(WheeledVehicle))
            {
                return;
            }

            WheeledVehicle vcol = (WheeledVehicle)col;

            //AI are not allowed to drive they are lousey drivers....
            GameConnection client = player["client"];

            if (!client.isObject())
            {
                return;
            }
            //Mount Vehicle.
            if ((console.getTypeMask(col) & (UInt32)SceneObjectTypesAsUint.GameBaseObjectType) != (UInt32)SceneObjectTypesAsUint.GameBaseObjectType)
            {
                return;
            }
            VehicleData db = vcol.getDataBlock();

            if (!(((db.getClassName() == "WheeledVehicleData") || player["mountVehicle"].AsBool() || player.getState() == "Move" || col["mountable"].AsBool())))
            {
                return;
            }
            // Only mount drivers for now.

            // For this specific example, only one person can fit
            // into a vehicle
            int mount = vcol.getMountNodeObject(0);

            if (mount > 0)
            {
                try
                {
                    Player p = mount;
                    return;
                }
                catch (Exception err)
                {
                    //Water particle emitters seem to take up the seat when the vehicle is in water.
                    vcol.unmountObject(mount.AsString());
                    vcol.mountObject(player, 0, new TransformF());
                    ((GameConnection)player["client"]).setFirstPerson(false);
                    console.commandToClient(client, "PushVehicleMap");
                }
            }
            else
            {
                vcol.mountObject(player, 0, new TransformF());
                ((GameConnection)player["client"]).setFirstPerson(false);
                console.commandToClient(client, "PushVehicleMap");
            }
            //if (mount > 0)
            //return;
            // For this specific FPS Example, always mount the player to node 0

            player["mVehicle"] = col;
        }