From e3c3fa38cefc9c175a4e62f850cc563affb116f0 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Fri, 10 Oct 2014 11:36:25 +0200 Subject: [PATCH] Add death penality dimishing returns: Dieing within 5 minutes reduces the damage to tools. The more often you die the less it takes, until you manage to live for 5 minutes. --- .../tconstruct/armor/player/TPlayerStats.java | 9 +++++++++ .../tconstruct/tools/TinkerToolEvents.java | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/main/java/tconstruct/armor/player/TPlayerStats.java b/src/main/java/tconstruct/armor/player/TPlayerStats.java index df5dc580..d8633976 100644 --- a/src/main/java/tconstruct/armor/player/TPlayerStats.java +++ b/src/main/java/tconstruct/armor/player/TPlayerStats.java @@ -30,6 +30,9 @@ public class TPlayerStats implements IExtendedEntityProperties, IPlayerExtendedI public boolean smelteryManual; public boolean battlesignBonus; + // death-penality + public int derpLevel; + public ArmorExtended armor; public KnapsackInventory knapsack; @@ -46,6 +49,8 @@ public class TPlayerStats implements IExtendedEntityProperties, IPlayerExtendedI this.knapsack = new KnapsackInventory(); this.knapsack.init(entityplayer); + + this.derpLevel = 1; } @Override @@ -58,6 +63,7 @@ public class TPlayerStats implements IExtendedEntityProperties, IPlayerExtendedI tTag.setBoolean("materialManual", this.materialManual); tTag.setBoolean("smelteryManual", this.smelteryManual); tTag.setBoolean("battlesignBonus", this.battlesignBonus); + tTag.setInteger("derpLevel", this.derpLevel); compound.setTag(PROP_NAME, tTag); } @@ -72,6 +78,7 @@ public class TPlayerStats implements IExtendedEntityProperties, IPlayerExtendedI this.materialManual = properties.getBoolean("materialManual"); this.smelteryManual = properties.getBoolean("smelteryManual"); this.battlesignBonus = properties.getBoolean("battlesignBonus"); + this.derpLevel = properties.getInteger("derpLevel"); } @Override @@ -91,6 +98,8 @@ public class TPlayerStats implements IExtendedEntityProperties, IPlayerExtendedI this.smelteryManual = stats.smelteryManual; this.battlesignBonus = stats.battlesignBonus; + this.derpLevel = stats.derpLevel; + if (copyCalc) { this.bonusHealth = stats.bonusHealth; diff --git a/src/main/java/tconstruct/tools/TinkerToolEvents.java b/src/main/java/tconstruct/tools/TinkerToolEvents.java index 7ce49f51..7af69f0a 100644 --- a/src/main/java/tconstruct/tools/TinkerToolEvents.java +++ b/src/main/java/tconstruct/tools/TinkerToolEvents.java @@ -2,6 +2,7 @@ package tconstruct.tools; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.*; +import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; import java.util.List; import net.minecraft.entity.*; @@ -453,6 +454,17 @@ public class TinkerToolEvents if(difficulty == EnumDifficulty.HARD) punishment = 10; // hard has 10% + // check if we have to reduce it + // did the player live long enough to receive derp-protection? + // (yes, you receive protection every time you log in. we're that nice.) + int derp = 1; + if(event.entityPlayer.ticksExisted < 60*5*20 ) { + derp = TPlayerStats.get(event.entityPlayer).derpLevel; + if(derp <= 0) derp = 1; + punishment *= derp; + } + + boolean damaged = false; for(EntityItem drop : event.drops) { // we're only interested in tools @@ -465,6 +477,14 @@ public class TinkerToolEvents dur /= punishment; AbilityHelper.damageTool(drop.getEntityItem(), dur, event.entityPlayer, true); + damaged = true; } + + if(damaged) { + derp++; + } + + // increase derplevel by 1. Minimal derp level is 1. + TPlayerStats.get(event.entityPlayer).derpLevel = derp+1; } }