static ScriptController.TargetMask getTargetMask(string s) { var all_tags = Enum.GetValues(typeof(ScriptController.UnitTags)).Cast <ScriptController.UnitTags>().ToArray(); var mask = new ScriptController.TargetMask(); foreach (var c in s) { if (c == 's') { mask.self = true; } else if (c == 'p') { mask.pet = true; } else { int num = Array.FindIndex(ScriptController.unit_tags_char, val => val == c); if (num > 0 && num < all_tags.Length) { mask.tags = mask.tags | all_tags[num]; } } } return(mask); }
static bool isUnitinMask(UnitEntityData caster, UnitEntityData unit, ScriptController.UnitTags unit_tags, ScriptController.TargetMask target_mask) { if (target_mask.self && unit == caster) { return(true); } if (target_mask.pet && unit == caster.Descriptor.Pet) { return(true); } if ((unit_tags & target_mask.tags) != 0) { return(true); } return(false); }