Вчера я отправил вопрос об этом коде, но сделал это... очень плохо. С тех пор я разговаривал со своим другом, который очень хорошо разбирается в программировании, и пробовал кое-что, но я действительно уперся в стену. Я пытался смотреть на другие вопросы того же согласия, но ни одно из их решений не помогло мне...
То, что я пытаюсь сделать, это перезаписать «эффективность». Сервер оценивает эффективность как 4 или 5 (я не уверен, какой именно, но определенно один из двух - в любом случае не имеет значения). Я хочу, чтобы он воспринимал его как 7 или выше. Я понял, как вызывать данные об эффективности с сервера, но, похоже, это все еще не работает. Эффективность 4/5 дает мне текст "Это не очень эффективно...", который продолжает появляться, когда я пытаюсь использовать код.
Это мой код (в нем намного больше, но я удалил то, что не имеет значения):
public partial class Main {
public static int effectiveness;
public static void BeforeMoveHits(BattleSetup setup) {
try {
if (setup.Defender != null) {
switch (setup.Move.AdditionalEffectData3) {
case 69: { //Freeze Dry
if (setup.Defender.Type1 == Enums.PokemonType.Water ||
setup.Defender.Type2 == Enums.PokemonType.Water) {
DamageCalculator.Effectiveness[256];
}
}
break;
}
}
}
}
}
Как написано в плитке, при попытке скомпилировать выдает ошибку
только присваивание, вызов, увеличение, уменьшение, ожидание и новые выражения объекта могут использоваться в качестве инструкции.
То
public static int effectiveness
остался после того, как я попытался использовать «эффективность = 8» вместо DamageCalculator.Effectiveness. Его удаление ни на что не влияет, поэтому я оставил его там на случай, если он мне понадобится позже.
В DamageCalculator.cs вот что задает эффективность:
public static int[] Effectiveness = new int[9] {2, 8, 16, 64, 96, 160, 256, 416, 640};
Вы можете просмотреть полный код здесь полезный.
В BattleProcessor.cs также есть лакомый кусочек информации об эффективности, хотя я сомневаюсь в ее актуальности, так как продолжаю над этим работать...
public static string EffectivenessToPhrase(int effectiveness) {
if (effectiveness < 4) {
return "It has little effect...";
} else if (effectiveness < 6) {
return "It's not very effective...";
} else if (effectiveness == 7) {
return "It's super-effective!";
} else if (effectiveness > 7) {
return "It's super-effective!!!";
} else {
return null;
}
}
Это полный код BattleProcessor.cs, если вам это нужно.
Стоит отметить, что я не могу изменить BeforeMoveHits с void, и я не могу не могу изменить Main ни на что, кроме частичного. Это сломает другие части игры, для которых это сделано. При этом, если изменение эффективности невозможно из-за этих обстоятельств, просто скажите мне. Я... попытаюсь придумать что-нибудь еще, чтобы делать то, что я хочу.