示例#1
0
        public SerializedNpc(GameObject gameObject)
        {
            position = new Position(gameObject.transform.position);
            WeaponShooting enemyShooting = gameObject.GetComponentInChildren <WeaponShooting>();
            EnemyAI        enemyNpc      = gameObject.GetComponentInChildren <EnemyAI>();
            NpcStats       stats         = gameObject.GetComponent <NpcStats>();
            Npc            npc           = gameObject.GetComponentInChildren <Npc>();

            maxHealth           = stats.maxHealth;
            damage              = stats.damage;
            armour              = stats.armour;
            radiationResistance = stats.radiationResistance;
            movementSpeed       = stats.movementSpeed;
            //stats.items = stats.items;
            experienceGained = stats.experienceGained;

            radius           = npc.radius;
            dialogueFilename = npc.dialogueFilename;
            reaction         = npc.reaction;
            questNames       = new List <string>();
            questStatuses    = new List <QuestStatus>();
            npc.quests.ForEach(quest => {
                questNames.Add(quest.title);
                questStatuses.Add(quest.status);
            });

            attackSpeed = enemyShooting.meleeAttackSpeed;
            //weaponName = enemyShooting.weapon.name;

            chaseRadius  = enemyNpc.chaseRadius;
            attackRadius = enemyNpc.attackRadius;
            meleeRadius  = enemyNpc.meleeRadius;
        }
示例#2
0
    void RunNode(int nodeIndex, NpcReaction reaction)
    {
        CleanOptionsPanel();

        if (nodeIndex == -1)
        {
            dialogueUI.SetActive(false);
            npc.reaction = reaction;
            dialogue     = null;
            TimeManager.instance.RestoreTime();

            return;
        }

        DialogueNode node = dialogue.nodes[nodeIndex];

        dialogueText.text = node.text;

        node.options.ForEach(option => {
            if (CheckIfCanShowOption(option))
            {
                Button optButton = Instantiate(optionPrefab, optionsPanel) as Button;
                optButton.GetComponentInChildren <Text>().text = option.text;
                optButton.onClick.AddListener(delegate {
                    RunNode(option.destinationNodeId, option.reaction);

                    int questId = option.getQuestId();

                    if (questId != -1)
                    {
                        if (option.destinationNodeId == -1)
                        {
                            if (option.questStatus == QuestStatus.NONE)
                            {
                                QuestManager.instance.AddQuest(npc.quests[questId]);
                            }
                        }

                        if (option.questStatus == QuestStatus.IN_PROGRESS)
                        {
                            if (npc.quests[questId].IsFinnished())
                            {
                                QuestManager.instance.FinishQuest(npc.quests[questId]);
                            }
                            else
                            {
                                Debug.Log("GET AWAY AND DO YOUR JOB!");
                            }
                        }
                    }
                });
            }
        });
    }
示例#3
0
 public DialogueOption(
     string text,
     int dest,
     NpcReaction reaction,
     NpcReaction reactionTrigger,
     List <NpcReaction> excludedReactions,
     List <int> questId,
     QuestStatus questStatus
     )
 {
     this.text = text;
     this.destinationNodeId = dest;
     this.reaction          = reaction;
     this.reactionTrigger   = reactionTrigger;
     this.excludedReactions = excludedReactions;
     this.questId           = questId;
     this.questStatus       = questStatus;
 }