Example #1
0
 public function onSlap(Session $session)
 {
     $data = $this->game->getPlayerData($session);
     $oldLevel = $data->getBowLevel();
     $newLevel = $oldLevel + 1;
     list($upgradePrice, $name, $description, $damage, $fireTicks, $knockback, $minImportance) = Settings::kitpvp_getBowInfo($newLevel);
     $rank = $session->getRank();
     if (($rank & Settings::RANK_SECTOR_IMPORTANCE) < $minImportance) {
         $session->tell("Upgrade your account to get more advanced bows!");
         return;
     }
     if ($upgradePrice === PHP_INT_MAX) {
         $session->tell("More bow upgrades coming soon!");
         return;
     }
     if ($data->isGoingToBuy === null or $data->isGoingToBuy["column"] !== "bow" or $data->isGoingToBuy["timestamp"] + 5 < microtime(true)) {
         $session->tell("Upgrade your bow to \"%s\".", $name);
         $session->tell($description);
         $session->tell("%s deals %f hearts of damage to victims.", $name, $damage / 2);
         if ($fireTicks > 0) {
             $session->tell("It also sets them on fire for %f seconds", $fireTicks / 20);
         }
         if ($knockback > 0) {
             $session->tell("An extra knockback of {$knockback}%% will also be casted.");
         }
         $session->tell("This upgrade costs you %g coins.", $upgradePrice);
         if ($upgradePrice > $session->getCoins()) {
             $session->tell("You need at least %g more coins to upgrade your bow!", $upgradePrice - $session->getCoins());
         } else {
             $session->tell("Click me within 5 seconds to confirm the purchase.");
             $data->isGoingToBuy = ["column" => "bow", "timestamp" => microtime(true)];
         }
     } else {
         $data->isGoingToBuy = null;
         if ($upgradePrice > $session->getCoins()) {
             $session->tell("You need at least %d more coins to upgrade your bow!", $upgradePrice - $session->getCoins());
             return;
         }
         $session->setCoins($coins = $session->getCoins() - $upgradePrice);
         $data->setBowLevel($newLevel);
         MUtils::word_addSingularArticle($name);
         $session->tell("Your bow is now {$name}! You have %d coins left.", $coins);
         $session->tell("Triple-click a model to toggle sword or bow.");
     }
 }
Example #2
0
 public function onShootBow(EntityShootBowEvent $event)
 {
     $ent = $event->getEntity();
     if (!$ent instanceof Player) {
         return;
     }
     if (!($ses = $this->getMain()->getSessions()->getSession($ent)) instanceof Session) {
         return;
     }
     if (!$ses->inSession($this)) {
         return;
     }
     if (!($d = $this->getPlayerData($ses)) instanceof PvpSessionData) {
         return;
     }
     $bow = $d->getBowLevel();
     $hasFire = Settings::kitpvp_getBowInfo($bow)[4] > 0;
     if ($hasFire) {
         $event->getProjectile()->setDataFlag(Entity::DATA_FLAGS, Entity::DATA_FLAG_ONFIRE);
     }
 }