Changeset 6304 for 2015


Ignore:
Timestamp:
2015-06-25 02:56:09 (4 years ago)
Author:
mijoliim
Message:

Taistelut melkein toimivat.

Location:
2015/26/MikkoL
Files:
6 added
23 edited

Legend:

Unmodified
Added
Removed
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/Algorithms.cs

    r6281 r6304  
    99    public static int DamageFromBasicAttack(double BaseDamage, int Defence) 
    1010    { 
    11         return (int)(Math.Round(BaseDamage + BaseDamage / Defence - Defence) * RandomGen.NextDouble(0.9, 1.1)) + 1; 
     11        return (int)Math.Max((Math.Round(BaseDamage + BaseDamage / Defence - Defence) * RandomGen.NextDouble(0.9, 1.1)), 1); 
    1212    } 
    1313 
    1414    public static int DamageFromCriticalHit(double BaseDamage, int Defence) 
    1515    { 
    16         return (int)(Math.Round(BaseDamage * 2 - Defence / 2) * RandomGen.NextDouble(0.9, 1.1)) + 1; 
     16        return (int)Math.Max((Math.Round(BaseDamage * 2 - Defence / 2) * RandomGen.NextDouble(0.9, 1.1)), 1); 
    1717    } 
    1818 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/AttackList.cs

    r6281 r6304  
    2020        return Attack; 
    2121    } 
     22 
     23    public static AttackBase SpookyAttack() 
     24    { 
     25        AttackBase SpookyAttack = new AttackBase(); 
     26        SpookyAttack.DMG = 10; 
     27 
     28        SpookyAttack.OnUse = delegate 
     29        { 
     30            BattleView.CurrentBattleView.Attacker.CanMakeAction = false; 
     31            EnemyBase user = BattleView.CurrentBattleView.Attacker; 
     32 
     33            CharacterBase character = BattleView.CurrentBattleView.SelectRandomAlly(); 
     34 
     35            double BaseDamage = SpookyAttack.BaseDamage(user.Stats.Str, 2); 
     36            int TrueDamage = BattleAlgorithms.DamageFromBasicAttack(BaseDamage, character.CurrentStats.Def); 
     37            character.CurrentHP.Value -= TrueDamage; 
     38 
     39            BattleView.CurrentBattleView.IsAttackAnimationPlaying = false; 
     40            BattleView.CurrentBattleView.IsTimerActive = true; 
     41        }; 
     42 
     43        return SpookyAttack; 
     44    } 
    2245} 
    2346 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/BattleView.cs

    r6281 r6304  
    1717 
    1818    public EnemyGroup _EnemyGroup { get; set; } 
     19    public EnemyBase Attacker { get; set; } 
    1920 
    2021    public List<CharacterBase> Allies = new List<CharacterBase>(); 
     
    3536    private ScrollingTextMenu BattleMenu { get; set; } 
    3637 
     38    private float WaitTimeBetweenActions = 1f; 
     39    private float TimeBetweenActions; 
     40 
    3741    int SelectedEnemy; 
    3842    int PrevSelectedEnemy = 0; 
     
    6468        Allies.Add(CharacterList.TestChar()); 
    6569        Allies.Add(CharacterList.TestChar()); 
     70 
     71        for (int i = 0; i < Allies.Count; i++) 
     72        { 
     73            Allies[i].Index = i; 
     74        } 
    6675 
    6776        LoadEnemies(_Enemies); 
     
    160169            { 
    161170                HPMeter.Text = Allies[Index].CurrentHP.Value.ToString() + "/" + Allies[Index].CurrentHP.MaxValue.ToString(); 
     171 
     172                 
     173                if (Allies[Index].CurrentHP.Value == 0) 
     174                { 
     175                    Name.TextColor = Microsoft.Xna.Framework.Color.Gray; 
     176                    HPMeter.TextColor = Microsoft.Xna.Framework.Color.Gray; 
     177                    SPMeter.TextColor = Microsoft.Xna.Framework.Color.Gray; 
     178 
     179                    Allies[Index].WaitTimeMeter.Value = 0; 
     180 
     181                    Allies[Index].IsDead = true; 
     182                } 
    162183            }; 
    163184 
     
    224245                    AllyNames[_AllyQueue.Peek().Index].IsFlashing = false; 
    225246                    AllyNames[_AllyQueue.Peek().Index].TextColor = Microsoft.Xna.Framework.Color.White; 
    226  
    227247                     
    228248                    ActionQueue.Enqueue(delegate 
     
    350370    } 
    351371 
     372    public CharacterBase SelectRandomAlly() 
     373    { 
     374        int r = RandomGen.NextInt(0, Allies.Count); 
     375 
     376        while (Allies[r].CurrentHP.Value == 0) 
     377        { 
     378            r = RandomGen.NextInt(0, Allies.Count); 
     379        } 
     380 
     381        return Allies[r]; 
     382    } 
     383 
    352384    void EndBattle() 
    353385    { 
     
    366398        BattleHUD.Destroy(); 
    367399        BattleMenu.Destroy(); 
     400        Background.Destroy(); 
     401 
     402        OverworldView.CurrentMapData.InitializeEnemies(OverworldView.CurrentMapData.CurrentMapIndex); 
    368403 
    369404        JRPG.Game.ClearControls(); 
    370         Background.Destroy(); 
     405         
    371406 
    372407        JRPG.Game.LoadOWControlsKeyboard(); 
     
    378413        return delegate 
    379414        { 
    380             IsInMenu = true; 
    381  
    382             AllyNames[character.Index].IsFlashing = true; 
    383  
    384             BattleMenu = new ScrollingTextMenu(); 
    385             BattleMenu.SetTextBases(JRPG.Game.MainFont, TextAlignment.Left); 
    386  
    387             for (int i = 0; i < character.LearnedAttacks.Count; i++) 
    388             { 
    389                 int Index = i; 
    390  
    391                 BattleMenu.AddMenuElement(character.LearnedAttacks[i].Name); 
    392                 BattleMenu.ActionWhenSelected.Add( 
    393                     delegate { 
    394                         _AllyQueue.Cut(character); 
    395                         IsInMenu = true; 
    396                         AllyNames[character.Index].IsFlashing = true; 
    397                         character.LearnedAttacks[Index].OnUse(); } 
    398                     ); 
    399             } 
    400  
    401             if (character.LearnedSkills.Count > 0) 
    402             { 
    403                 BattleMenu.AddMenuElement("skills"); 
     415            if (!character.IsDead) 
     416            { 
     417 
     418                IsInMenu = true; 
     419 
     420                AllyNames[character.Index].IsFlashing = true; 
     421 
     422                BattleMenu = new ScrollingTextMenu(); 
     423                BattleMenu.SetTextBases(JRPG.Game.MainFont, TextAlignment.Left); 
     424 
     425                for (int i = 0; i < character.LearnedAttacks.Count; i++) 
     426                { 
     427                    int Index = i; 
     428 
     429                    BattleMenu.AddMenuElement(character.LearnedAttacks[i].Name); 
     430                    BattleMenu.ActionWhenSelected.Add( 
     431                        delegate 
     432                        { 
     433                            _AllyQueue.Cut(character); 
     434                            IsInMenu = true; 
     435                            AllyNames[character.Index].IsFlashing = true; 
     436                            character.LearnedAttacks[Index].OnUse(); 
     437                        } 
     438                        ); 
     439                } 
     440 
     441                if (character.LearnedSkills.Count > 0) 
     442                { 
     443                    BattleMenu.AddMenuElement("skills"); 
     444                    BattleMenu.ActionWhenSelected.Add(delegate { }); 
     445                } 
     446                BattleMenu.AddMenuElement("items"); 
    404447                BattleMenu.ActionWhenSelected.Add(delegate { }); 
    405             } 
    406             BattleMenu.AddMenuElement("items"); 
    407             BattleMenu.ActionWhenSelected.Add(delegate { }); 
    408             BattleMenu.AddMenuElement("flee"); 
    409             BattleMenu.ActionWhenSelected.Add(Flee()); 
    410  
    411             BattleMenu.ActionOnExit = delegate 
    412             { 
    413                 IsInMenu = false; 
    414                 AllyNames[character.Index].IsFlashing = false; 
    415                 AllyNames[character.Index].TextColor = Microsoft.Xna.Framework.Color.White; 
    416             }; 
    417  
    418             BattleMenu.LoadMenuElements(); 
     448                BattleMenu.AddMenuElement("flee"); 
     449                BattleMenu.ActionWhenSelected.Add(Flee()); 
     450 
     451                BattleMenu.ActionOnExit = delegate 
     452                { 
     453                    IsInMenu = false; 
     454                    AllyNames[character.Index].IsFlashing = false; 
     455                    AllyNames[character.Index].TextColor = Microsoft.Xna.Framework.Color.White; 
     456                }; 
     457 
     458                BattleMenu.LoadMenuElements(); 
     459            } 
    419460        }; 
    420461    } 
     
    424465        for (int i = 0; i < Allies.Count; i++) 
    425466        { 
    426             if (!Allies[i].CanMakeAction) 
     467            if (!Allies[i].CanMakeAction && !Allies[i].IsDead) 
    427468            { 
    428469                Allies[i].ElapsedTime += deltaTime; 
     
    438479        } 
    439480 
    440         for (int i = 0; i < Enemies.Count - 1; i++) 
     481        for (int i = 0; i < Enemies.Count; i++) 
    441482        { 
    442483            if (!Enemies[i].CanMakeAction) 
     
    447488                    Enemies[i].ElapsedTime = 0.0; 
    448489                    Enemies[i].CanMakeAction = true; 
     490 
     491                    int Index = i; 
     492 
     493                    ActionQueue.Enqueue(delegate 
     494                    { 
     495                        Attacker = Enemies[Index]; 
     496                        Enemies[Index].PickRandomAttack().OnUse(); 
     497                    }); 
    449498                } 
    450499            } 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/Characters/CharacterBase.cs

    r6281 r6304  
    3232    public double ElapsedTime { get; set; } 
    3333    public bool CanMakeAction { get; set; } 
     34    public bool IsDead { get; set; } 
    3435 
    3536    public int Level = 1; 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/Characters/CharacterList.cs

    r6281 r6304  
    1010    { 
    1111        CharacterBase TestChar = new CharacterBase(); 
    12         TestChar.CurrentStats.HP = 150; 
     12        TestChar.CurrentStats.HP = 50; 
    1313        TestChar.CurrentStats.SP = 100; 
    1414 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/EnemyBase/EnemyBase.cs

    r6281 r6304  
    4747        public int Luck = 5; 
    4848    } 
     49 
     50    public AttackBase PickRandomAttack() 
     51    { 
     52        int r = RandomGen.NextInt(0, Attacks.Count); 
     53 
     54        return Attacks[r]; 
     55    } 
    4956} 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/EnemyBase/EnemyGroup.cs

    r6281 r6304  
    88{ 
    99    public int EncounterProbability { get; set; } 
    10     public int Max = 6; 
     10    public int Max = 4; 
    1111 
    1212    public EnemyGroup() 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/EnemyBase/EnemyList.cs

    r6281 r6304  
    1919        return Testman; 
    2020    } 
     21 
     22    public static EnemyBase Spookt() 
     23    { 
     24        EnemyBase Spookt = new EnemyBase(); 
     25 
     26        Spookt.Stats.HP = 40; 
     27        Spookt.Stats.Def = 10; 
     28        Spookt.Stats.Res = 20; 
     29        Spookt.Stats.Str = 5; 
     30 
     31        Spookt.Name = "Spookt"; 
     32        Spookt.FleePercent = 25; 
     33        Spookt.Idle = Images.Enemies.Ghost_Idle; 
     34 
     35        Spookt.BaseWaitTimeInSeconds = 3; 
     36 
     37        Spookt.Attacks.Add(AttackList.SpookyAttack()); 
     38 
     39        return Spookt; 
     40    } 
    2141} 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Images.cs

    r6281 r6304  
    2020    { 
    2121        public static Image Testman_Idle = JRPG.LoadImage("Enemies//Testman//Enemy_Testman"); 
     22 
     23        public static Image Ghost_Idle = JRPG.LoadImage("Enemies//Spookt/Spookt"); 
     24        
    2225    } 
    2326 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/JRPG.csproj.Debug.cachefile

    r6296 r6304  
    2424Content\Water\Anim_Water02_0.xnb 
    2525Content\Water\Anim_Water03_0.xnb 
     26Content\Enemies\Spookt\Spookt.xnb 
    2627Content\AsRifle.xnb 
    2728Content\Auto.xnb 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/Overworld/MapData.cs

    r6281 r6304  
    1212    public static int StepsToAnEncounter { get; set; } 
    1313    public static int EncounterProbability { get; set; } 
     14 
     15    public string CurrentMapIndex; 
    1416 
    1517    public List<EnemyGroup> EnemiesList() 
     
    4042    public void LoadMapDataFromString(string MapIndex) 
    4143    { 
     44        CurrentMapIndex = MapIndex; 
     45 
    4246        if (MapIndex == "Test") 
    4347        { 
     
    4549            EncounterProbability = 25; 
    4650 
    47             EnemyBase TestMan = EnemyList.Testman(); 
    48             EnemyBase TestMan2 = EnemyList.Testman(); 
    49             TestMan2.Name = "test 2"; 
    50             EnemyBase TestMan3 = EnemyList.Testman(); 
    51             TestMan3.Name = "test 3"; 
    52             EnemyBase TestMan4 = EnemyList.Testman(); 
    53             TestMan4.Name = "test 4"; 
    54             EnemyGroup Group = new EnemyGroup(100); 
    55  
    56             Group.AddEnemyToGroup(TestMan); 
    57             Group.AddEnemyToGroup(TestMan2); 
    58             Group.AddEnemyToGroup(TestMan3); 
    59             Group.AddEnemyToGroup(TestMan4); 
    60             Enemies.Add(Group); 
     51            InitializeEnemies(MapIndex); 
    6152 
    6253            _BackgroundImages.Add(Images.Backgrounds.Test); 
    6354        } 
    6455    } 
     56 
     57    public void InitializeEnemies(string MapIndex) 
     58    { 
     59        if (MapIndex == "Test") 
     60        { 
     61            Enemies.Clear(); 
     62 
     63            EnemyBase Ghost = EnemyList.Spookt(); 
     64 
     65            EnemyGroup Group = new EnemyGroup(100); 
     66 
     67            Group.Add(Ghost); 
     68 
     69            Enemies.Add(Group); 
     70        } 
     71    } 
    6572} 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/obj/x86/Debug/JRPG.csproj.FileListAbsolute.txt

    r6296 r6304  
    208208C:\Users\Mikko\Desktop\Peli2015\MikkoL\JRPG\JRPG\JRPG\obj\x86\Debug\JRPG.csprojResolveAssemblyReference.cache 
    209209C:\Users\Mikko\Desktop\Peli2015\MikkoL\JRPG\JRPG\JRPG\obj\x86\Debug\Microsoft.Xna.Framework.RuntimeProfile.txt 
     210C:\Users\Mikko\Desktop\Peli2015\MikkoL\JRPG\JRPG\JRPG\bin\x86\Debug\Content\Enemies\Spookt\Spookt.xnb 
  • 2015/26/MikkoL/JRPG/JRPG/JRPG/obj/x86/Debug/cachefile-{D60BC67C-D86B-426A-A33D-CA5138E0FDF3}-targetpath.txt

    r6296 r6304  
    2424Content\Water\Anim_Water02_0.xnb 
    2525Content\Water\Anim_Water03_0.xnb 
     26Content\Enemies\Spookt\Spookt.xnb 
  • 2015/26/MikkoL/JRPG/JRPG/JRPGContent/JRPGContent.contentproj

    r6281 r6304  
    235235    </Compile> 
    236236  </ItemGroup> 
     237  <ItemGroup> 
     238    <Compile Include="Enemies\Spookt\Spookt.png"> 
     239      <Name>Spookt</Name> 
     240      <Importer>TextureImporter</Importer> 
     241      <Processor>TextureProcessor</Processor> 
     242    </Compile> 
     243  </ItemGroup> 
    237244  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    238245  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
  • 2015/26/MikkoL/JRPG/JRPG/JRPGContent/obj/x86/Debug/ContentPipeline.xml

    r6296 r6304  
    226226      <Output>C:\Users\Mikko\Desktop\Peli2015\MikkoL\JRPG\JRPG\JRPG\bin\x86\Debug\Content\Water\Anim_Water03_0.xnb</Output> 
    227227      <Time>2015-06-24T18:22:08.6198799+03:00</Time> 
     228    </Item> 
     229    <Item> 
     230      <Source>Enemies\Spookt\Spookt.png</Source> 
     231      <Name>Enemies\Spookt\Spookt</Name> 
     232      <Importer>TextureImporter</Importer> 
     233      <Processor>TextureProcessor</Processor> 
     234      <Options>None</Options> 
     235      <Output>C:\Users\Mikko\Desktop\Peli2015\MikkoL\JRPG\JRPG\JRPG\bin\x86\Debug\Content\Enemies\Spookt\Spookt.xnb</Output> 
     236      <Time>2015-06-25T01:54:36.4186452+03:00</Time> 
    228237    </Item> 
    229238    <BuildSuccessful>true</BuildSuccessful> 
Note: See TracChangeset for help on using the changeset viewer.