Ejemplo n.º 1
0
 public GatherActionRange(BaseActionTemplate action, CharacterTemplate origin, CharacterTemplate target, int range)
 {
     Action = action;
     Origin = origin;
     Target = target;
     Range  = range;
 }
        public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
        {
            var weapon = character.EquipmentSlots.GetSlot(EquipmentSlotType.Weapon).Item;

            if (weapon == null)
            {
                return(_type == Types.Unarmed);
            }
            if (_type == Types.Any)
            {
                return(true);
            }
            var data = weapon.Get <GenericDataComponent>();

            if (data == null)
            {
                return(false);
            }
            var weaponType = data.GetString(GenericDataTypes.WeaponType);

            switch (_type)
            {
            case Types.Melee:
                return(weaponType == WeaponTypes.Melee);

            case Types.Ranged:
                return(weaponType == WeaponTypes.Ranged);
            }
            return(true);
        }
Ejemplo n.º 3
0
 public ImpactEvent(BaseActionTemplate action, CharacterTemplate origin, CharacterTemplate target, Vector3 hitPoint, Vector3 hitNormal)
 {
     Source = action.Entity;
     Hit    = new HitData(CollisionResult.Hit, target, hitPoint, hitNormal);
     Origin = origin;
     Target = target;
     Action = action;
 }
Ejemplo n.º 4
0
 public ImpactEvent(CollisionEvent collisionEvent, BaseActionTemplate action, CharacterTemplate origin, CharacterTemplate target)
 {
     Source = collisionEvent.Source;
     Hit    = new HitData(CollisionResult.Hit, target, collisionEvent.HitPoint, collisionEvent.HitNormal);
     Origin = origin;
     Target = target;
     Action = action;
 }
Ejemplo n.º 5
0
 public PrepareDamageEvent(CharacterTemplate origin, CharacterTemplate target, BaseActionTemplate action, HitData hit)
 {
     Entries = GenericPools.New <List <DamageEntry> >();
     Origin  = origin;
     Target  = target;
     Action  = action;
     Hit     = hit;
 }
 public string Description(BaseActionTemplate template, CharacterTemplate character)
 {
     if (_minLevel > 1)
     {
         return(string.Format("Requires: {0} {1}", _minLevel, _label));
     }
     return(string.Format("Requires: {0}", _label));
 }
Ejemplo n.º 7
0
 public PrepareDamageEvent(ImpactEvent impact)
 {
     Entries = GenericPools.New <List <DamageEntry> >();
     Origin  = impact.Origin;
     Target  = impact.Target;
     Action  = impact.Action;
     Hit     = impact.Hit;
 }
Ejemplo n.º 8
0
 public HealingEvent(BaseActionTemplate action, float amount, CharacterTemplate origin, CharacterTemplate target, string targetVital)
 {
     Action      = action;
     Amount      = amount;
     Origin      = origin;
     Target      = target;
     TargetVital = targetVital;
 }
Ejemplo n.º 9
0
 public ActionEvent(BaseActionTemplate action, CharacterTemplate origin, CharacterTemplate target, Vector3 position, Quaternion rotation, ActionState state)
 {
     Action   = action;
     Origin   = origin;
     Target   = target;
     Position = position;
     Rotation = rotation;
     State    = state;
 }
Ejemplo n.º 10
0
 public ActionEvent(BaseActionTemplate action, CharacterTemplate origin, Entity target, ActionState state)
 {
     Action   = action;
     Origin   = origin;
     Target   = target.GetTemplate <CharacterTemplate>();
     Position = target.GetPosition();
     Rotation = target.GetRotation();
     State    = state;
 }
Ejemplo n.º 11
0
 public bool CanEffect(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     if (_type == ActionDataTargetType.Target)
     {
         var data = target.GenericData;
         return(data != null && data.GetInt(_data) >= _minAmount);
     }
     return(true);
 }
Ejemplo n.º 12
0
 public TakeDamageEvent(ref PrepareDamageEvent prepareEvent)
 {
     Action  = prepareEvent.Action;
     Origin  = prepareEvent.Origin;
     Target  = prepareEvent.Target;
     Hit     = prepareEvent.Hit;
     Entries = prepareEvent.Entries;
     Amount  = prepareEvent.CurrentTotal();
     prepareEvent.Entries = null;
 }
Ejemplo n.º 13
0
 public CheckHitEvent(BaseActionTemplate action, CharacterTemplate origin, CharacterTemplate target, string targetDefense)
 {
     Action        = action;
     Origin        = origin;
     Target        = target;
     TargetDefense = targetDefense;
     DefenseTotal  = 0;
     AttackTotal   = 0;
     Result        = 0;
 }
Ejemplo n.º 14
0
 public ActionSlot(SerializationInfo info, StreamingContext context)
 {
     Type            = info.GetValue(nameof(Type), Type);
     _cachedItem     = info.GetValue(nameof(_cachedItem), _cachedItem);
     _owner          = info.GetValue(nameof(_owner), _owner);
     _action         = info.GetValue(nameof(_action), _action);
     LastEquipStatus = info.GetValue(nameof(LastEquipStatus), LastEquipStatus);
     CompatibleSlots = null;
     CurrentStats    = null;
     RequiredTypes   = new[] { typeof(ActionConfig) };
 }
Ejemplo n.º 15
0
 public bool CanEffect(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     for (int i = 0; i < Requirements.Count; i++)
     {
         if (!Requirements[i].CanEffect(template, character, target))
         {
             return(false);
         }
     }
     return(true);
 }
        public string Description(BaseActionTemplate template, CharacterTemplate character)
        {
            switch (_type)
            {
            case Types.Melee:
                return("Requires: Melee Weapon");

            case Types.Ranged:
                return("Requires: Ranged Weapon");

            case Types.Unarmed:
                return("Requires: Unarmed");
            }
            return("");
        }
Ejemplo n.º 17
0
        public bool CanEffect(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
        {
            switch (_targetType)
            {
            default:
            case TargetType.Any:
                return(true);

            case TargetType.Self:
                return(character == target);

            case TargetType.Enemy:
                return(World.Get <FactionSystem>().AreEnemies(character, target));

            case TargetType.Friendly:
                return(World.Get <FactionSystem>().AreFriends(character, target));
            }
        }
Ejemplo n.º 18
0
        public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
        {
            GenericDataComponent data = null;

            switch (_type)
            {
            case ActionDataTargetType.Action:
                data = template.Data;
                break;

            case ActionDataTargetType.Target:
                data = character.GenericData;
                break;

            case ActionDataTargetType.Owner:
                data = target.GenericData;
                break;
            }
            return(data != null && data.HasString(_data));
        }
Ejemplo n.º 19
0
        public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
        {
            GenericDataComponent data = null;

            switch (_type)
            {
            case ActionDataTargetType.Action:
                data = template.Data;
                break;

            case ActionDataTargetType.Target:
                data = character.GenericData;
                break;

            case ActionDataTargetType.Owner:
                data = target.GenericData;
                break;
            }
            if (data == null)
            {
                return(false);
            }
            return(data.GetInt(_data) >= _minAmount);
        }
 public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     return(character.Position.Value.DistanceCheb(target.Position.Value) <= character.Stats.GetValue(Stats.Reach));
 }
 public bool CanEffect(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     return(true);
 }
Ejemplo n.º 22
0
 public string Description(BaseActionTemplate template, CharacterTemplate character)
 {
     return(string.Format("Requires: {0}", _targetType));
 }
Ejemplo n.º 23
0
 public RaiseDeadEvent(BaseActionTemplate action, CharacterTemplate source, CharacterTemplate target)
 {
     Action = action;
     Origin = source;
     Target = target;
 }
 public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     return(character.GenericData.GetInt(_classId) >= _minLevel);
 }
 public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     return(character.Position.Value.DistanceCheb(target.Position.Value) <= _range);
 }
 public string Description(BaseActionTemplate template, CharacterTemplate character)
 {
     return(string.Format("Range: {0}", _range));
 }
 public string Description(BaseActionTemplate template, CharacterTemplate character)
 {
     return("Range: Self");
 }
 public bool CanTarget(BaseActionTemplate template, CharacterTemplate character, CharacterTemplate target)
 {
     return(character == target);
 }
 public string Description(BaseActionTemplate template, CharacterTemplate character)
 {
     return(string.Format("Range: {0} Weapon", _isMelee ? "Melee" : "Ranged"));
 }
Ejemplo n.º 30
0
        public static void PostImpactEvent(CharacterTemplate origin, CharacterTemplate target, BaseActionTemplate action, Vector3 hitPoint,
                                           Vector3 hitNormal)
        {
            var hitRotation = hitNormal == Vector3.zero ? Quaternion.identity : Quaternion.LookRotation(hitNormal);
            var ae          = new ActionEvent(action, origin, target, hitPoint, hitRotation, ActionState.Impact);

            World.Get <RulesSystem>().Post(new ImpactEvent(action, origin, target, hitPoint, hitNormal));
            origin.Post(ae);
        }