2023-12-13 12:49:38 +01:00

140 lines
4.6 KiB
C#

using Assets.Scripts.Player;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scripts.Slimes
{
public class BasicSlime
{
protected int health;
protected int maxHealth;
protected int maxSecondary;
protected int secondary;
protected int strength;
protected int dexterity;
protected int intelligence;
protected int level;
protected int experience;
protected Item item;
protected int luck;
public BasicSlime(PlayerGameObject player)
{
maxHealth = player.getPlayerStat("MaxHealth").getAmount();
health = maxHealth;
maxSecondary = player.getPlayerStat("MaxSecondary").getAmount();
secondary = maxSecondary;
strength = player.getPlayerStat("Strength").getAmount();
dexterity = player.getPlayerStat("Dexterity").getAmount();
intelligence = player.getPlayerStat("Intelligence").getAmount();
experience = (int)(10 + player.getPlayerStat("Experience").getAmount() * 2.5f);
level = player.getPlayerStat("Level").getAmount();
luck = player.getPlayerStat("Luck").getAmount();
}
public BasicSlime(JToken json)
{
maxHealth = (int)json["maxHealth"];
maxSecondary = (int)json["maxSecondary"];
secondary = (int)json["secondary"];
health = (int)json["health"];
strength = (int)json["strength"];
dexterity = (int)json["dexterity"];
intelligence = (int)json["intelligence"];
level = (int)json["level"];
experience = (int)json["experience"];
}
public int[] getStats()
{
int[] result = { health, maxHealth, secondary, maxSecondary, strength, dexterity, intelligence };
return result;
}
public bool takeDamage(int amount, System.Random rand)
{
if (rand.Next(1, 101) > dexterity + (intelligence / 2))
{
health = health - amount;
}
return health <= 0;
}
public int calculateHeavy(System.Random rand)
{
int result = 0;
if (secondary >= maxSecondary / 2)
{
int bonus = 0;
if (rand.Next(1, 101) <= dexterity)
{
bonus = strength * 2;
}
result = strength + bonus + 10;
secondary = secondary - (maxSecondary / 2);
}
return result;
}
public int calculateDamage(System.Random rand)
{
int result;
int bonus = 0;
if (rand.Next(1, 101) <= dexterity)
{
bonus = strength * 2;
}
result = strength + bonus + 5;
return result;
}
public int getExperience()
{
return experience;
}
public Item getItem()
{
int rand = new System.Random().Next(100) + 1;
if (rand < 15 + luck)
{
int type = new System.Random().Next(2);
switch (type)
{
case 0:
item = new Equipment(luck);
break;
/*case 1:
item = new Book(luck);
break;*/
case 1:
item = new Item(luck,false);
break;
}
}
return item;
}
public string saveSlime()
{
string result = "";
result = result + FileHandler.generateJSON("health", health) + ",\r\n";
result = result + FileHandler.generateJSON("maxHealth", maxHealth) + ",\r\n";
result = result + FileHandler.generateJSON("maxSecondary", maxSecondary) + ",\r\n";
result = result + FileHandler.generateJSON("secondary", secondary) + ",\r\n";
result = result + FileHandler.generateJSON("strength", strength) + ",\r\n";
result = result + FileHandler.generateJSON("dexterity", dexterity) + ",\r\n";
result = result + FileHandler.generateJSON("intelligence", intelligence) + ",\r\n";
result = result + FileHandler.generateJSON("level", level) + ",\r\n";
result = result + FileHandler.generateJSON("experience", experience);
return result;
}
}
}