status/HomingBulletStatus.cs
using System;
using System.Collections.Generic;
using System.Linq;
using Sandbox;
[Status( 5, 0, 1f, 0, false )]
public class HomingBulletStatus : Status
{
public HomingBulletStatus()
{
Title = "Homing Bullets";
IconPath = "textures/icons/homing_bullets.png";
}
public override void Init( Player player )
{
base.Init( player );
}
public override void Refresh()
{
Description = GetDescription( Level );
Player.Modify( this, PlayerStat.HomingBulletChance, GetAddForLevel( Level ), ModifierType.Add );
Player.Modify( this, PlayerStat.BulletDamage, GetDamageMultForLevel( Level ), ModifierType.Mult );
}
public override string GetDescription( int newLevel )
{
return string.Format( "{0}% chance for bullets to be homing but reduce bullet dmg by {1}%", GetPercentForLevel( Level ), GetDamagePercentForLevel( Level ) );
}
public override string GetUpgradeDescription( int newLevel )
{
return newLevel > 1 ? string.Format( "{0}%→{1}% chance for bullets to be homing but reduce bullet dmg by {2}%→{3}%", GetPercentForLevel( newLevel - 1 ), GetPercentForLevel( newLevel ), GetDamagePercentForLevel( newLevel - 1 ), GetDamagePercentForLevel( newLevel ) ) : GetDescription( newLevel );
}
//public float GetAddForLevel( int level )
//{
// switch(level)
// {
// case 1: default: return 0.15f;
// case 2: return 0.25f;
// case 3: return 0.40f;
// case 4: return 0.55f;
// case 5: return 0.80f;
// case 6: return 0.90f;
// case 7: return 1.0f;
// }
//}
//public float GetPercentForLevel( int level )
//{
// switch ( level )
// {
// case 1: default: return 15f;
// case 2: return 25f;
// case 3: return 40f;
// case 4: return 55f;
// case 5: return 80f;
// case 6: return 90f;
// case 7: return 100f;
// }
//}
public float GetAddForLevel( int level )
{
return level * 0.2f;
}
public float GetPercentForLevel( int level )
{
return level * 20;
}
public float GetDamageMultForLevel( int level )
{
return 1f - level * 0.02f;
}
public float GetDamagePercentForLevel( int level )
{
return level * 2;
}
}