2012-04-30 15:41:58 +02:00
package com.gmail.nossr50.util ;
import org.bukkit.ChatColor ;
import org.bukkit.entity.Player ;
import com.gmail.nossr50.config.Config ;
import com.gmail.nossr50.datatypes.PlayerProfile ;
import com.gmail.nossr50.datatypes.SkillType ;
2012-06-14 01:22:35 +02:00
public abstract class Hardcore {
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
public static void invokeStatPenalty ( Player player ) {
double hardcorePenalty = Config . getInstance ( ) . getHardcoreDeathStatPenaltyPercentage ( ) ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
if ( hardcorePenalty < = 0 | | hardcorePenalty > 100 ) {
return ;
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
PlayerProfile playerProfile = Users . getProfile ( player ) ;
int totalLost = 0 ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
for ( SkillType skillType : SkillType . values ( ) ) {
if ( skillType . equals ( SkillType . ALL ) ) {
2012-04-30 15:41:58 +02:00
continue ;
2012-06-14 01:22:35 +02:00
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
int playerSkillLevel = playerProfile . getSkillLevel ( skillType ) ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
//Should we really care about negative skill levels?
if ( playerSkillLevel < = 0 ) {
continue ;
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
int levelsLost = ( int ) ( playerSkillLevel * ( hardcorePenalty * 0 . 01D ) ) ;
totalLost + = levelsLost ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
playerProfile . modifySkill ( skillType , playerSkillLevel - levelsLost ) ;
2012-04-30 15:41:58 +02:00
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
player . sendMessage ( ChatColor . GOLD + " [mcMMO] " + ChatColor . DARK_RED + " You've lost " + ChatColor . BLUE + totalLost + ChatColor . DARK_RED + " from death. " ) ;
2012-04-30 15:41:58 +02:00
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
public static void invokeVampirism ( Player killer , Player victim ) {
double vampirismLeech = Config . getInstance ( ) . getHardcoreVampirismStatLeechPercentage ( ) ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
if ( vampirismLeech < = 0 | | vampirismLeech > 100 ) {
return ;
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
PlayerProfile killerProfile = Users . getProfile ( killer ) ;
PlayerProfile victimProfile = Users . getProfile ( victim ) ;
int totalStolen = 0 ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
for ( SkillType skillType : SkillType . values ( ) ) {
if ( skillType . equals ( SkillType . ALL ) ) {
2012-05-22 08:30:16 +02:00
continue ;
2012-06-14 01:22:35 +02:00
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
int killerSkillLevel = killerProfile . getSkillLevel ( skillType ) ;
int victimSkillLevel = victimProfile . getSkillLevel ( skillType ) ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
//Should we really care about negative skill levels?
if ( victimSkillLevel < = 0 | | victimSkillLevel < killerSkillLevel / 2 ) {
continue ;
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
int levelsStolen = ( int ) ( victimSkillLevel * ( vampirismLeech * 0 . 01D ) ) ;
totalStolen + = levelsStolen ;
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
killerProfile . modifySkill ( skillType , killerSkillLevel + levelsStolen ) ;
victimProfile . modifySkill ( skillType , victimSkillLevel - levelsStolen ) ;
2012-05-01 17:47:57 +02:00
}
2012-06-05 15:57:10 +02:00
2012-06-14 01:22:35 +02:00
if ( totalStolen > 0 ) {
killer . sendMessage ( ChatColor . GOLD + " [mcMMO] " + ChatColor . DARK_AQUA + " You've stolen " + ChatColor . BLUE + totalStolen + ChatColor . DARK_AQUA + " levels from that player. " ) ;
victim . sendMessage ( ChatColor . GOLD + " [mcMMO] " + ChatColor . YELLOW + killer . getName ( ) + ChatColor . DARK_RED + " has stolen " + ChatColor . BLUE + totalStolen + ChatColor . DARK_RED + " levels from you! " ) ;
}
else {
killer . sendMessage ( ChatColor . GOLD + " [mcMMO] " + ChatColor . GRAY + " That player was too unskilled to grant you any knowledge. " ) ;
victim . sendMessage ( ChatColor . GOLD + " [mcMMO] " + ChatColor . YELLOW + killer . getName ( ) + ChatColor . GRAY + " was unable to steal knowledge from you! " ) ;
2012-05-22 08:56:08 +02:00
}
2012-05-01 17:47:57 +02:00
}
2012-04-30 15:41:58 +02:00
}