recursal/Fanatic-Fandom huggingface dataset:
Dong Xiaowan

> "Darling, home is wherever you are."
>
>

When obtained she starts off with 60 charm.

* An graceful dancer at the Prunus Pavillion. Has versatile talents. Skillful in poetry and a master of the Four Arts.

### Skills

* Proud and Aloof

Effect: Suo Ni's POL increased

* Versatile Talent

Effect: Sou Ni's POL increased

* Skillful in Poetry

Effect: Sou Ni's CHAR increased

* Four Art Master

Effect: Sou Ni's STR increased

* Quick Wit

Effect: Sou Ni's INT increased

* One of the 8 Belles

Effect: Sou Ni's POL increased

### Skins

* Dong Xiaowan

Effect: Dong Xiaowan Classic figure

### History

Dong Xiaowan was a Chinese poet and writer, also known by her pen name Qinglian.
Dong was one of the Eight Beauties of Qinhuai, famous for her beauty and talent in singing, sewing and the tea ceremony.
At the beginning, the noble Mao Bijiang, had attempted to meet with Dong several times, but he had pursued a relationship with Chen Yuanyuan instead. After Chen was abducted by other noble, Mao visited Dong.
Dong’s mother suggested that Dong become Mao’s concubine, allegedly followed him for 27 days on his boat. Eventually, she accepted to wait for Mao to pass the imperial examinations, which he failed. After that, she lived with Mao as his concubine.
Dong has been described as an ideal dutiful, sacrificing and faithful wife and daughter-in-law during her marriage to Mao. When Mao and Dong were forced to flee their home in 1644, Dong abandoned her more valuable things to save her poems and paintings.

IconSummonBanner
Institute

Institute is the place where retainers study.

Players can dispatch their retainers to study in the Institute for 3 hours and acquire Book EXP +10, Skill EXP +100 with the chance for triple EXP upon completion. Unlocking five seats grants the function "Complete All" option. The maximum seats for the Institute is 20.
Banquet

Basic Information about Banquet System

* Unlock Requirement: Official rank reaches 7th Secondary

## Types of Banquets

**Family Banquet**: You can consume Gold×100, Family Banquet Ingredients × 5 and Family Banquet Condiments × 5 to hold a Family Banquet and banquet points as well as credits can be acquired after your banquet ends.
 \*Capacity of it is 10 players and it can be open or hidden (invalid hiding for your allies with blue ID). Other players should search your ID to attend the banquet if it is hidden.

**Official Banquets**: You can consume Gold×500, Official Banquet Ingredients × 5 and Official Banquet Condiments × 5 to hold an Official Banquet and banquet points as well as credits can be acquired after your banquet ends.

* Capacity of it is 50 players and it cannot be hidden. Other players would attend your banquet freely.

## Hosting

* Players can use the banquet ingredients to open a family banquet/official banquet for other players to attend.
* Players can set the required official rank of the attendees.
* The host will get corresponding banquet points according to the official rank and the titles of the attendees.
* After the banquet is full or when the countdown is over, you can obtain the rewards from the banquet interface.

## Attending

* Players use 1 attendance for attending a banquet.
* After successfully attending the banquet, you can get rewards based on your official rank. Wearing titles will have an extra merits bonus (Zhiyuan, Yongle, Yongzheng, and Jianlong/ Emperors/ Kings/ Princes). As well, you get merits based on your official rank.
* Attendees may attend the same banquet multiple times.
* Attendees must meet the minimum official rank required for the banquet to attend.
* Everyone has 10 attendances to join banquets. One attendance will refresh every 6 hours. The higher the VIP level, the more attendances.
* There's a mouse/rat option that has yet to be explained so for now ignore that feature

## Tips

* Remember to attend other players’ banquets as much as possible as you can each day.
* For the early stage of the game, Box & Pack of Merit are the best choices to help you because merit is very important for players’ development in the game. Gunner will troll you.
* After you have reached at least S.4th you can start to redeem Academy Token (higher yields for higher official rank in Academy) since it could only be found in Banquet System except for in-game purchase.

## Banquet Redemption Items

BanquetFamily Banquet IngredientsFamily Banquet CondimentsCapacity of it is 10 playersOfficial Banquet IngredientsOfficial Banquet CondimentsCapacity of it is 50 playersBanquet-Redeem1Banquet-Redeem2
Trading

Players whose official rank reaches 5th-Primary could unlock Trade System.

1. Trade with different countries one by one and get rich rewards, the latter countries has more trading difficulty and better rewards. The trade record will be reset every day.
2. The competition focus on Intelligence and Money. The higher Intelligence you have, the less Money you spend in trade.
3. Get 50 trading successes in 1 day to unlock 1-Tap Trading.

Trading screenBarbados
Sun Shangxiang

> "
>
>

* The sister of general Sun Quan of the late Eastern Han Dynasty. She is so elegant, talented and beautiful.

### Skins

* Sun Shangxiang

Effect: Sun Shangxiang Classic figure

### History

Sun Shangxiang was known to be wise and shrewd, and tough and fierce in character, very much like her brother Sun Quan (who founded the state of Eastern Wu in the Three Kingdoms period). In 209,she married the warlord Liu Bei to strengthen an alliance between Liu Bei and Sun Quan. It was said that she had more than a hundred female servants who carried swords and stood guard outside her room. Whenever Liu Bei entered her room, he felt a chill in his heart.
Raid

The "Raid" area of the map hosts 2 daily events, Mongolian Attack (12:00 PM - 14:00 PM Server Time), as well as Seige Galdan (20:00 - 21:00 Server Time). Partcipating in each event earns event credits which are redeemed in the Redeem section, as well as Raid Points for the server ranking.

## Mongolian Attack

This event happens daily in the "Raid" area of the map. It starts at 12:00 PM - 14:00 PM server time. There are 20 waves to defeat, each providing credits when you hit as well as kill the wave. You can redeem your credits for Baron Garments, Baron Cap, Baron Belt, Beads of Attribute. as well as the Elixir of Attribute. There is also a chance to have a random item drop from beating a wave.

## Galdan

This event happens daily in the "Raid" area of the map. It starts at 20:00 - 21:00 Server Time until Galdan has been defeated. Reward upon defeating Galdan rewards you with the Head of Galdan, redeemable for the retainer of the same name. Only one person can claim the kill per day, and you can view the last 100 times he was killed by reviewing the Ranking > Defeats area. The HP of Galdan will increase daily until he becomes unkilled, and then will decrease again.

Galdan
Leonardo da Vinci

> "I awoke only to find the rest of the world was still asleep."
>
>

### Background

Leonardo da Vinci (15 April 1452 - 2 May 1519) was an Italian polymath of the Renaissance. He has been variously called the father of paleontology, ichnology, and architecture, and is widely considered one of the greatest painters of all time. Sometimes credited with the inventions of the parachute, helicopter and tank, he epitomised the Renaissance humanist ideal.

### Aptitude

Starting Aptitude: 12

Specialty: Charisma
Laundry

Unlock Requirement: Confidant amount > 15

You can dipatch confidant to Laundry for peace.

The dispatch time for each confidant is 100 days and recalling a confidant in advanced should cost (cool down days x 100) Gold. You can recall the confidant for free when the dispatch time is due.

What should we pay attention to if we dispatch a confidant?

* Dispatched confidants cannot be summoned;
* Random items are not applied to dispatched confidants;
* Specified Intamacy or Charm items cannot be applied to dispatched confidants;
* Dispatched confidants will not appear in Visiting;
* Dispatched confidants will not appear in Challenge random bonus;
* The Intimacy, Charm, Confidant EXP and Skill of dispatched confidants are still valid;
* Dispatched confidants cannot appear in in-laws system
* 30 is the max laundry can be open
Find the Treasure

This event is a side event that runs along side the main events. This event runs from 6:00 - 22:00 server time. To participate, you first must purchase Event Items within the Event Shop. Other than Points that are earned by using the items which can be redeemed in the Redeem section within the event area, you can also obtain miscellaneous items as well depending on which event item is used. Any unused Event Credits or Event Items will be carried over for when the event does run again.

You can earn personal rewards once the event is over depending on your rank placement, as well as Alliance rewards depending on the overall ranking of your alliance.

 Iron Shovel
 Silver Shovel
 Gold Shovel
Epang

> "
>
>

When obtained she starts off with 10000 charm.

* In Chinese folklore, the first emperor of Qin built the Epang Palace for his beloved concubine. This woman was therefore called Epang by the world.

### Skills

Effect: Ying Zheng's STR increased

Effect: Ying Zheng's STR increased

Effect: Ying Zheng's INT increased

Effect: Ying Zheng's CHAR increased

Effect: Ying Zheng's POL increased

Effect: Ying Zheng's STR increased

### Skins

* Epang

Effect: Epang Classic figure

### Trivia

In the Vip Bonus area and in visiting at the Sparrow Terrace she is called Lady of Epang.

Summon
The Impressment

This event is a side event that runs along side the main events. This event runs from 6:00 - 22:00 server time. To participate, you first must purchase Event Items within the Event Shop. Other than Points that are earned by using the items which can be redeemed in the Redeem section within the event area, you can also obtain miscellaneous items as well depending on which event item is used. Any unused Event Credits or Event Items will be carried over for when the event does run again.

You can earn personal rewards once the event is over depending on your rank placement, as well as Alliance rewards depending on the overall ranking of your alliance.

 Wooden Fetter
 Iron Chain
 Prison Van

 Weak Army
 Children Army
 Abled Army
 Regular Army
 Elite Army
 Ace Army
 Token of Battle
Zhao Feiyan

> "Darling, do I look attractive when I have light make-up and apply lipstick?"
>
>

When obtained she starts off with 200 charm.

* Elder Sister of the Zhao twins. Good at dancing and singing. Has a beautiful voice and nimble movement.

### Skills

* Humble Birth

Effect: Gao Jianli's STRs increased

* Versatile Artist

Effect: Gao Jianli's STR increased

* Womanly Agility

Effect: Gao Jianli's POL increased

* Staunch and Virtuous

Effect: Gao Jianli's INT increased

* Slender Figure

Effect: Gao Jianli's CHAR  increased

* Feminine Shape

Effect: Gao Jianli's STR increased

### Skins

* Zhao Feiyan

Effect: Zhao Feiyan Classic figure

* Exquisite Zither

Effect: Use to get permanent {Exquisite Zither} skin and add ??? Intimacy for Confidant Zhao Feiyan

* Cherry Girl

Effect: Use to get permanent {Cherry Girl} skin and add ??? Intimacy for Confidant Zhao Feiyan

IconSummonCherry Girl
Dongfang Shuo

> "If the water is too clean, no fish can survive; if the person is too shrewd, no man will apprentice."
>
>

### Background

Dongfang Shuo (c. 160 BCE - c. 93 BCE) was a Han Dynasty scholar-official, famgshi ("master of esoterica"), author, and court jester to Emperor Wu (r.141 - 87 BCE). In Chinese mythology, Dongfang is considered a Daoist xian ("transcendent; immortal") and the spirit of Venus who incarnated as a series of ancient ministers including Laozi.

### Aptitude

Starting Aptitude: 15

Specialty: Intelligence
Sworn Brothers

This event is a side event that runs along side the main events. This event runs from 6:00 - 22:00 server time. To participate, you first must purchase Event Items within the Shop. Other than Points that are earned by using the items which can be redeemed in the Redeem section within the event area, you can also obtain miscellaneous items as well depending on which event item is used. Any unused Event Credits or Event Items will be carried over for when the event does run again.

You can earn personal rewards once the event is over depending on your rank placement, as well as Alliance rewards depending on the overall ranking of your alliance.

 Proso Millet Wine
 Husked Millet Wine
 Sticky Rice Wine

 Lv 2 Wealth Token
 Lv 3 Wealth Token
 Lv 4 Wealth Token
 Lv 5 Wealth Token
 Lv 6 Wealth Token
Lin Zexu

> "Where the ocean ends sky shall be my shore, where the mountain tops I shall be the peak."
>
>

### Background

Lin Zexu (30 August 1785 - 22 November 1850), courtesy name Yuanfu, was a Chinese scholar-official of the Qing dynasty best known for his role in the First Opium War of 1839-42. He was from Fuzhou, Fuian Province. Lin's forceful opposition to the opium trade was a primary catalyst for the First Opium War. He is praised for his constant position on the "moral high ground" in his figh, but he is also blamed for a rigid approach which failed to account for the domestic and international complexities of the problem. The Daoguang Emperor endorsed the hardline policies advocated by Lin, but then blamed Lin for the resulting disastrous war.

### Aptitude

Starting Aptitude: 13

Specialty: Strength, Charisma
Retainers Bonus

The rewards of the current grade can be manually collected when the retainers of each group meet the attribute requirements of each grade. Please note that exiled retainers’ aptitude will also be included.

Retainer ScreenRetainer Bonus Example 1Retainer Bonus Example 2Retainer Bonus Example 3Retainer Bonus Example 4Retainer Bonus Example 5
Intimacy

There are four types of Intimacy events:

* Intimacy Player Ranking race
* Intimacy Alliance Ranking Race
* Multi-Server(cross and contest) Intimacy

## Player Intimacy

In an Intimacy Player Ranking Race, you compete against your fellow server members for the title Prince of Civility. The person who has the highest intimacy increase at the end of event end winst this this title.

You can increase Intimacy by using jadeite hearts, agate hearts, sachets of intimacy, crops consumption and using various random items obtained by events. These items can be used on your confidante of choice.

* Agate hearts (white) are worth one intimacy point
* Jadeite hearts (red) count double. So when one heart is used, you'll gain 2 intimacy points.
* Sachets of intimacy are randomized and have a value varying from 1-300 intimacy.

Random items vary, see the in-game description of the item for actual value.

## Intimacy Alliance Ranking Race

In Alliance Intimacy event, the goal is to raise as much Intimacy as possible as an alliance. So the total increase of Intimacy of all members in one alliance combined is what makes the score.

Ways to increase Intimacy do not differ from the Intimacy Player Ranking Race.

Winnings generally include a cross/contest certificate.

## Cross-Server Intimacy Event

In a Cross-Server and/or Contest you and your server will compete with other servers for the title. Once again the objective is to increase as much Intimacy as possible, but this time as a server. So everyone on the same server who's eligible to participate can increase their Intimacy and help the server win. There are two parts to Cross-server/Contest events. One is the total increase of the server, two is a personal increase. It is possible that the person who increased the most is not from the server who increased the most. The person with the highest increase will win the King title. These events usually have a duration of multiple days.

Participation requirements

Cross-server/Contest Intimacy Certificate: In order to be eligible to compete in a Cross-server/Contest event you need to be in possession of the Cross-server/Contest Intimacy Certificate. This certificate can be obtained by ranking within the parameters of a certain event. (At the time of writing the events this certificate could be obtained varied. Usually it is one event and always the same event, like coin consumption.)

Event rules:

1. Players that have the [Cross-Server/Contest Intimacy Certificate] can join the Event.
2. Players who don't have the [Cross-Server/Contest Intimacy Certificate] can enter and chat in the Event, but their Intimacy Increase does not count in this event. All players in participated server can claim the Victory/Defeated Rewards when the Event is over.
Liu Bei

> "
>
>

### How to obtain

Collect 50 Liu Bei fragments available during special events and Facebook promotions.

### Aptitude

Starting Aptitude: 29

Specialty: Strength, Charisma

### Skins

* Liu Bei

Effect: Liu Bei Classic figure

### History

Liu Bei, better known as Xuan De, was born in Zhuo County in Hebei Province. He was regarded as a great statesman and strategist in the Three Kingdoms Period (220 - 280). Liu Bei grew up in a poor family and his father died when he was still young. At the age of 15, he went to pursue his studies and then became sworn bothers with Guan Yu and Zhang Fei. In 188 after the Yellow Turban Rebellion broke out, he began to organize his own troops to fight against the insurrectionists with them.After experiencing ups and downs, in 221, Liu Bei reclaimed himself emperor in Chengdu, establishing the Kingdom of Shu. As one of three kingdoms, The Kingdom of Shu covered the area of Sichuan Province, Yunnan Province, the northern part of Guizhou Province and the southern part of Shaanxi ProvinceIn 223, Liu Bei launched a battle against The Kingdom of Wu to avenge the death of his sworn brother Guan Yu. Unfortunately, he was defeated and had to draw back into the domain of Shu. In April of the same year, he died in Baidi City (currently Fengjie in Chongqing). On his death bed, he entrusted his son Liu Shan to Zhuge Liang. As an emperor, Liu Bei loved his people and treasured talented people very much. As an individual, he was fair and sincere, humane and righteous. The main features of his political characters embodied Chinese traditional political thoughts, especially Confucianism. Because of this, he always received courteous reception and deep respect wherever he arrived.
Classe PushButton

**Veja também:**

* **SourceForge wiki: PushButton**

**Declarações públicas:**

```
class ButtonOwner{
public:
    virtual void buttonPressed(byte btID){}
    virtual void buttonReleased(byte btID){}
};

class PushButton
{
public:
    byte btID=0;

    PushButton();
    PushButton(byte btID, ButtonOwner *owner);

    void begin(byte buttonPin, boolean pullUp=true);
    boolean run();
    boolean isPressed();
    boolean read();

protected:
    virtual void onButtonPressed(){}
    virtual void onButtonReleased(){}
};

```

### **Como usar**

Chame ***begin()*** antes de qualquer outro método para informar o pino do botão. Por default o botão é inicializado com pull-up, mas você pode desabilitar este recurso. Chame o método ***read()*** para ler o status do botão. Se preferir trabalhar com eventos, derive a classe ***PushButton*** e reescreva os eventos ***onButtonPressed()*** e ***onButtonReleased()***. Nesse caso, o método ***run()*** deve ser chamado pelo menos uma vez por loop. O método ***isPressed()*** método não funciona sem o ***run()***.

**ButtonOwner**

É uma classe abstrata para receber eventos de ***PushButton***. Isso é útil quando a classe que responde os eventos, não pode ser descendente de ***PushButton***, ou há muitos botões para controlar. Para usar dessa maneira, derive ***ButtonOwner***, reescreva os eventos e use o construtor com o ***owner*** para criar instâncias do botão.

**PushButton(byte btID, ButtonOwner \*owner)**

Constructor with button's owner. If you use this constructor, events will be send to owner and not to ***PushButton*** class.

**btID**: button's ID
**owner**: ButtonOwner instance. Events are send to owner.

**void begin(byte buttonPin, boolean pullUp=true)**

Call before any othes method.

**buttonPin**: button's pin
**pullUp**: Activate arduino's pull up resistor to button's pin.

**boolean read()**

Read and return the button's status

**return**: true if button is pressed, false if not.

**boolean run()**

Reads button status and triggers events if needed. If you use events, this method must be called at least once per loop.

**return**: true if the button status is changed, false if not.

**boolean isPressed()**

Call to check if button is pressed or not. Only works if ***run()*** method is used.

**return**: true if the button is pressed , false if not.

**virtual void onButtonPressed()**

Event triggered when button is pressed. To capture this event, derive ***PushButton*** class and rewrite it. Events are triggered by ***run()*** method, so to work with events you must call ***run()*** at least once per loop.
This event is not triggered if the constructor with owner is used.

**virtual void onButtonReleased()**

Event triggered when button is released. To capture this event, derive ***PushButton*** class and rewrite it. Events are triggered by ***run()*** method, so to work with events you must call ***run()*** at least once per loop.
This event is not triggered if the constructor with owner is used.
Nalan Mingzhu

> "Govern the world with mastery."
>
>

### Background

Mingju (November 19, 1635 - June 3, 1708), of the Manchu Nara clan, was an eminent and powerful official of the Qing Dynasty during the reign of the Kangxi Emperor. Second cousin to the Shunzhi Emperor, Mingzhu came from an aristocrtic line that belonged to the Plain Yellow Banner of the Eight Banners. His grandfather, Gintaisi, was the last prince of the Yehe Nara clan.

### Aptitude

Starting Aptitude: 13

Specialty: Intelligence, Charisma
Catch the Thief

This event is a side event that runs along side the main events. This event runs from 6:00 - 22:00 server time. To participate, you first must purchase Event Items within the Shop. Other than Points that are earned by using the items which can be redeemed in the Redeem section within the event area, you can also obtain miscallenious items as well depending on which event item is used.

You can earn personal rewards once the event is over depending on your rank placement, as well as Alliance rewards depending on the overall ranking of your alliance.

 Brass Gong
 Whistling Arrow
 Rocket Arrow

 Imperial Document
 Jadeite Seal
 Imperial Court Crown
 Royal Seal
Shuang Er

>     "Darling, you're my hero."
>
>

When obtained she starts off with 70 charm.

* An innocent cutie at Heaven & Earth Union. She is a chivalrous young lady with martial art Skills.

### Skills

* Royal and Righteous

Effect: Nalan Mingzhu's INT increased

* Considerate Female

Effect: Nalan Mingzhu's INT increased

* Pretty and Pleasent

Effect: Nalan Mingzhu's STR increased

* Honest and Truthful

Effect: Nalan Mingzhu's POL increased

* Frank and Amiable

Effect: Nalan Mingzhu's CHAR increased

* Loyal and Brave

Effect: Nalan Mingzhu's INT increased

### Skins

* Shuang Er

Effect: Shuang Er Classic figure

IconSummonBanner
Angel Bunny

**Angel Bunny** is a future antagonistic character for *The Creature Channel*.

*Angel Bunny is based on the character of the same name from Lauren Faust's* My Little Pony: Friendship is Magic

## Physical Description

Angel is a regular Equestrian white rabbit. He has a large head compared to his body. Angel has long whiskers and ears, a fluffy tail, and a pink nose.

## Biography

### Fluttershy's Favorite Pet

#### Adopted by Fluttershy

It is unknown how or when Fluttershy and Angel met each other, but Fluttershy did take him in as one of her pets. He was probably sick, injured, or in trouble, and Fluttershy decided to help him but ended up keeping him.

## Powers and Abilities

### Powers

* **Rabbit Physiology:** Angel is an Etherian rabbit and, outside of his intelligence, has all of the abilities related to rabbits.
	+ **Enhanced Hearing:** A rabbit's large ears allows them to hear danger from far away.
	+ **Enhanced Leap:** Rabbits have long hind legs filled with muscle that they use to run and jump. Angel has been shown to leap over the height of adult female Equestrian.
	+ **Enhanced Smell:** As a rabbit, Angel is able to smell things, such as carrots, from much further away than other animals and Equestrians can.
	+ **Enhanced Speed:** A rabbit's small and agile body allows them to out run from prey and/or hide easily.
* **Anthropomorphism:** Despite being a rabbit, Angel almost equal intelligence to normal Equestrians, only he is unable to speak Ponish like others.

## Relationships

Allies* Fluttershy's pets
	+ Victor Fang
	+ Midori Bloodstone
* Anti-Victor Fang

## External Links

* *See Angel Bunny on the My Little Pony: Friendship is Magic Wiki*
Classe Hcsr04

* **Artigo sobre este dispositivo**
* **SourceForge wiki: Hcsr04**

Esta é a classe que controla o sensor. Foi feita para funcionar tanto com um pino de controle quanto com dois. Para controlar o sensor com um pino, basta informar o mesmo pino nos parâmetros *triggerPin* e *echoPin* do método *begin()*. Mas isso só funciona se existir um resistor de *pulldown* conectando o pino em questão ao *GND* do arduino (mais detalhes aqui). Se for usar o sensor com dois pinos, então informe pinos diferentes nesses parâmetros, nesse caso o resistor não é necessário. Abaixo a declaração pública da classe:

```
typedef enum{centimeter=0, inch} DistUnit;

class Hcsr04
{ public:
    HcSr04();
    void begin(byte triggerPin, byte echoPin, DistUnit unit= centimeter);
    int hcDist(byte tries=1);
    long ultraSonicRead();
};

```

Para usar a classe, crie uma instância, inicialize chamando o método *begin()* no setup e depois use *hcDist()* ou *ultraSonicRead()* para ler uma medida. A diferença entre os métodos *hcDist()* e *ultraSonicRead()*é que *hcDist()* retorna a distância (em centímetros ou polegadas). Já o método *ultraSonicRead()* apenas retorna o tempo do eco em microssegundos, sem converter em distância. O parâmetro opcional ***tries*** do método *hcDist()* informa até quantas tentativas de leitura devem ser feitas caso ocorra algum erro.

Abaixo um exemplo de uso da classe:

```
#include <hcsr04.h>

#define trigPin 8
#define echoPin 9
#define timeLapse 500

Hcsr04 hc;

void setup()
{
  Serial.begin(57600);
  hc.begin(trigPin, echoPin, centimeter);
}

void loop()
{
  int dist= hc.hcDist();

  if(dist<0)
    Serial.println("Fora de alcance ou erro de leitura.");
  else
    Serial.println(dist);

  delay(timeLapse);
}

```
Academy

Players with 6th-Secondary official rank can unlock Academy System.

1. Players can create a group by consuming an a Academy Token (Redeem from Banquet System or claim as rewards from different events). Consuming 1 token gives 3 hours of studying. A maximum of 8 tokens can be used, giving the option to host 24 hour academies. The Creator gains more Academy EXP as return.
2. Higher-official-rank players gains more and the EXP doubled as one official rank up.
3. Academy EXP can level up Academy Codex to upgrade Retainer's Aptitude. Academy EXP consumption is reset every 10 levels.
4. Players can compete for the Academy slots.
	* Query rules are as following: First comes official rank comparison, then comes Merit comparison. If both Merit are the same, random party will win.
5. Players can use jackets to protect themselves from being kicked from an academy. Each jacket will wear off after 1 hour, but multiple jackets, at the same time, can be used. Jackets are obtained as rewards in certain events.

You can now also choose to open a cross-server seat. This is entirely optional and it will be a button to click if you decide to do this. **The token cost is x3 but the academy experience is also x3.**

The below tables will show the EXP required at each level for the academy. It is **not** accumulative.

## Cross-Server Academy

The rules of the cross-server Academy are basically the same as this server, but the following rules have also been added.

After using Imperial Jackets while sitting, players will be protected against kicking (using 1 Imperial Jacket on the local server will grant 1 hour of protection, and using 3 Imperial Jackets on the cross-server will grant 1 hour of protection).

Within the same amount of time, the number of Academy Tokens consumed and the Academy EXP obtained by the cross-server team are 3 times that of the local team.
Classe HcsrAuto

* **Artigo sobre este dispositivo**
* **SourceForge wiki: HcsrAuto**

Descendente de *Hcsr04*, esta classe acrescenta o recurso de leitura automática em intervalos de tempo pré-determinados. Seu uso é bem intuitivo. Deve ser inicializada da mesma forma que a classe *HcSr04*. Para iniciaras leituras automáticas use o método *hcStart()* informando o intervalo de tempo entre leituras (em milissegundos). Para parar as leituras automáticas use o método *hcStop()*. É importante que o método *run()* seja chamado pelo menos uma vez a cada iteração do loop principal. O retorno do método *run()* indica se uma leitura foi feita. Opcionalmente, é possível derivar a classe e reescrever o método virtual onHcRead*()* que é chamado sempre que uma leitura é realizada. Abaixo um exemplo de uso com o retorno de *run()*.

```
#include <hcsr04.h>

#define trigPin 8
#define echoPin 9
#define timeLapse 500

HcsrAuto hca;

void setup() {
  Serial.begin(57600);

  hca.begin(trigPin, echoPin, centimeter);
  hca.hcStart(timeLapse); // Tempo entre leituras em milissegundos
}

void loop()
{
  if(hca.run())
  {
    if(hca.lastDist<0)
      Serial.println("Fora de alcance ou erro de leitura.");
    else
      Serial.println(hca.lastDist);
  }
}

```

E aqui um exemplo derivando a classe *Hcsr04auto*:

```
#include <hcsr04.h>

#define trigPin 8
#define echoPin 9
#define timeLapse 500

class HcAutoClass: public HcsrAuto
{
public:
  void begin()
  {
    HcsrAuto::begin(trigPin, echoPin, centimeter);
    hcStart(timeLapse); // Tempo entre leituras em milissegundos
  }

  void onHcRead(int dist)
  {
    if(dist<0)
      Serial.println("Fora de alcance ou erro de leitura.");
    else
      Serial.println(dist);
  }
};

HcAutoClass hac;

void setup()
{
  Serial.begin(57600);
  hac.begin();
}

void loop()
{
  hac.run();
}

```
Darkness

* Apophis *(formerly)*
* Karma

Havoc
Ephemeral
Faye

The Darkness also known as Amare is an ancient force of evil and destruction designed to destroy the timelines it invades. It was created by Azathoth to be wielded by the Dark One to eventually destroy the Multiverse and returning it into one of endless nothingness.

## Description

The Darkness often appears as an inky black cloud radiating with purple and green lightning. The accent colors of the Darkness depends on who the current Serpopard known as the Dark One.
Classe BatterySense

* **SourceForge wiki: BatterySense**

Ultimamente as baterias de Li-Ion estão bastante populares porque são recarregáveis, tem baixo custo e alta potência. Elas são facilmente encontradas na forma de pilhas no padrão 18650 e 14500. Essas baterias têm tensão nominal de 3,7 volts, mas quando estão totalmente carregadas fornecem até 4,1 volts. Elas são bastante práticas e uma boa opção para alimentar robôs. O problema com esta tecnologia é que as baterias não podem ser completamente descarregadas. Se a tensão chegar abaixo de 2,7 volts, podem perder a capacidade de recarga.

Depois de perder uma boa quantidade de baterias, decidi criar uma maneira de permitir que o robô monitore o nível das baterias e avisar quando é hora de recarregar. A maneira mais simples de monitorar o nível das baterias é com um divisor de tensão que reduza a voltagem total do pacote de baterias para os 5 volts das entradas analógicas do Arduino. Como o divisor de tensão tem a saída proporcional à entrada, à medida que a carga cai, a saída do divisor diminui na mesma proporção.

**CUIDADO:** Um divisor de tensão é um circuito extremamente simples de se fazer, envolve apenas dois resistores, mas tenha o cuidado de usar apenas resistores de valores altos, quanto mais, melhor. As entradas analógicas do Arduino não precisam e não suportam alta corrente. Quanto maior o valor dos resistores, menos corrente eles deixam passar e menor o impacto no consumo de energia. Além do divisor de tensão, o circuito sugerido fornece um LED de aviso que pisca em diferentes padrões para mostrar o nível de carga das baterias. O circuito está configurado para entrada de 12,3 volts, o que corresponde à tensão máxima fornecida por 3 baterias em série. Para outras tensões de entrada, basta substituir os resistores R1 e R2, como sugerido na imagem.
Classe HcsrArray

* **Artigo sobre este dispositivo**
* **SourceForge wiki: HcsrArray**

Esta classe dá suporte a um array de sensores HC-SR04. A ideia é que os sensores sejam distribuídos em volta do robô de modo que seja possível medir distâncias em várias direções sem precisar executar algum movimento. Implementa um sistema de patrulha automática que faz com que os sensores sejam lidos em sequência automaticamente em intervalos regulares de tempo. A cada leitura é gerado um evento que pode ser capturado por alguma classe descendente. Também é gerado um evento no final de cada ronda.

Abaixo a declaração pública da classe:

```
#define hc_TimeOut 18000    // microseconds
#define hcErr_Timeout     -1
#define hcErr_Hardware    -2
#define hcErr_ArrayIsFull -3
#define hcErr_NoMemory    -4

typedef enum{centimeter=0, inch} DistUnit;

class HcsrArray
{
public:
  HcsrArray(){}
  ~HcsrArray();

  boolean begin(byte maxSensors, DistUnit unit= centimeter);
  int addHcSensor(byte triggerPin, byte echoPin);
  void patrolModeOn(uint milliseconds);
  void patrolModeOff();
  boolean run();

  int readHcDist(byte hcID, byte tries=1);
  int readHcArray(byte tries=1);
  int getLastDist();
  int getLastDist(byte hcID);
  byte lastHcID();
  byte hcCount();
  boolean isPatrolDone();
  int getMinDist();
  int getMaxDist();

protected:
  // Override to capture
  virtual void onNextHcRead(byte hcID, int dist){}
  virtual void onPatrolDone(){}
};

```

Chame o método **begin()** antes de qualquer outro método informando a quantidade de sensores e a unidade de distância que será usada (centímetros ou polegadas). A seguir, adicione os sensores chamando o método **addHcSensor()** uma vez para cada sensor instalado, informando os pinos de controle. O método retorna o ID do sensor adicionado, que é um número sequencial iniciado em zero. Estes ID's permitem o acesso individual aos sensores.

Para iniciar a patrulha chame o método **patrolModeOn()** informando o tempo (em milissegundos) entre cada leitura. Para sair do modo patrulha, chame **patrolModeOff()**. Independente da patrulha, a qualquer momento qualquer sensor pode ser lido chamando o método **readHcDist()** e informando o ID do sensor (**hcID**). Para ler todos os sensores de uma vez chame **readHcArray()**. Caso aconteça um erro de leitura serão feitas novas leituras até conseguir uma leitura válida ou até esgotar o número de tentativas informado no parâmetro **tries**.

É extremamente importante que o método **run()** seja chamado pelo menos uma vez a cada iteração do *loop* principal. Sem isso não serão feitas leituras automáticas. O método **run()** retorna *true* sempre que uma nova leitura foi feita e também dispara os eventos **onNextHcRead()** e **onPatrolDone()**. O método **lastHcID()** retorna o ID do último sensor lido.
Conteúdo

Aqui um resumo de todo o conteúdo da wiki.

* Introdução: Alguns conceitos básicos sobre robótica, artigos e considerações sobre o projeto.
	+ Tipos de robôs
	+ Microcontrolador
	+ Porta serial COM
	+ Baterias
	+ Motores de passo
* Dispositivos
	+ Sensor de distância Hcsr04
	+ Transceiver NRF24L01
* Bibliotecas para Arduino
	+ **CircularBuffer**
	+ **Hcsr04**
	+ **HcsrAuto**
	+ **HcsrArray**
	+ **RunTimer**
	+ **Timer2**
	+ **BatterySense**
	+ **PushButton**
	+ **PushButtonArray**
	+ **JoyStick**
	+ **RadioMessage**
* Garagem
	+ Fonte de bancada com fonte ATX

* Projetos de robôs
* Outras wikis
	+ Programação orientada a objeto (Java)
	+ Laboratório de programação (Arduino)
Classe PushButtonArray

Classe para controlar um array de botões.

* Arquivo: pPushButton.h
* Dependencias: pGlobals.h, pOwners.h

**Declarações públicas:**

```
class ButtonOwner{
public:
    virtual void buttonPressed(byte btID){}
    virtual void buttonReleased(byte btID){}
};

class PushButtonArray{
public:
    byte btCount=0;
    PushButton** but;

    PushButtonArray();
    PushButtonArray(ButtonOwner *owner);

    boolean begin(byte maxButtons);
    int addButton(byte buttonPin, boolean pullUp=true);
    void run();
    boolean isPressed(byte btID);

protected:
    virtual void onButtonPressed(byte btID){}
    virtual void onButtonReleased(byte btID){}
};

```

### **Como usar**

Chame ***begin()*** antes de qualquer outro método para informar quantos botões serão alocados no array. Não se esqueça de verificar o retorno de ***begin()*** para ter certeza que o array foi alocado com êxito. Adicione botões ao array chamando ***addButton()***.

Chame ***run()*** pelo menos uma vez por loop para disparar os eventos. Chame ***isPressed()*** para verificar se um botão está pressionado.

**ButtonOwner**

É uma classe abstrata para receber eventos de ***PushButton***. Isso é útil quando a classe que responde os eventos, não pode ser descendente de ***PushButton***, ou há muitos botões para controlar. Para usar dessa maneira, derive ***ButtonOwner***, reescreva os eventos e use o construtor com o ***owner*** para criar instâncias do botão.

**PushButtonArray(ButtonOwner \*owner)**

Constructor with button's owner. If you use this constructor, events will be send to owner and not to ***PushButtonArray*** class.

**owner**: ButtonOwner instance. Events are sent to owner.

**boolean begin(byte maxButtons)**

Call before any other method. This method alloc the array, check the return to make sure that the array was successfully allocated.

* **maxButtons**: How many buttons in the array.
* **return**: true if array was successfully allocated, false if not.

**int addButton(byte buttonPin, boolean pullUp=true)**

Add button on array.

* **buttonPin**: button pin.
* **return**: The button's ID or negative value if any error occurred.

**void run()**

Call once per loop. This method trigger the events.

**boolean isPressed(byte btID)**

Call to check if one button is pressed or not.

***btID***: ID of button
**return**: true if the button is pressed , false if not.

**virtual void onButtonPressed(byte btID)**

Event triggered when one button is pressed. To capture this event, derive ***PushButtonArray*** class and rewrite it.
This event is not triggered if the constructor with owner is used.

***btID***: ID of button

**virtual void onButtonReleased(byte btID)**

Event triggered when button is released. To capture this event, derive ***PushButtonArray*** class and rewrite it.
This event is not triggered if the constructor with owner is used.

***btID***: ID of button
Lu Zhi

> "
>
>

When obtained she starts off with 4000 charm.

* A heartless and cruel Empress Dowager who used to be a kindhearted young lady.

### Skills

Effect: Liu Bang's STR,CHAR increased

Effect: Liu Bang's STR,CHAR increased

Effect: Liu Bang's INT increased

Effect: Liu Bang's CHAR increased

Effect: Liu Bang's POL increased

Effect: Liu Bang's STR increased

### Skins

* Lu Zhi

Effect: Lu Zhi Classic figure
Wiki Perrobótica

**Perrobótica**
## **Saudações!!!**

**Pular saudações >>>**

Seja bem vindo à minha wiki de robótica!!!

O objetivo desta wiki é registrar, divulgar e dar (e receber) suporte ao projeto de robô autônomo de baixo custo que estou desenvolvendo. É um projeto totalmente aberto e você pode participar da forma que quiser, seja utilizando o que foi desenvolvido aqui, ou ajudando no desenvolvimento. Fique à vontade!!!

Tenho feito vários protótipos usando técnicas e recursos variados. Aqui você encontra as conclusões que cheguei, dicas, bibliotecas e tutoriais para desenvolver seu próprio robô. A boa notícia é que a eletrônica chegou em um ponto em que você não precisa mais fazer uma faculdade de engenharia elétrica pra usar circuitos extremamente sofisticados nos teus projetos e nem precisa gastar um monte de dinheiro para ter acesso a eles.

Montar um robô hoje em dia está quase virando jogo de encaixe, onde você conecta placas que já vem prontas e são muito baratas. É claro que conhecimento nunca é demais e quanto mais você souber, melhor será o teu robô, mas mesmo sabendo muito pouco, você já pode começar a fazer tuas primeiras experiências e montar teus primeiros protótipos.

Se precisa começar do zero, sugiro aprender pelo menos o básico sobre eletricidade. Afinal, esse será o alimento do teu futuro robô. O próximo passo é aprender o que puder sobre motores elétricos, tipos, como funcionam, como são controlados e etc. Não é preciso um profundo conhecimento para começar, mas como o nome diz, o básico é básico. E não se preocupe, com o tempo você vai entender melhor. Basta começar.

E que tal começar a aprender a programar microcontroladores?. Você pode não saber, mas eles estão à tua volta e cada vez mais presentes. Houve uma época em que usar microcontroladores era só pra profissionais. Eram complicados e difíceis de usar, mas o Arduino veio pra mudar isso e hoje com um conhecimento bem básico de programação você já pode começar a fazer teus primeiros *firmwares*.

Se já tem alguma experiência e quer partir para projetos mais avançados, esta wiki oferece uma suite de bibliotecas feitas para controlar boa parte do hardware envolvido na criação de um robô com recursos bem sofisticados. E está melhorando com o tempo. A wiki pode ser nova, mas o projeto que ela divulga não é tanto assim.

A intenção é chegar em um robô autônomo de verdade, com tudo o que isso implica em se tratando de robôs móveis de pequeno porte. Também é um objetivo que seja de baixo custo e de fácil montagem. E não pense que por ser de baixo custo será um robô "meia boca". Embora não aparentem, os protótipos estão cada vez mais sofisticados e usando recursos bem profissionais.

Chegaremos lá!!!

**Conteúdo**

* Introdução
	+ Tipos de robôs
	+ Microcontrolador
	+ Porta serial COM
	+ Baterias
	+ Motores de passo
* Dispositivos
	+ Sensor de distância Hcsr04
	+ Transceiver NRF24L01
* Bibliotecas para Arduino
	+ Sensor HcSr04
	+ Transceiver NRF24L01
* Projetos de robôs
* Outras wikis
	+ Programação orientada a objeto (Java)
	+ Laboratório de programação (Arduino)
Kentauros

## Ipotane

Lord Tirek

Centaurs, part of the hybrid group, have the upper body of a humanoid and the lower body of a horse. They tend to be very good at battling and wars, especially archery. Centaurs possess a secret power to drain another creature of their magic, making themselves bigger and stronger.

*Inspiration: "My Little Pony: Friendship is Magic"*

*Meaning: "Piercing Bull" "Horse Men"*

## Encyclopedia Entry

### **Physical Description**

The Ipotane, more commonly known as Centaurs or Hippocentaurs, have the upper bodies of a humanoid that is often an Elf or Human. With the lower body of a horse or bull. The two halves are attached at the horse's withers and/or the humanoid's waist. Centaurs often have rather large bodies and so need two hearts to spread oxygen through them. Some types of Centaur have horns that they use to hone their magic.

### **Culture**

Centaurs are trained in the arts of war and sword fighting. They are very fast and often have races and rousts. Centaur societies run on a monarchy, with one Centaur being the King or Queen and have their children be their successors.

### **Magical Abilities**

Centaurs don't have much in the ways of magic powers. Those with horns mainly have the ability to use Basic Magic such as spell casting and potion brewing. However, Centaurs that have trained in the art of Magic Assimilation have the ability to steal other magical creatures or their magic adding it to their own magic supply. When they do this they grow bigger, stronger, and more powerful.

### **Weaknesses**

Centaurs don't have many weaknesses and once they've unlocked their magic stealing ability they will be almost unstoppable. The easiest way to combat them is to lure them into an anti-magic chamber and take them out while they're powerless.

### **Dietary Information**

Most Centaurs are omnivorous and can eat whatever they want to at that moment. They prefer to eat vegetables and other plants. However, the way that Centaurs steal magic is by consuming it.

## Other Names

* Centaur
* Hippocentaur
* Anggitay
Classe Timer2

* **SourceForge wiki: Timer2**

Esta classe realmente foi um achado. Pesquisando na internet sobre o uso do **timer2** do arduino, me deparei com um código antigo feito por William Kalfelz (http://www.wusik.com/ww/) para uma das primeiras versões do arduino baseado no código da função **tone()**. Consegui atualizar o código para funcionar com as versões mais novas e dei o meu toque nele para facilitar o uso. O resultado é uma classe pequena, simples e funcional que permite usar o **timer2** do arduino para gerar eventos em intervalos precisos de tempo.

Se for usar, fique avisado que o uso do **timer2** faz com que as funções **tone()** e **notone()** do arduino deixem de funcionar. Além disso o **timer2** também controla o *PWM* dos pinos 3 e 11 do arduino Uno e dos pinos 9 e 10 do arduino Mega. Usando o **timer2** não será mais possível usar o *PWM* nesses pinos. Se não for necessário um controle muito preciso de tempo, recomendo o uso da classe **RunTimer**.

Abaixo a declaração pública de **Timer2**:

```
class TimerOwner{
public:
  	virtual void onTimerEvent(){}
};

class Timer2{
public:
    Timer2();
    Timer2(TimerOwner* owner);
    Timer2(voidFunction externFunction);
    ~Timer2();

    void startMicros(ulong microseconds);
    void startMillis(ulong milliseconds);
    void stop();
    ulong overlaps();

    virtual void onTimerEvent(){}
};

```

O uso básico da classe é bem simples e muito parecido com a classe **RunTimer**. Crie uma instância da classe informando no construtor a função que deve ser chamada a cada evento do *timer*. Para iniciar a geração de eventos, chame o método **startMillis()** para informar o tempo em milissegundos ou **startMicros()** para o tempo em microssegundos. A função deve ser do tipo void e não ter parâmetros. O método **stop()** para e libera o *timer*.

**IMPORTANTE:** O código executado a cada evento tem que ser rápido para que um evento não se sobreponha a outro.

Abaixo um exemplo de uso:

```
 #include <timer2.h>

 void timer2Event()
 {
  //aqui o código que será executado a cada evento.
 }

 Timer2 tm2(timer2Event);

 void setup()
 {
  tm2.startMillis(250);  // 250 milissegundos
 }

 void loop()
 {
   // não tem nenhum método run() que precise ser chamado.
 }

```

#### **Overlaps**

Overlap ocorre quando um evento do *timer* é disparado antes que o processamento do evento anterior tenha sido finalizado. Esta é uma situação que deve ser evitada. Para monitorar a ocorrência de overlaps, a classe tem um contador de overlaps que é retornado pelo método **overlaps()**. Caso estejam ocorrendo, será preciso otimizar ou reduzir o código executado a cada evento ou aumentar o tempo entre os eventos.