* fuck all * clean up * remove knowledge books * Update base.yml * cl * fix #991 * fix * Update subgamemodes.yml * manual migration + recipes fix * Update comoss.yml * setup data * setup skills systems * more blacksmithing skills * Update base.yml * Create CP14SkillEffectAction.cs * skill button returns * base graph UI window * skill tree drawing * UI improve * pyro setup * skill trees selection, dragging control * refactor skill system: rename Skills to LearnedSkills, add experience tracking and learning logic * Create available.png * skill description generation setup * auto parsing skill names and descriptions * Hydrosophistry * water light fire and metamagic ported to skill tre * ice dagger spell returns * Update ice_dagger.yml * delete old files * Update modular_garde.yml * ice arrow spell * link graph with parallax * show experience counter * polish * puf * p * pipap * finally ready to merg? * fix * fix 2
49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
using Content.Shared._CP14.Skill.Components;
|
|
using Content.Shared._CP14.Skill.Prototypes;
|
|
using Content.Shared.Bed.Sleep;
|
|
using Content.Shared.Examine;
|
|
using Content.Shared.FixedPoint;
|
|
using Content.Shared.Mobs.Components;
|
|
using Content.Shared.Mobs.Systems;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Shared._CP14.Skill;
|
|
|
|
public abstract partial class CP14SharedSkillSystem
|
|
{
|
|
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
|
[Dependency] private readonly ExamineSystemShared _examine = default!;
|
|
[Dependency] private readonly MobStateSystem _mobState = default!;
|
|
|
|
public void GiveExperienceInRadius(EntityCoordinates position, ProtoId<CP14SkillTreePrototype> tree, FixedPoint2 points, float radius = 5)
|
|
{
|
|
var entities = _lookup.GetEntitiesInRange<CP14SkillStorageComponent>(position, radius, LookupFlags.Uncontained);
|
|
|
|
foreach (var ent in entities)
|
|
{
|
|
//Cant learn if the position is not in range or obstructed
|
|
if (!_examine.InRangeUnOccluded(ent, position, radius))
|
|
continue;
|
|
|
|
//Cant learn when dead
|
|
if (TryComp<MobStateComponent>(ent, out var mobState) && !_mobState.IsAlive(ent, mobState))
|
|
continue;
|
|
|
|
//Cant learn if the entity is sleeping
|
|
if (HasComp<SleepingComponent>(ent))
|
|
continue;
|
|
|
|
TryAddExperience(ent, tree, points);
|
|
}
|
|
}
|
|
|
|
public void GiveExperienceInRadius(EntityUid uid,
|
|
ProtoId<CP14SkillTreePrototype> tree,
|
|
FixedPoint2 points,
|
|
float radius = 5)
|
|
{
|
|
GiveExperienceInRadius(Transform(uid).Coordinates, tree, points, radius);
|
|
}
|
|
}
|