— No reviews yet
0 installs
14 views
0.0% view→install
Install
$ agentstack add skill-xeldaralz-everything-claude-unity-rpg ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Are you the author of Rpg? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claimAbout
RPG Game Patterns
Stat System
public enum StatModifierType { Flat, PercentAdd, PercentMultiply }
[System.Serializable]
public sealed class StatModifier
{
public float Value;
public StatModifierType Type;
public int Order;
public object Source;
public StatModifier(float value, StatModifierType type, int order, object source)
{
Value = value;
Type = type;
Order = order;
Source = source;
}
}
[System.Serializable]
public sealed class CharacterStat
{
[SerializeField] private float _baseValue;
private readonly List _modifiers = new();
private float _cachedValue;
private bool _isDirty = true;
public float Value
{
get
{
if (_isDirty)
{
_cachedValue = CalculateFinalValue();
_isDirty = false;
}
return _cachedValue;
}
}
public void AddModifier(StatModifier mod)
{
_modifiers.Add(mod);
_modifiers.Sort((a, b) => a.Order.CompareTo(b.Order));
_isDirty = true;
}
public void RemoveAllModifiersFromSource(object source)
{
for (int i = _modifiers.Count - 1; i >= 0; i--)
{
if (_modifiers[i].Source == source)
{
_modifiers.RemoveAt(i);
_isDirty = true;
}
}
}
private float CalculateFinalValue()
{
float finalValue = _baseValue;
float percentAddSum = 0f;
for (int i = 0; i = _modifiers.Count || _modifiers[i + 1].Type != StatModifierType.PercentAdd)
{
finalValue *= 1f + percentAddSum;
percentAddSum = 0f;
}
break;
case StatModifierType.PercentMultiply:
finalValue *= 1f + mod.Value;
break;
}
}
return Mathf.Round(finalValue * 100f) / 100f;
}
}
Modifier ordering: Flat (+5) → PercentAdd (+10% stacks additively) → PercentMultiply (+20% stacks multiplicatively).
Level / XP System
public sealed class LevelSystem
{
private int _currentLevel = 1;
private int _currentXP;
private int _maxLevel = 99;
public event System.Action OnLevelUp;
public int CurrentLevel => _currentLevel;
public int CurrentXP => _currentXP;
public int XPToNextLevel => GetXPForLevel(_currentLevel + 1) - GetXPForLevel(_currentLevel);
public float XPProgress => (float)_currentXP / XPToNextLevel;
public void AddXP(int amount)
{
_currentXP += amount;
while (_currentXP >= XPToNextLevel && _currentLevel CurrentCount >= RequiredCount;
}
[CreateAssetMenu(menuName = "RPG/Quest Definition")]
public sealed class QuestDefinition : ScriptableObject
{
[SerializeField] private string _questId;
[SerializeField] private string _title;
[TextArea] [SerializeField] private string _description;
[SerializeField] private List _objectives;
[SerializeField] private int _xpReward;
[SerializeField] private List _itemRewards;
[SerializeField] private QuestDefinition[] _prerequisites;
public string QuestId => _questId;
public string Title => _title;
public IReadOnlyList Objectives => _objectives;
public int XPReward => _xpReward;
}
public sealed class QuestTracker
{
private readonly Dictionary _activeQuests = new();
public event System.Action OnQuestCompleted;
public void StartQuest(QuestDefinition quest)
{
_activeQuests[quest.QuestId] = quest;
}
public void ReportProgress(ObjectiveType type, string targetId, int count = 1)
{
foreach (KeyValuePair kvp in _activeQuests)
{
QuestDefinition quest = kvp.Value;
bool allComplete = true;
for (int i = 0; i < quest.Objectives.Count; i++)
{
QuestObjective obj = quest.Objectives[i];
if (obj.Type == type && obj.TargetId == targetId)
{
obj.CurrentCount = Mathf.Min(obj.CurrentCount + count, obj.RequiredCount);
}
if (!obj.IsComplete) allComplete = false;
}
if (allComplete)
{
OnQuestCompleted?.Invoke(quest);
}
}
}
}
Skill Tree
- SkillNode SO: name, description, icon, prerequisites (list of SkillNode), stat modifiers, unlock cost
- SkillTree: graph of nodes, check prerequisites before unlock, apply modifiers on unlock
- Respec: remove all modifiers from skill source, reset unlock state
Combat Patterns
Real-Time (Action RPG)
- Abilities as ScriptableObjects: damage, cooldown, mana cost, animation trigger, VFX
- Combo system: track input sequence within time window
- Status effects: timed stat modifiers + tick damage/heal + VFX
Turn-Based
- Turn order by Speed stat (or initiative roll)
- Action queue: select action → select target → execute → next turn
- Command pattern: each action is an ICommand with Execute/Undo
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: XeldarAlz
- Source: XeldarAlz/everything-claude-unity
- License: MIT
- Homepage: https://github.com/XeldarAlz/everything-claude-unity#readme
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.