Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
docs: finished the rotation dev.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Jan 23, 2023
1 parent f5ff2d9 commit 68243a4
Show file tree
Hide file tree
Showing 8 changed files with 164 additions and 8 deletions.
16 changes: 14 additions & 2 deletions docs/RotationDev/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Development of Rotation.

Thank you for join the circle of rotation developers.
Thank you for join the circle of rotation developers who have a role called `xxx dev` in [Discord](https://discord.gg/4fECHunam9).

In here you can try to creat you own rotation for your combat! I would like you to share your own rotation to the public!
Actually, all the rotations should be developed by the players who who have a certain understanding of the job, not me who doesn't. I would like you to share your own rotation to the public!

I'll make it easier and easier to develop a custom rotation.

## Responsibility

- Basic
- Maintain your own rotation.
- Answer the questions about your own rotation.
- Advanced
- Maintain the action list.
- Maintain the id of action or status.
- Raise the issue encountered in the development.
7 changes: 2 additions & 5 deletions docs/RotationDev/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
- [Rotation Info](RotationDev/rotation-info.md)
- [Action](RotationDev/action.md)
- [Character](RotationDev/character.md)

- Advanced
- Customization
- Action List
- Data Maintain
- Debug
- [Customization](RotationDev/customization.md)
- [Data Maintenance](RotationDev/data-maintenance.md)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/RotationDev/character.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Character

The last source of information is character. Very inportant.
The last source of information is character. Very important.

## Basic

Expand Down
99 changes: 99 additions & 0 deletions docs/RotationDev/customizaion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Customization

Want to write a better rotation? You need to customize it!



## Configuration

Do you want to have your own configuration to control the rotation? Then, you need to override the `CreateConfiguration` method.

Here is an example in BRD:

``` c#
private protected override IRotationConfigSet CreateConfiguration() => base.CreateConfiguration()
.SetBool("BindWAND", false, "Use Raging Strikes on WAND")
.SetCombo("FirstSong", 0, "First Song", "WAND", "MAGE", "ARMY")
.SetFloat("WANDTime", 43, "WAND Time", min: 0, max: 45, speed: 1)
.SetFloat("MAGETime", 34, "MAGE Time", min: 0, max: 45, speed: 1)
.SetFloat("ARMYTime", 43, "ARMY Time", min: 0, max: 45, speed: 1);
```

Just use the methods whose name started with `Set`. They are `SetFloat`, `SetString`, `SetBool`, `SetCombo`.

If you want to get the value of configuration, You can do like this by using the methods whose name started with `Get`.

```c#
var time = Configs.GetFloat("WANDTime");
```



## Custom Field

Sometimes, for saving the resource. We want to save the value to the field. But when to update these value? In method `UpdateInfo`.

``` c#
private protected override void UpdateInfo()
{
//Set your value to field here.
}
```



## Description

More description about your rotation? Overrive the `DescriptionDict`.

Here is an example in BRD:

``` c#
public override SortedList<DescType, string> DescriptionDict => new()
{
{DescType.Description, "Please make sure that the three song times add up to 120 seconds!"},
{DescType.DefenseArea, $"{Troubadour}"},
{DescType.HealSingle, $"{NaturesMinne}"},
};
```



## RotationCheck

It is a special delegate to make your rotation clear.

Sometimes, some action has a special usage logic, and throughout. You can add it to the RotationCheck in BaseAction.

Here is an example in SCH:

``` c#
public SCH_Default()
{
SummonSeraph.RotationCheck = b => WhisperingDawn.ElapsedAfterGCD(1) || FeyIllumination.ElapsedAfterGCD(1) || FeyBlessing.ElapsedAfterGCD(1);
}
```



## Heal & Defense

If you don't want to use the auto heal or defense by default, you can override them! They are `CanHealAreaAbility`, `CanHealAreaSpell`, `CanHealSingleAbility` and `CanHealSingleSpell`.

Here is a simplified example in SCH:

```c#
protected override bool CanHealSingleSpell => base.CanHealSingleSpell && Configs.GetBool("GCDHeal");
protected override bool CanHealAreaSpell => base.CanHealAreaSpell && Configs.GetBool("GCDHeal");

private protected override IRotationConfigSet CreateConfiguration()
{
return base.CreateConfiguration().SetBool("GCDHeal", false, "Aut use GCD to heal");
}
```



## BurstItem

You can use burst item when you call `UseBurstItem` method in rotation. It will only be used in full party at level 90.
48 changes: 48 additions & 0 deletions docs/RotationDev/data-maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Data Maintenance

Things above all is about the rotation. but some information from rotation needs maintenance too. It is also the rotation developer's work.

## ActionID

In order to maintenance this, I recommend a plugin called [SimpleTweaksPlugin](https://github.com/Caraxi/SimpleTweaksPlugin), which can help you to find the id easily.

![Simple Tweeks](assets/image-20230123142747722.png)

![Get Action ID](assets/image-20230123142852650.png)

Then modify the id in this [ActionID](https://github.com/ArchiDog1998/RotationSolver/blob/main/RotationSolver/Data/ActionID.cs) file in the right region.

## StatudID

When you use `Debug` mode to build this plugin, you'll see the tabitem like this, and it will show all the status.

![Status ID](assets/image-20230123144205172.png)

Then modify the id in this [StatusID](https://github.com/ArchiDog1998/RotationSolver/blob/main/RotationSolver/Data/StatusID.cs) file.

Oh, yeah! You find my debug tab! There is your id hash. This is a `little easter egg`. People will great you the developer if you are in the same duty. So how to add this? Add your Hash id to this [field](https://github.com/ArchiDog1998/RotationSolver/blob/dd517a0bb3a664d008b8eb88d7bc9a0da56e0973/RotationSolver/Helpers/ConfigurationHelper.cs#L29). And then, you are in!

## Action

All the action you used in rotation are defined in this [directory](https://github.com/ArchiDog1998/RotationSolver/tree/main/RotationSolver/Rotations/Basic). It is great to modify it for all rotation developers in this job.

There are several parameters you need to know for constructor.

| Parameter | Description |
| ---------------- | ------------------------------------------------------- |
| isFriendly | is a friendly or supporting action |
| shouldEndSpecial | end special after using it |
| isEot | is hot or dot action |
| isTimeline | should I put it to the timeline (heal and defense only) |

Some Property you can set.

| Property | Description |
| ------------- | ------------------------------------------------------------ |
| ComboIdsNot | If combo id is on this list, this aciton will not used. |
| ComboIds | The combos that are not written on the action list. |
| StatusProvide | If player has these statuses from player self, this aciton will not used. |
| StatusNeed | If player doesn't have these statuses from player self, this aciton will not used. |
| ActionCheck | Check for this action, but not for the rotation. It is some additional conditions for this action. |
| AOECount | If this is an aoe action, how many hostile target would want to attack on, when you use this action. |

0 comments on commit 68243a4

Please sign in to comment.