status/MysteryBoxStatus.cs
using System;
using System.Collections.Generic;
using System.Linq;
using Sandbox;
using static Sandbox.VertexLayout;
[Status(1, 0, 0.7f, 0, false )]
public class MysteryBoxStatus : Status
{
public MysteryBoxStatus()
{
Title = "Mystery Box";
IconPath = "textures/icons/mystery_box.png";
}
public override void Init(Player player)
{
base.Init(player);
}
public override void Refresh()
{
Description = GetDescription(Level);
var pos = Player.Position2D + Utils.GetRandomVector() * Game.Random.Float( 0.4f, 0.8f );
var BUFFER = 0.3f;
pos = new Vector2( MathX.Clamp( pos.x, Manager.Instance.BOUNDS_MIN.x + BUFFER, Manager.Instance.BOUNDS_MAX.x - BUFFER ), MathX.Clamp( pos.y, Manager.Instance.BOUNDS_MIN.y + BUFFER, Manager.Instance.BOUNDS_MAX.y - BUFFER ) );
Crate box = Manager.Instance.SpawnEnemy( TypeLibrary.GetType( typeof( Crate ) ), pos, forceSpawn: true ) as Crate;
box?.BecomeMysteryBox();
}
public override string GetDescription(int newLevel)
{
return "Receive a special crate";
}
public override string GetUpgradeDescription(int newLevel)
{
return "Receive a special crate";
}
}