Для реализации динамичного дропа с босса в зависимости от процента нанесенного урона игроком, можно использовать следующий подход:
1. Хранить общий урон, нанесённый боссу, и урон, нанесённый каждым игроком.
2. После того, как босс будет побеждён, вычислить процент урона, нанесённого каждым игроком.
3. На основе этого процента распределить награду.
Вот пример кода на Java, который демонстрирует этот подход:
import java.util.HashMap;
import java.util.Map;
public class Boss {
private int totalHealth;
private int totalDamageDealt;
private Map<String, Integer> playerDamage;
public Boss(int totalHealth) {
this.totalHealth = totalHealth;
this.totalDamageDealt = 0;
this.playerDamage = new HashMap<>();
}
public void dealDamage(String player, int damage) {
totalDamageDealt += damage;
playerDamage.put(player, playerDamage.getOrDefault(player, 0) + damage);
}
public void rewardPlayers(int totalReward) {
for (Map.Entry<String, Integer> entry : playerDamage.entrySet()) {
String player = entry.getKey();
int damage = entry.getValue();
double percentage = (double) damage / totalDamageDealt;
int reward = (int) (totalReward * percentage);
System.out.println("Player: " + player + ", Reward: " + reward);
}
}
public static void main(String[] args) {
Boss boss = new Boss(10000);
boss.dealDamage("Player1", 3000);
boss.dealDamage("Player2", 7000);
boss.rewardPlayers(10000);
}
}
В этом примере:
- Создаётся класс
Boss
, который отслеживает общее здоровье, общий урон и урон, нанесённый каждым игроком. - Метод
dealDamage
обновляет общий урон и урон конкретного игрока. - Метод
rewardPlayers
вычисляет и распределяет награду в зависимости от процента урона, нанесённого каждым игроком.
Вы можете адаптировать этот код под свои нужды, добавляя дополнительные функции или изменяя логику.