コード例 #1
0
    public void ctor(World world, patch_CreatureTemplate creatureTemplate, patch_Creature realizedCreature, WorldCoordinate pos, EntityID ID)
    {
        orig_ctor(world, creatureTemplate, realizedCreature, pos, ID);
        CreatureTemplate.Type type = creatureTemplate.TopAncestor().type;
        if (creatureTemplate.AI)
        {
            type = creatureTemplate.type;
            switch (type)
            {
            case CreatureTemplate.Type.Scavenger:
                abstractAI = new ScavengerAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.Overseer:
                abstractAI = new OverseerAbstractAI(world, this);
                goto IL_2F4;

            default:
                switch (type)
                {
                case CreatureTemplate.Type.Vulture:
                    break;

                default:
                    if (type != CreatureTemplate.Type.MirosBird)
                    {
                        abstractAI = new AbstractCreatureAI(world, this);
                        goto IL_2F4;
                    }
                    abstractAI = new MirosBirdAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.CicadaA:
                case CreatureTemplate.Type.CicadaB:
                    abstractAI = new CicadaAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.BigEel:
                    abstractAI = new BigEelAbstractAI(world, this);
                    goto IL_2F4;

                case CreatureTemplate.Type.Deer:
                    abstractAI = new DeerAbstractAI(world, this);
                    goto IL_2F4;

                case (CreatureTemplate.Type)patch_CreatureTemplate.Type.WalkerBeast:
                    abstractAI = new WalkerBeastAbstractAI(world, this);
                    goto IL_2F4;
                }
                break;

            case CreatureTemplate.Type.SmallNeedleWorm:
            case CreatureTemplate.Type.BigNeedleWorm:
                abstractAI = new NeedleWormAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.DropBug:
                abstractAI = new DropBugAbstractAI(world, this);
                goto IL_2F4;

            case CreatureTemplate.Type.KingVulture:
                break;
            }
            abstractAI = new VultureAbstractAI(world, this);
        }
IL_2F4:
        if (pos.abstractNode > -1 && pos.abstractNode < Room.nodes.Length && Room.nodes[pos.abstractNode].type == AbstractRoomNode.Type.Den && !pos.TileDefined)
        {
            if (Room.offScreenDen)
            {
                remainInDenCounter = 1;
            }
            else
            {
                remainInDenCounter = UnityEngine.Random.Range(100, 1000);
            }
            if (abstractAI != null)
            {
                abstractAI.denPosition = new WorldCoordinate?(pos);
            }
            spawnDen = pos;
        }
        if (creatureTemplate.type == CreatureTemplate.Type.TentaclePlant || creatureTemplate.type == CreatureTemplate.Type.PoleMimic)
        {
            remainInDenCounter = 0;
        }
    }
コード例 #2
0
 public extern void orig_ctor(World world, patch_CreatureTemplate creatureTemplate, patch_Creature realizedCreature, WorldCoordinate pos, EntityID ID);