Mod Subrace - Sic Rat

WIP

Zaczynamy od subrace a dokładnie unit. To tu definiujemy co tak naprawdę składa się na naszą jednostkę. Jakie ma statystyki, jak wygląda, jak się nazywa, jakie ma skille, z jakiego modelu 3d korzysta itd. Mamy tu totalną dowolność. Zrobimy to też krok po kroku by lepiej zrozumieć jak to wszystko działa. Kolejne części moda będą mniej dokładnie opisane. Więc do roboty!

Pierwszym krokiem jest stworzenie nowego pliku xml (Creating New DB files). Tu pamiętamy o root element (jego otwarciu i zamknięciu).

Ponieważ tworzymy subrase to powinna wyglądać ona tak:

```
<DB\_SUBRACE>

</DB\_SUBRACE>

```

Następnie dobrze by mieć jakiś wzór do tworzenia. Najbliższą jednostkę w miarę podobną do tej którą chcemy stworzyć. Ponieważ chcemy stworzyć Sic Rat skopiujmy Rat.

```
<DB\_SUBRACE>
 <UNIT-SUMMON\_FAT\_RAT Figures="1" OriginalScaleValue="70">
 <DescriptionInfo Name="DES\_DLC\_FAT\_RAT" Description="DES\_DLC\_FAT\_RAT\_DES" Graphic="FatRat" />
 <Race VALUE="RACE-REALM\_SYNERGY"/>
 <Marker VALUE="IconFatRat"/>

 <Tags Amount="3" Tag="TAG-MOVEMENT\_POINTS"/>
 <Tags Amount="1" Tag="TAG-CAN\_WALK"/>

 <Tags Amount="2" Tag="TAG-UPKEEP\_MANA"/>
 <NaturalHealing VALUE="TRUE"/>
 <GainsXP VALUE="FALSE"/>

 <Tags Amount="10" Tag="TAG-MELEE\_ATTACK"/>
 <Tags Amount="5" Tag="TAG-DEFENCE"/>
 <Tags Amount="6" Tag="TAG-RESIST"/>
 <Tags Amount="8" Tag="TAG-HIT\_POINTS"/>
 <Tags Amount="0.3" Tag="TAG-MELEE\_ATTACK\_CHANCE"/>
 <Tags Amount="0.3" Tag="TAG-DEFENCE\_CHANCE"/>

 <Tags Amount="1" Tag="TAG-FANTASTIC\_CLASS"/>

 <Skills VALUE="SKILL-MELEE\_ATTACK"/>
 <Skills VALUE="SKILL-ENCHANTED\_WEAPON1"/>
 <Skills VALUE="SKILL-POISON\_IMMUNITY"/>
 <Skills VALUE="SKILL-POISON\_4\_ADDON2"/>
 <Skills VALUE="SKILL-CAUSE\_FEAR"/>
 <Skills VALUE="SKILL-BLEEDING\_2\_OWNER"/>
 <Skills VALUE="SKILL-EARTH\_WALKER"/>

 <Tags Amount="1" Tag="TAG-MELEE\_UNIT"/>
 <Audio Move="FatRatMove" AttackMelee="FatRatAttackMelee" GetHit="FatRatGetHit" Die="FatRatDie"/>
 </UNIT-SUMMON\_FAT\_RAT>
</DB\_SUBRACE>

```
Teraz powstaje ciekawe pytanie. Co się stanie jeśli zostawimy w takim właśnie stanie nasz mod. Mamy przecież w plikach dwie UNIT-SUMMON\_FAT\_RAT. Otóż nasz nowy Fat Rat nadpisze orginalny. Co też otwiera szereg możliwości na modowania. Ale my chcemy stworzyć nową jednostkę.
Nadajmy naszej jednostce poprawną nazwę i statystyki

```
<DB\_SUBRACE>
 <!--<UNIT-FAT\_RAT-->< UNIT-SICK\_RAT Figures="1" OriginalScaleValue="70">
 <DescriptionInfo Name="DES\_DLC\_FAT\_RAT" Description="DES\_DLC\_FAT\_RAT\_DES" Graphic="FatRat" />
 <Race VALUE="RACE-REALM\_SYNERGY"/>
 <Marker VALUE="IconFatRat"/>

 <Tags Amount="3" Tag="TAG-MOVEMENT\_POINTS"/>
 <Tags Amount="1" Tag="TAG-CAN\_WALK"/>

 <!--<Tags Amount="2" Tag="TAG-UPKEEP\_MANA"/>-->
 <Tags Amount="1" Tag="TAG-UPKEEP\_MANA"/>
 <!--<NaturalHealing VALUE="TRUE"/>-->
 <NaturalHealing VALUE="FALSE"/>
 <GainsXP VALUE="FALSE"/>

 <!--<Tags Amount="10" Tag="TAG-MELEE\_ATTACK"/>
 <Tags Amount="5" Tag="TAG-DEFENCE"/>
 <Tags Amount="6" Tag="TAG-RESIST"/>
 <Tags Amount="8" Tag="TAG-HIT\_POINTS"/>-->
 <Tags Amount="2" Tag="TAG-MELEE\_ATTACK"/>
 <Tags Amount="2" Tag="TAG-DEFENCE"/>
 <Tags Amount="4" Tag="TAG-RESIST"/>
 <Tags Amount="4" Tag="TAG-HIT\_POINTS"/>
 <Tags Amount="0.3" Tag="TAG-MELEE\_ATTACK\_CHANCE"/>
 <Tags Amount="0.3" Tag="TAG-DEFENCE\_CHANCE"/>

 <!--<Tags Amount="1" Tag="TAG-FANTASTIC\_CLASS"/>-->
 <Tags Amount="1" Tag="TAG-NORMAL\_CLASS"/>

 <Skills VALUE="SKILL-MELEE\_ATTACK"/>
 <!--<Skills VALUE="SKILL-ENCHANTED\_WEAPON1"/>-->
 <Skills VALUE="SKILL-POISON\_IMMUNITY"/>
 <!--<Skills VALUE="SKILL-POISON\_4\_ADDON2"/>-->
 <Skills VALUE="SKILL-POISON\_1\_ADDON2"/>
 <!--<Skills VALUE="SKILL-CAUSE\_FEAR"/>
 <Skills VALUE="SKILL-BLEEDING\_2\_OWNER"/>
 <Skills VALUE="SKILL-EARTH\_WALKER"/>-->

 <Tags Amount="1" Tag="TAG-MELEE\_UNIT"/>
 <Audio Move="FatRatMove" AttackMelee="FatRatAttackMelee" GetHit="FatRatGetHit" Die="FatRatDie"/>
 <!--</UNIT-FAT\_RAT--></ UNIT-SICK\_RAT>
</DB\_SUBRACE>

```
Wszędzie gdzie wprowadziłem zmianę widzicie mój komentarz a zaraz ponim jest wprowadzona zmiana. Jeśli nie widać takiej zmiany (naprzykład SKILL-ENCHANTED\_WEAPON1) to znaczy, że nie chcę by moja jednostka miała taki wpis/ możliwość. Jednak po kolei co zmieniłem:

1. Zmieniłem nazwę jednostki z FAT\_RAT na SIC\_RAT
2. Moja jednostka kosztuje jeden UPKEEP\_MANA do utrzymania co turę zamiast dwóch
3. NaturalHealing został zmieniony na FALSE.
4. Zmieniłem też MELEE\_ATTACK, DEFENCE, RESIST oraz HIT\_POINTS na znacznie mniej.
5. Zamieniłem TAG-FANTASTIC\_CLASS na NORMAL\_CLASS
6. Wykomentowałem posiadanie przez jednostkę informacji o ENCHANTED\_WEAPON1
7. Zmieniłem POISON\_4\_ADDON2 na POISON\_1\_ADDON2
8. Wykomentowałem 3 ostatnie skille - CAUSE\_FEAR, BLEEDING\_2\_OWNER, EARTH\_WALKER

### TAGs

Tagi określają różne wartości "ilościowe" na postaci. Czyli tak jak w naszym przykładzie zmiana ilości Defence z 5 na 2 obniża to jak jednostka będzie dobrze się bronić. Różne tagi mają różne zastosowania. Na przykład ENCHANTED\_WEAPON1 jest sprawdzany przez weapon immunity. I jeśli attacker ma tego taga to weapon immunity nie działa.

### SKILLs

Skille określają co może zrobić dana jednostka. Czyli naprzykład SKILL-MELEE\_ATTACK pozwala jej przeprowadzać atak melee. Skill ten uwzględnia parametry jednostki, wiec im więcej mamy Taga Melee Attack tym mocniej udeżamy. W powyższym przykładzie zmieniłem skilla z Poison 4 na Poison 1. Dzięki temu ta jednostka będzie słabsza. Jednak gdyby nie fakt, że taki skill występuje w DB to zmieniając tą jedną cyfrę doprowadził bym do errora.

### Localization and Images

Kolejną zmianą jaką musimy wprowadzić jest lokalizacja oraz grafiki. Znów potrzebujemy stworzyć plik, który będzie zawierał klucze lokalizacyjne. Ważne jest też by wskazać język (2 linijka oraz zamknięcie w 5) inaczej gra będzie crashować. Grafiki natomiast jak dodać opisała A'vee.

```
<DB\_LOCALIZATION>
 <LOCALIZATION-DES\_EN\_NOOB\_THE\_NEW Language="English">
 <Loc Key="DES\_SICK\_RAT" Value="Sick Rat" />
 <Loc Key="DES\_SICK\_RAT\_DES" Value="Sick Rat is a unit that spreads disease and contagion, acting as a carrier for various illnesses and infections." />
 </LOCALIZATION-DES\_EN\_NOOB\_THE\_NEW>
</DB\_LOCALIZATION>

```
Klucze lokalizacyjne służą ułatwieniu lokalizowania gry stąd taka właśnie forma.
Teraz mając odpowiednie klucze poprawimy nazwę naszej jednostki oraz zmienimy jej wygląd.

```
<DB\_SUBRACE>
 <UNIT-SICK\_RAT Figures="1" OriginalScaleValue="70">
 <!--<DescriptionInfo Name="DES\_SICK\_RAT" Description="DES\_SICK\_RAT\_DES" Graphic="FatRat" />-->
 <DescriptionInfo Name="DES\_SICK\_RAT" Description="DES\_SICK\_RAT\_DES" Graphic="SubraceRat" />
 <Race VALUE="RACE-REALM\_SYNERGY"/>
 <!--<Marker VALUE="IconFatRat"/> -->
 <Marker VALUE="SubraceRat\_icon"/>

 <Tags Amount="3" Tag="TAG-MOVEMENT\_POINTS"/>
 <Tags Amount="1" Tag="TAG-CAN\_WALK"/>

 <Tags Amount="1" Tag="TAG-UPKEEP\_MANA"/>
 <NaturalHealing VALUE="FALSE"/>
 <GainsXP VALUE="FALSE"/>

 <Tags Amount="2" Tag="TAG-MELEE\_ATTACK"/>
 <Tags Amount="2" Tag="TAG-DEFENCE"/>
 <Tags Amount="4" Tag="TAG-RESIST"/>
 <Tags Amount="4" Tag="TAG-HIT\_POINTS"/>
 <Tags Amount="0.3" Tag="TAG-MELEE\_ATTACK\_CHANCE"/>
 <Tags Amount="0.3" Tag="TAG-DEFENCE\_CHANCE"/>

 <Tags Amount="1" Tag="TAG-NORMAL\_CLASS"/>

 <Skills VALUE="SKILL-MELEE\_ATTACK"/>
 <Skills VALUE="SKILL-POISON\_IMMUNITY"/>
 <Skills VALUE="SKILL-POISON\_1\_ADDON2"/>

 <Tags Amount="1" Tag="TAG-MELEE\_UNIT"/>
 <Audio Move="FatRatMove" AttackMelee="FatRatAttackMelee" GetHit="FatRatGetHit" Die="FatRatDie"/>
 </UNIT-SICK\_RAT>
</DB\_SUBRACE>

```
Audio nie będę zmieniał bo odpowiadają mi te dzięki. Pasują do szczura.

Dzięki temu wszystkiemu stworzyliśmy naszą nową jednostkę!

Został nam jeszcze tylko jeden krok. Trzeba po każdym etapie sprawdzić czy wszystko działa poprawnie. Usuwamy plik powerTrainingData.bin, wchodzimy do gry (to zajmie trochę), uruchamiamy DevMenu i dodajemy swoją jednostkę. Efekt powinien być taki:

Tu znajdują się pliki moda, w razie gdybyście mieli problemy ze stworzeniem ich.