Beispiel #1
0
        public static void clientCmdPlayTeleportEffect(Point3F position, SimDataBlock effectDataBlock)
        {
            if (!effectDataBlock.isObject())
            {
                return;
            }
            ObjectCreator tch = new ObjectCreator("Explosion");

            tch["position"]  = position.AsString();
            tch["datablock"] = effectDataBlock;
            tch.Create();
        }
        public override void damage(GameBase sourceobject, Point3F position, float damage, string damagetype)
        {
            if (!isObject())
            {
                return;
            }
            if (getState() == "Dead")
            {
                return;
            }
            if (damage == 0.0)
            {
                return;
            }


            applyDamage(damage);

            if (getState() == "Dead")
            {
                return;
            }

            Point3F ejectvel = getVelocity();

            if (ejectvel.z <= 0)
            {
                ejectvel += new Point3F(0, 0, 5);
                SimDataBlock d = getDataBlock();
                if (d.isObject())
                {
                    ejectvel = ejectvel.vectorScale(d["mass"].AsFloat());
                }
                applyImpulse(getPosition(), ejectvel);
            }


            Point3F currentpos = getPosition();

            currentpos.x += r.Next(-5, 5);
            currentpos.y += r.Next(-5, 5);

            if (getDamageLevel() > 50)
            {
                currentpos.x += r.Next(-50, 50);
                currentpos.y += r.Next(-50, 50);
            }


            setMoveDestination(currentpos, false);
        }