Bonusy
Pierwszą i podstawową rzeczą, jaką musi zrobić ktoś, kto chce zrozumieć VCMI jest opanowanie formatki Bonus. Jest ona najbardziej podstawową częścią kodowania kwestii takich jak zdolności bohaterów, jednostek itp.
{"type" : "TYPE";
"subtype" : string/liczba;
"val" : liczba;
"valueType" : "VALUE";
"addInfo" : liczba;
"duration" : liczba;
"turns" : liczba;
"sourceType" : "SOURCE";
"sourceID" : string;
"effectRange" : "RANGE;
"limiters" : "LIMITERS";
"propagator" : "PROPAGATOR";
"description" : opis
}
"subtype" : string/liczba;
"val" : liczba;
"valueType" : "VALUE";
"addInfo" : liczba;
"duration" : liczba;
"turns" : liczba;
"sourceType" : "SOURCE";
"sourceID" : string;
"effectRange" : "RANGE;
"limiters" : "LIMITERS";
"propagator" : "PROPAGATOR";
"description" : opis
}
Wygląda dość strasznie, jednak w praktyce jest prostsze niż się wydaje. Tyle w kwestii wyglądu całości. Ale z pewnością jesteś ciekaw, co kryje się po poszczególnymi wartościami? Służę pomocą:
Oznaczenie bonusu | Dodatkowe parametry | Uwagi |
---|---|---|
NONE | - | Pusty typ |
MORALE | val | Zwiększa morale o podaną wartość |
LUCK | val | Zwiększa szczęście o podaną wartość |
MAGIC_SCHOOL_SKILL | subtype val | Umożliwia rzucanie zaklęć ze szkoły magii o podanym subtypie0 - wszystkie 1 - ogień 2 - powietrze 4 - woda 8 - ziemia na danym poziomie (val). Efekt analogiczny do magicznych równin. |
NO TYPE | - | Pusty typ |
DARKNESS | val | Bohatera na mapie przygód otacza ciemność o promieniu val |
MOVEMENT | val | Zwiększa zasięg ruchu na mapie przygód o val (zwykła kratka = 100). Działa na lądzie i wodzie |
Oznaczenie bonusu | Dodatkowe parametry | Uwagi |
---|---|---|
LAND_MOVEMENT | val | Zwiększa zasięg ruchu na mapie przygód o val (zwykła kratka = 100). Działa na lądzie |
SEA_MOVEMENT | val | Zwiększa zasięg ruchu na mapie przygód o val (zwykła kratka = 100). Działa na wodzie |
WATER_WALKING | subtype | Umożliwia poruszanie się po wodzie w sposób określonym przez subtype1 - bez kary 2 - z karą |
FLYING_MOVEMENT | subtype | Umożliwia latanie bohaterowi w sposób określonym przez subtype1 - bez kary 2 - z karą. |
PRIMARY_SKILL | subtype additional info | Daje określoną premię do umiejętności określonej przez subtypeTODO. Additional info1 - walka wręcz 2 - walka na dystans określa (jeśli podane) sytuację, gdzie się ją stosuje |
SIGHT_RADIOUS | val | Zwiększa zasięg widzenia bohatera o wartość val |
MANA_REGENERATION | val | Ilość dziennie regenerowanej many |
FULL_MANA_REGENERATION | - | Przywraca 100% many każdego dnia |
NONEVIL_ALIGNMENT_MIX | - | Można mieszać dobre i neutralne oddziały w armii bez straty morale (jak Anielski Sojusz) |
SECONDARY_SKILL_PREMY | subtype val | Umiejętność podana przez subtype jest efektywniejsza o procent podany przez val |
SURRENDER_DISCOUNT | val | Zwiększa opłatę za poddanie się o procent podany przez val |
IMPROVED_NECROMANCY | subtype | Efekt pozwala na wskrzeszanie jednostek innych niż szkielety, jeśli poda się je poprzez subtype |
SPECIAL_SECONDARY_SKILL | subtype additional info | Specjalizacja w umiejętności danej przez subtype o ilość procentów podanych w additional info |
SPECIAL_SPELL_LEV | subtype additional info | Specjalizacja w zaklęciu danym przez subtype o ilość procentów podanych w additional info |
SPELL_DAMAGE | val | Zwiększa obrażenia zaklęć o daną ilość procent |
SPECIFIC_SPELL_DAMAGE | subtype val | Zwiększa obrażenia danego zaklęcia o daną wartość (jak Luna/Ciele) |
SPECIAL_BLESS_DAMAGE | subtype val | Zwiększa skuteczność zaklęcia (błogosławieństwa, jeżeli nie podano subtype) o daną wartość val (wyrażoną w procentach) co poziom |
MAXED_SPELL | subtype | Zaklęcie o id podanym poprzez subtype ma efekt jakby rzucane było z ekspercką zdolnością (nie działa to na zasięg) |
SPECIAL_PECULIAR_ENCHANT | val subtype | Błogosławieństwa i klątwy z id podanym jako val są rzucane z mocą zależną od poziomu jednostki subtype jest równe 0 lub 1 (dla efektu Coroniusa) |
SPECIAL_UPGRADE | val addInfo | Pozwala na ulepszenia jednostki o id podanym val do jednostki podanej jako addInfo |
Oznaczenie bonusu | Dodatkowe parametry | Uwagi |
---|---|---|
AIR_SPELL_DMG_PREMY, EARTH_SPELL_DMG_PREMY, FIRE_SPELL_DMG_PREMY, WATER_SPELL_DMG_PREMY | - | To jest bonus do obrażeń do zaklęć powietrza/wody/ziemi/ognia |
BLOCK_MORALE, BLOCK_LUCK | - | Blokuje morale/szczęście |
SPELL | subtype val | Bohater uczy się zaklęcia o id podanym poprzez subtype, nawet wtedy gdy zaklęcie jest zablokowane przez mapę. Przez wartośc val okresla się poziom zaklęcia |
SPELLS_OF_LEVEL | subtype - level val - skill level | Bohater zna wszystkie zaklęcia poziomu podanego przez subtype na poziomie umiejętności podanej przez val |
FIRE_SPELLS, AIR_SPELLS, WATER_SPELLS, EARTH_SPELLS | - | Wszystkie zaklęcia z tych szkół magii zostają dodane do księgi zaklęć |
GENERATE_RESOURCE | subtype val | Generuje wybrany zasób o id podanym poprzez subtype. Wartością val określamy ilość tego zasobu dziennie |
CREATURE_GROWTH | subtype val | Dla artefaktów legionowych. Zwiększa przyrost jednostek o wartość val. Można określić poziom jednostek przez subtype |
CREATURE_GROWTH_PERCENT | val | Zwiększa przyrost jednostek we wszystkich miastach o podany procent val |
ENEMY_CANT_ESCAPE | - | Wróg nie może uciec z pola bitwy |
NEGATE_ALL_NATURAL_IMMUNITIES | - | Jednostki odporne na magię tracą tę właściwość |
OPENING_BATTLE_SPELL | subtype val | Na początku bitwy rzuca zaklęcie na poziomie ekspert o id podanym poprzez subtype o mocy określonej przez val |
FREE_SHIP_BOARDING | - | Nie ma straty punktów ruchu przy wchodzeniu i schodzeniu ze statku |
WHIRLPOOL_PROTECTION | - | Chroni armię bohatera przed wirami |
Oznaczenie bonusu | Dodatkowe parametry | Uwagi |
---|---|---|
STACK_HEALTH | - | Ilość punktów życia |
STACKS_SPEED | - | Szybkość jednostki |
CREATURE_DAMAGE | subtype | Ilość obrażeń jednostki opisanej przez wartość subtype (przy niedokładnej ilości wpisujemy np: "min"=3, "max"=5) |
SHOTS | - | Ilość strzał jednostki. Przykład: "SHOTS" : 13 |
EXP_MULTIPLIER | val | Ilość doświadczenia jaką dostaje jednostka/dowódca. Podstawowa wartość val wynosi 100 |
NON_LIVING | - | Jednostka jest nieożywiona (tak jak na przykład Gargulec) |
UNDEAD | - | Jednostka jest nieumarła (tak jak jednostki Nekropolii) |
DRAGON_NATURE | - | Jednostka jest smokiem |
KING1, KING2, KING3 | - | Podatność na czar pogromca: podstawowy, zaawansowany, mistrzowski |
FEARLESS | - | Odporność na strach |
NO_LUCK | - | Jednostka nie ma szczęścia |
NO_MORALE | - | Jednostka nie ma morale |
SELF_MORALE | - | Jednostka ma wysokie morale (jak na przykład Minotaur) |
SELF_LUCK | - | Jednostka ma wysokie szczęście (jak na przykład Niziołek) |
FLYING | subtype | Daje możliwość lotu jednostce, opisanego przez wartość subtype 0 - zwykłe 1 - teleport |
SHOOTER | - | Jednostka jest strzelająca. Jak opisać ilość strzał napisane jest wyżej |
CHARGE_IMMUNITY | - | Odporność na szarżę (jak Pikinierzy) |
ADDITIONAL_ATTACK | - | Dodatkowy atak jednostki |
UNLIMITED_RETALIATIONS | - | Jednostka zawsze kontratakuje |
ADDITIONAL_RETALIATION | val | Dodatkowa kontry podane wartością val |
JOUSTING | - | Umiejętność szarży Championów |
HATE | subtype val | Nienawiść naszej jednostki do jednostki o id podanym poprzez subtype. Dodatkowe obrażenia z tym związane (procentowe) określamy przez val |
SPELL_LIKE_ATTACK | subtype val | Jednostka atakuje zaklęciem o id podanym poprzez subtype i poziomie przez val, ale obrażenia są związane z jednostką, a nie zaklęciem (przykład Gog, Lisz) |
THREE_HEADED_ATTACK | - | Atak 3 przyległych jednostek (jak Cerber) |
ATTACKS_ALL_ADJACENT | - | Atak wszystkich dookoła (jak Hydra) |
TWO_HEX_ATTACK_BREATH | - | Atak przez 2 heksy (jak Smoki) |
RETURN_AFTER_STRIKE | - | Jednostka wraca na miejsce po ataku |
ENEMY_DEFENCE_REDUCTION | val | Zmniejsza wartość obrony wroga o wartość zapisaną przez val |
GENERAL_DAMAGE_REDUCTION | subtype val | To jest redukcja otrzymywanych obrażeń - Subtype1 - działą tylko wręcz 2 - działa tylko na dystans. Val określa procent blokowanych obrażeń |
GENERAL_ATTACK_REDUCTION | subtype val | Zaczarowana istota ma mniejszy atak podany procentem przez val. Subtype określa czy tyczy się on walki wręcz (0), strzelania (1) czy obydwóch (-1) |
DEFENSIVE_STANCE | val | Umiejętność z Woga - bonus wartości obrony podczas defensywy o podaną wartość val |
NO_DISTANCE_PENALTY | - | Brak kary za dystans podczas ataku na odległość |
NO_MELEE_PENALTY | - | Brak kary za walkę wręcz (dotyczy jednostki strzelającej) |
FREE_SHOOTING | - | Brak wszelkiej kary za przeszkody podczas ataku na odległość (tak jak Strzelcy) |
NO_WALL_PENALTY | - | Brak kary za atak przez mury |
FREE_SHOOTING | - | Brak wszelkiej kary za przeszkody podczas ataku na odległość (tak jak Strzelcy) |
BLOCKS_RETALIATION | - | Blokuje kontry |
CATAPULT | - | Może atakować mury |
CHANGES_SPELL_COST_FOR_ALLY | val | Zmniejsza koszty rzucania zaklęć o wartość wyrażoną przez val |
CHANGES_SPELL_COST_FOR_ENEMY | val | Zmniejsza koszty rzucania zaklęć wroga o wartość wyrażoną przez val |
SPELL_RESISTANCE_AURA | val | Aura odporności na zaklęcia, val daje procentową szansę dla przylegających stworzeń na odparcie zaklęcia |
HP_REGENERATION | val | Jednostce co rundę regenerują się punkty życia o wartość wyrażoną przez val |
FULL_HP_REGENERATION | Subtype | Istota na początku tury wraca do pełni zdrowia. Subtype określa animację: 0 - jak troll, 2 - jak zjawa |
MANA_DRAIN | val | Co turę wysysa wrogiemu bohaterowi manę o wartość podaną poprzez val |
MANA_CHANNELING | val | Przekazuję pewien procent many wrogiego bohatera, wyrazony wartością val( jak chochlik) |
LIFE_DRAIN | val | Wysysywanie życia, val określa procent leczenia na podstawie zadanych obrażeń |
DOUBLE_DAMAGE_CHANCE | val | Szansa na podwójnie punktowany atak, wyrażona poprzez val (jak Upiorny rycerz) |
FEAR | - | Wzbudza strach |
HEALER | - | Leczy jednostkę na początku swej tury |
FIRE_SHIELD | - | Tarcza ognia |
MAGIC_MIRROR | val | Przy rzucaniu zaklęcia na jednostkę - jest procentowa szansa val na przekierowanie zaklęcia na losową inną jednostkę |
ACID_BREATH | val | Zionięcie kwasem |
DEATH_STARE | subtype val | Po ataku ma val procent szansy na zabicie wrogów w zaatakowanym oddziale o maksymalnej ilości równej ilości atakujących jednostek przy subtype = 0 |
SPELLCASTER | subtype val additional info | Jednostka zyskuje zdolność do rzucenia zaklęcia podanego poprzez subtype ze znajomością szkoły podanej przez value i z szansą na powodzenie podaną poprzez addInfo w procentach. SPECIFIC_SPELL_POWER, CREATURE_SPELL_POWER i CREATURE_ENCHANT_POWER są wykorzystywane do określania siły zaklęcia |
ENCHANTER | subtype val additional info | Co ilość tur podanych przez addInfo, począwszy od pierwszej, jednostka automatycznie rzuca zaklęcie podane przez subtype o znajomości szkoły val na wszystkie możliwe jednostki |
RANDOM_SPELLCASTER | val | Rzuca losowe zaklęcie na poziomie podanym przez val (jak Dżin) |
SPELL_AFTER_ATTACK | subtype val | Po ataku jednostka ma val szans na rzucenie zaklęcia podanego przez subtype. addInfo niesie ze sobą dwie informacje: wynik dzielenia bez reszty to zasięg rzucania zaklęcia (1 - tylko na dystans, 2 - tylko na wręcz, 0 - na wszystko), a reszta z dzielenia to poziom znajomości zaklęcia |
SPELL_BEFORE_ATTACK | subtype val | Przed atakiem jednostka ma val szans na rzucenie zaklęcia podanego przez subtype. addInfo niesie ze sobą dwie informacje: wynik dzielenia bez reszty to zasięg rzucania zaklęcia (1 - tylko na dystans, 2 - tylko na wręcz, 0 - na wszystko), a reszta z dzielenia to poziom znajomości zaklęcia |
CASTS | - | Czas trwania zaklęć jednostki. |
SPECIFIC_SPELL_POWER | subtype val | Efektywna moc zaklęć oddziału wynosi val razy ilość jednostek w oddziale na zaklęcia podane przez subtype |
CREATURE_SPELL_POWER | val | Oddział ma moc zaklęć podaną przez val na każdą jednostkę, ale podzieloną przez 100 |
CREATURE_ENCHANT_POWER | - | Wykorzystywane do określania siły zaklęcia. |
DAEMON_SUMMONING | subtype val | Wskrzesza jednostkę podaną przez subtype z ciał poległych. Val wo ilość hp na jednostkę |
REBIRTH | subtype val | Procent życia wskrzeszanych, gdy oddział umrze, subtype równe 1 powoduje wskrzeszenie minimum jednej jednostki |
ENCHANTED | - | Oddział jest stale pod wpływem zaklęcia podanego przez subID o znajomości szkoły podanej przez val, lub, jeżeli val jest większy niż 3, to o val-3, lecz zaklęcie jest masowe |
LEVEL_SPELL_IMMUNITY | val | Jednostka jest odporna na zaklęcia o poziomie podanym przez val i niższe |
MAGIC_RESISTANCE | val | Odporność na magię o procent podany przez val |
SPELL_DAMAGE_REDUCTION | subtype val | Redukcja o val procent na obrażenia od zaklęć ze szkoły podanej przez subtype (-1 - wszystkie, 0 - powietrze, 1 - ogień, 2 - woda, 3 - ziemia |
MORE_DAMAGE_FROM_SPELL | subtype val | Cel otrzymuje więcej obrażeń od zaklęcia podanego przez subtype o procent podany przez val |
FIRE_IMMUNITY,WATER_IMMUNITY, EARTH_IMMUNITY, AIR_IMMUNITY | subtype | Odporność na zaklęcia z danej szkoły magii. Subtype określa, czy na wszystkie zaklęcia (0), wszystkie prócz pozytywów (1), tylko na raniące |
MIND_IMMUNITY | - | Odporność na zaklęcia umysłu |
SPELL_IMMUNITY | subtype addInfo | Niewrażliwość na zaklęcie podane przez subtype, addInfo określa czy tę odporność można rozproszyć (0) lub nie (1) |
DIRECT_DAMAGE_IMMUNITY | - | Jednostka jest niewrażliwa na zaklęcia zadające obrażenia. |
RECEPTIVE | - | Jednostka może zostać zaczarowana przez pozytywne zaklęcia niezależnie od swych odporności |
Oznaczenie bonusu | Dodatkowe parametry | Uwagi |
---|---|---|
POISON | val | Efekt zaklęcia Trucizna, val określa poziom, z którego efekt będzie brany |
SLAYER | val | Efekt zaklęcia Pogromca, val określa poziom, z którego efekt będzie brany |
BIND_EFFECT | - | Brak działania, stosowany jako oznaczenie w przypadku konstruowania zaawansowanych efektów |
FORGETFULL | - | Efekt zaklęcia zapomnienie, Val określa poziom, z którego efekt będzie brany |
NOT_ACTIVE | - | Nieaktywny bonus |
ALWAYS_MINIMUM_DAMAGE | subtype val additional info | Jednostka zawsze zadaje minimalne obrażenia, subtype określa typ ataku: wszystkie (-1), wręcz (0) lub dystans (1). Nadto addInfo określa o ile procent obniżone będą te obrażenia |
ALWAYS_MAXIMUM_DAMAGE | subtype val additional info | Jednostka zawsze zadaje maksymalne obrażenia, subtype określa typ ataku: wszystkie (-1), wręcz (0) lub dystans (1). Nadto addInfo określa o ile procent obniżone będą te obrażenia |
ATTACKS_NEAREST_CREATURE | - | Atakuje najbliższe stworzenie |
IN_FRENZY | - | Cel jest pod wpływem berserka |
HYPNOTIZED | - | Cel jest pod wpływem hipnozy |
NO_RETALIATION | - | Jednostka nie wywołuje odwetu |
Modding z Lulu
Jestem Lulu i pokażę Ci jak się bawi tymi wspaniałymi zabawkami, które tu znajdziesz.Chodźmy się bawić! Zacznijmy od bardzo prostej rzeczy. Chcemy, by nasza laleczka była smokiem. Uwielbiam smoki, one są takie wspaniałe i majestatyczne! Zatem naprzód!
W pliku genetycznym naszej laleczki szukamy szufladki abilities:
[
].
Pomiędzy te śliczne nawiasy kwadratowe wpisujemy:
"myLittleDragon:_FlyingIsMagic": <-jest to nazwa naszego bonusu. Fachowo nazywałoby się to klasą, ale my się na razie bawimy...
Następnie otwieramy zgrabne nawiasy klamrowe i zapisujemy w nich: {
"type": "DRAGON_NATURE"
}
Brawo! Nasza laleczka jest teraz smokiem według realiów świata Antagarichu... I nie jest ważne, że wygląda jak czarna salamandra ze skrzydłami...
Ale co w takim razie jest tym affiksem? Wszystko, co pasuje do danej kategorii. dla przykładu poniżej podajemy listy dla:
skill
pathfinding
archery
logistics
scouting
diplomacy,
navigation
leadership
wisdom
mysticism
luck
ballistics
eagleEye
necromancy
estates
ireMagic
airMagic
waterMagic
earthMagic
scholar
tactics
artillery
learning
offence
armorer
intelligence
sorcery
resistance
firstAid
archery
logistics
scouting
diplomacy,
navigation
leadership
wisdom
mysticism
luck
ballistics
eagleEye
necromancy
estates
ireMagic
airMagic
waterMagic
earthMagic
scholar
tactics
artillery
learning
offence
armorer
intelligence
sorcery
resistance
firstAid
resource
wood
ore
mercury
sulfur
crystal
gems
gold
mithril
ore
mercury
sulfur
crystal
gems
gold
mithril
primSkill
attack
defence
spellpower
knowledge
defence
spellpower
knowledge
Modding z Lulu
Jestem Lulu i pokażę Ci jak się bawi tymi wspaniałymi zabawkami, które tu znajdziesz.Chodźmy się bawić!To może zajmijmy się czymś ciekawszym... Czymś, co działa na zaklęcia rzucane przez naszego lalkarza i na którą nasza laleczka ma wpływ. Wróćmy do szufladki abilities:
[
] i wpiszmy tam "LordOfTheBless":, jest to nazwa naszej umiejętności. Teraz, ponownie, otwieramy nawiasy klamrowe i zapisujemy w nich:
{
"type": "MAXED_SPELL";
"subtype": "spell.bless"
}.
Co daje to naszej laleczce? Niiiic. Ona będzie tak samo pożyteczna dla niej, jak dla mnie pożyteczne są pytania ludzi o moja heterochromię i po co mi to...
Nie, nasza laleczka nic z tego nie będzie mieć. Ale jeżeli jakiś lalkarz weźmie naszą laleczkę w obroty... Będzie mógł rzucać błogosławieństwo z najwyższą możliwą skutecznością! Ale jest mały haczyk... ten efekt nie ma wpływu na rozmiar... zakresu zaklęcia. Czyli lalkarz bez mistrzowskiej zdolności chlapania nie będzie mógł rozchlapać tego na wszystkie swoje jednostki.
Ale to jest niska cena za taką moc, czyż nie?
Modding z Lulu
Jestem Lulu i pokażę Ci jak się bawi tymi wspaniałymi zabawkami, które tu znajdziesz.Chodźmy się bawić!Właśnie wróciłam z wakacji w Czarnobylu, cudowna atmosfera, wspaniałe zwierzątka, przepiękne roślinki, tylko ludzie jacyś tacy smutni i przygaszeni. Nudziarze! Chciałabym, by nasze laleczki też mogły tworzyć taką cudowną atmosferę!
Zatem znów wchodzimy w geny naszej laleczki i szukamy abilities:
[
]. Teraz dopiero się zaczyna zabawa! Tradycyjnie, zaczynamy nazwą zdolności: "theHumanspawnShallPerishInFlames:" Następnie piszemy: {
"type": "SPELLCASTER",
"subtype": "spell.armageddon",
"val": 3,
"addInfo": 100
};
Co daje to naszej laleczce? Możliwość rzucania armageddonu z ekspercką znajomością i ze 100% szansy na powodzenie!
Dobrze, ale... jak określimy siłę zaklęcia? W ten sposób:"bringMeMagicAndThePower":
{
"type": "SPECIFIC_SPELL_POWER",
"val": 1,
"subtype": "spell.armageddon"
}
Dzięki temu każda nasza laleczka będzie mieć dawać swemu oddziałowi jeden punkt mocy magicznej dla armageddonu! Będzie gorąco, może nawet za gorąco... bo przecież nasze laleczki same się w tej temperaturze usmażą, a tego byśmy nie chcieli, byłabym smutna!
Dlatego dodamy coś takiego: "IAmHot":
{
"type": "FIRE_IMMUNITY",
"subtype": 0
}
I nasza laleczka jest zupełnie niewrażliwa na ogień! Będzie się mogła wręcz opalać w płomieniach, które ściągnie z niebios, uważam to za słodkie!
ADDITIVE_VALUE
BASE_NUMBER
PERCENT_TO_ALL
PERCENT_TO_BASE
INDEPENDENT_MAX
INDEPENDENT_MIN
BASE_NUMBER
PERCENT_TO_ALL
PERCENT_TO_BASE
INDEPENDENT_MAX
INDEPENDENT_MIN
Ale co która opcja daje? Są one powiązane całym równanie, które zaraz ujrzycie, ale:
Całe to mityczne równanie wygląda następująco:
((BASE_NUMBER * (100 + PERCENT_TO_BASE) / 100) + ADDITIVE_VALUE) * (100 + PERCENT_TO_ALL) / 100
Wynik tego równania jest porównywany z INDEPENDENT_MAX i INDEPENDENT_MIN, a następnie obcinany w zależności od tego czy jest większy.
Modding z Lulu
Jestem Lulu i pokażę Ci jak się bawi tymi wspaniałymi zabawkami, które tu znajdziesz.Chodźmy się bawić!Ty, tak, Ty! Wiem, że to Grota i tak dalej, ale mógłbyś mi spojrzeć w oczy! Tak, mam je nieco wyżej. Musisz szerzej spojrzeć na świat, szerzej!
Chyba będzie trzeba Ci coś dopisać do genotypu... poczekaj no chwilę...
O, już, masz coś nowego: {"type": "SIGHT_RADIOUS",
"val": 3,
}
To powinno Ci zwiększyć zasięg widzenia o trzy jednostki. Metry. Cale. Czy jak to nazywasz...
Albo nie... Mam lepszy pomysł... Dostaniesz... {"type": "SIGHT_RADIOUS",
"val": 50,
"valueType": "PERCENT_TO_ALL"
} Tak, to Ci da zasięg widzenia o połowę większy. To będzie znacznie lepsze.
"duration": "DURATION"
"duration": ["DURATIONA", "DURATIONB",...]
"duration": ["DURATIONA", "DURATIONB",...]
Po raz kolejny mamy możliwość podania jednej z kilku opcji:
PERMANENT
ONE_BATTLE
ONE_DAY
ONE_WEEK
N_TURNS
N_DAYS
UNITL_BEING_ATTACKED
UNTIL_ATTACK
STACK_GETS_TURN
COMMANDER_KILLED
ONE_BATTLE
ONE_DAY
ONE_WEEK
N_TURNS
N_DAYS
UNITL_BEING_ATTACKED
UNTIL_ATTACK
STACK_GETS_TURN
COMMANDER_KILLED
Każda ta opcja daje inny efekt:
ARTIFACT
ARTIFACT_INSTANCE
OBJECT
CREATURE_ABILITY
TERRAIN_NATIVE
TERRAIN_OVERLAY
SPELL_EFFECT
TOWN_STRUCTURE
HERO_BASE_SKILL
SECONDARY_SKILL
HERO_SPECIAL
ARMY
CAMPAIGN_BONUS
SPECIAL_WEEK
STACK_EXPERIENCE
COMMANDER
GLOBAL_EFFECT
OTHER
ARTIFACT_INSTANCE
OBJECT
CREATURE_ABILITY
TERRAIN_NATIVE
TERRAIN_OVERLAY
SPELL_EFFECT
TOWN_STRUCTURE
HERO_BASE_SKILL
SECONDARY_SKILL
HERO_SPECIAL
ARMY
CAMPAIGN_BONUS
SPECIAL_WEEK
STACK_EXPERIENCE
COMMANDER
GLOBAL_EFFECT
OTHER
Co co daje? Oto lista:
NO_LIMIT
ONLY_DISTANCE_FIGHT
ONLY_MELEE_FIGHT
ONLY_ENEMY_ARMY
ONLY_DISTANCE_FIGHT
ONLY_MELEE_FIGHT
ONLY_ENEMY_ARMY
Ich efekt jest prosty i skuteczny:
SHOOTER_ONLY
DRAGON_NATURE
IS_UNDEAD
DRAGON_NATURE
IS_UNDEAD
Ich znaczenie jest raczej oczywiste:
Na szczęście można zapisać to również w bardziej zaawansowanej formie, wtedy bonus działa wyłącznie przy spełnieniu danego warunku:
HAS_ANOTHER_BONUS_LIMITER
CREATURE_TYPE_LIMITER
CREATURE_TYPE_LIMITER
W tym przypadku struktura kodu jest bardziej skomplikowana, bo oprócz jednego z powyższej dwójki w nawiasach klamrowych należy podać również parametry.
Dla HAS_ANOTHER_BONUS_LIMITER należy podać jeszcze typ wymaganego bonusa i (opcjonalnie) jego subtype.
Dla CREATURE_TYPE_LIMITER należy podać jeszcze typ wymaganego bonusa i (opcjonalnie) jego nazwę jednostki i logiczną wartość prawda fałsz czy bonus ma również działać na ulepszenia.
Dla CREATURE_TYPE_LIMITER należy podać jeszcze typ wymaganego bonusa i (opcjonalnie) jego nazwę jednostki i logiczną wartość prawda fałsz czy bonus ma również działać na ulepszenia.
Modding z Lulu
Jestem Lulu i pokażę Ci jak się bawi tymi wspaniałymi zabawkami, które tu znajdziesz.Chodźmy się bawić!Równość nie istnieje, wszyscy o tym wiemy. Dlaczego więc niektóre nadzwyczajne cechy mają być nadawane wszystkim laleczkom? Przecież to byłoby potwornie nielogiczne!
Wspominałam, że lubię smoki? Chcę dać zatem efekt wyjątkowy dla nich! Czyli... co muszę zrobić? Do materiału naszej zdolności dodajemy bardzo ważną część: "limiters": [ "DRAGON_NATURE" ]
Fajnie? Pewnie! Ale możemy zrobić to również w inny sposób. Dajmy teraz nasz efekt wszystkim istotom, które... mogą się teleportować! Dodajemy zatem:
"limiters": [ {
"type":"HAS_ANOTHER_BONUS_LIMITER",
"parameters": [ "FLYING ", 1]
} ]
A może teraz dajmy tę cechę konkretnej jednostce? Na przykład... rdzawemu smokowi? Naprzód, piszemy: "limiters": [ {
"type":"CREATURE_TYPE_LIMITER",
"parameters": [ "rustDragon", false]
} ]
BATTLE_WIDE
VISITED_TOWN_AND_VISITOR
PLAYER_PROPAGATOR
TEAM_PROPAGATOR
HERO
GLOBAL_EFFECT
VISITED_TOWN_AND_VISITOR
PLAYER_PROPAGATOR
TEAM_PROPAGATOR
HERO
GLOBAL_EFFECT
Co one dają?