コード例 #1
0
        private static void OnCreatureSpawn()
        {
            NWCreature self = OBJECT_SELF;

            // Don't modify AI behaviour for DM-spawned creatures.
            if (GetLocalBool(self, "DM_SPAWNED") == true)
            {
                return;
            }

            string script = GetBehaviourScript(OBJECT_SELF);

            if (string.IsNullOrWhiteSpace(script))
            {
                return;
            }
            IAIBehaviour ai = GetAIBehaviour(script);

            if (ai.IgnoreNWNEvents)
            {
                self.SetLocalInt("IGNORE_NWN_EVENTS", 1);
            }
            if (ai.IgnoreOnBlocked)
            {
                self.SetLocalInt("IGNORE_NWN_ON_BLOCKED_EVENT", 1);
            }
            if (ai.IgnoreOnCombatRoundEnd)
            {
                self.SetLocalInt("IGNORE_NWN_ON_COMBAT_ROUND_END_EVENT", 1);
            }
            if (ai.IgnoreOnConversation)
            {
                self.SetLocalInt("IGNORE_NWN_ON_CONVERSATION_EVENT", 1);
            }
            if (ai.IgnoreOnDamaged)
            {
                self.SetLocalInt("IGNORE_NWN_ON_DAMAGED_EVENT", 1);
            }
            if (ai.IgnoreOnDeath)
            {
                self.SetLocalInt("IGNORE_NWN_ON_DEATH_EVENT", 1);
            }
            if (ai.IgnoreOnDisturbed)
            {
                self.SetLocalInt("IGNORE_NWN_ON_DISTURBED_EVENT", 1);
            }
            if (ai.IgnoreOnHeartbeat)
            {
                self.SetLocalInt("IGNORE_NWN_ON_HEARTBEAT_EVENT", 1);
            }
            if (ai.IgnoreOnPerception)
            {
                self.SetLocalInt("IGNORE_NWN_ON_PERCEPTION_EVENT", 1);
            }
            if (ai.IgnoreOnPhysicalAttacked)
            {
                self.SetLocalInt("IGNORE_NWN_ON_PHYSICAL_ATTACKED_EVENT", 1);
            }
            if (ai.IgnoreOnRested)
            {
                self.SetLocalInt("IGNORE_NWN_ON_RESTED_EVENT", 1);
            }
            if (ai.IgnoreOnSpawn)
            {
                self.SetLocalInt("IGNORE_NWN_ON_SPAWN_EVENT", 1);
            }
            if (ai.IgnoreOnSpellCastAt)
            {
                self.SetLocalInt("IGNORE_NWN_ON_SPELL_CAST_AT_EVENT", 1);
            }
            if (ai.IgnoreOnUserDefined)
            {
                self.SetLocalInt("IGNORE_NWN_ON_USER_DEFINED_EVENT", 1);
            }

            _areaAICreatures[self.Area].Add(self);
            ai.OnSpawn(self);
        }