PsyOps

ScoreKeeper.cs

Nov 22nd, 2015
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. // Needed core files
  7. using BattleCore;
  8. using BattleCore.Events;
  9. using BattleCorePsyOps;
  10.  
  11. namespace BattleZone
  12. {
  13.     public class Scorekeeper
  14.     {
  15.         // Custom chat module
  16.         ShortChat msg = new ShortChat();
  17.         private int[] m_PointsAwarded = {
  18.         10,     // Green
  19.         75,     // Kill
  20.         -10,    //Death
  21.         -275    //TK
  22.         };
  23.         private bool m_GreenPointBonus = true;
  24.         private bool m_KillPointBonus = true;
  25.         // If we want to add damage to public points
  26.         private bool m_DamagePointBonus = true;
  27.         // what percent of damage to add to points
  28.         private double m_DamagePercPoints = 1;
  29.  
  30.         public void LoadScoreCard(ZonePlayer zP)
  31.         {
  32.             if (zP.ScoreCard == null)
  33.             {
  34.                 zP.ScoreCard = new ScoreCard();
  35.             }
  36.             else
  37.             {
  38.                 ///////////////////////////////////
  39.                 //    add db load stuff here  /////
  40.                 ///////////////////////////////////
  41.             }
  42.         }
  43.         public void UpdateKillPoints(PlayerDeathEvent p, ZonePlayer attacker, ZonePlayer victim, Queue<EventArgs> q)
  44.         {
  45.             // Award points only if mode is on
  46.             if (!m_KillPointBonus) return;
  47.  
  48.             // Prize points for death - should be negative = deduction
  49.             victim.ScoreCard.PublicPoints = (victim.ScoreCard.PublicPoints + m_PointsAwarded[2]) >= 0 ?
  50.                 victim.ScoreCard.PublicPoints + m_PointsAwarded[2] : 0;
  51.             // Update highest bty
  52.             victim.ScoreCard.HighestBounty = p.Bounty > victim.ScoreCard.HighestBounty ? p.Bounty : victim.ScoreCard.HighestBounty;
  53.  
  54.             // Handle team kill points
  55.             if (attacker.Frequency == victim.Frequency)
  56.             {
  57.                 attacker.ScoreCard.PublicPoints =  (attacker.ScoreCard.PublicPoints + m_PointsAwarded[3]) >= 0 ?
  58.                     attacker.ScoreCard.PublicPoints + m_PointsAwarded[3] : 0;
  59.                 return;
  60.             }
  61.  
  62.             // Regular kill award
  63.             attacker.ScoreCard.PublicPoints += m_PointsAwarded[1];
  64.         }
  65.         public void UpdateDamagePoints(WatchDamageEvent w, ZonePlayer attacker, ZonePlayer victim, Queue<EventArgs> q)
  66.         {
  67.             if (!m_DamagePointBonus) return;
  68.  
  69.             // Team Damage penalty - include point deduction for self damage?
  70.             if (attacker.Frequency == victim.Frequency)
  71.             {
  72.                 attacker.ScoreCard.PublicPoints -= (int)(w.Damage * (m_DamagePercPoints * .01D));
  73.                 return;
  74.             }
  75.  
  76.             // Points for regular damage
  77.             attacker.ScoreCard.PublicPoints += (int)(w.Damage * (m_DamagePercPoints * .01D));
  78.         }
  79.         public void PlayerPrizeEvent(PrizeCollectedEvent p, ZonePlayer zP, Queue<EventArgs> q)
  80.         {
  81.             zP.ScoreCard.TotalGreens++;
  82.             zP.ScoreCard.Bounty++;
  83.  
  84.             if (!m_GreenPointBonus) return;
  85.  
  86.             zP.ScoreCard.PublicPoints += m_PointsAwarded[0];
  87.         }
  88.         // Account printout
  89.         public void ViewScoreCard(string requester, ZonePlayer accountholder, Queue<EventArgs> q)
  90.         {
  91.             ScoreCard info = accountholder.ScoreCard;
  92.  
  93.             if (info == null)
  94.             {
  95.                 q.Enqueue(msg.pm(requester, "[ " + accountholder.Name + " ] does not have any recorded score card."));
  96.                 return;
  97.             }
  98.  
  99.             q.Enqueue(msg.pm(requester, "   -<[  " + accountholder.Name + "  ]>-"));
  100.             q.Enqueue(msg.pm(requester, "--------------------------------------+"));
  101.             q.Enqueue(msg.pm(requester, ("Score Card Info         ").PadRight(38) + "|"));
  102.             q.Enqueue(msg.pm(requester, "--------------------------------------+"));
  103.             q.Enqueue(msg.pm(requester, "Current Bounty         " + info.Bounty.ToString().PadLeft(15)));
  104.             q.Enqueue(msg.pm(requester, "Highest Bounty Attained" + info.Bounty.ToString().PadLeft(15)));
  105.             q.Enqueue(msg.pm(requester, "Public Points          " + info.PublicPoints.ToString().PadLeft(15)));
  106.             q.Enqueue(msg.pm(requester, "Average Kill Bounty    " + info.KillBountyAverage.ToString().PadLeft(15)));
  107.             q.Enqueue(msg.pm(requester, "Your Ave Bty on Kill   " + info.AveBtyOnKill.ToString().PadLeft(15)));
  108.             q.Enqueue(msg.pm(requester, "Your Ave Bty on Death  " + info.DeathAve.ToString().PadLeft(15)));
  109.             q.Enqueue(msg.pm(requester, "Total Greens           " + info.TotalGreens.ToString().PadLeft(15)));
  110.         }
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment