public static void SetSpellbook(this CharBPhaseSpells instance, BlueprintCharacterClass characterClass) { LevelUpState state = Game.Instance.UI.CharacterBuildController.LevelUpController.State; BlueprintCharacterClass selectedClass = state.SelectedClass; state.SelectedClass = characterClass; GetMethodDel <CharBPhaseSpells, Action <CharBPhaseSpells> >("SetupSpellBookView")(instance); state.SelectedClass = selectedClass; }
public static void AddClassLevel_NotCharacterLevel(this UnitProgressionData instance, BlueprintCharacterClass characterClass) { //instance.SureClassData(characterClass).Level++; GetMethodDel <UnitProgressionData, Func <UnitProgressionData, BlueprintCharacterClass, ClassData> > ("SureClassData")(instance, characterClass).Level++; //instance.CharacterLevel++; instance.Classes.Sort(); instance.Features.AddFact(characterClass.Progression, null); instance.Owner.OnGainClassLevel(characterClass); //int[] bonuses = BlueprintRoot.Instance.Progression.XPTable.Bonuses; //int val = bonuses[Math.Min(bonuses.Length - 1, instance.CharacterLevel)]; //instance.Experience = Math.Max(instance.Experience, val); }
static void Prefix(SelectFeature __instance, LevelUpState state, UnitDescriptor unit) { if (IsAvailable()) { BlueprintCharacterClass sourceClass = (GetMethodDel <SelectFeature, Func <SelectFeature, LevelUpState, FeatureSelectionState> > ("GetSelectionState")(__instance, state)?.Source as BlueprintProgression)?.GetSourceClass(unit); if (sourceClass == null) { Core.Debug($" - {nameof(SelectFeature)}.{nameof(SelectFeature.Apply)}({state.SelectedClass}[{state.NextClassLevel}], {unit}) - {__instance.Selection}, {__instance.Item}"); } else { Core.Debug($" - {nameof(SelectFeature)}.{nameof(SelectFeature.Apply)}({sourceClass}[{unit.Progression.GetClassLevel(sourceClass)}], {unit}) - {__instance.Selection}, {__instance.Item}"); } } }
public static void Apply_NoStatsAndHitPoints(this ApplyClassMechanics instance, LevelUpState state, UnitDescriptor unit) { if (state.SelectedClass != null) { ClassData classData = unit.Progression.GetClassData(state.SelectedClass); if (classData != null) { //GetMethodDel<ApplyClassMechanics, Action<ApplyClassMechanics, LevelUpState, ClassData, UnitDescriptor>> // ("ApplyBaseStats")(null, state, classData, unit); //GetMethodDel<ApplyClassMechanics, Action<ApplyClassMechanics, LevelUpState, ClassData, UnitDescriptor>> // ("ApplyHitPoints")(null, state, classData, unit); GetMethodDel <ApplyClassMechanics, Action <ApplyClassMechanics, ClassData, UnitDescriptor> > ("ApplyClassSkills")(null, classData, unit); GetMethodDel <ApplyClassMechanics, Action <ApplyClassMechanics, LevelUpState, UnitDescriptor> > ("ApplyProgressions")(null, state, unit); } } }
static void Prefix(SelectFeature __instance, LevelUpState state, UnitDescriptor unit, ref StateReplacer __state) { if (IsAvailable()) { if (__instance.Item != null) { FeatureSelectionState selectionState = GetMethodDel <SelectFeature, Func <SelectFeature, LevelUpState, FeatureSelectionState> > ("GetSelectionState")(__instance, state); if (selectionState != null) { BlueprintCharacterClass sourceClass = (selectionState.Source as BlueprintFeature)?.GetSourceClass(unit); if (sourceClass != null) { __state = new StateReplacer(state); __state.Replace(sourceClass, unit.Progression.GetClassLevel(sourceClass)); } } } } }