W skrypcie 'Game_Battler 3' znajduje się dwukrotnie fragment:
self.damage *= elements_correct(attacker.element_set)
To jest pierwszy etap mnożnika. Jak widać zadawane obrażenia mnożone są przez "zkorektowany" element - ściślej przez funkcję 'elements_correct' (znajduje się na samym dole tej klasy), która wybiera najbardziej efektywną słabość. Jeśli przyjrzeć się tej funkcji widać, że odwołuje się ona do zdefiniowanych w klasach 'Game_Actor' i 'Game_Enemy' definicji 'element_rate'. Tam z kolei jest tablica, która przekazuje informacje o efektywności, wg schematu:
200 - słabość A
150 - słabość B
100 - neutral C
50 - odporność D
0 - odporność E
-100 - niewarażliwość F
Po pobraniu przelicznika najbardziej efektywny element wybierany jest we fragmencie:
weakest = -100
for i in element_set
weakest = [weakest, self.element_rate(i)].max
end
Jeśli chciałbyś wszystkie elementy zsumować, wystarczyłoby zamienić go na:
weakest = 100
for i in element_set
weakest += self.element_rate(i)
end
Spróbuj pokombinować.