Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"effect": true,
"levels": [
0.0,
1.0,
2.0,
3.0,
5.0
3.0
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import static com.minecolonies.api.entity.citizen.AbstractEntityCitizen.ENTITY_AI_TICKRATE;
import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE;
import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_SPAWN_POS;
import static com.minecolonies.api.util.constant.RaiderConstants.*;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.*;

/**
* Abstract for all villain entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

import static com.minecolonies.api.util.constant.ColonyManagerConstants.NO_COLONY_ID;
import static com.minecolonies.api.util.constant.NbtTagConstants.*;
import static com.minecolonies.api.util.constant.RaiderConstants.*;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.*;

/**
* Abstract for all raider entities.
Expand Down Expand Up @@ -86,7 +86,7 @@ public abstract class AbstractEntityMinecoloniesRaider extends AbstractEntityMin
/**
* Current count of ticks.
*/
private int currentCount = 0;
private int chiefSpeedCooldown = 0;

/**
* The world time when the barbarian spawns.
Expand Down Expand Up @@ -118,11 +118,6 @@ public abstract class AbstractEntityMinecoloniesRaider extends AbstractEntityMin
*/
private int envDmgCooldown = 0;

/**
* Environmental damage immunity
*/
private boolean envDamageImmunity = false;

/**
* Temporary Environmental damage immunity shortly after spawning.
*/
Expand Down Expand Up @@ -302,9 +297,8 @@ public void aiStep()
return;
}

if (currentTick % (random.nextInt(EVERY_X_TICKS) + 1) == 0)
if (++currentTick % (random.nextInt(EVERY_X_TICKS) + 1) == 0)
{

if (worldTimeAtSpawn == 0)
{
worldTimeAtSpawn = level().getGameTime();
Expand All @@ -331,24 +325,23 @@ public void aiStep()
registerWithColony();
}

if (currentCount <= 0)
if (--chiefSpeedCooldown <= 0)
{
currentCount = COUNTDOWN_SECOND_MULTIPLIER * TIME_TO_COUNTDOWN;
chiefSpeedCooldown = TIME_TO_COUNTDOWN;

if (!this.getMainHandItem().isEmpty() && SPEED_EFFECT != null && this.getMainHandItem().getItem() instanceof IChiefSwordItem
&& MinecoloniesAPIProxy.getInstance().getConfig().getServer().raidDifficulty.get() >= BARBARIAN_HORDE_DIFFICULTY_FIVE)
if (!this.getMainHandItem().isEmpty() && this.getMainHandItem().getItem() instanceof IChiefSwordItem
&& difficulty > CHIEF_SWORD_SPEED_DIFFICULTY)
{
RaiderMobUtils.getBarbariansCloseToEntity(this, SPEED_EFFECT_DISTANCE)
.stream().filter(entity -> !entity.hasEffect(MobEffects.MOVEMENT_SPEED))
.forEach(entity -> entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, SPEED_EFFECT_DURATION, SPEED_EFFECT_MULTIPLIER)));
for (AbstractEntityMinecoloniesRaider entity : RaiderMobUtils.getBarbariansCloseToEntity(this, SPEED_EFFECT_DISTANCE))
{
if (!entity.hasEffect(MobEffects.MOVEMENT_SPEED))
{
entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, SPEED_EFFECT_DURATION, SPEED_EFFECT_MULTIPLIER));
}
}
}
}
else
{
--currentCount;
}
}
currentTick++;

if (isRegistered)
{
Expand Down Expand Up @@ -434,7 +427,7 @@ public boolean hurt(@NotNull final DamageSource damageSource, final float damage
{
if (!(damageSource.getEntity() instanceof LivingEntity) || damageSource.getEntity() instanceof FakePlayer)
{
if (envDamageImmunity || tempEnvDamageImmunity)
if (tempEnvDamageImmunity)
{
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import java.util.List;
import java.util.Random;

import static com.minecolonies.api.util.constant.RaiderConstants.*;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.*;

/**
* Util class for raider mobs/spawning
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all amazon entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all amazon entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.Level;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all Barbarian entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.Level;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all Barbarian entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import net.minecraft.world.level.LevelReader;
import org.jetbrains.annotations.NotNull;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all drowned pirate entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import net.minecraft.world.level.LevelReader;
import org.jetbrains.annotations.NotNull;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all drowned pirate entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all egyptian entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all egyptian entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import net.minecraft.world.level.LevelAccessor;
import org.jetbrains.annotations.NotNull;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all pirate entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@

import java.util.Random;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all pirate entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import net.minecraft.world.level.LevelAccessor;
import org.jetbrains.annotations.NotNull;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all norsemen entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import net.minecraft.world.level.LevelAccessor;
import org.jetbrains.annotations.NotNull;

import static com.minecolonies.api.util.constant.RaiderConstants.ONE;
import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED;

/**
* Abstract for all norsemen entities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,13 +162,10 @@ public final class Constants
*/
public static final int SLOT_PER_LINE = 9;

public static final String SCIMITAR_NAME = "iron_scimitar";
public static final String CHIEFSWORD_NAME = "chiefsword";
public static final MobEffect LEVITATION_EFFECT = MobEffects.LEVITATION;
public static final MobEffect GLOW_EFFECT = MobEffects.GLOWING;

public static final int GLOW_EFFECT_DURATION = 20 * 30;
public static final int GLOW_EFFECT_MULTIPLIER = 20;
public static final int GLOW_EFFECT_DISTANCE = 60;

/**
Expand Down
32 changes: 25 additions & 7 deletions ...es/api/util/constant/RaiderConstants.java → ...e/colony/events/raid/RaiderConstants.java
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.minecolonies.api.util.constant;
package com.minecolonies.core.colony.events.raid;

import net.minecraft.world.item.alchemy.Potion;
import net.minecraft.world.item.alchemy.Potions;
import com.minecolonies.api.util.constant.Constants;

/**
* Barbarian constants class.
Expand All @@ -23,11 +22,10 @@ public final class RaiderConstants
public static final int ONE = 1;

/**
* Values used for sword effect.
* Chief sword ability constants
*/
public static final Potion SPEED_EFFECT = Potions.STRONG_SWIFTNESS;
public static final int TIME_TO_COUNTDOWN = 240;
public static final int COUNTDOWN_SECOND_MULTIPLIER = 4;
public static final double CHIEF_SWORD_SPEED_DIFFICULTY = 2.0;
public static final int TIME_TO_COUNTDOWN = 120;
public static final int SPEED_EFFECT_DISTANCE = 7;
public static final int SPEED_EFFECT_DURATION = 60;
public static final int SPEED_EFFECT_MULTIPLIER = 1;
Expand Down Expand Up @@ -86,6 +84,26 @@ public final class RaiderConstants
public static final double BARBARIAN_BASE_HEALTH = 10;
public static final double BARBARIAN_HEALTH_MULTIPLIER = 0.025;

/**
* Extended melee reach based on difficulty
*/
public static final double EXTENDED_REACH_DIFFICULTY = 1.9;
public static final double EXTENDED_REACH = 0.4;
public static final double MIN_DISTANCE_FOR_ATTACK = 2.5;

/**
* Attack delay
*/
public static final int MELEE_ATTACK_DELAY = 30;

/**
* Additional melee movement speed difficulty
*/
public static final double ADD_SPEED_DIFFICULTY = 2.3;
public static final double BONUS_SPEED = 1.2;
public static final double BASE_COMBAT_SPEED = 1.2;


/**
* Private constructor to hide implicit one.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,7 @@ private IAIState rally(final ILocation location)
// when they're at half-max, so at about skill60. Therefore, divide the skill by 20.
worker.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED,
5 * TICKS_SECOND,
Mth.clamp((citizenData.getCitizenSkillHandler().getLevel(Skill.Adaptability) / 20), 2, 5),
Mth.clamp((citizenData.getCitizenSkillHandler().getLevel(Skill.Adaptability) / 30), 0, 3),
false,
false));
}
Expand Down Expand Up @@ -697,7 +697,7 @@ protected IAIState decide()

if (rallyLocation != null || buildingGuards.getTask().equals(GuardTaskSetting.FOLLOW))
{
worker.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, GLOW_EFFECT_MULTIPLIER, false, false));
worker.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, 0, false, false));
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@
import static com.minecolonies.api.util.constant.Constants.TICKS_FOURTY_MIN;
import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_COLONY_ID;
import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_TIME;
import static com.minecolonies.api.util.constant.RaiderConstants.FOLLOW_RANGE;
import static com.minecolonies.api.util.constant.TranslationConstants.MESSAGE_INFO_COLONY_MERCENARY_STEAL_CITIZEN;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.FOLLOW_RANGE;
import static com.minecolonies.core.entity.ai.minimal.EntityAIInteractToggleAble.*;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.minecolonies.api.util.BlockPosUtil;
import com.minecolonies.api.util.SoundUtils;
import com.minecolonies.api.util.constant.Constants;
import com.minecolonies.api.util.constant.RaiderConstants;
import com.minecolonies.core.colony.events.raid.RaiderConstants;
import com.minecolonies.core.entity.ai.combat.AttackMoveAI;
import com.minecolonies.core.entity.citizen.EntityCitizen;
import com.minecolonies.core.entity.pathfinding.navigation.EntityNavigationUtils;
Expand All @@ -22,31 +22,13 @@
import net.minecraft.world.entity.player.Player;

import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE;
import static com.minecolonies.core.colony.events.raid.RaiderConstants.*;

/**
* Raider AI for melee attacking a target
*/
public class RaiderMeleeAI<T extends AbstractEntityMinecoloniesMonster & IThreatTableEntity> extends AttackMoveAI<T>
{
/**
* Extended reach based on difficulty
*/
private static final double EXTENDED_REACH_DIFFICULTY = 1.9;
private static final double EXTENDED_REACH = 0.4;
private static final double MIN_DISTANCE_FOR_ATTACK = 2.5;

/**
* Attack delay
*/
private static final int ATTACK_DELAY = 30;

/**
* Additional movement speed difficulty
*/
private static final double ADD_SPEED_DIFFICULTY = 2.3;
private static final double BONUS_SPEED = 1.2;
private static final double BASE_COMBAT_SPEED = 1.2;

public RaiderMeleeAI(
final T owner,
final ITickRateStateMachine<IState> stateMachine)
Expand Down Expand Up @@ -80,7 +62,7 @@ protected double getAttackDistance()
@Override
protected int getAttackDelay()
{
return ATTACK_DELAY;
return MELEE_ATTACK_DELAY;
}

@Override
Expand Down
Loading
Loading