예제 #1
0
    void Start()
    {
        animations = new PlayerAnimations(this);
        //last_aim_direction=last_move_direction=Vector3.forward;

        legit_timer    = new Timer(888, OnLegit);
        onGround_timer = new Timer(200, OnGroundTimer);
        mp_regen_timer = new Timer(stats.MP_regen_delay, OnMPregenTimer);

        hp = stats.HP;
        mp = stats.MP;
        if (regen_multi == -1)
        {
            mp = 0;
        }

        //Data set
        ability_containers = new List <AbilityContainer>();

        for (int i = 0; i < Data.Abilities.Count; i++)
        {
            var abb = new AbilityContainer(this, Data.Abilities[i]);
            ability_containers.Add(abb);
        }

        _Color           = Data.color;
        controllerNumber = Data.controllerNumber;

        //NotificationCenter.Instance.addListener(OnExplosion,NotificationType.Explode);
        NotificationCenter.Instance.addListener(OnKnockback, NotificationType.HaxKnockback);
    }
예제 #2
0
    public void Load()
    {
        if (File.Exists(Application.persistentDataPath + "/AbilityData.dat"))
        {
            var        bf   = new BinaryFormatter();
            FileStream file = File.Open(Application.persistentDataPath + "/AbilityData.dat", FileMode.Open);

            AbilityContainer abilityData;
            try
            {
                abilityData = (AbilityContainer)bf.Deserialize(file);
            }
            catch
            {
                abilityData = new AbilityContainer();
                Debug.Log("Unable to load existing ability data set");
            }
            file.Close();

            _abilities = abilityData.Data;
        }

        if (!_abilities.AbilitiesCreated)
        {
            InitialiseAbilities();
        }
    }
예제 #3
0
 public void Init(AbilityContainer owner)
 {
     LastStartTime = 0;
     Controller    = owner;
     Pawn          = owner.GetComponent <BasePawn>();
     OnInit();
 }
예제 #4
0
    protected override void OnInit()
    {
        WasAlive = true;

        Stamina   = Pawn.GetComponent <Stamina>();
        Abilities = Pawn.GetComponent <AbilityContainer>();

        Abilities.Init();

        this.InitList(ref AllModules);

        var foundModules = new List <AIModule>();

        foundModules.AddRange(GetComponentsInChildren <AIModule>());

        // Add Pawn modules, if they are present
        if (!Pawn.transform.IsChildOf(transform) && !transform.IsChildOf(Pawn.transform))
        {
            foundModules.AddRange(Pawn.GetComponentsInChildren <AIModule>());
        }

        foreach (var module in foundModules)
        {
            module.Init(this);
        }

        AllModules.AddRange(foundModules.Where(m => !m.DebugDisable));

        SwitchModule(PickBestModule());
    }
예제 #5
0
    public void Init(AbilityContainer controller)
    {
        Controller = controller;
        Pawn       = Controller.GetComponent <BasePawn>();

        LastBegin = 0;
        OnInit();
    }
예제 #6
0
    public void DisableThis()
    {
        if (!Controller)
        {
            Controller = GetComponentInChildren <AbilityContainer>() ?? GetComponentInParent <AbilityContainer>();
        }

        Controller.DisableAbility(this);
    }
예제 #7
0
        private void DamageTarget(NetIncomingMessage message, MessageTemplate template)
        {
            CharacterPlayer character = MapContainer.FindCharacterByID(message.SenderConnection.RemoteUniqueIdentifier);
            AbilityHead     abi       = AbilityContainer.GetAbilityByName(template.JsonMessage);
            Entity          entity    = Scene.FindEntity(character._name);
            PlayerComponent pcomp     = entity.GetComponent <PlayerComponent>();

            if (pcomp != null && abi != null && pcomp.Target != null)
            {
                pcomp.Target.GetComponent <DamageComponent>().DealDamageToEntity(abi.BaseDamage);
            }
        }
예제 #8
0
    public void Save()
    {
        var bf = new BinaryFormatter();

        FileStream file = File.Open(Application.persistentDataPath + "/AbilityData.dat", FileMode.OpenOrCreate);

        AbilityContainer abilityData = new AbilityContainer {
            Data = _abilities
        };

        bf.Serialize(file, abilityData);
        file.Close();
    }
예제 #9
0
    public void ClearAbilityData()
    {
        var        bf   = new BinaryFormatter();
        FileStream file = File.Open(Application.persistentDataPath + "/AbilityData.dat", FileMode.Create);

        var blankAbilityData = new AbilityContainer {
            Data = new AbilityContainer.AbilityDataType()
        };

        bf.Serialize(file, blankAbilityData);
        file.Close();
        Load();
        Debug.Log("Ability Data Cleared");
    }
예제 #10
0
        public override void InitializeAllContainers()
        {
            MapIds = new[]
            {
                Maps.MapIds.Test
            };
            MapModelContainer = new MapModelContainer();
            MapLogicContainer = new MapLogicContainer();
            MapNpcContainer = new MapNpcContainer();

            PartyMemberIds = new[]
            {
                Party.PartyMemberIds.Test1,
                Party.PartyMemberIds.Test2,
                Party.PartyMemberIds.Test3,
                Party.PartyMemberIds.Test4
            };
            PartyMemberStatsContainer = new PartyMemberStatsContainer();
            PartyMemberBattleLogicContainer = new PartyMemberBattleLogicContainer();
            PartyMemberPowerSetContainer = new PartyMemberPowerSetContainer();
            PartyMemberEquipmentLayoutContainer = new PartyMemberEquipmentLayoutContainer();

            EnemyIds = new[]
            {
                Enemies.EnemyIds.AmethystGolem,
                Enemies.EnemyIds.CaveBug,
                Enemies.EnemyIds.GraveHand
            };
            EnemyMetadataContainer = new EnemyMetadataContainer();
            EnemyAiContainer = new EnemyAiContainer();
            EnemyStatsContainer = new EnemyStatsContainer();
            EnemyBattleLogicContainer = new EnemyBattleLogicContainer();

            AbilityAnimationContainer = new AbilityAnimationContainer();
            AbilityContainer = new AbilityContainer();
            GiftContainer = new GiftContainer();
            GiftTypeContainer = new GiftTypeContainer();

            ItemTypeDetailsContainer = new ItemTypeDetailsContainer();
            ItemContainer = new ItemContainer();
        }
예제 #11
0
        public Server() : base()
        {
            //Setup game settings
            Window.AllowUserResizing = true;
            DebugRenderEnabled       = true;
            PauseOnFocusLost         = false;

            IsFixedTimeStep   = true;
            TargetElapsedTime = TimeSpan.FromSeconds(1f / 144f);

            ItemContainer.GenerateItems();
            AbilityContainer.LoadAbilities();

            //setup constant values
            //Getting credentials from file
            CredentialInfo credentialInfo = FileManager.GetCredentialInformation("Credentials.json");

            ConstantValues.ConnectionID         = credentialInfo.ID;
            ConstantValues.ConnectionCredential = credentialInfo.ConnectionCredential;
            ConstantValues.ServerString         = credentialInfo.ServerString;
            ConstantValues.Port = credentialInfo.Port;
        }
예제 #12
0
        private void StartChanneling(MessageTemplate template, NetIncomingMessage message)
        {
            ChannelTemplate ct = Newtonsoft.Json.JsonConvert.DeserializeObject <ChannelTemplate>(template.JsonMessage);

            if (ct.ChannelType.Equals(ChannelType.Ability))
            {
                AbilityHead     ability   = AbilityContainer.GetAbilityByName(ct.ChannelName);
                CharacterPlayer character = MapContainer.FindCharacterByID(message.SenderConnection.RemoteUniqueIdentifier);
                Entity          entity    = Scene.FindEntity(character._name);
                PlayerComponent pc        = entity.GetComponent <PlayerComponent>();
                if (pc != null && !pc.isChanneling)
                {
                    if (ability != null)
                    {
                        entity.AddComponent(new DamageChannelingComponent(pc, ability.ChannelTime, ability));
                    }
                    else
                    {
                        entity.AddComponent(new ChannelingComponent(pc, 4));
                    }
                }
            }
        }
예제 #13
0
        public override void SetDefaults(NPC npc)
        {
            base.SetDefaults(npc);
            this.NPC = npc;

            if (DictionaryHelper.NPC(npc).ContainsKey(npc.type))
            {
                NPCTypeInfo      typeInfo         = DictionaryHelper.NPC(npc)[npc.type];
                AbilityContainer abilityContainer = typeInfo.Container;
                float            chance           = ModContent.GetInstance <Config>().HiddenAbilityChancePercent;

                AbilityID ability = abilityContainer.PrimaryAbility;
                if (abilityContainer.SecondaryAbility != AbilityID.None)
                {
                    if (Main.rand.NextDouble() <= 0.5)
                    {
                        ability = abilityContainer.SecondaryAbility;
                    }
                }

                if (abilityContainer.HiddenAbility != AbilityID.None)
                {
                    if (Main.rand.NextDouble() <= (chance * 0.01))
                    {
                        ability = abilityContainer.HiddenAbility;
                    }
                }

                CurrentAbilityID = ability;

                //Main.NewText(
                //    $"NPC: {NPCID.GetUniqueKey(npc.type)}. " +
                //    $"Possible Abilities: {abilityContainer.PrimaryAbility}, {abilityContainer.SecondaryAbility}, ({abilityContainer.HiddenAbility}). " +
                //    $"Selected Ability: {AbilityID}. ");
            }
        }
예제 #14
0
 bool AutoCanBeTriggered(AbilityContainer c)
 {
     _Game.bCheckAutoMode =  true;
     _Game.bAutoCanBeTriggered = false;
     c.card.CheckAbilities(c.cardState, c.effectOwner);
     _Game.bCheckAutoMode = false;
     return _Game.bAutoCanBeTriggered;
 }
예제 #15
0
    void Start()
    {
        animations=new PlayerAnimations(this);
        //last_aim_direction=last_move_direction=Vector3.forward;

        legit_timer = new Timer(888, OnLegit);
        onGround_timer= new Timer(200, OnGroundTimer);
        mp_regen_timer= new Timer(stats.MP_regen_delay, OnMPregenTimer);

        hp=stats.HP;
        mp=stats.MP;
        if (regen_multi==-1)
            mp=0;

        //Data set
        ability_containers = new List<AbilityContainer>();

        for (int i=0; i<Data.Abilities.Count; i++){
            var abb = new AbilityContainer(this,Data.Abilities[i]);
            ability_containers.Add(abb);
        }

        _Color=Data.color;
        controllerNumber=Data.controllerNumber;

        //NotificationCenter.Instance.addListener(OnExplosion,NotificationType.Explode);
        NotificationCenter.Instance.addListener(OnKnockback,NotificationType.HaxKnockback);
    }
예제 #16
0
 void SetIsRunning(AbilityContainer container, bool isRunning)
 {
     container.isRunning = isRunning;
 }
예제 #17
0
    void LoadAbilities()
    {
        TextAsset textAsset = (TextAsset)Resources.Load(_abilityFile.name);

        _abilityData = AbilityContainer.LoadFromText(textAsset.text)._data;
    }