コード例 #1
0
        public void Awake()
        {
            LogCore.logger = Logger;

            Assets.PopulateAssets();
            Assets.ApplyShaders();

            cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, ModGuid + ".cfg"), true);

            LogCore.LogD("Adding Monsters...");
            var EnemyTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => !type.IsAbstract && type.IsSubclassOf(typeof(EnemyBuilder)));

            foreach (var enemyType in EnemyTypes)
            {
                EnemyBuilder enemy = (EnemyBuilder)Activator.CreateInstance(enemyType);

                LogCore.LogI(enemy);
                if (ValidateEnemy(enemy, enemies))
                {
                    enemy.Create(cfgFile);
                }
            }
            EnemyBuilder.AddToContentPack();
            Assets.AddEffectDefs();

            LogCore.LogD("Adding Monsters Complete.");

            ContentPackProvider.Init();
        }
コード例 #2
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 spawnPosition, int lv = 1)
    {
        IEnemy            enemy   = new IEnemy();
        ICharacterBuilder builder = new EnemyBuilder(enemy, typeof(T), weaponType, spawnPosition, lv);

        return(CharacterBuilderDirector.Construct(builder));
    }
コード例 #3
0
    // 建立Enemy(Generice版)
    public IEnemy CreateEnemy <T>(ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) where T : IEnemy, new()
    {
        // 产生Enemy的参数
        EnemyBuildParam EnemyParam = new EnemyBuildParam();

        // 产生对应的Character
        EnemyParam.NewCharacter = new T();
        if (EnemyParam.NewCharacter == null)
        {
            return(null);
        }

        // 设定共用参数
        EnemyParam.emWeapon       = emWeapon;
        EnemyParam.SpawnPosition  = SpawnPosition;
        EnemyParam.AttackPosition = AttackPosition;

        //  产生对应的Builder及设定参数
        EnemyBuilder theEnemyBuilder = new EnemyBuilder();

        theEnemyBuilder.SetBuildParam(EnemyParam);

        // 产生
        m_BuilderDirector.Construct(theEnemyBuilder);
        return(EnemyParam.NewCharacter  as IEnemy);
    }
コード例 #4
0
ファイル: Enemy.cs プロジェクト: moto2002/Pioneer
        /// <summary>
        ///  <see cref="T:Character.Enemy"/> classのコンストラクタ
        /// </summary>
        /// <param name="builder">このキャラクターの初期設定を保持するEnemyBuilerクラス</param>
        public Enemy(EnemyBuilder builder)
        {
            this.ID             = builder.getId();
            this.NAME           = builder.getName();
            this.abilities      = builder.getAbilities();
            this.DEF            = builder.getDef();
            this.LV             = builder.getLevel();
            this.NORMAL_DROP_ID = builder.getNormalDropId();
            this.RARE_DROP_ID   = builder.getRareDropId();
            this.MODEL_ID       = builder.getModelName();
            this.FACTION        = builder.getFaction();

            this.MAX_HP = builder.getMaxHp();

            this.MAX_MP = builder.getMaxMp();

            this.hp = MAX_HP;
            this.mp = MAX_MP;

            GameObject prefab     = (GameObject)Resources.Load(MODEL_ID);
            GameObject gameobject = MonoBehaviour.Instantiate(prefab);

            this.container = gameobject.GetComponent <Container> ();
            container.setCharacter(this);

            this.UNIQE_ID = UniqueIdCreator.creatUniqueId();

            activeSkillSet   = ActiveSkillSetMasterManager.getInstance().getActiveSkillSetFromId(builder.getActiveSkillSetId(), this);
            reactionSkillSet = ReactionSkillSetMasterManager.getInstance().getReactionSkillSetFromId(builder.getReactionSkillSetId());
            this.ai          = EnemyAISummarizingManager.getInstance().getAiFromId(builder.getAiId(), this, activeSkillSet, reactionSkillSet);

            attributeResistances = builder.getAttributeRegists();
            observer             = new EnemyObserver(ID);
        }
コード例 #5
0
    private void Awake()
    {
        _instance = this;
        gameTrans = UnityTool.FindChild(gameObject, "Game").transform;
        lvInfoMgr = LevelInfoMgr.Instance;
        mapMaker  = GetComponent <MapMaker>();

        enemyBuilder   = new EnemyBuilder();
        towerBuilder   = new TowerBuilder();
        bullectBuilder = new BullectBuilder();
        currentLevel   = GameRoot.Instance.pickLevel;
        info           = lvInfoMgr.levelInfoList[currentLevel];
        //初始化地图
        mapMaker.InitAllGrid();
        mapMaker.LoadLevelMap(currentLevel);
        //获得关卡数据和回合数据
        SetLevelData(info);

        level = new Level(info);
        level.HandleRound();
        beginPos = level.roundInfoList[0].pathList[0];
        EventCenter.Broadcast(EventType.SetStartPos, beginPos);
        isPause = true;
        EventCenter.AddListener <int>(EventType.UseItemInGame, UseItem);
    }
コード例 #6
0
    public T CreateCharacter <T>(WeaponType _weaponType, Vector3 _pos, int _lv = 1) where T : AbsCharacter, new()
    {
        AbsCharacter        character = new T();
        AbsCharacterBuilder builder   = new EnemyBuilder(character, typeof(T), _weaponType, _pos, _lv);

        return(CharacterBuilderDirector.Construct(builder) as T);
    }
コード例 #7
0
ファイル: EnemyFactory.cs プロジェクト: codezips/pacman-c-
        public Enemy CreateEnemy(EnemyTypes type, Position position, bool isInCave)
        {
            switch (type)
            {
            case EnemyTypes.Blinky:
                _enemyBuilder = new BlinkyBuilder(position, isInCave);
                break;

            case EnemyTypes.Clyde:
                _enemyBuilder = new ClydeBuilder(position, isInCave);
                break;

            case EnemyTypes.Inky:
                _enemyBuilder = new InkyBuilder(position, isInCave);
                break;

            case EnemyTypes.Pinky:
                _enemyBuilder = new PinkyBuilder(position, isInCave);
                break;

            default:
                throw new ArgumentException($"Not supported player type {type}");
            }

            return(_enemyBuilder.Instance);
        }
コード例 #8
0
ファイル: CharacterFactory.cs プロジェクト: xinge1231/LastDay
    public override IEnemy createEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 spawnPosition)
    {
        //建造参数
        EnemyBuildParam buildParam = new EnemyBuildParam();

        switch (emEnemy)
        {
        case ENUM_Enemy.Zombie:
            buildParam.character = new EnemyZombie();
            break;

        default:
            Debug.Log("不存在该Enemy类型");
            return(null);
        }
        buildParam.weapon        = emWeapon;
        buildParam.spawnPosition = spawnPosition;

        EnemyBuilder enemyBuilder = new EnemyBuilder();

        enemyBuilder.setBuildParam(buildParam);
        m_characterBuilderSystem.construct(enemyBuilder);

        return(buildParam.character as IEnemy);
    }
コード例 #9
0
    public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, Vector3 SpawnPosition)
    {
        EnemyBuildParam EnemyParam = new EnemyBuildParam();


        switch (emEnemy)
        {
        case ENUM_Enemy.Keraha:
            EnemyParam.NewCharacter = new EnemyKeraha();
            break;

        default:
            Debug.LogWarning("无法创建[" + emEnemy + "]");
            return(null);
        }

        if (EnemyParam.NewCharacter == null)
        {
            return(null);
        }


        EnemyParam.SpawnPosition = SpawnPosition;


        EnemyBuilder theEnemyBuilder = new EnemyBuilder();

        theEnemyBuilder.SetBuildParam(EnemyParam);


        m_BuilderDirector.Construct(theEnemyBuilder);
        return(EnemyParam.NewCharacter as IEnemy);
    }
コード例 #10
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 spawnPosition, int lv = 1) where T : ICharacter, new()
    {
        ICharacter character = new T();

        ICharacterBuilder builder = new EnemyBuilder(character, typeof(T), weaponType, spawnPosition, lv);

        return(CharacterBuilderDirector.Construct(builder));
    }
コード例 #11
0
 public static EnemyBuilder GetEnemyBuilder()
 {
     if (enemyBuilder == null)
     {
         enemyBuilder = new EnemyBuilder();
     }
     return(enemyBuilder);
 }
コード例 #12
0
    public Character CreatCharacter(Type characterType, Type weaponType, Vector3 spawnPos, int lv = 1)
    {
        EnemyBuilder builder = new EnemyBuilder(characterType, weaponType, spawnPos, lv);
        Character    enemy   = CharacterDirector.Construct(builder);

        GameFacade.Instance.CharacterSystem.AddEnemy(enemy as Enemy);
        return(enemy);
    }
コード例 #13
0
 public void setBuilder(EnemyBuilder builder)
 {
     if (!isBuilderSet)
     {
         var weapon = ShootWeaponMasterManager.INSTANCE.creatWeapon(builder.WeaponId);
         equip(weapon);
         isBuilderSet = true;
     }
 }
コード例 #14
0
 internal Asteroid(GamePoint[] notMovedPolygon, float angleRotateGradus, GamePoint creationGamePoint, float speed, int typeVisualization, EnemyBuilder builder)
     : base(notMovedPolygon, angleRotateGradus, creationGamePoint, typeVisualization)
 {
     _builder = builder;
     if (speed <= 0)
     {
         throw new ArgumentException("Скорость объекта не может быть меньше либо равным нулю.");
     }
     Speed = speed;
 }
コード例 #15
0
        internal bool ValidateEnemy(EnemyBuilder enemy, List <EnemyBuilder> enemyList)
        {
            var enabled = Config.Bind("Enemy: " + enemy.monsterName, "Enable Enemy?", true, "Should this enemy appear in runs?").Value;

            if (enabled)
            {
                enemyList.Add(enemy);
                LogCore.LogM("Added " + enemy.monsterName);
            }
            return(enabled);
        }
コード例 #16
0
        public void SpawnEnemy()
        {
            Enemy enemy = EnemyBuilder.BuildEnemy("Enemy" + EnemyCount, EnemyType);

            Field.SetEnemy(enemy);
            enemy.PlaceToField(Field);
            enemy.IsEnabled = true;

            Level.GetCurrentLevel().RootGameObject.Childs["Enemies"].AddChild(enemy);
            TimerStarted = false;
        }
コード例 #17
0
        /// <summary>
        /// ビルダーを使って能力値を設定します
        /// </summary>
        /// <param name="builder">能力値が設定されたビルダーオブジェクト</param>
        public void setBuilder(EnemyBuilder builder)
        {
            //一応のセキュリティ
            if (!isBuilderSetted)
            {
                Strength  = builder.Str;
                Technic   = builder.Tech;
                Agility   = builder.Agi;
                Toughness = builder.Tough;

                isBuilderSetted = true;
            }
        }
コード例 #18
0
ファイル: App.xaml.cs プロジェクト: JuliusKTU/OOP_Marge
        protected override void OnStartup(StartupEventArgs e)
        {
            //HubConnection connection = new HubConnectionBuilder()
            //    .WithUrl("https://margesignalr20201107074704.azurewebsites.net/margechat")
            //    .Build();

            ConnectionProxy connectionProxy = new ConnectionProxy();

            var player = new PlayerBuilder();

            player.BuildPlayerName();
            player.BuildPlayerColor();
            player.BuildPlayerPos();

            var enemy = new EnemyBuilder();

            enemy.BuildPlayerName();
            enemy.BuildPlayerColor();
            enemy.BuildPlayerPos();
            enemy.passConnection(connectionProxy);

            var   darkenBoard = new Darken();
            Board board       = new Board(darkenBoard);
            BoardCoordinatesViewModel chatViewModel = BoardCoordinatesViewModel.CreateConnectedViewModel(connectionProxy, player.GetPlayer(), enemy.GetEnemy(), board);

            MainWindow window = new MainWindow
            {
                DataContext = new MainViewModel(chatViewModel, board)
            };

            window.Show();

            NeutralTileFactory factory = new NeutralTileFactory();

            for (int i = 0; i < 5; i++)
            {
                AbstractNeutralTile tile = factory.GetNeutralTile("Darkest");
                tile.Display(connectionProxy);
            }

            for (int i = 0; i < 5; i++)
            {
                AbstractNeutralTile tile = factory.GetNeutralTile("Lightest");
                tile.Display(connectionProxy);
            }
        }
コード例 #19
0
 void loadBuilder()
 {
     for (int i = 0; i < MaxId; i++)
     {
         //ビルダーを作成
         var builder = new EnemyBuilder();
         builder.Id       = int.Parse(getRawParam(i, "ID"));
         builder.Name     = getRawParam(i, "Name");
         builder.Str      = int.Parse(getRawParam(i, "Strength"));
         builder.Tech     = int.Parse(getRawParam(i, "Technic"));
         builder.Agi      = int.Parse(getRawParam(i, "Agility"));
         builder.Tough    = int.Parse(getRawParam(i, "Toughness"));
         builder.WeaponId = int.Parse(getRawParam(i, "WeaponID"));
         builder.Prefab   = Resources.Load <GameObject>("Prefabs/" + getRawParam(i, "PrefabName"));
         //リストに登録
         builders.Add(builder);
     }
 }
コード例 #20
0
    // 建立Enemy
    public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition)
    {
        // 產生Enemy的參數
        EnemyBuildParam EnemyParam = new EnemyBuildParam();

        // 產生對應的Character
        switch (emEnemy)
        {
        case ENUM_Enemy.Elf:
            EnemyParam.NewCharacter = new EnemyElf();
            break;

        case ENUM_Enemy.Troll:
            EnemyParam.NewCharacter = new EnemyTroll();
            break;

        case ENUM_Enemy.Ogre:
            EnemyParam.NewCharacter = new EnemyOgre();
            break;

        default:
            Debug.LogWarning("無法建立[" + emEnemy + "]");
            return(null);
        }

        if (EnemyParam.NewCharacter == null)
        {
            return(null);
        }

        // 設定共用參數
        EnemyParam.emWeapon       = emWeapon;
        EnemyParam.SpawnPosition  = SpawnPosition;
        EnemyParam.AttackPosition = AttackPosition;

        //  產生對應的Builder及設定參數
        EnemyBuilder theEnemyBuilder = new EnemyBuilder();

        theEnemyBuilder.SetBuildParam(EnemyParam);

        // 產生
        m_BuilderDirector.Construct(theEnemyBuilder);
        return(EnemyParam.NewCharacter  as IEnemy);
    }
コード例 #21
0
        public override IEnemy CreateEnemy(ENUM_Enemy enumEnemy, ENUM_Weapon enumWeapon,
                                           Vector3 SpawnPostion, Vector3 AttackPostion)
        {
            // 产生Enenmy的参数
            EnemyBuildParam EnemyParam = new EnemyBuildParam();

            switch (enumEnemy)
            {
            case ENUM_Enemy.Elf:
                EnemyParam.NewCharacter = new EnemyElf();
                break;

            case ENUM_Enemy.Troll:
                EnemyParam.NewCharacter = new EnemyTroll();
                break;

            case ENUM_Enemy.Ogre:
                EnemyParam.NewCharacter = new EnemyOgre();
                break;

            default:
                Debug.LogWarning("CreateEnemy:无法产生[" + enumEnemy + "]");
                return(null);
            }

            if (EnemyParam.NewCharacter == null)
            {
                return(null);
            }

            EnemyParam.emWeapon       = enumWeapon;
            EnemyParam.SpawnPosition  = SpawnPostion;
            EnemyParam.AttackPosition = AttackPostion;

            EnemyBuilder theEnemyBuilder = new EnemyBuilder();

            theEnemyBuilder.SetBuildParam(EnemyParam);

            m_BuilderDirector.Construct(theEnemyBuilder);
            return(EnemyParam.NewCharacter as IEnemy);
        }
コード例 #22
0
// Use this for initialization
    void Start()
    {
        ((Player)entities[0]).SetPlayerOne(true);
        ((Player)entities[1]).SetPlayerOne(false);
        entities[0].SetHealthBar(p1HealthBar, p1HealthText);
        entities[1].SetHealthBar(p2HealthBar, p2HealthText);
        entities[1].SetSprite("Sprites/knight_512px");

        // **************** NEW CODE *******************************
        Task        ex = new Damage(10);
        List <Task> li = new List <Task> {
            ex
        };

        for (int i = 0; i < 6; i++)
        {
            List <float> means = new List <float> {
                9f + i / 6f,
                10f + i / 6f,
                11f + i / 6f
            };
            List <float> stdDev = new List <float> {
                2.5f + i / 20f,
                3.75f + i / 20f,
                1f + i / 20f
            };
            TaskBuilder        strike = new TaskBuilder(new Damage(0), means, stdDev);
            List <TaskBuilder> tasks  = new List <TaskBuilder> {
                strike
            };
            CardStateBuilder stateBuilder = new CardStateBuilder(new StrikeState(), tasks);
            CardPile.AddToAll(stateBuilder);
            AllCardStates.Add(stateBuilder);

            enemyBuilder = EnemyBuilder.GetEnemyBuilder();
        }
        // *********************************************************
    }
コード例 #23
0
	// 建立Enemy
	public override IEnemy CreateEnemy( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition)
	{
		// 產生Enemy的參數
		EnemyBuildParam EnemyParam = new EnemyBuildParam();

		// 產生對應的Character
		switch( emEnemy)
		{
		case ENUM_Enemy.Elf:
			EnemyParam.NewCharacter = new EnemyElf();
			break;
		case ENUM_Enemy.Troll:
			EnemyParam.NewCharacter = new EnemyTroll();
			break;
		case ENUM_Enemy.Ogre:
			EnemyParam.NewCharacter = new EnemyOgre();
			break;
		default:
			Debug.LogWarning("無法建立["+emEnemy+"]");
			return null;
		}

		if( EnemyParam.NewCharacter == null)
			return null;

		// 設定共用參數
		EnemyParam.emWeapon = emWeapon;
		EnemyParam.SpawnPosition = SpawnPosition;
		EnemyParam.AttackPosition = AttackPosition;
				
		//  產生對應的Builder及設定參數
		EnemyBuilder theEnemyBuilder = new EnemyBuilder();
		theEnemyBuilder.SetBuildParam( EnemyParam ); 
		
		// 產生
		m_BuilderDirector.Construct( theEnemyBuilder );
		return EnemyParam.NewCharacter  as IEnemy;
	}
コード例 #24
0
        public static void BuildPrefab()
        {
            //
            bool flag  = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid);
            bool flag2 = flag;

            if (!flag2)
            {
                //float AttackAnimationThingAMaWhatIts = 0.5f;
                prefab = EnemyBuilder.BuildPrefab("ammomimic_cakaaaa", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false);
                var companion = prefab.AddComponent <EnemyBehavior>();
                companion.aiActor.knockbackDoer.weight         = 100;
                companion.aiActor.MovementSpeed                = 2.5f;
                companion.aiActor.healthHaver.PreventAllDamage = false;
                companion.aiActor.CollisionDamage              = 50f;
                companion.aiActor.HasShadow                        = false;
                companion.aiActor.IgnoreForRoomClear               = true;
                companion.aiActor.aiAnimator.HitReactChance        = 0f;
                companion.aiActor.specRigidbody.CollideWithOthers  = true;
                companion.aiActor.specRigidbody.CollideWithTileMap = true;
                companion.aiActor.PreventFallingInPitsEver         = true;
                companion.aiActor.healthHaver.ForceSetCurrentHealth(20f);
                companion.aiActor.CollisionKnockbackStrength = 1f;
                companion.aiActor.procedurallyOutlined       = false;
                companion.aiActor.CanTargetPlayers           = false;
                companion.aiActor.healthHaver.SetHealthMaximum(20f, null, false);
                companion.aiActor.SetIsFlying(true, "Flying Enemy", true, true);
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider


                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.PlayerCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.PlayerBlocker,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });
                companion.aiActor.CorpseObject        = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").CorpseObject;
                companion.aiActor.PreventBlackPhantom = false;

                AIAnimator aiAnimator = companion.aiAnimator;
                aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>
                {
                    new AIAnimator.NamedDirectionalAnimation
                    {
                        name = "die",
                        anim = new DirectionalAnimation
                        {
                            Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                            Flipped   = new DirectionalAnimation.FlipType[2],
                            AnimNames = new string[]
                            {
                                "die_left",
                                "die_right"
                            }
                        }
                    }
                };
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "idle_left",
                        "idle_right"
                    }
                };
                aiAnimator.MoveAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "run_left",
                        "run_right"
                    }
                };
                bool flag3 = ammomimicCollection == null;
                if (flag3)
                {
                    ammomimicCollection = SpriteBuilder.ConstructCollection(prefab, "ammomimic_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(ammomimicCollection);
                    for (int i = 0; i < spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(spritePaths[i], ammomimicCollection);
                    }
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                    }, "idle_left", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                    }, "idle_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 7f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                    }, "run_left", tk2dSpriteAnimationClip.WrapMode.Once).fps = 7f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                    }, "run_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 7f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0
                    }, "die_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, ammomimicCollection, new List <int>
                    {
                        0
                    }, "die_left", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f;

                    //companion.aiActor.gameObject.AddComponent<ColliderComponent>();
                    var bs = prefab.GetComponent <BehaviorSpeculator>();
                    prefab.GetComponent <ObjectVisibilityManager>();
                    BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("9b4fb8a2a60a457f90dcf285d34143ac").behaviorSpeculator;
                    bs.OverrideBehaviors          = behaviorSpeculator.OverrideBehaviors;
                    bs.OtherBehaviors             = behaviorSpeculator.OtherBehaviors;
                    shootpoint                    = new GameObject("ammosh");
                    shootpoint.transform.parent   = companion.transform;
                    shootpoint.transform.position = companion.sprite.WorldCenter;
                    GameObject m_CachedGunAttachPoint = companion.transform.Find("ammosh").gameObject;
                    bs.InstantFirstTick                = behaviorSpeculator.InstantFirstTick;
                    bs.TickInterval                    = behaviorSpeculator.TickInterval;
                    bs.PostAwakenDelay                 = behaviorSpeculator.PostAwakenDelay;
                    bs.RemoveDelayOnReinforce          = behaviorSpeculator.RemoveDelayOnReinforce;
                    bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection;
                    bs.StartingFacingDirection         = behaviorSpeculator.StartingFacingDirection;
                    bs.SkipTimingDifferentiator        = behaviorSpeculator.SkipTimingDifferentiator;
                    Game.Enemies.Add("cak:ammomimic", companion.aiActor);
                    ItemsMod.Strings.Enemies.Set("#AMMOMIMIC", "Ammomimic");
                    companion.aiActor.OverrideDisplayName = "#AMMOMIMIC";
                    companion.aiActor.ActorName           = "#AMMOMIMIC";
                    companion.aiActor.name = "#AMMOMIMIC";
                }
            }
        }
コード例 #25
0
ファイル: FlameClone.cs プロジェクト: Lichton/Fallen-Items
        public static void BuildPrefab()
        {
            //
            bool flag  = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid);
            bool flag2 = flag;

            if (!flag2)
            {
                prefab = EnemyBuilder.BuildPrefab("Flame_Clone", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false);
                var companion = prefab.AddComponent <EnemyBehavior>();
                companion.aiActor.SetIsFlying(true, "Flying Enemy", true, true);
                companion.aiActor.EffectResistances = new ActorEffectResistance[] { new ActorEffectResistance()
                                                                                    {
                                                                                        resistAmount = 1, resistType = EffectResistanceType.Fire
                                                                                    }, };
                companion.aiActor.knockbackDoer.weight = 800;
                companion.aiActor.MovementSpeed        = 5f;
                companion.aiActor.name = "Killinder Clone";
                companion.aiActor.healthHaver.PreventAllDamage = false;
                companion.aiActor.CollisionDamage                  = 1f;
                companion.aiActor.HasShadow                        = false;
                companion.aiActor.IgnoreForRoomClear               = false;
                companion.aiActor.aiAnimator.HitReactChance        = 0f;
                companion.aiActor.specRigidbody.CollideWithOthers  = true;
                companion.aiActor.specRigidbody.CollideWithTileMap = true;
                companion.aiActor.PreventFallingInPitsEver         = false;
                companion.aiActor.CollisionKnockbackStrength       = 5f;
                companion.aiActor.healthHaver.SetHealthMaximum(15f, null, false);
                AIAnimator aiAnimator = companion.aiAnimator;
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "idle"
                    }
                };

                bool flag3 = OphaimCollection == null;
                if (flag3)
                {
                    OphaimCollection = SpriteBuilder.ConstructCollection(prefab, "Inflamed_Eye_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(OphaimCollection);
                    for (int i = 0; i < spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(spritePaths[i], OphaimCollection);
                    }
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, OphaimCollection, new List <int>
                    {
                        0,
                        1,
                        2,
                        3
                    }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f;
                }
                var     bs     = prefab.GetComponent <BehaviorSpeculator>();
                float[] angles = { 135, 45, 125, 45 };
                prefab.GetComponent <ObjectVisibilityManager>();
                BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator;
                bs.OverrideBehaviors          = behaviorSpeculator.OverrideBehaviors;
                bs.OtherBehaviors             = behaviorSpeculator.OtherBehaviors;
                shootpoint                    = new GameObject("f**k");
                shootpoint.transform.parent   = companion.transform;
                shootpoint.transform.position = companion.sprite.WorldCenter;
                GameObject m_CachedGunAttachPoint = companion.transform.Find("f**k").gameObject;
                bs.TargetBehaviors = new List <TargetBehaviorBase>
                {
                    new TargetPlayerBehavior
                    {
                        Radius              = 35f,
                        LineOfSight         = true,
                        ObjectPermanence    = true,
                        SearchInterval      = 0.25f,
                        PauseOnTargetSwitch = false,
                        PauseTime           = 0.25f,
                    }
                };
                bs.AttackBehaviors = new List <AttackBehaviorBase>()
                {
                    new ShootBehavior()
                    {
                        ShootPoint          = m_CachedGunAttachPoint,
                        BulletScript        = new CustomBulletScriptSelector(typeof(FlameShooter)),
                        LeadAmount          = 0f,
                        AttackCooldown      = 3f,
                        RequiresLineOfSight = false,
                        Uninterruptible     = true
                    }
                };
                companion.aiActor.CorpseObject = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").CorpseObject;
                bs.InstantFirstTick            = behaviorSpeculator.InstantFirstTick;
                bs.TickInterval                    = behaviorSpeculator.TickInterval;
                bs.PostAwakenDelay                 = behaviorSpeculator.PostAwakenDelay;
                bs.RemoveDelayOnReinforce          = behaviorSpeculator.RemoveDelayOnReinforce;
                bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection;
                bs.StartingFacingDirection         = behaviorSpeculator.StartingFacingDirection;
                bs.SkipTimingDifferentiator        = behaviorSpeculator.SkipTimingDifferentiator;
                Game.Enemies.Add("cak:flame_clone", companion.aiActor);
            }
        }
コード例 #26
0
        public static void BuildPrefab()
        {
            if (prefab == null || !EnemyBuilder.Dictionary.ContainsKey(guid))
            {
                //Sets up the prefab of the enemy. The spritepath, "CakeMod/Resources/DemonGuy/Idle/milton_idle_001", determines the setup sprite for your enemy. vvvv This bool right here determines whether or not an enemy has an AiShooter or not. AIShooters are necessary if you want your enemy to hold a gun for example. An example of this can be seen in here.
                prefab = EnemyBuilder.BuildPrefab("DemonGuy", guid, "CakeMod/Resources/DemonGuy/Idle/bullet_demon_idle_001", new IntVector2(0, 0), new IntVector2(0, 0), true);
                //This line extends a BraveBehavior called EnemyBehavior, this is a generic behavior I use for setting up things that can't be setup in BuildPrefab.
                var enemy = prefab.AddComponent <EnemyBehavior>();
                //Here you can setup various things like movement speed, weight, and health. There's a lot you can do with the AiActor parameter so feel free to experiment.
                //For DemonGuy let's make him a flying enemy
                enemy.aiActor.MovementSpeed        = 2f;
                enemy.aiActor.knockbackDoer.weight = 100;
                enemy.aiActor.IgnoreForRoomClear   = false;
                enemy.aiActor.CollisionDamage      = 1f;
                enemy.aiActor.healthHaver.ForceSetCurrentHealth(30f);
                enemy.aiActor.healthHaver.SetHealthMaximum(45f, null, false);
                //This is where you setup your animations. Most animations need specific frame names to be recognized like idle or die.
                //The AddAnimation lines gets sprites from the folder specified in second phrase of the this line. At the very least you need an animation that contains the word idle for the idle animations for example.
                //AnimationType determines what kind of animation your making. In Gungeon there are 7 different Animation Types: Move, Idle, Fidget, Flight, Hit, Talk, Other. For a majority of these animations, these play automatically, however specific animations need to be told when to play such as Attack.
                //DirectionType determines the amount of ways an animation can face. You'll have to change your animation names to correspond with the DirectionType. For example if you want an animation to face eight ways you'll have to name your animations something like ""attack_south_west", "attack_north_east",  "attack_east", "attack_south_east",  "attack_north",  "attack_south", "attack_west", "attack_north_west" and change DirectionType to  DirectionType.EightWayOrdinal.
                //I suggest looking at the sprites of base game enemies to determine the names for the different directions.
                prefab.AddAnimation("idle_left", "CakeMod/Resources/DemonGuy/Idle", fps: 5, AnimationType.Idle, DirectionType.FourWay);
                prefab.AddAnimation("idle_right", "CakeMod/Resources/DemonGuy/Idle", fps: 5, AnimationType.Idle, DirectionType.FourWay);
                prefab.AddAnimation("move_front_right", "CakeMod/Resources/DemonGuy/MoveFrontRight", fps: 5, AnimationType.Move, DirectionType.FourWay);
                prefab.AddAnimation("move_back_right", "CakeMod/Resources/DemonGuy/MoveBackRight", fps: 5, AnimationType.Move, DirectionType.FourWay);
                prefab.AddAnimation("move_front_left", "CakeMod/Resources/DemonGuy/MoveFrontLeft", fps: 5, AnimationType.Move, DirectionType.FourWay);
                prefab.AddAnimation("move_back_left", "CakeMod/Resources/DemonGuy/MoveBackLeft", fps: 5, AnimationType.Move, DirectionType.FourWay);
                //Note that the "die"animations are only set to Move because they will be overwritten later.
                //tk2dSpriteAnimationClip.WrapMode.Once determines how an animation plays out. If you don't want it to loop, leave it to Once, otherwise you can change it to Loop or something.
                //Assign animation well, assigns an animation to an animation type. By default this is on, but since we're overwritting this set this to false.
                prefab.AddAnimation("die_left", "CakeMod/Resources/DemonGuy/Die", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                prefab.AddAnimation("die_right", "CakeMod/Resources/DemonGuy/Die", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                //Here we create a new DirectionalAnimation for our enemy to pull from.
                //Make sure the AnimNames correspong to the AddAnimation names.
                DirectionalAnimation idle = new DirectionalAnimation()
                {
                    AnimNames = new string[] { "idle_right", "idle_left" },
                    Flipped   = new FlipType[] { FlipType.None, FlipType.None },
                    Type      = DirectionType.TwoWayHorizontal,
                    Prefix    = string.Empty
                };
                DirectionalAnimation die = new DirectionalAnimation()
                {
                    AnimNames = new string[] { "die_right", "die_left" },
                    Flipped   = new FlipType[] { FlipType.None, FlipType.None },
                    Type      = DirectionType.TwoWayHorizontal,
                    Prefix    = string.Empty
                };
                //Because Dodge Roll is Dodge Roll and there is no animation types for death, we have to assign them to the Other category.
                enemy.aiAnimator.AssignDirectionalAnimation("die", die, AnimationType.Other);
                //This is where we get into the meat and potatoes of our enemy. This is where all the behaviors of our enemy are made.

                //this line adds a BehaviorSpeculator to our enemy which is the base for adding behaviors on to.
                var bs = prefab.GetComponent <BehaviorSpeculator>();
                //We're also going to duplicate the bulletbank and aishooter from the Bullet Kin.
                //The "762" represents the the gun id we want our enemy to hold. For a list of all gun ids, look at the items file on this github.
                //For now let's give him the finished gun.
                GameObject m_CachedGunAttachPoint = enemy.transform.Find("GunAttachPoint").gameObject;
                Vector2    offset = new Vector2(1f, -0.50f);
                m_CachedGunAttachPoint.transform.position = enemy.sprite.WorldCenter + offset;
                AIActor SourceEnemy = EnemyDatabase.GetOrLoadByGuid("5f3abc2d561b4b9c9e72b879c6f10c7e5f3abc2d561b4b9c9e72b879c6f10c7e");
                EnemyBuilder.DuplicateAIShooterAndAIBulletBank(prefab, SourceEnemy.aiShooter, SourceEnemy.GetComponent <AIBulletBank>(), 476, enemy.sprite.transform);

                //Here we will add some basic behaviors such as TargetPlayerBehavior and SeekTargetBehavior.
                //You can change many things in these behaviors so feel free to go nuts.
                bs.TargetBehaviors = new List <TargetBehaviorBase>
                {
                    new TargetPlayerBehavior
                    {
                        Radius              = 35f,
                        LineOfSight         = true,
                        ObjectPermanence    = true,
                        SearchInterval      = 0.25f,
                        PauseOnTargetSwitch = false,
                        PauseTime           = 0.25f,
                    }
                };
                //Now this is one of the most important behaviors because it allows our enemy to shoot.
                //If we want our enemy to shoot out of a gun, use ShootGunBehavior
                bs.AttackBehaviors = new List <AttackBehaviorBase>()
                {
                    new ShootGunBehavior()
                    {
                        GroupCooldownVariance = 0.2f,
                        LineOfSight           = false,
                        //With weapon type you can determine if you want your enemy to fire the gun directly or to use a bullet script. Let's use a Bullet Script for now. For the rest of code, let's modify it to be close to the Finished Gun.
                        WeaponType                   = WeaponType.BulletScript,
                        OverrideBulletName           = null,
                        BulletScript                 = new CustomBulletScriptSelector(typeof(DemonGuyScript)),
                        FixTargetDuringAttack        = true,
                        StopDuringAttack             = true,
                        LeadAmount                   = 0,
                        LeadChance                   = 1,
                        RespectReload                = true,
                        MagazineCapacity             = 6,
                        ReloadSpeed                  = 2f,
                        EmptiesClip                  = true,
                        SuppressReloadAnim           = false,
                        TimeBetweenShots             = -1,
                        PreventTargetSwitching       = true,
                        OverrideAnimation            = null,
                        OverrideDirectionalAnimation = null,
                        HideGun                      = false,
                        UseLaserSight                = false,
                        UseGreenLaser                = false,
                        PreFireLaserTime             = -1,
                        AimAtFacingDirectionWhenSafe = false,
                        Cooldown                     = 0.7f,
                        CooldownVariance             = 0,
                        AttackCooldown               = 0,
                        GlobalCooldown               = 0,
                        InitialCooldown              = 0,
                        InitialCooldownVariance      = 0,
                        GroupName                    = null,
                        GroupCooldown                = 0,
                        MinRange                     = 0,
                        Range                      = 16,
                        MinWallDistance            = 0,
                        MaxEnemiesInRoom           = 0,
                        MinHealthThreshold         = 0,
                        MaxHealthThreshold         = 1,
                        HealthThresholds           = new float[0],
                        AccumulateHealthThresholds = true,
                        targetAreaStyle            = null,
                        IsBlackPhantom             = false,
                        resetCooldownOnDamage      = null,
                        RequiresLineOfSight        = true,
                        MaxUsages                  = 0,
                    }
                };
                bs.MovementBehaviors = new List <MovementBehaviorBase>
                {
                    new SeekTargetBehavior
                    {
                        StopWhenInRange     = false,
                        CustomRange         = 15f,
                        LineOfSight         = false,
                        ReturnToSpawn       = false,
                        SpawnTetherDistance = 0f,
                        PathInterval        = 0.5f,
                        SpecifyRange        = false,
                        MinActiveRange      = 0f,
                        MaxActiveRange      = 0f
                    }
                };
                //Adds the enemy to MTG spawn pool and spawn command
                Game.Enemies.Add("cak:greeddemon", enemy.aiActor);
            }
        }
コード例 #27
0
ファイル: InkBook.cs プロジェクト: Lichton/Fallen-Items
        public static void BuildPrefab()
        {
            //
            bool flag  = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid);
            bool flag2 = flag;

            if (!flag2)
            {
                //float AttackAnimationThingAMaWhatIts = 0.5f;
                prefab = EnemyBuilder.BuildPrefab("ink_book", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false);
                var companion = prefab.AddComponent <EnemyBehavior>();
                companion.aiActor.knockbackDoer.weight         = 100;
                companion.aiActor.MovementSpeed                = 2.5f;
                companion.aiActor.healthHaver.PreventAllDamage = false;
                companion.aiActor.CollisionDamage              = 1f;
                companion.aiActor.HasShadow                        = false;
                companion.aiActor.IgnoreForRoomClear               = true;
                companion.aiActor.aiAnimator.HitReactChance        = 0f;
                companion.aiActor.specRigidbody.CollideWithOthers  = true;
                companion.aiActor.specRigidbody.CollideWithTileMap = true;
                companion.aiActor.healthHaver.ForceSetCurrentHealth(20f);
                companion.aiActor.CollisionKnockbackStrength = 0f;
                companion.aiActor.procedurallyOutlined       = false;
                companion.aiActor.CanTargetPlayers           = true;
                companion.aiActor.healthHaver.SetHealthMaximum(20f, null, false);
                companion.aiActor.specRigidbody.PixelColliders.Clear();
                companion.aiActor.SetIsFlying(true, "Flying Enemy", true, true);
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider


                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 13,
                    ManualHeight           = 13,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });

                companion.aiActor.CorpseObject        = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").CorpseObject;
                companion.aiActor.PreventBlackPhantom = false;

                AIAnimator aiAnimator = companion.aiAnimator;
                aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation>
                {
                    new AIAnimator.NamedDirectionalAnimation
                    {
                        name = "die",
                        anim = new DirectionalAnimation
                        {
                            Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                            Flipped   = new DirectionalAnimation.FlipType[2],
                            AnimNames = new string[]
                            {
                                "die_left",
                                "die_right"
                            }
                        }
                    }
                };
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "idle_left",
                        "idle_right"
                    }
                };
                aiAnimator.MoveAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "run_left",
                        "run_right"
                    }
                };
                bool flag3 = InkedBook == null;
                if (flag3)
                {
                    InkedBook = SpriteBuilder.ConstructCollection(prefab, "InkBooklet_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(InkedBook);
                    for (int i = 0; i < spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(spritePaths[i], InkedBook);
                    }
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        0,
                        1
                    }, "idle_left", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 5f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        0,
                        1
                    }, "idle_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 5f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        0,
                        1
                    }, "run_left", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        0,
                        1
                    }, "run_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 10f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        2,
                        3,
                        4,
                        5,
                        6
                    }, "die_right", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, InkedBook, new List <int>
                    {
                        2,
                        3,
                        4,
                        5,
                        6
                    }, "die_left", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f;

                    //companion.aiActor.gameObject.AddComponent<ColliderComponent>();
                    var bs = prefab.GetComponent <BehaviorSpeculator>();
                    prefab.GetComponent <ObjectVisibilityManager>();
                    BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").behaviorSpeculator;
                    bs.OverrideBehaviors          = behaviorSpeculator.OverrideBehaviors;
                    bs.OtherBehaviors             = behaviorSpeculator.OtherBehaviors;
                    shootpoint                    = new GameObject("beepskysmash");
                    shootpoint.transform.parent   = companion.transform;
                    shootpoint.transform.position = companion.sprite.WorldCenter;
                    GameObject m_CachedGunAttachPoint = companion.transform.Find("beepskysmash").gameObject;
                    bs.TargetBehaviors = new List <TargetBehaviorBase>
                    {
                        new TargetPlayerBehavior
                        {
                            Radius              = 35f,
                            LineOfSight         = true,
                            ObjectPermanence    = true,
                            SearchInterval      = 0.25f,
                            PauseOnTargetSwitch = false,
                            PauseTime           = 0.25f,
                        }
                    };
                    bs.AttackBehaviors = new List <AttackBehaviorBase>()
                    {
                        new ShootBehavior()
                        {
                            ShootPoint          = m_CachedGunAttachPoint,
                            BulletScript        = new CustomBulletScriptSelector(typeof(SkellScript)),
                            LeadAmount          = 0f,
                            AttackCooldown      = 5f,
                            InitialCooldown     = 1f,
                            RequiresLineOfSight = true,
                            StopDuring          = ShootBehavior.StopType.Attack,
                            Uninterruptible     = true,
                        }
                    };
                    bs.MovementBehaviors = new List <MovementBehaviorBase>
                    {
                        new SeekTargetBehavior
                        {
                            StopWhenInRange     = true,
                            CustomRange         = 7f,
                            LineOfSight         = false,
                            ReturnToSpawn       = false,
                            SpawnTetherDistance = 0f,
                            PathInterval        = 0.5f,
                            SpecifyRange        = false,
                            MinActiveRange      = 0f,
                            MaxActiveRange      = 0f
                        }
                    };

                    bs.InstantFirstTick                = behaviorSpeculator.InstantFirstTick;
                    bs.TickInterval                    = behaviorSpeculator.TickInterval;
                    bs.PostAwakenDelay                 = behaviorSpeculator.PostAwakenDelay;
                    bs.RemoveDelayOnReinforce          = behaviorSpeculator.RemoveDelayOnReinforce;
                    bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection;
                    bs.StartingFacingDirection         = behaviorSpeculator.StartingFacingDirection;
                    bs.SkipTimingDifferentiator        = behaviorSpeculator.SkipTimingDifferentiator;
                    Game.Enemies.Add("cak:ink_booklet", companion.aiActor);
                    ItemsMod.Strings.Enemies.Set("#INKBOOK", "Ink Booklet");
                    companion.aiActor.OverrideDisplayName = "#INKBOOK";
                    companion.aiActor.ActorName           = "#INKBOOK";
                    companion.aiActor.name = "#INKBOOK";
                }
            }
        }
コード例 #28
0
ファイル: EnemyObserver.cs プロジェクト: moto2002/Pioneer
    public void report(int worldId)
    {
        observeEnemyBuilder = EnemyMasterManager.getInstance().getEnemyBuilderFromId(OBSERVE_ENEMY_ID);
        var abilities = new Dictionary <BattleAbility, int>();
        var keys      = Enum.GetValues(typeof(BattleAbility));

        foreach (BattleAbility ability in keys)
        {
            if (ability == MFT || ability == FFT || ability == MGP)
            {
                if (judgeAttackAbilityProgressed())
                {
                    abilities.Add(ability, progressAttackAbility());
                }
                else
                {
                    abilities.Add(ability, 0);
                }
            }
            else
            {
                if (judgeExserciseAbilityProgressed())
                {
                    abilities.Add(ability, progressExserciseAbility());
                }
                else
                {
                    abilities.Add(ability, 0);
                }
            }
        }

        var attributeTable = new Dictionary <AttackSkillAttribute, float>();
        var attributeKeys  = Enum.GetValues(typeof(AttackSkillAttribute));

        foreach (AttackSkillAttribute attribute in attributeKeys)
        {
            if (judgeResistanceProsessed(attribute))
            {
                attributeTable.Add(attribute, progressResistance(attribute));
            }
            else
            {
                attributeTable.Add(attribute, 0);
            }
        }

        int weponLevel;

        if (judgeWeponLevelUped())
        {
            weponLevel = weponLevelUp();
        }
        else
        {
            weponLevel = 0;
        }

        var progress = EnemyMasterManager.getInstance().getProgressFromId(OBSERVE_ENEMY_ID);

        var abilityKeys = abilities.Keys;

        foreach (var key in abilityKeys)
        {
            progress.Abilities[key] += abilities[key];
        }

        foreach (AttackSkillAttribute key in attributeKeys)
        {
            progress.AttributeResistances[key] += attributeTable[key];
        }

        progress.WeponLevel += weponLevel;
        ObserverHelper.saveToFile <EnemyProgress>(progress, "EnemyProgress", OBSERVE_ENEMY_ID, worldId);
    }
コード例 #29
0
ファイル: Waterbulon.cs プロジェクト: Lichton/Fallen-Items
        public static void BuildPrefab()
        {
            if (prefab == null || !EnemyBuilder.Dictionary.ContainsKey(guid))
            {
                //Sets up the prefab of the enemy. The spritepath, "CakeMod/Resources/Waterbulon/Idle/milton_idle_001", determines the setup sprite for your enemy. vvvv This bool right here determines whether or not an enemy has an AiShooter or not. AIShooters are necessary if you want your enemy to hold a gun for example. An example of this can be seen in Humphrey.
                prefab = EnemyBuilder.BuildPrefab("Waterbulon", guid, "CakeMod/Resources/Waterbulon/Idle/waterbulon_idle_001", new IntVector2(0, 0), new IntVector2(0, 0), false);
                //This line extends a BraveBehavior called EnemyBehavior, this is a generic behavior I use for setting up things that can't be setup in BuildPrefab.
                var enemy = prefab.AddComponent <EnemyBehavior>();
                //Here you can setup various things like movement speed, weight, and health. There's a lot you can do with the AiActor parameter so feel free to experiment.
                enemy.aiActor.MovementSpeed        = 6.7f;
                enemy.aiActor.knockbackDoer.weight = 500;
                enemy.aiActor.IgnoreForRoomClear   = false;
                enemy.aiActor.CollisionDamage      = 1f;
                enemy.aiActor.healthHaver.ForceSetCurrentHealth(15f);
                enemy.aiActor.healthHaver.SetHealthMaximum(15f, null, false);

                enemy.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider

                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 19,
                    ManualHeight           = 14,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });
                enemy.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 19,
                    ManualHeight           = 14,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });

                //This is where you setup your animations. Most animations need specific frame names to be recognized like idle or die.
                //The AddAnimation lines gets sprites from the folder specified in second phrase of the this line. At the very least you need an animation that contains the word idle for the idle animations for example.
                //AnimationType determines what kind of animation your making. In Gungeon there are 7 different Animation Types: Move, Idle, Fidget, Flight, Hit, Talk, Other. For a majority of these animations, these play automatically, however specific animations need to be told when to play such as Attack.
                //DirectionType determines the amount of ways an animation can face. You'll have to change your animation names to correspond with the DirectionType. For example if you want an animation to face eight ways you'll have to name your animations something like ""attack_south_west", "attack_north_east",  "attack_east", "attack_south_east",  "attack_north",  "attack_south", "attack_west", "attack_north_west" and change DirectionType to  DirectionType.EightWayOrdinal.
                //I suggest looking at the sprites of base game enemies to determine the names for the different directions.
                prefab.AddAnimation("idle_left", "CakeMod/Resources/Waterbulon/Idle", fps: 7, AnimationType.Idle, DirectionType.TwoWayHorizontal);
                prefab.AddAnimation("idle_right", "CakeMod/Resources/Waterbulon/Idle", fps: 7, AnimationType.Idle, DirectionType.TwoWayHorizontal);
                prefab.AddAnimation("run_left", "CakeMod/Resources/Waterbulon/Run", fps: 7, AnimationType.Move, DirectionType.TwoWayHorizontal);
                prefab.AddAnimation("run_right", "CakeMod/Resources/Waterbulon/Run", fps: 7, AnimationType.Move, DirectionType.TwoWayHorizontal);
                //Note that the "die" and "attack" animations are only set to Move because they will be overwritten later.
                //tk2dSpriteAnimationClip.WrapMode.Once determines how an animation plays out. If you don't want it to loop, leave it to Once, otherwise you can change it to Loop or something.
                //Assign animation well assigns an animation to an animation type. By default this is on, but since we're overwritting this set this to false.
                prefab.AddAnimation("attack_left", "CakeMod/Resources/Waterbulon/Attack", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                prefab.AddAnimation("attack_right", "CakeMod/Resources/Waterbulon/Attack", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                prefab.AddAnimation("die_left", "CakeMod/Resources/Waterbulon/Die", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                prefab.AddAnimation("die_right", "CakeMod/Resources/Waterbulon/Die", fps: 8, AnimationType.Move, DirectionType.TwoWayHorizontal, tk2dSpriteAnimationClip.WrapMode.Once, assignAnimation: false);
                //Here we create a new DirectionalAnimation for our enemy to pull from.
                //Make sure the AnimNames correspong to the AddAnimation names.
                DirectionalAnimation attack = new DirectionalAnimation()
                {
                    AnimNames = new string[] { "attack_right", "attack_left" },
                    Flipped   = new FlipType[] { FlipType.None, FlipType.None },
                    Type      = DirectionType.TwoWayHorizontal,
                    Prefix    = string.Empty
                };
                DirectionalAnimation die = new DirectionalAnimation()
                {
                    AnimNames = new string[] { "die_right", "die_left" },
                    Flipped   = new FlipType[] { FlipType.None, FlipType.None },
                    Type      = DirectionType.TwoWayHorizontal,
                    Prefix    = string.Empty
                };
                //Because Dodge Roll is Dodge Roll and there is no animation types for attack and death, we have to assign them to the Other category.
                enemy.aiAnimator.AssignDirectionalAnimation("attack", attack, AnimationType.Other);
                enemy.aiAnimator.AssignDirectionalAnimation("die", die, AnimationType.Other);
                //This is where we get into the meat and potatoes of our enemy. This is where all the behaviors of our enemy are made.
                //This shootpoint block of code determines where our bullets will orginate from. In this case, the center of the enemy.
                shootpoint = new GameObject("Waterbuloncenter");
                shootpoint.transform.parent   = enemy.transform;
                shootpoint.transform.position = enemy.sprite.WorldCenter;
                GameObject position = enemy.transform.Find("Waterbuloncenter").gameObject;
                //this line adds a BehaviorSpeculator to our enemy which is the base for adding behaviors on to.
                var bs = prefab.GetComponent <BehaviorSpeculator>();
                //Here we will add some basic behaviors such as TargetPlayerBehavior and SeekTargetBehavior.
                //You can change many things in these behaviors so feel free to go nuts.
                BehaviorSpeculator BEHAVIORIAL = EnemyDatabase.GetOrLoadByGuid("0239c0680f9f467dbe5c4aab7dd1eca6").behaviorSpeculator;
                BehaviorSpeculator spec        = enemy.behaviorSpeculator;
                spec.OverrideBehaviors               = BEHAVIORIAL.OverrideBehaviors;
                spec.OtherBehaviors                  = BEHAVIORIAL.OtherBehaviors;
                spec.TargetBehaviors                 = BEHAVIORIAL.TargetBehaviors;
                spec.AttackBehaviors                 = BEHAVIORIAL.AttackBehaviors;
                spec.MovementBehaviors               = BEHAVIORIAL.MovementBehaviors;
                spec.InstantFirstTick                = BEHAVIORIAL.InstantFirstTick;
                spec.TickInterval                    = BEHAVIORIAL.TickInterval;
                spec.PostAwakenDelay                 = BEHAVIORIAL.PostAwakenDelay;
                spec.RemoveDelayOnReinforce          = BEHAVIORIAL.RemoveDelayOnReinforce;
                spec.OverrideStartingFacingDirection = BEHAVIORIAL.OverrideStartingFacingDirection;
                spec.StartingFacingDirection         = BEHAVIORIAL.StartingFacingDirection;
                spec.SkipTimingDifferentiator        = BEHAVIORIAL.SkipTimingDifferentiator;
                //Now this is one of the most important behaviors because it allows our enemy to shoot.
                bs.AttackBehaviors = new List <AttackBehaviorBase>()
                {
                    new ShootBehavior()
                    {
                        ShootPoint = position,
                        //This line selects our Bullet Script
                        BulletScript        = new CustomBulletScriptSelector(typeof(MiltonScript)),
                        LeadAmount          = 0f,
                        AttackCooldown      = 4f,
                        FireAnimation       = "attack",
                        RequiresLineOfSight = true,
                        Uninterruptible     = false,
                    }
                };
                bs.MovementBehaviors = new List <MovementBehaviorBase>
                {
                    new SeekTargetBehavior
                    {
                        StopWhenInRange     = false,
                        CustomRange         = 15f,
                        LineOfSight         = false,
                        ReturnToSpawn       = false,
                        SpawnTetherDistance = 0f,
                        PathInterval        = 0.5f,
                        SpecifyRange        = false,
                        MinActiveRange      = 0f,
                        MaxActiveRange      = 0f
                    }
                };
                //Adds the enemy to MTG spawn pool and spawn command
                Game.Enemies.Add("cak:waterbulon", enemy.aiActor);
            }
        }
コード例 #30
0
        public static void BuildPrefab()
        {
            // source = EnemyDatabase.GetOrLoadByGuid("c50a862d19fc4d30baeba54795e8cb93");
            bool flag  = prefab != null || EnemyBuilder.Dictionary.ContainsKey(guid);
            bool flag2 = flag;

            if (!flag2)
            {
                prefab = EnemyBuilder.BuildPrefab("mimekin", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false);
                var companion = prefab.AddComponent <EnemyBehavior>();
                companion.aiActor.knockbackDoer.weight         = 200;
                companion.aiActor.MovementSpeed                = 2f;
                companion.aiActor.healthHaver.PreventAllDamage = false;
                companion.aiActor.CollisionDamage              = 1f;
                companion.aiActor.HasShadow          = false;
                companion.aiActor.IgnoreForRoomClear = false;
                companion.aiActor.specRigidbody.CollideWithOthers  = true;
                companion.aiActor.specRigidbody.CollideWithTileMap = true;
                companion.aiActor.PreventFallingInPitsEver         = true;
                companion.aiActor.healthHaver.ForceSetCurrentHealth(25f);
                companion.aiActor.CollisionKnockbackStrength = 5f;
                companion.aiActor.CanTargetPlayers           = true;
                companion.aiActor.healthHaver.SetHealthMaximum(25f, null, false);
                companion.aiActor.specRigidbody.PixelColliders.Clear();
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyCollider,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 12,
                    ManualHeight           = 26,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0
                });
                companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider
                {
                    ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual,
                    CollisionLayer         = CollisionLayer.EnemyHitBox,
                    IsTrigger = false,
                    BagleUseFirstFrameOnly = false,
                    SpecifyBagelFrame      = string.Empty,
                    BagelColliderNumber    = 0,
                    ManualOffsetX          = 0,
                    ManualOffsetY          = 0,
                    ManualWidth            = 12,
                    ManualHeight           = 26,
                    ManualDiameter         = 0,
                    ManualLeftX            = 0,
                    ManualLeftY            = 0,
                    ManualRightX           = 0,
                    ManualRightY           = 0,
                });
                companion.aiActor.CorpseObject        = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").CorpseObject;
                companion.aiActor.PreventBlackPhantom = false;
                AIAnimator aiAnimator = companion.aiAnimator;
                aiAnimator.IdleAnimation = new DirectionalAnimation
                {
                    Type      = DirectionalAnimation.DirectionType.TwoWayHorizontal,
                    Flipped   = new DirectionalAnimation.FlipType[2],
                    AnimNames = new string[]
                    {
                        "idle",
                        "idle_two"
                    }
                };
                bool flag3 = RoyalJesterletCollection == null;
                if (flag3)
                {
                    RoyalJesterletCollection = SpriteBuilder.ConstructCollection(prefab, "RoyalJesterlet_Collection");
                    UnityEngine.Object.DontDestroyOnLoad(RoyalJesterletCollection);
                    for (int i = 0; i < spritePaths.Length; i++)
                    {
                        SpriteBuilder.AddSpriteToCollection(spritePaths[i], RoyalJesterletCollection);
                    }
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, RoyalJesterletCollection, new List <int>
                    {
                        2,
                        3
                    }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f;
                    SpriteBuilder.AddAnimation(companion.spriteAnimator, RoyalJesterletCollection, new List <int>
                    {
                        0,
                        1
                    }, "idle_two", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f;
                }
                var bs = prefab.GetComponent <BehaviorSpeculator>();
                BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator;
                bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors;
                bs.OtherBehaviors    = behaviorSpeculator.OtherBehaviors;
                bs.TargetBehaviors   = new List <TargetBehaviorBase>
                {
                    new TargetPlayerBehavior
                    {
                        Radius              = 35f,
                        LineOfSight         = false,
                        ObjectPermanence    = true,
                        SearchInterval      = 0.25f,
                        PauseOnTargetSwitch = false,
                        PauseTime           = 0.25f
                    }
                };
                shootpoint = new GameObject("f**k");
                shootpoint.transform.parent   = companion.transform;
                shootpoint.transform.position = companion.sprite.WorldCenter;
                GameObject m_CachedGunAttachPoint = companion.transform.Find("f**k").gameObject;
                bs.AttackBehaviors = new List <AttackBehaviorBase>()
                {
                    new ShootBehavior()
                    {
                        ShootPoint          = m_CachedGunAttachPoint,
                        BulletScript        = new CustomBulletScriptSelector(typeof(TransparentBulletScript)),
                        LeadAmount          = 0f,
                        InitialCooldown     = 3f,
                        AttackCooldown      = 5f,
                        RequiresLineOfSight = false,
                        ChargeTime          = 1f,
                        Uninterruptible     = true
                    },
                };
                bs.InstantFirstTick                = behaviorSpeculator.InstantFirstTick;
                bs.TickInterval                    = behaviorSpeculator.TickInterval;
                bs.PostAwakenDelay                 = behaviorSpeculator.PostAwakenDelay;
                bs.RemoveDelayOnReinforce          = behaviorSpeculator.RemoveDelayOnReinforce;
                bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection;
                bs.StartingFacingDirection         = behaviorSpeculator.StartingFacingDirection;
                bs.SkipTimingDifferentiator        = behaviorSpeculator.SkipTimingDifferentiator;
                Game.Enemies.Add("cak:mimekin", companion.aiActor);
                SpriteBuilder.AddSpriteToCollection("CakeMod/Resources/mimekin/mime_left_001", SpriteBuilder.ammonomiconCollection);
                if (companion.GetComponent <EncounterTrackable>() != null)
                {
                    UnityEngine.Object.Destroy(companion.GetComponent <EncounterTrackable>());
                }
                companion.encounterTrackable               = companion.gameObject.AddComponent <EncounterTrackable>();
                companion.encounterTrackable.journalData   = new JournalEntry();
                companion.encounterTrackable.EncounterGuid = "cak:mimekin";
                companion.encounterTrackable.prerequisites = new DungeonPrerequisite[0];
                companion.encounterTrackable.journalData.SuppressKnownState    = false;
                companion.encounterTrackable.journalData.IsEnemy               = true;
                companion.encounterTrackable.journalData.SuppressInAmmonomicon = false;
                companion.encounterTrackable.ProxyEncounterGuid              = "";
                companion.encounterTrackable.journalData.AmmonomiconSprite   = "CakeMod/Resources/mimekin/mime_left_001";
                companion.encounterTrackable.journalData.enemyPortraitSprite = ItemAPI.ResourceExtractor.GetTextureFromResource("CakeMod\\Resources\\mimepic.png");
                ItemsMod.Strings.Enemies.Set("#THE_MIME", "Mime Kin");
                ItemsMod.Strings.Enemies.Set("#THE_MIME_SHORTDESC", "Invisible Man");
                ItemsMod.Strings.Enemies.Set("#THE_MIME_LONGDESC", "Masters of mimicking and mimery, these clever bullets use their connection to a silent force to enchant bullets with a fraction of their power.");
                companion.encounterTrackable.journalData.PrimaryDisplayName           = "#THE_MIME";
                companion.encounterTrackable.journalData.NotificationPanelDescription = "#THE_MIME_SHORTDESC";
                companion.encounterTrackable.journalData.AmmonomiconFullEntry         = "#THE_MIME_LONGDESC";
                EnemyBuilder.AddEnemyToDatabase(companion.gameObject, "cak:mimekin");
                EnemyDatabase.GetEntry("cak:mimekin").ForcedPositionInAmmonomicon = 32;
                EnemyDatabase.GetEntry("cak:mimekin").isInBossTab   = false;
                EnemyDatabase.GetEntry("cak:mimekin").isNormalEnemy = true;
            }
        }
コード例 #31
0
ファイル: EnemyBuilder.cs プロジェクト: el-pepi/Movil
 void Awake()
 {
     instance = this;
 }