Example #1
0
 public function RecalulateUpgrades()
 {
     $Data = array('damage_per_click' => $this->GetTuningData('damage_per_click'), 'damage_multiplier_fire' => $this->GetTuningData('damage_multiplier_fire'), 'damage_multiplier_water' => $this->GetTuningData('damage_multiplier_water'), 'damage_multiplier_air' => $this->GetTuningData('damage_multiplier_air'), 'damage_multiplier_earth' => $this->GetTuningData('damage_multiplier_earth'), 'damage_multiplier_crit' => $this->GetTuningData('damage_multiplier_crit'), 'hp_multiplier' => 1, 'boss_loot_drop_percentage' => $this->GetTuningData('loot_chance'), 'damage_multiplier_dps' => 0, 'damage_per_click_multiplier' => 1);
     foreach ($this->GetUpgrades() as $Upgrade) {
         $Value = Upgrade::GetMultiplier($Upgrade->GetUpgradeId()) * $Upgrade->GetLevel();
         if ($Value === 0) {
             continue;
         }
         switch (Upgrade::GetType($Upgrade->GetUpgradeId())) {
             case Enums\EUpgradeType::HitPoints:
                 $Data['hp_multiplier'] += $Value;
                 break;
             case Enums\EUpgradeType::DPS:
                 $Data['damage_multiplier_dps'] += $Value;
                 break;
             case Enums\EUpgradeType::ClickDamage:
                 $Data['damage_per_click_multiplier'] += $Value;
                 break;
             case Enums\EUpgradeType::DamageMultiplier_Fire:
                 $Data['damage_multiplier_fire'] += $Value;
                 break;
             case Enums\EUpgradeType::DamageMultiplier_Water:
                 $Data['damage_multiplier_water'] += $Value;
                 break;
             case Enums\EUpgradeType::DamageMultiplier_Air:
                 $Data['damage_multiplier_air'] += $Value;
                 break;
             case Enums\EUpgradeType::DamageMultiplier_Earth:
                 $Data['damage_multiplier_earth'] += $Value;
                 break;
             case Enums\EUpgradeType::DamageMultiplier_Crit:
                 $Data['damage_multiplier_crit'] += $Value;
                 break;
             case Enums\EUpgradeType::PurchaseAbility:
                 # TODO: ?
                 break;
             case Enums\EUpgradeType::BossLootDropPercentage:
                 $Data['boss_loot_drop_percentage'] += $Value;
                 break;
         }
     }
     $this->DamageMultiplierFire = $Data['damage_multiplier_fire'];
     $this->DamageMultiplierWater = $Data['damage_multiplier_water'];
     $this->DamageMultiplierAir = $Data['damage_multiplier_air'];
     $this->DamageMultiplierEarth = $Data['damage_multiplier_earth'];
     $this->DamageMultiplierCrit = $Data['damage_multiplier_crit'];
     $this->HpMultiplier = $Data['hp_multiplier'];
     $this->BossLootDropPercentage = $Data['boss_loot_drop_percentage'];
     $this->DamageMultiplierDps = $Data['damage_multiplier_dps'];
     $this->DamagePerClickMultiplier = $Data['damage_per_click_multiplier'];
     $this->DamagePerClick = $Data['damage_per_click'] * $this->GetDamagePerClickMultiplier();
     $this->Dps = $this->GetBaseDps() * $this->GetDamageMultiplierDps();
     $this->MaxHp = $this->GetTuningData('hp') * $this->GetHpMultiplier();
 }
Example #2
0
 public function HandleUpgrade($Game, $Upgrades)
 {
     $HpUpgrade = false;
     foreach ($Upgrades as $UpgradeId) {
         $Upgrade = $this->GetTechTree()->GetUpgrade($UpgradeId);
         if ($Upgrade->GetCostForNextLevel() > $this->GetGold() || Upgrade::IsLevelOneUpgrade($UpgradeId) && $Upgrade->GetLevel() >= 1 || Upgrade::HasRequiredUpgrade($UpgradeId) && $this->GetTechTree()->GetUpgrade(Upgrade::GetRequiredUpgrade($UpgradeId))->GetLevel() < Upgrade::GetRequiredLevel($UpgradeId)) {
             continue;
         }
         $this->DecreaseGold($Upgrade->GetCostForNextLevel());
         $Upgrade->IncreaseLevel();
         if (Upgrade::IsElementalUpgrade($UpgradeId)) {
             $ElementalUpgrades = $this->GetTechTree()->GetElementalUpgrades();
             $TotalLevel = 0;
             foreach ($ElementalUpgrades as $ElementalUpgrade) {
                 $TotalLevel += $ElementalUpgrade->GetLevel();
             }
             // Loop again to set the next level cost for each elemental
             foreach ($ElementalUpgrades as $ElementalUpgrade) {
                 $ElementalUpgrade->SetPredictedCostForNextLevel($TotalLevel);
             }
         } else {
             if ($UpgradeId === Enums\EUpgrade::DPS_AutoFireCanon) {
                 $this->getTechTree()->BaseDps = Upgrade::GetInitialValue($UpgradeId);
                 $this->getTechTree()->Dps = $this->getTechTree()->BaseDps;
             } else {
                 if (Upgrade::GetType($UpgradeId) === Enums\EUpgradeType::HitPoints) {
                     $HpUpgrade = true;
                 } else {
                     if (Upgrade::GetType($UpgradeId) === Enums\EUpgradeType::PurchaseAbility) {
                         $this->GetTechTree()->AddAbilityItem(Upgrade::GetAbility($UpgradeId));
                     }
                 }
             }
         }
     }
     $this->GetTechTree()->RecalulateUpgrades();
     if ($HpUpgrade && !$this->IsDead()) {
         $this->Hp = $this->getTechTree()->GetMaxHp();
     }
 }