public override void step()
        {
            if (destroyable == false)
            {
                if (minionState == MinionState.ALIVE)
                {
                    if (stats.health <= 0)
                    {
                        onDeath();
                    }
                    else
                    {
                        walk();

                        if (remainingSpawnCount > 0)
                        {
                            // gerekli dead minionlari sec.
                            ICollection <Minion> targets = minionSelector.selectTargetsFromBoard(position.board, getWorldPosition(), requiredDeadCount, 0, DEAD_CAPTURE_RANGE, MinionStateSelection.DEAD);

                            foreach (Minion minion in targets)
                            {
                                minion.onDestroy(); // oluleri yerden temizle.
                            }

                            requiredDeadCount -= targets.Count;

                            if (targets.Count != 0)
                            {
                                Messages.OutgoingMessages.Game.GMinion_FrankenScientist_stackChanged.sendMessage(this.position.board.player.game.players, this, REQUIRED_DEAD_MINION_COUNT - requiredDeadCount);
                            }

                            if (requiredDeadCount == 0) // yeteri kadar olu topladik mi?
                            {
                                ScrapGolemMinion fish = createNewGolem(game, ownerPlayer);
                                position.board.AddMinionSpecificPosition(fish, position.pathPosition, false);
                                fish.moveCustomDistance((new Random().Next(101)) / 200f - 0.25f);
                                Science_Wars_Server.Messages.OutgoingMessages.Game.GMinion_FrankenScientist_spawn.sendMessage(game.players, this, fish);
                                remainingSpawnCount--;
                                requiredDeadCount = REQUIRED_DEAD_MINION_COUNT;

                                Messages.OutgoingMessages.Game.GMinion_FrankenScientist_stackChanged.sendMessage(this.position.board.player.game.players, this, 0);
                            }
                        }
                    }
                }
                else if (minionState == MinionState.DEAD && isReadyToDestroy()) // minionState i tekrar kontrol ettim. ne olur ne olmaz yeni bir state eklersek patlamasin.
                {
                    onDestroy();
                }
            }
        }
        public static void sendMessage(ICollection<Player> receiverPlayers, FrankenScientistMinion parentMinion, ScrapGolemMinion spawnedMinion)
        {
            RawMessage msg = new RawMessage();
            msg.putInt("id", TypeIdGenerator.getMessageId(typeof(GMinion_FrankenScientist_spawn)));

            if (receiverPlayers != null && receiverPlayers.Count != 0)
            {
                msg.putInt("iid", parentMinion.instanceId);
                if(spawnedMinion.ownerPlayer != null)
                    msg.putInt("uid", spawnedMinion.ownerPlayer.id);
                else
                    msg.putInt("uid", -1);
                msg.putInt("sid", spawnedMinion.instanceId);
                msg.putInt("bid", spawnedMinion.position.board.instanceId);
                msg.putInt("cid", spawnedMinion.position.pathPosition.pointIndex);
                msg.putFloat("t", spawnedMinion.position.pathPosition.ratio);

                foreach (var receiverPlayer in receiverPlayers)
                    receiverPlayer.user.session.client.SendMessage(msg);
            }
        }