Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 937617d7af | |||
| 94751a6fd5 | |||
| 01ab50cb27 | |||
| d0bcbc8ed8 | |||
| b660b02e0e | |||
| 153ea74966 | |||
| c81830efec | |||
| 6ec2e716cb | |||
| 96e7c5885b | |||
| 41d575c9c9 | |||
| 7f31fc6259 | |||
| 817fd26dcf | |||
| 7237840a2a | |||
| 8ad6b5590b | |||
| 1c2c267e1a | |||
| e45bfb9248 | |||
| 0d48606b51 | |||
| 3c0b65c485 | |||
| 771118afde | |||
| 29b9e0de8b | |||
| f26f537f50 | |||
| 91c9a5392b | |||
| 6ae9df1204 | |||
| d46600ac86 | |||
| 004782a1e4 | |||
| b2b48cd8a1 | |||
| 2277f6b278 | |||
| ba59d9786f | |||
| bdf5aa5b64 | |||
| a384a57622 | |||
| 586840aa53 | |||
| 1ab674136b | |||
| 64e7e3844e | |||
| 51a3d2a63e | |||
| 7c2e786d0b | |||
| a7ee0ad847 | |||
| 033d90ed3e | |||
| 52214f81cf | |||
| 516d7948ee | |||
| 5477725b7e | |||
| 3dc3a3a378 | |||
| 2456589fa7 | |||
| d7849a94b1 | |||
| cfb9f4fe25 | |||
| a269cf339b | |||
| 1c8e4f86ee | |||
| f2835c245f | |||
| 462512ad30 | |||
| db5a7dcfde | |||
| 17bba5dea8 | |||
| fbdb5cd844 | |||
| 393fb1c1b0 | |||
| 08e89b1aef | |||
| 1f25d95b1b | |||
| 1f3a71797e | |||
| a821ef2aef | |||
| 6845279c49 |
@@ -10,7 +10,7 @@ assignees: ''
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/CONTRIBUTING.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.2.10 [change as necessary]
|
||||
Wizardry version: 4.2.11 [change as necessary]
|
||||
Environment: Singleplayer/LAN game/Server [delete as necessary]
|
||||
|
||||
Issue details: [describe what you were doing when the issue occurred, what went wrong, what you expected to happen, etc.]
|
||||
|
||||
@@ -10,7 +10,7 @@ assignees: ''
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/CONTRIBUTING.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.2.10 [change as necessary]
|
||||
Wizardry version: 4.2.11 [change as necessary]
|
||||
|
||||
Question details: [explain your question here]
|
||||
|
||||
|
||||
+3
-2
@@ -1,7 +1,7 @@
|
||||
# Credits
|
||||
|
||||
Electroblob's Wizardry
|
||||
Version 4.2.10
|
||||
Version 4.2.11
|
||||
For Minecraft 1.12.2
|
||||
|
||||
Designed, coded and textured by Electroblob
|
||||
@@ -24,6 +24,7 @@ In addition, I'd like to thank the following individuals for their contributions
|
||||
- UltraHex
|
||||
- Azim-Palmer
|
||||
- raoulvdberge
|
||||
- rafasoares
|
||||
|
||||
#### Translations
|
||||
|
||||
@@ -32,7 +33,7 @@ In addition, I'd like to thank the following individuals for their contributions
|
||||
- Russian: VilagVil, kellixon, bigenergy
|
||||
- French: Hahdrim
|
||||
- Brazilian Portuguese: lorrampi
|
||||
- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama
|
||||
- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama, Determancer
|
||||
- Korean: shejery, rewi_wire
|
||||
- Polish: Trozuu
|
||||
- German: BirdyDragon
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
Please read the [guide for contributing](https://github.com/Electroblob77/Wizardry/blob/1.12.2/guide_for_contributing.md) before posting.
|
||||
|
||||
Minecraft version: 1.12.2 [change as necessary]
|
||||
Wizardry version: 4.2.10 [change as necessary]
|
||||
Wizardry version: 4.2.11 [change as necessary]
|
||||
Environment: Singleplayer/LAN game/Server [delete as necessary]
|
||||
|
||||
Issue details: [describe what you were doing when the issue occurred, what went wrong, what you expected to happen, etc.]
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
|
||||
|
||||
version = "4.2.10" // There, it matches semver, happy now?
|
||||
version = "4.2.11" // There, it matches semver, happy now?
|
||||
group= "electroblob.wizardry"// http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = "ElectroblobsWizardry"
|
||||
|
||||
|
||||
@@ -247,6 +247,13 @@ public class CommonProxy {
|
||||
* @param intensity The amplitude of the shaking (around 10 looks about right)
|
||||
*/
|
||||
public void shakeScreen(EntityPlayer player, float intensity){}
|
||||
|
||||
/**
|
||||
* Loads the given shader for the given player, if they have shaders enabled.
|
||||
* @param player The player to load the shader for
|
||||
* @param shader The location of the shader to load
|
||||
*/
|
||||
public void loadShader(EntityPlayer player, ResourceLocation shader){}
|
||||
|
||||
/**
|
||||
* Gets the client side world using Minecraft.getMinecraft().world. <b>Only to be called client side!</b> Returns
|
||||
|
||||
@@ -300,6 +300,10 @@ public final class Settings {
|
||||
public boolean booksPauseGame = true;
|
||||
/** <b>[Client-only]</b> Whether to use custom shaders for certain spells. */
|
||||
public boolean useShaders = true;
|
||||
/** <b>[Client-only]</b> Whether to use the screen shake effect for certain spells. */
|
||||
public boolean screenShake = true;
|
||||
/** <b>[Client-only]</b> Whether to use the screen blink effect for teleportation spells. */
|
||||
public boolean blinkEffect = true;
|
||||
/** <b>[Client-only]</b> The position of the spell HUD. */
|
||||
public GuiPosition spellHUDPosition = GuiPosition.BOTTOM_LEFT;
|
||||
|
||||
@@ -878,6 +882,18 @@ public final class Settings {
|
||||
useShaders = property.getBoolean();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
property = config.get(CLIENT_CATEGORY, "screenShake", true, "Whether to use the screen shake effect for certain spells.");
|
||||
property.setLanguageKey("config." + Wizardry.MODID + ".screen_shake");
|
||||
Wizardry.proxy.setToNamedBooleanEntry(property);
|
||||
screenShake = property.getBoolean();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
property = config.get(CLIENT_CATEGORY, "blinkEffect", true, "Whether to use the screen blink effect for teleportation spells.");
|
||||
property.setLanguageKey("config." + Wizardry.MODID + ".blink_effect");
|
||||
Wizardry.proxy.setToNamedBooleanEntry(property);
|
||||
blinkEffect = property.getBoolean();
|
||||
propOrder.add(property.getName());
|
||||
|
||||
config.setCategoryPropertyOrder(CLIENT_CATEGORY, propOrder);
|
||||
}
|
||||
|
||||
@@ -1125,7 +1141,7 @@ public final class Settings {
|
||||
}
|
||||
|
||||
public static boolean containsMetaThing(Pair<ResourceLocation, Short>[] array, ResourceLocation id, short metadata){
|
||||
return Arrays.asList(array).contains(Pair.of(id, metadata)) || Arrays.asList(array).contains(Pair.of(id, OreDictionary.WILDCARD_VALUE));
|
||||
return Arrays.asList(array).contains(Pair.of(id, metadata)) || Arrays.asList(array).contains(Pair.of(id, (short)OreDictionary.WILDCARD_VALUE));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class Wizardry {
|
||||
* 1.x.x represents Minecraft 1.7.x versions, 2.x.x represents Minecraft 1.10.x versions, 3.x.x represents Minecraft
|
||||
* 1.11.x versions, and so on.
|
||||
*/
|
||||
public static final String VERSION = "4.2.10";
|
||||
public static final String VERSION = "4.2.11";
|
||||
|
||||
// IDEA: Triggering of inbuilt Forge events in relevant places?
|
||||
// IDEA: Abstract the vanilla particles behind the particle builder
|
||||
|
||||
@@ -107,7 +107,9 @@ public class BlockPedestal extends Block implements ITileEntityProvider {
|
||||
natural = true;
|
||||
metadata -= ELEMENT.getAllowedValues().size();
|
||||
}
|
||||
return this.getDefaultState().withProperty(ELEMENT, Element.values()[metadata]).withProperty(NATURAL, natural);
|
||||
Element element = Element.values()[metadata];
|
||||
if(!ELEMENT.getAllowedValues().contains(element)) return this.getDefaultState().withProperty(NATURAL, natural);
|
||||
return this.getDefaultState().withProperty(ELEMENT, element).withProperty(NATURAL, natural);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -69,7 +69,9 @@ public class BlockRunestone extends Block {
|
||||
|
||||
@Override
|
||||
public IBlockState getStateFromMeta(int metadata){
|
||||
return this.getDefaultState().withProperty(ELEMENT, Element.values()[metadata]);
|
||||
Element element = Element.values()[metadata];
|
||||
if(!ELEMENT.getAllowedValues().contains(element)) return this.getDefaultState();
|
||||
return this.getDefaultState().withProperty(ELEMENT, element);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -199,6 +199,13 @@ public class ClientProxy extends CommonProxy {
|
||||
if(Minecraft.getMinecraft().player == player) WizardryClientEventHandler.shakeScreen(intensity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadShader(EntityPlayer player, ResourceLocation shader){
|
||||
if(Minecraft.getMinecraft().player == player && Wizardry.settings.useShaders
|
||||
&& !Minecraft.getMinecraft().entityRenderer.isShaderActive())
|
||||
Minecraft.getMinecraft().entityRenderer.loadShader(shader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSpellHUDSkins(){
|
||||
return GuiSpellDisplay.getSkinKeys();
|
||||
@@ -553,6 +560,12 @@ public class ClientProxy extends CommonProxy {
|
||||
data.randomDescriptions = new HashMap<>();
|
||||
|
||||
for(Spell spell : Spell.getAllSpells()){
|
||||
|
||||
if(spell.networkID() > message.names.size()){
|
||||
Wizardry.logger.warn("Received no glyph data for spell {}, skipping", spell.getRegistryName());
|
||||
continue;
|
||||
}
|
||||
|
||||
// -1 because the none spell isn't included
|
||||
// This is a case where we must use the network ID, not the metadata
|
||||
data.randomNames.put(spell, message.names.get(spell.networkID() - 1));
|
||||
|
||||
@@ -75,13 +75,15 @@ public final class WizardryClientEventHandler {
|
||||
|
||||
/** Starts the first-person blink overlay effect. */
|
||||
public static void playBlinkEffect(){
|
||||
blinkEffectTimer = BLINK_EFFECT_DURATION;
|
||||
if(Wizardry.settings.blinkEffect) blinkEffectTimer = BLINK_EFFECT_DURATION;
|
||||
}
|
||||
|
||||
/** Starts the client-side screen shake effect. */
|
||||
public static void shakeScreen(float intensity){
|
||||
screenShakeCounter = (int)(intensity / SHAKINESS);
|
||||
Minecraft.getMinecraft().player.rotationPitch -= intensity * 0.5f; // Start halfway down
|
||||
if(Wizardry.settings.screenShake){
|
||||
screenShakeCounter = (int)(intensity / SHAKINESS);
|
||||
Minecraft.getMinecraft().player.rotationPitch -= intensity * 0.5f; // Start halfway down
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -89,12 +91,20 @@ public final class WizardryClientEventHandler {
|
||||
|
||||
if(event.player == Minecraft.getMinecraft().player && event.phase == TickEvent.Phase.END){
|
||||
|
||||
if(blinkEffectTimer > 0) blinkEffectTimer--;
|
||||
if(Wizardry.settings.blinkEffect){
|
||||
if(blinkEffectTimer > 0) blinkEffectTimer--;
|
||||
}else{
|
||||
blinkEffectTimer = 0;
|
||||
}
|
||||
|
||||
if(screenShakeCounter > 0){
|
||||
float magnitude = screenShakeCounter * SHAKINESS;
|
||||
Minecraft.getMinecraft().player.rotationPitch += screenShakeCounter % 2 == 0 ? magnitude : -magnitude;
|
||||
screenShakeCounter--;
|
||||
if(Wizardry.settings.screenShake){
|
||||
if(screenShakeCounter > 0){
|
||||
float magnitude = screenShakeCounter * SHAKINESS;
|
||||
Minecraft.getMinecraft().player.rotationPitch += screenShakeCounter % 2 == 0 ? magnitude : -magnitude;
|
||||
screenShakeCounter--;
|
||||
}
|
||||
}else{
|
||||
screenShakeCounter = 0;
|
||||
}
|
||||
|
||||
// Only seems to work here...
|
||||
|
||||
@@ -96,7 +96,10 @@ public class GuiSpellDisplay {
|
||||
// Normally when extending Gui, you'd have to have an instance to access its methods. However, we're not actually
|
||||
// using any of them, so this class may as well not bother and just be a static event handler. Neat!
|
||||
@SubscribeEvent
|
||||
public static void draw(RenderGameOverlayEvent event){
|
||||
public static void draw(RenderGameOverlayEvent.Post event){
|
||||
|
||||
if(event.getType() != RenderGameOverlayEvent.ElementType.TEXT
|
||||
&& event.getType() != RenderGameOverlayEvent.ElementType.HOTBAR) return;
|
||||
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
|
||||
@@ -20,9 +20,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Mod.EventBusSubscriber(Side.CLIENT)
|
||||
public class RenderArcaneLock {
|
||||
|
||||
@@ -39,36 +36,44 @@ public class RenderArcaneLock {
|
||||
|
||||
EntityPlayer player = Minecraft.getMinecraft().player;
|
||||
World world = Minecraft.getMinecraft().world;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.enableBlend();
|
||||
boolean lighting = GL11.glIsEnabled(GL11.GL_LIGHTING);
|
||||
GlStateManager.disableLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
|
||||
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
Vec3d origin = player.getPositionEyes(event.getPartialTicks());
|
||||
GlStateManager.translate(-origin.x, -origin.y + player.getEyeHeight(), -origin.z);
|
||||
|
||||
GlStateManager.color(1, 1, 1, 1);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(textures[(player.ticksExisted % (textures.length * 2))/2]);
|
||||
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder buffer = tessellator.getBuffer();
|
||||
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||
|
||||
// Someone managed to get a CME here so let's just copy the list to be safe
|
||||
boolean flag = false;
|
||||
boolean lighting = false;
|
||||
|
||||
// Someone managed to get a CME here so let's iterate manually to be safe (don't copy the list, it's expensive!)
|
||||
// It's only cosmetic so if a tileentity somehow gets removed while we're rendering them it's not a big deal
|
||||
List<TileEntity> tileentities = new ArrayList<>(world.loadedTileEntityList);
|
||||
for(int i=0; i<world.loadedTileEntityList.size(); i++){
|
||||
|
||||
for(TileEntity tileentity : tileentities){
|
||||
TileEntity tileentity = world.loadedTileEntityList.get(i);
|
||||
|
||||
if(tileentity == null) continue; // What the heck VoxelMap
|
||||
|
||||
if(tileentity.getDistanceSq(origin.x, origin.y, origin.z) <= tileentity.getMaxRenderDistanceSquared()
|
||||
&& tileentity.getTileData().hasUniqueId(ArcaneLock.NBT_KEY)){
|
||||
|
||||
if(!flag){
|
||||
|
||||
flag = true;
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.enableBlend();
|
||||
lighting = GL11.glIsEnabled(GL11.GL_LIGHTING);
|
||||
GlStateManager.disableLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
|
||||
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
GlStateManager.translate(-origin.x, -origin.y + player.getEyeHeight(), -origin.z);
|
||||
|
||||
GlStateManager.color(1, 1, 1, 1);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(textures[(player.ticksExisted % (textures.length * 2))/2]);
|
||||
|
||||
buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||
}
|
||||
|
||||
Vec3d[] vertices = WizardryUtilities.getVertices(world.getBlockState(tileentity.getPos()).getBoundingBox(world, tileentity.getPos()).grow(0.05).offset(tileentity.getPos()));
|
||||
|
||||
drawFace(buffer, vertices[0], vertices[1], vertices[3], vertices[2], 0, 0, 1, 1); // Bottom
|
||||
@@ -81,15 +86,19 @@ public class RenderArcaneLock {
|
||||
}
|
||||
}
|
||||
|
||||
tessellator.draw();
|
||||
if(flag){
|
||||
|
||||
GlStateManager.disableBlend();
|
||||
GlStateManager.enableTexture2D();
|
||||
if (lighting) {
|
||||
GlStateManager.enableLighting();
|
||||
tessellator.draw();
|
||||
|
||||
GlStateManager.disableBlend();
|
||||
GlStateManager.enableTexture2D();
|
||||
if(lighting){
|
||||
GlStateManager.enableLighting();
|
||||
}
|
||||
GlStateManager.disableRescaleNormal();
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
GlStateManager.disableRescaleNormal();
|
||||
GlStateManager.popMatrix();
|
||||
|
||||
}
|
||||
|
||||
private static void drawFace(BufferBuilder buffer, Vec3d topLeft, Vec3d topRight, Vec3d bottomLeft, Vec3d bottomRight, float u1, float v1, float u2, float v2){
|
||||
|
||||
@@ -120,8 +120,10 @@ public class EntityMagicSlime extends EntitySlime implements ISummonedCreature {
|
||||
&& ((EntityLivingBase)this.getRidingEntity()).getHealth() > 0){
|
||||
if(this.ticksExisted % 16 == 1){
|
||||
this.getRidingEntity().attackEntityFrom(DamageSource.MAGIC, 1);
|
||||
((EntityLivingBase)this.getRidingEntity())
|
||||
.addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, 20, 2));
|
||||
if(this.getRidingEntity() != null){ // Some mobs force-dismount when attacked (normally when dying)
|
||||
((EntityLivingBase)this.getRidingEntity())
|
||||
.addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, 20, 2));
|
||||
}
|
||||
this.playSound(WizardrySounds.ENTITY_MAGIC_SLIME_ATTACK, 1.0f, 1.0f);
|
||||
this.squishAmount = 0.5F;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ import electroblob.wizardry.registry.WizardryRecipes;
|
||||
import electroblob.wizardry.registry.WizardryTabs;
|
||||
import electroblob.wizardry.util.SpellModifiers;
|
||||
import electroblob.wizardry.util.WizardryUtilities;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentMending;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@@ -194,7 +196,13 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana
|
||||
public boolean getIsRepairable(ItemStack stack, ItemStack material){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// This is misleadingly-named, it also applies to enchanting with books at an anvil
|
||||
@Override
|
||||
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment){
|
||||
return !(enchantment instanceof EnchantmentMending) && super.canApplyAtEnchantingTable(stack, enchantment);
|
||||
}
|
||||
|
||||
/**
|
||||
* Properly handles the defence value of the armour. This method is responsible for the tooltip on top of
|
||||
* the armour value. It is also what handles armour toughness.
|
||||
|
||||
@@ -31,6 +31,7 @@ public class PacketSyncSettings implements IMessageHandler<Message, IMessage> {
|
||||
Wizardry.settings.discoveryMode = message.settings.discoveryMode;
|
||||
Wizardry.settings.creativeBypassesArcaneLock = message.settings.creativeBypassesArcaneLock;
|
||||
Wizardry.settings.slowTimeAffectsPlayers = message.settings.slowTimeAffectsPlayers;
|
||||
Wizardry.settings.replaceVanillaFireballs = message.settings.replaceVanillaFireballs;
|
||||
Wizardry.settings.forfeitChance = message.settings.forfeitChance;
|
||||
}
|
||||
|
||||
|
||||
@@ -172,9 +172,9 @@ public class PotionSlowTime extends PotionMagicEffect implements ISyncedPotion {
|
||||
@SubscribeEvent
|
||||
public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){
|
||||
if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.slow_time
|
||||
&& event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SlowTime.SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect();
|
||||
&& event.getEntity() instanceof EntityPlayer){
|
||||
Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SlowTime.SHADER);
|
||||
Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,9 @@ public final class WizardryLoot {
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/wizard_armour"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/arcane_tomes"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/wand_upgrades"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/uncommon_artefacts"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/rare_artefacts"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "subsets/epic_artefacts"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "entities/evil_wizard"));
|
||||
LootTableList.register(new ResourceLocation(Wizardry.MODID, "entities/mob_additions"));
|
||||
|
||||
|
||||
@@ -91,9 +91,6 @@ public class Divination extends Spell {
|
||||
(float)(target.getY() + 0.5 - (caster.getEntityBoundingBox().minY + caster.getEyeHeight())),
|
||||
(float)(target.getZ() + 0.5 - caster.posZ));
|
||||
|
||||
if(world.isRemote) ParticleBuilder.create(ParticleBuilder.Type.SPARKLE).pos(target.getX() + 0.5,
|
||||
target.getY() + 1.5, target.getZ() + 0.5).spawn(world);
|
||||
|
||||
strength = Strength.forWeight(calculateWeight(world, caster, target, range, modifiers));
|
||||
}
|
||||
|
||||
|
||||
@@ -210,6 +210,8 @@ public class Grapple extends Spell {
|
||||
@Override
|
||||
public boolean cast(World world, EntityLiving caster, EnumHand hand, int ticksInUse, EntityLivingBase target, SpellModifiers modifiers){
|
||||
|
||||
if(target == null) return false;
|
||||
|
||||
Vec3d origin = new Vec3d(caster.posX, caster.getEntityBoundingBox().minY + caster.getEyeHeight(), caster.posZ);
|
||||
|
||||
// If the target is an entity, we need to use the entity's centre rather than the original hit position
|
||||
|
||||
@@ -18,6 +18,7 @@ import net.minecraft.item.EnumAction;
|
||||
import net.minecraft.network.play.server.SPacketEntityVelocity;
|
||||
import net.minecraft.tileentity.TileEntityDispenser;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.SoundEvent;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
@@ -86,7 +87,8 @@ public class GreaterTelekinesis extends SpellRay {
|
||||
|
||||
Vec3d look = caster.getLookVec().scale(getProperty(THROW_VELOCITY).floatValue() * modifiers.get(WizardryItems.range_upgrade));
|
||||
target.addVelocity(look.x, look.y, look.z);
|
||||
if(caster instanceof EntityPlayer) caster.swingArm(caster.getActiveHand());
|
||||
// No IntelliJ, it's not always false, that's not how polymorphism works
|
||||
if(caster instanceof EntityPlayer) caster.swingArm(caster.getActiveHand() == null ? EnumHand.MAIN_HAND : caster.getActiveHand());
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
@@ -212,6 +212,7 @@ public class Possession extends SpellRay {
|
||||
possessor.eyeHeight = target.getEyeHeight();
|
||||
setSize(possessor, target.width, target.height);
|
||||
|
||||
target.dismountRidingEntity();
|
||||
target.setDead();
|
||||
target.setNoAI(true);
|
||||
target.setAttackTarget(null);
|
||||
@@ -251,10 +252,10 @@ public class Possession extends SpellRay {
|
||||
}
|
||||
}
|
||||
|
||||
if(possessor.world.isRemote && possessor == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(possessor.world.isRemote){
|
||||
// Shaders and effects
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); // Looks quite nice...
|
||||
Wizardry.proxy.loadShader(possessor, SHADER);
|
||||
Wizardry.proxy.playBlinkEffect(possessor);
|
||||
|
||||
}else{
|
||||
|
||||
@@ -348,7 +349,7 @@ public class Possession extends SpellRay {
|
||||
|
||||
if(player.world.isRemote && player == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
net.minecraft.client.Minecraft.getMinecraft().entityRenderer.stopUseShader();
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); // Looks quite nice...
|
||||
Wizardry.proxy.playBlinkEffect(player);
|
||||
}
|
||||
|
||||
for(IAttribute attribute : INHERITED_ATTRIBUTES.keySet()){
|
||||
@@ -399,9 +400,7 @@ public class Possession extends SpellRay {
|
||||
|
||||
if(player.world.isRemote){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC, player).clr(0.1f, 0, 0.3f).spawn(player.world);
|
||||
// TODO: This (and a few other similar uses) needs ClientProxy-ing.
|
||||
if(!net.minecraft.client.Minecraft.getMinecraft().entityRenderer.isShaderActive())
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
Wizardry.proxy.loadShader(player, SHADER);
|
||||
}
|
||||
|
||||
}else{
|
||||
|
||||
@@ -39,9 +39,9 @@ public class SixthSense extends Spell {
|
||||
(int)(getProperty(EFFECT_DURATION).floatValue() * modifiers.get(WizardryItems.duration_upgrade)),
|
||||
(int)((modifiers.get(WizardryItems.range_upgrade) - 1f) / Constants.RANGE_INCREASE_PER_LEVEL)));
|
||||
|
||||
if(world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect();
|
||||
if(world.isRemote){
|
||||
Wizardry.proxy.loadShader(caster, SHADER);
|
||||
Wizardry.proxy.playBlinkEffect(caster);
|
||||
}
|
||||
|
||||
this.playSound(world, caster, ticksInUse, -1, modifiers);
|
||||
@@ -51,9 +51,9 @@ public class SixthSense extends Spell {
|
||||
@SubscribeEvent
|
||||
public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){
|
||||
if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.sixth_sense
|
||||
&& event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect();
|
||||
&& event.getEntity() instanceof EntityPlayer){
|
||||
Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SHADER);
|
||||
Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ public class SlowTime extends SpellBuff {
|
||||
@Override
|
||||
public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){
|
||||
|
||||
if(caster.world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
if(caster.world.isRemote){
|
||||
Wizardry.proxy.loadShader(caster, SHADER);
|
||||
}
|
||||
|
||||
return super.cast(world, caster, hand, ticksInUse, modifiers);
|
||||
|
||||
@@ -38,9 +38,9 @@ public class Transience extends Spell {
|
||||
@Override
|
||||
public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){
|
||||
|
||||
if(world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect();
|
||||
if(world.isRemote){
|
||||
Wizardry.proxy.loadShader(caster, SHADER);
|
||||
Wizardry.proxy.playBlinkEffect(caster);
|
||||
}
|
||||
|
||||
if(!caster.isPotionActive(WizardryPotions.transience)){
|
||||
@@ -87,9 +87,9 @@ public class Transience extends Spell {
|
||||
@SubscribeEvent
|
||||
public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){
|
||||
if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.transience
|
||||
&& event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){
|
||||
if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER);
|
||||
electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect();
|
||||
&& event.getEntity() instanceof EntityPlayer){
|
||||
Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SHADER);
|
||||
Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -635,7 +635,7 @@ public final class WizardryUtilities {
|
||||
// This is a perfect example of where you need to use .equals() and not ==. For most applications,
|
||||
// this was unnoticeable until world reload because the UUID instance or entity instance is stored.
|
||||
// Fixed now though.
|
||||
if(entity.getUniqueID().equals(id)){
|
||||
if(entity != null && entity.getUniqueID() != null && entity.getUniqueID().equals(id)){
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -836,7 +836,7 @@ spell.ebwizardry\:poison_bomb.desc=Schießt eine Giftbombe in die Richtung, in d
|
||||
spell.ebwizardry\:possession.desc="Werde dein Feind."
|
||||
spell.ebwizardry\:ray_of_purification.desc=Sendet einen blendenden Lichtstrahl aus, der seine Ziele verletzt und blendet. Untote Kreaturen erleiden doppelten Schaden und werden in Brand gesteckt.
|
||||
spell.ebwizardry\:remove_curse.desc=Entfernt alle Flüche, die den Magier derzeit betreffen.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Füllt den Hungerbalken des Magiers um 4 Hungerpunkte auf.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Füllt den Hungerbalken des Magiers um 3 Hungerpunkte auf.
|
||||
spell.ebwizardry\:resurrection.desc=Mit einem Meisterheiler an Ihrer Seite, ist tot zu sein... optional.
|
||||
spell.ebwizardry\:reversal.desc=Entfernt einen zufälligen negativen Trankeffekt und fügt ihn dem Ziel zu, das diesen Effekt für die verbleibende Dauer erleiden wird. Die Stufe erhöht die Anzahl der Effekte, die umgekehrt werden.
|
||||
spell.ebwizardry\:ring_of_fire.desc=Erzeugt einen Feuerring um den Magier, der alle Feinde in der Nähe schädigt und sie in Brand setzt.
|
||||
|
||||
@@ -843,7 +843,7 @@ spell.ebwizardry\:poison_bomb.desc=Lanches a poison bomb in the direction you ar
|
||||
spell.ebwizardry\:possession.desc="Become thy enemy."
|
||||
spell.ebwizardry\:ray_of_purification.desc=Emits a ray of blinding light that damages and blinds its targets. Undead creatures take double damage and are set on fire.
|
||||
spell.ebwizardry\:remove_curse.desc=Removes any curse currently affecting the caster.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Replenishes the caster's food level by 4 hunger points.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Replenishes the caster's food level by 3 hunger points.
|
||||
spell.ebwizardry\:resurrection.desc=With a master healer by your side, being dead is... optional.
|
||||
spell.ebwizardry\:reversal.desc=Removes a random negative potion effect and inflicts it upon the target, which will suffer that effect for the remaining duration. Potency increases the number of effects that are reversed.
|
||||
spell.ebwizardry\:ring_of_fire.desc=Creates a ring of fire around the caster, damaging all nearby enemies and setting them on fire.
|
||||
@@ -1234,6 +1234,10 @@ config.ebwizardry.use_shaders=Use Custom Shaders
|
||||
config.ebwizardry.use_shaders.tooltip=Whether to use custom shaders for certain spells. These use the vanilla shader system (like mob spectating shaders) and shouldn't have much of an effect on performance in most cases, but they may conflict with other shaders.
|
||||
config.ebwizardry.use_shaders.true=Yes - gimme those sweet shaders!
|
||||
config.ebwizardry.use_shaders.false=No - I'm running this on a potato
|
||||
config.ebwizardry.screen_shake=Screen Shake
|
||||
config.ebwizardry.screen_shake.tooltip=Whether to use the screen shake effect for certain spells.
|
||||
config.ebwizardry.blink_effect=Blink Effect
|
||||
config.ebwizardry.blink_effect.tooltip=Whether to use the screen blink effect for teleportation spells.
|
||||
|
||||
config.ebwizardry.category.commands=Command Settings
|
||||
config.ebwizardry.category.commands.tooltip=Configure wizardry's commands
|
||||
|
||||
@@ -843,7 +843,7 @@ spell.ebwizardry\:poison_bomb.desc=Lanches a poison bomb in the direction you ar
|
||||
spell.ebwizardry\:possession.desc="Become thy enemy."
|
||||
spell.ebwizardry\:ray_of_purification.desc=Emits a ray of blinding light that damages and blinds its targets. Undead creatures take double damage and are set on fire.
|
||||
spell.ebwizardry\:remove_curse.desc=Removes any curse currently affecting the caster.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Replenishes the caster's food level by 4 hunger points.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Replenishes the caster's food level by 3 hunger points.
|
||||
spell.ebwizardry\:resurrection.desc=With a master healer by your side, being dead is... optional.
|
||||
spell.ebwizardry\:reversal.desc=Removes a random negative potion effect and inflicts it upon the target, which will suffer that effect for the remaining duration. Potency increases the number of effects that are reversed.
|
||||
spell.ebwizardry\:ring_of_fire.desc=Creates a ring of fire around the caster, damaging all nearby enemies and setting them on fire.
|
||||
@@ -1234,6 +1234,10 @@ config.ebwizardry.use_shaders=Use Custom Shaders
|
||||
config.ebwizardry.use_shaders.tooltip=Whether to use custom shaders for certain spells. These use the vanilla shader system (like mob spectating shaders) and shouldn't have much of an effect on performance in most cases, but they may conflict with other shaders.
|
||||
config.ebwizardry.use_shaders.true=Yes - gimme those sweet shaders!
|
||||
config.ebwizardry.use_shaders.false=No - I'm running this on a potato
|
||||
config.ebwizardry.screen_shake=Screen Shake
|
||||
config.ebwizardry.screen_shake.tooltip=Whether to use the screen shake effect for certain spells.
|
||||
config.ebwizardry.blink_effect=Blink Effect
|
||||
config.ebwizardry.blink_effect.tooltip=Whether to use the screen blink effect for teleportation spells.
|
||||
|
||||
config.ebwizardry.category.commands=Command Settings
|
||||
config.ebwizardry.category.commands.tooltip=Configure wizardry's commands
|
||||
|
||||
@@ -837,7 +837,7 @@ spell.ebwizardry\:poison_bomb.desc=Wystrzeliwuje trującą bombę w pożądanym
|
||||
spell.ebwizardry\:possession.desc="Zostań swoim wrogiem."
|
||||
spell.ebwizardry\:ray_of_purification.desc=Emituje promień oślepiającego światła, który uszkadza i oślepia cele. Nieumarłe stworzenia otrzymują podwójne obrażenia i zostają podpalone.
|
||||
spell.ebwizardry\:remove_curse.desc=Usuwa wszelkie klątwy, które dzierży rzucający.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Uzupełnia poziom głodu rzucającego o 4 punkty.
|
||||
spell.ebwizardry\:replenish_hunger.desc=Uzupełnia poziom głodu rzucającego o 3 punkty.
|
||||
spell.ebwizardry\:resurrection.desc=U boku głównego uzdrowiciela jest martwe... opcjonalne.
|
||||
spell.ebwizardry\:reversal.desc=Usuwa losowy zły efekt mikstury i przekazuje go celowi, który odczuje ten efekt przez pozostały czas. Potencja zwiększa liczbę odwróconych efektów.
|
||||
spell.ebwizardry\:ring_of_fire.desc=Tworzy pierścień ognia wokół rzucającego, uszkadzając wszystkich pobliskich wrogów i podpalając ich.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -837,7 +837,7 @@ spell.ebwizardry\:poison_bomb.desc=朝你所指的方向發射一顆毒液炸彈
|
||||
spell.ebwizardry\:possession.desc=『變成敵人!』
|
||||
spell.ebwizardry\:ray_of_purification.desc=射出一道刺眼的陽光,傷害目標並使其暫時失明。不死生物會受到兩倍的傷害且著火。
|
||||
spell.ebwizardry\:remove_curse.desc=驅除施法者身上所有的詛咒。
|
||||
spell.ebwizardry\:replenish_hunger.desc=為施法者補充4點(2支雞腿)的飽食度。
|
||||
spell.ebwizardry\:replenish_hunger.desc=為施法者補充6點(3支雞腿)的飽食度。
|
||||
spell.ebwizardry\:resurrection.desc=身邊有個治療大師,就算死了...也沒關係。
|
||||
spell.ebwizardry\:reversal.desc=隨機移除一種負面的藥水效果,將其加諸在目標身上,持續原本剩餘的效果時間。潛能可增加逆轉的效果數量。
|
||||
spell.ebwizardry\:ring_of_fire.desc=在施法者四周製造一個火焰圈,傷害所有靠近的敵人並使它們著火。
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
],
|
||||
"key": {
|
||||
"x": {
|
||||
"item": "minecraft:string"
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "string"
|
||||
},
|
||||
"y": [
|
||||
{
|
||||
@@ -48,4 +49,4 @@
|
||||
"item": "ebwizardry:magic_silk",
|
||||
"count": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"chargeup": 0,
|
||||
"cooldown": 30,
|
||||
"base_properties": {
|
||||
"hunger_points": 3,
|
||||
"hunger_points": 6,
|
||||
"saturation_modifier": 0.1
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
"chargeup": 0,
|
||||
"cooldown": 50,
|
||||
"base_properties": {
|
||||
"hunger_points": 8,
|
||||
"hunger_points": 16,
|
||||
"saturation_modifier": 0.1
|
||||
}
|
||||
}
|
||||
@@ -732,11 +732,11 @@
|
||||
|
||||
"Code:",
|
||||
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica",
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica \n- UltraHex \n- Azim-Palmer \n- raoulvdberge \n- rafasoares",
|
||||
|
||||
"Translations:",
|
||||
|
||||
"- Spanish: MadWrist, Alsentar \n- Mexican Spanish: MadWrist \n- Russian: VilagVil, kellixon, bigenergy \n- French: Hahdrim \n- Brazilian Portuguese: lorrampi \n- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama \n- Korean: shejery, rewi_wire \n- Polish: Trozuu \n-German: BirdyDragon",
|
||||
"- Spanish: MadWrist, Alsentar \n- Mexican Spanish: MadWrist \n- Russian: VilagVil, kellixon, bigenergy \n- French: Hahdrim \n- Brazilian Portuguese: lorrampi \n- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama, Determancer \n- Korean: shejery, rewi_wire \n- Polish: Trozuu \n-German: BirdyDragon \n-Taiwanese: chesterccj305",
|
||||
|
||||
"Lightning ray sound effect from OhhWowProductions",
|
||||
|
||||
|
||||
@@ -732,11 +732,11 @@
|
||||
|
||||
"Code:",
|
||||
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica",
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica \n- UltraHex \n- Azim-Palmer \n- raoulvdberge \n- rafasoares",
|
||||
|
||||
"Translations:",
|
||||
|
||||
"- Spanish: MadWrist, Alsentar \n- Mexican Spanish: MadWrist \n- Russian: VilagVil, kellixon, bigenergy \n- French: Hahdrim \n- Brazilian Portuguese: lorrampi \n- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama \n- Korean: shejery, rewi_wire \n- Polish: Trozuu \n-German: BirdyDragon",
|
||||
"- Spanish: MadWrist, Alsentar \n- Mexican Spanish: MadWrist \n- Russian: VilagVil, kellixon, bigenergy \n- French: Hahdrim \n- Brazilian Portuguese: lorrampi \n- Chinese: ZHENGLOC, dragon-evol, Hokorizero, TUsama, Determancer \n- Korean: shejery, rewi_wire \n- Polish: Trozuu \n-German: BirdyDragon \n-Taiwanese: chesterccj305",
|
||||
|
||||
"Lightning ray sound effect from OhhWowProductions",
|
||||
|
||||
|
||||
@@ -732,11 +732,11 @@
|
||||
|
||||
"Codigo:",
|
||||
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica",
|
||||
"- Corail31 \n- 12foo \n- Shadows-of-Fire \n- HellFirePvP \n- Tora-B \n- Avatair \n- Aeronica \n- UltraHex \n- Azim-Palmer \n- raoulvdberge \n- rafasoares",
|
||||
|
||||
"Traducciones:",
|
||||
|
||||
"- Español: MadWrist, Alsentar \n- Español de Mexico: MadWrist \n- Ruso: VilagVil, kellixon, bigenergy \n- Frances: Hahdrim \n- Portuges Brasileño: lorrampi \n- Chino: ZHENGLOC, dragon-evol, Hokorizero, TUsama \n- Koreano: shejery, rewi_wire \n- Polaco: Trozuu, \nAlemán: BirdyDragon",
|
||||
"- Español: MadWrist, Alsentar \n- Español de Mexico: MadWrist \n- Ruso: VilagVil, kellixon, bigenergy \n- Frances: Hahdrim \n- Portuges Brasileño: lorrampi \n- Chino: ZHENGLOC, dragon-evol, Hokorizero, TUsama, Determancer \n- Koreano: shejery, rewi_wire \n- Polaco: Trozuu, \nAlemán: BirdyDragon",
|
||||
|
||||
"Efecto de sonido para los relámpagos por OhhWowProductions",
|
||||
|
||||
|
||||
@@ -1,319 +0,0 @@
|
||||
PAGEBREAK
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
El Manual del Mago
|
||||
|
||||
|
||||
|
||||
Por Electroblob
|
||||
PAGEBREAK
|
||||
Introduccion
|
||||
--------------------
|
||||
|
||||
Saludos, mago! Este libro explica las diferentes formas de lo arcano y como
|
||||
usarlas.
|
||||
|
||||
Si alguna vez pierde este libro, lo puede volver a fabricar con un libro y un cristal magico.
|
||||
PAGEBREAK
|
||||
Contents
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
SECTION Comenzando
|
||||
Comenzando
|
||||
--------------------
|
||||
Para iniciar con Wizardry, necesitaras algunas cosas:
|
||||
|
||||
- Una varita magica, crafteada con una pepita de oro, un palo y un cristal magico.
|
||||
|
||||
- Una Mesa de Trabajo Arcana, crafteada con 3 piedras, 1 bloque de lapis lazuli,
|
||||
2 cristales magicos, 2 pepitas de oro y 1 alfombra morada.
|
||||
|
||||
- Un libro de hechizos. Estos pueden ser encontrados en cofres, arrojados como botin,
|
||||
comprados a magos, o puedes hacer el hechizo del aprendiz, Misil Magico, con un
|
||||
libro y 4 cristales magicos.
|
||||
|
||||
Tambien necesitaras un monton de cristales magicos para suplir tu varita con mana.
|
||||
PAGEBREAK
|
||||
SECTION Mana
|
||||
Mana
|
||||
--------------------
|
||||
Mana es la energia arcana que le da a los magos sus poderes. Se manifiesta en cristales que aparecen naturalmente, los cuales aparecen incrustados bajo roca. Las varitas almacenan mana dentro de ellas, y este mana es canalizado en los hechizos que tu lanzas. Cada hechizo cuesta una cantidad diferente de mana, dependiendo de que tan
|
||||
poderosos sean y que tanto duran.
|
||||
|
||||
Coloca tu raton sobre una varita para ver la cantidad de mana que tiene.
|
||||
IMAGE CRYSTAL
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Mena
|
||||
de Cristal Magico Cristal
|
||||
PAGEBREAK
|
||||
SECTION Varitas
|
||||
Varitas
|
||||
--------------------
|
||||
La varita es la herramienta de eleccion de un mago. Con ella, puedes lanzar cualquier
|
||||
hechizo, solo si la varita contiene dicho poder (ver Nivel de varitas para entender mejor).
|
||||
Las varitas vienen en variedades diferentes, es muy probable que empieces con la varita magica
|
||||
basica.
|
||||
|
||||
Cuando tienes una varita en tu mano, aparecera una pequena ventana en el esquina de la
|
||||
pantalla. Esto indica el hechizo que esta seleccionado actualmente con una representacion
|
||||
de este, y, si el hechizo ha sido lanzado, una barra con el tiempo de reactivacion para que
|
||||
el hechizo pueda volcver a ser lanzado de nuevo.
|
||||
PAGEBREAK
|
||||
SECTION Hechizos
|
||||
Hechizos
|
||||
--------------------
|
||||
Una varita es inservible sin hechizos que lanzar. Los hechizos estan guardados en dos
|
||||
formas: en libros, los cuales son permanentes, y en pergaminos, que son temporales.
|
||||
|
||||
Los libros de hechizos son poco utiles ellos solos, por eso se suele ligar el hechizo
|
||||
que contienen a las varitas. Los libros de hechizos pueden ser encontrados por todo el
|
||||
mundo. Cuando encuentres uno, puedes colocar el raton sobre el libro para ver su informacion.
|
||||
Tambien puede hacer clic derecho mientras lo tiene en su mano para ver mas informacion.
|
||||
|
||||
Pergaminos, por otro lado, sirven un proposito diferente: hacer clic derecho con
|
||||
el en la mano, lanzara el hechizo que tenga ligado a el, destruyendo el papel en el
|
||||
proceso. Como los libros, los hechizos pueden ser encontrados por todo el mundo, pero
|
||||
tambien puedes hacerlos tu mismo al craftear un pergamino vacio con papel y un poco de
|
||||
hilo. Puedes ligarle un hechizo usando una Mesa de Trabajo Arcana, pero solo si ya conoces
|
||||
dicho hechizo. Hacer esto consumira un cantidad de cristales magicos equivalente al mana
|
||||
que cuesta lanzar el hechizo (redondeado al MANA_PER_CRYSTAL mas cercano).
|
||||
|
||||
Para el ojo sin experiencia, las runas magicas con las cuales los hechizos son escritos
|
||||
son ilegibles. Por eso, para identificar un hechizo, podrias lanzarlo y ver sus efectos
|
||||
pero quizas ocasione efectos no deseados, y algunos hechizos necesitan condicione necesarias
|
||||
para funcionar. Una forma mas segura, es usar un Pergamino de la Identificacion, el cual
|
||||
puede ser comprado a magos. Hacer clic derecho con uno en la mano identificara el
|
||||
primer hechizo desconocido en tu barra.
|
||||
|
||||
Los pergaminos son utiles cuando necesitas lanzar un hechizo una o dos veces en una
|
||||
ocasion en particular pero no quieres que te ocupe un espacio en tu varita. Hay que
|
||||
resaltar, como sea, que los pergaminos son un metodo ineficiente de lanzar hechizos.
|
||||
PAGEBREAK
|
||||
SECTION Mesa de Trabajo Arcana
|
||||
La Mesa de Trabajo Arcana
|
||||
--------------------
|
||||
La Mesa de Trabajo Arcana es un bloque similar en apariencia a la mesa de encantamiento
|
||||
donde puedes cargar, mejorar y ligar hechizos a una varita. Simplemente coloca donde sea
|
||||
y haz clic derecho, y veras una interfaz aparecer parecida a la de la derecha.
|
||||
PAGEBREAK
|
||||
IMAGE WORKBENCH
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
La Mesa de Trabajo Arcana
|
||||
PAGEBREAK
|
||||
SECTION Ligando Hechizos
|
||||
Ligando Hechizos
|
||||
--------------------
|
||||
Para ligar un hechizo a tu varita, simplemente coloca tu varita en el espacio central
|
||||
de la Mesa de Trabajo Arcana, luego coloca el libro de hechizo en uno de los espacios
|
||||
que estan alrededor y pulsa Aplicar. Puedes ligar 5 hechizos a la vez, esto puede ser
|
||||
aumentado con mejoras. Cuando tienes una varita en la mano, puedes cambiar los hechizos
|
||||
con las NEXT_SPELL_KEY y PREVIOUS_SPELL_KEY teclas. Tambien puedes cambiarlo al agacharte
|
||||
y moviendo la rueda del raton.
|
||||
|
||||
SECTION Cargando varitas
|
||||
Cargando varitas
|
||||
--------------------
|
||||
Para cargar tu varita, coloca la varita en el espacio central de la Mesa de Trabajo Arcana
|
||||
y coloca algunos cristales magicos en el espacio mas arriba en la izquierda, y despues
|
||||
pulsa Aplicar. Cada cristal vale MANA_PER_CRYSTAL mana, y la varita solo toma lo que
|
||||
necesita, asi que puedes mantener cristales en la Mesa de Trabajo Arcana para cuando
|
||||
los necesites. Todas las varitas tomaran un numero exacto de cristales para cargarla si esta
|
||||
vacia, a menos que tengan una mejora de almacenamiento aplicada.
|
||||
|
||||
SECTION Mejorando varitas
|
||||
Mejorando tu varita
|
||||
--------------------
|
||||
Para mejorar tu varita, necesitaras un Tomo de lo Arcano de tu nivel apropiado (ver
|
||||
Niveles) o una mejora de varita especial. Ambos pueden ser encontrados como botin o
|
||||
comprado a un mago. Para mejorar tu varita, colocala en el espacio central de la
|
||||
Mesa de Trabajo Arcana y la mejora en el espacio inferior a la izquierda, y pulsar Aplicar.
|
||||
|
||||
Mejoras de varita especiales mejorar un aspecto particular de la varita. Cada tipo de mejora
|
||||
se puede apilar 3 veces, y el total de mejoras que puede tener una varita depende del nivel.
|
||||
Las mejoras no pueden ser removidas.
|
||||
PAGEBREAK
|
||||
SECTION Flores y Frascos
|
||||
Flores y Frascos
|
||||
--------------------
|
||||
Es probable que te encuentres con flores brillantes creciendo en el suelo de tiempo
|
||||
en tiempo. Esas son flores de cristal magico, una fuente de mana natural. Pueden ser
|
||||
cosechadas y crafteadas para extraer mana en cristales.
|
||||
|
||||
Necesitas recargar tu varita de camino? No hay problema! El mana puede ser enfrascado.
|
||||
Simplemente craftea un frasco de mana con una botella de cristal y ocho cristales magicos
|
||||
y llevatelo contigo. Cuando necesites mana, solo craftea la varita con el frasco para
|
||||
recargar un poco. Este proceso consumira la botella. Un poco de mana se perdera en el
|
||||
proceso de enfrascamiento.
|
||||
PAGEBREAK
|
||||
SECTION Niveles
|
||||
Niveles
|
||||
--------------------
|
||||
Las varitas y los hechizos vienen en cuatro niveles: BASIC_COLOURBasicoRESET_COLOUR, APPRENTICE_COLOURAprendizRESET_COLOUR, ADVANCED_COLOURAvanzadoRESET_COLOUR y MASTER_COLOURMaestroRESET_COLOUR. Cada nivel es mejor que el anterior.
|
||||
|
||||
Las varitas BASIC_COLOURBasico RESET_COLOURson las que pueden ser crafteadas. Almacenan
|
||||
BASIC_MAX_CHARGE mana, y solo pueden lanzar hechizos basicos. Hechizos basicos son suficientemente simples para ser lanzados por cualquiera y no usan mucho mana. Esto
|
||||
no significa que son inservibles en niveles mas altos, sin embargo; su costo pequeno
|
||||
hace que algunos hechizos basicos sean utiles cuando tienes acceso a hechizos maestros.
|
||||
|
||||
Las varitas APPRENTICE_COLOURAprendiz RESET_COLOURson el siguiente nivel despues de las
|
||||
varitas basicas. Almacenan APPRENTICE_MAX_CHARGE mana y pueden lanzar hechizos basicos y de
|
||||
aprendiz. Los hechizos de aprendiz son mas llamativos que los basicos, pero cuestan mas.
|
||||
|
||||
Las varitas ADVANCED_COLOURAvanzado RESET_COLOURson muy raras y mucho mas poderosas.
|
||||
Pueden lanzar todos los hechizos excepto los maestros, y almacenar ADVANCED_MAX_CHARGE mana.
|
||||
Los hechizos avanzados pueden otorgar poderes de superhumano como invisibilidad y causar
|
||||
mucho dano a los enemigos.
|
||||
|
||||
Las varitas MASTER_COLOURMaestro RESET_COLOURson las mas poderosas varitas que existen. Almacenan MASTER_MAX_CHARGE mana, y pueden lanzar cualquier hechizo. Los libros de hechizos
|
||||
maestros son muy raros y los hechizos pueden causar una gran devastacion, no solo a los enemigos
|
||||
si no al mundo en si. Usar con precaucion.
|
||||
PAGEBREAK
|
||||
SECTION Elementos
|
||||
Elementos
|
||||
--------------------
|
||||
Los hechizos pertenecen a diferentes elementos, los cuales describen la naturaleza
|
||||
del hechizo y tambien tienen ventajas cuando son lanzados con ciertas varitas.
|
||||
|
||||
FIRE_COLOURFuego
|
||||
Quizas el elemento mas destructivo, fuego conlleva quemaduras, lava, y explosiones. Un piromano poderoso desatara el infierno sobre sus enemigos y probablemente encienda
|
||||
el mundo en el proceso. La mayoria de los ataques de fuego queman a sus objetivos,
|
||||
causando dano extra sobre el tiempo. Sin embargo, te en cuenta que no tendran efecto
|
||||
en monstruos del Nether.
|
||||
|
||||
ICE_COLOURHielo
|
||||
El elemento de hielo esta formado por todo lo que es frio. Los hechizos de hielo
|
||||
frencuentemente ralentizan a los enemigos o los congelan completamente, y son
|
||||
efectivos contra criaturas de fuego. La magia de hielo puede ser util fuera de
|
||||
combate, como para congelar un rio para poder cruzarlo a pie.
|
||||
|
||||
LIGHTNING_COLOURRayo
|
||||
Este elemento conlleva relampagos, tormentas y el clima. Un mago de tormenta poderoso
|
||||
es una fuerza dura de vencer, y algunos son capaces de llamar rayos a voluntad. Los
|
||||
hechizos de rayo con frecuencia hacen dano a varios enemigos a la vez y usualmente
|
||||
persiguen a su objetivo, haciendolos efectivos para atacar a cualquier monstruo...
|
||||
pero cuidado con los creepers.
|
||||
|
||||
NECROMANCY_COLOURNigromancia
|
||||
Nigromancia es el elemento de oscuridad, caos y lo no-muerto. Nigromantes son
|
||||
misteriosos y a veces considerados malos, aunque no siempre es el casp. Los
|
||||
hechizos de nigromancia son usados para invocar criaturas que pelearan por ti o
|
||||
hasta controlar la voluntad de tus enemigos.
|
||||
|
||||
EARTH_COLOURTierra
|
||||
El elemento de tierra esta enfocado en el mundo natural: animales, plantas, el viento, y cosas asi. La magia de tierra es diversa y toma una gran variedad de formas, desde envenerar enemigos hasta desatar la furia del clima. Los hechizos de tierra son una liga de ataque, defensa y utilidad.
|
||||
|
||||
SORCERY_COLOURHechiceria
|
||||
La hechiceria es el elemento de la fuerza y el cambio. Los hechiceros manipulan la luz,
|
||||
la gravedad y hasta la realidad para su beneficio. Los hechizos de hechiceria pueden
|
||||
ser usados, entre otras cosas, para conceder poderes magicos y mover objetos.
|
||||
|
||||
HEALING_COLOURCuracion
|
||||
El elemento de curacion conlleva defensa y regeneracion. Los sanadores buscan
|
||||
protegerse y a sus aliados lo mas posble, lo cual puede ser dificil para los
|
||||
oponentes. A pesar de no considerarse como un ataque, la luz purificadora de sus
|
||||
hechizos de curacion puede ser letales para los no-muertos. Los hechizos de
|
||||
curacion son indispensables cuando se esta dentro de combate.
|
||||
|
||||
Los limites entre los diferentes elementos no siempre son distintos, y algunos hechizos
|
||||
tienen atributos de otros elementos mas que del suyo.
|
||||
|
||||
Si eres suertudo, puedes que te encuentres una varita elemental. Estas varitas te
|
||||
permiten lanzar hechizos del elemento correcto con mas potencia de lo usual.
|
||||
PAGEBREAK
|
||||
SECTION Armadura de Mago
|
||||
Armadura de Mago
|
||||
--------------------
|
||||
Como mago, necesitaras algo para protegerte de las criaturas que combates.
|
||||
Ninguna armadura ordinal valdra. Para sacarle provecho a tus hechizos, necesitas
|
||||
armadura de mago: sombrero, tunica, pantalones y botas. A diferencia de las otras,
|
||||
estas no se romperan. Sin embargo, usaran energia arcana para proteger al usuario.
|
||||
Esto significa que deben ser cargados con cristales magicos. Ventajosamente no
|
||||
consumen mucho mana. Recargalos en la mesa o con frascos.
|
||||
|
||||
Puedes obtener armadura de mago crafteandola con Seda Magica, obtenida al craftear
|
||||
hilo con un cristal magico.
|
||||
|
||||
Esos magos que se dedican a practicar un solo elemento algunas veces visten
|
||||
piezas especiales las cuales ofrecen bonus a dicho elemento. Los sets completos
|
||||
de esta armadura son muy codiciados entre magos y no son faciles de conseguir.
|
||||
|
||||
Hay una legenda que habla sobre un sello arcano usado por los magos mas poderosos
|
||||
para mejorar en sobre manera su armadura.
|
||||
PAGEBREAK
|
||||
SECTION Magos y Torres
|
||||
Magos y Torres
|
||||
--------------------
|
||||
No temas - no eres el unico que practica magia en este mundo. En tus viajes, te encontraras con torres altas con unos distintivos techos puntiagudos.
|
||||
Estas son las residencias de varios magos. Una vida de soledad puede hacer que los magos se vuelvan grunones, pero usualmente son seres amigables que estan
|
||||
dispuestos a compartir su conocimiento contigo - con un precio. Preparate para pagar con gemas y metales preciosos, y a cambio recibiras grandezas arcanas.
|
||||
Si, en dado caso, un hechizo maestro es lo que buscas, deberar hablar con un especialista en dicho elemento.
|
||||
|
||||
Desafortunadamente, hay algunos magos que no le dan la bienvenida a los visitantes. Estos magos son marginados y son hostiles hacia cualquiera que cruce su camino. Aproximate a ellos con cautela, y preparate para defenderte contra magia sumamente poderosa. Derrotalos, y su conocimiento sera tuyo.
|
||||
PAGEBREAK
|
||||
SECTION Recetas de Crafteo
|
||||
Recetas de Crafteo
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
Recetas de Crafteo
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
Recetas de Crafteo
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
Recetas de Crafteo
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
Creditos
|
||||
--------------------
|
||||
Electroblob's Wizardry
|
||||
Version VERSION
|
||||
Para Minecraft MCVERSION
|
||||
|
||||
Disenado, codificado y texturizado por Electroblob
|
||||
|
||||
Gracias a Minecraft Forge y MCP, porque sin estos esto no hubiese sido posible.
|
||||
|
||||
Gracias tambien a la comunidad de Minecraft que crea mods, la cual siempre tiene una respuesta para mis problemas!
|
||||
|
||||
In addition, I'd like to thank the following individuals for their contributions to the mod:
|
||||
|
||||
Code:
|
||||
|
||||
- Corail31
|
||||
- 12foo
|
||||
- Shadows-of-Fire
|
||||
- HellFirePvP
|
||||
|
||||
Translations:
|
||||
|
||||
- Russian: VilagVil
|
||||
- Spanish and Mexican Spanish: MadWrist
|
||||
- Chinese: ZHENGLOC and dragon-evol
|
||||
|
||||
Lightning ray sound effect from OhhWowProductions
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,225 +0,0 @@
|
||||
PAGEBREAK
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
巫师手册
|
||||
|
||||
|
||||
|
||||
作者 Electroblob
|
||||
PAGEBREAK
|
||||
简介
|
||||
--------------------
|
||||
|
||||
欢迎您,伟大的巫师!本书将会向您阐释奥术的工作原理以及使用它们的方法。
|
||||
|
||||
如果您不慎遗失了本书,您可以在工作台上用书和魔法水晶制作一本新的。
|
||||
PAGEBREAK
|
||||
内容
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
SECTION 准备工作
|
||||
准备工作
|
||||
--------------------
|
||||
要打开通向巫术的大门,您将会需要以下几样东西:
|
||||
|
||||
- 一根法杖,由一粒金粒,一根木棍和一块魔法水晶合成。
|
||||
|
||||
- 一个奥术工作台,由三块石头,一块青金石块,两块魔法水晶,两粒金粒和一块紫色地毯合成。
|
||||
|
||||
- 一本法术书,它们可以在箱子中找到,由怪物掉落或向巫师们购买。当然您也可以用一本书和四块魔法水晶制作一个初学者的法术“魔法飞弹”。
|
||||
|
||||
此外,您将会需要更多的魔法水晶来为您的法杖提供魔力。
|
||||
PAGEBREAK
|
||||
SECTION 魔力
|
||||
魔力
|
||||
--------------------
|
||||
魔力是给予巫师们力量的奥术能量。它在自然界中以水晶的形式存在,这些水晶嵌在石缝中,可以在地下被找到。法杖中可以储存魔力,而这些魔力将被塑造为您施展的法术。不同的法术会消耗不同数量的魔力,这取决于它们有多么强大以及它们会持续多久。
|
||||
|
||||
将鼠标悬停在法杖上就可以看到其中的魔力储量。
|
||||
IMAGE CRYSTAL
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
魔法
|
||||
水晶矿 水晶
|
||||
PAGEBREAK
|
||||
SECTION 法杖
|
||||
法杖
|
||||
--------------------
|
||||
法杖是一个巫师的实用之选。有了法杖,您就可以施展任何法术,只要法杖能够承受它的力量(更深入的解释在“等级”一节中)。
|
||||
法杖有许多不同的种类,但您将从最基本的法杖开始。
|
||||
|
||||
拿着法杖时,屏幕的角落会出现一个小小的提示,它会显示当前选择的法术及其图标。此外,如果一个法术被施展了,会有一个冷却条显示还有多久才能再次施展这个法术。
|
||||
PAGEBREAK
|
||||
SECTION 法术
|
||||
法术
|
||||
--------------------
|
||||
一根没有法术可施展的法杖是毫无用处的。法术可以通过两种方式被记录下来:永久地记录在书上,或者暂时地记录在卷轴上。
|
||||
|
||||
法术书本身没有什么用处,它们是用来将其中记录的法术绑定到法杖上的。法术书可以在世界各处被发现,而且您肯定很快就会找到一本。当您发现了一本法术书时,您可以将鼠标悬停在上面来看一下法术的基本信息,您也可以拿着法术书按下右键来阅读法术的详细信息。
|
||||
|
||||
与之相反,卷轴的使用方式是不一样的:拿着卷轴右击将会施展其中绑定的法术,而在这个过程中卷轴将会被摧毁。像法术书一样,卷轴可以在世界各处被发现,但您也可以自己制作它们。首先拿一张纸和一些线合成空白卷轴,然后您可以在奥术工作台上将法术绑定到卷轴上,前提是您拥有关于这个法术的知识。这么做将会消耗与法术的魔力消耗相对应数量的魔法水晶(消耗的魔法水晶个数是向上取整的)。
|
||||
|
||||
对于未经训练的人来说,用于书写法术的魔法符文是无法辨识的。为了鉴定一个法术,您当然可以施展它然后看看发生了什么 - 但这么做可能会产生您不想看到的副作用,而且许多法术需要在特定的条件下才能起作用。一种更安全可靠的选择是使用鉴定卷轴,它可以在箱子里找到或向巫师购买。拿着它右击将会鉴定您热键栏中第一个未知的法术书或卷轴,并消耗鉴定卷轴。
|
||||
|
||||
如果您需要在一次探险中使用某个法术一两次但又不希望它占用您法杖的一个槽,那卷轴是十分有用的。但值得注意的是卷轴是一种相当没有效率的施法方式。
|
||||
PAGEBREAK
|
||||
SECTION 奥术工作台
|
||||
奥术工作台
|
||||
--------------------
|
||||
奥术工作台的外观和附魔台很像,您可以在其中给法杖充能、升级或绑定法术。只要放下它并右击,您就会看到一个界面出现,就像右边展示的一样。
|
||||
PAGEBREAK
|
||||
IMAGE WORKBENCH
|
||||
LINEBREAK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
奥术工作台
|
||||
PAGEBREAK
|
||||
SECTION 绑定法术
|
||||
绑定法术
|
||||
--------------------
|
||||
要把一个法术绑定到法杖上,只要把法杖放在奥术工作台中央的格子里,然后把法术书放在周围的任意一个格子里并按下“应用”。您至多可以在一根法杖上绑定五个法术,当然这一数量可以通过法杖协调升级来增加。拿着法杖时,您可以通过 NEXT_SPELL_KEY 键和 PREVIOUS_SPELL_KEY 键在不同的法术间切换(按键可以在选项 -> 控制里调整)。您也可以在潜行时上下滚动鼠标滚轮来切换法术。
|
||||
|
||||
SECTION 法杖充能
|
||||
法杖充能
|
||||
--------------------
|
||||
要给法杖充能,只要把法杖放在奥术工作台中央的格子里,然后在左侧两个格子靠上的那个放一些魔法水晶并按下“应用”。每个水晶等同于 MANA_PER_CRYSTAL 魔力,而法杖只会吸收它所需要的数量,所以您可以在奥术工作台中储备一些魔力水晶以便随时使用。然而,谨记法杖只能整块地吸收魔法水晶。所以如果法杖仅仅还需要 30 魔力,那么 MANA_PER_CRYSTAL_MINUS_30 魔力就会在充能过程中流失。在内部没有魔力时,所有的法杖都会吸收确定数量的魔法水晶来充能,除非它们拥有法杖存储升级。
|
||||
|
||||
SECTION 升级法杖
|
||||
升级法杖
|
||||
--------------------
|
||||
要升级法杖,您需要一本对应等级的(参见“等级”)奥法宝典或者某种法杖升级。这两种东西都可以作为战利品得到或者向巫师购买。要升级法杖,只要把法杖放在奥术工作台中央的格子里,然后在左侧两个格子靠下的那个放上法杖升级并按下“应用”。
|
||||
|
||||
法杖升级会提升法杖某一方面的性能。每种法杖升级可以叠加至多三次,而法杖能升级的总次数取决于其等级。升级是不可逆的,无法被重新移除。
|
||||
PAGEBREAK
|
||||
SECTION 鲜花与烧瓶
|
||||
鲜花与烧瓶
|
||||
--------------------
|
||||
您很可能时不时在野外见到一些神秘的闪着光芒的花。这些是水晶花,是一种自然产生的魔力来源。它们可以被采集,其中的魔力可以像魔力水晶一样被提取出来。
|
||||
|
||||
需要在路上给您的法杖充能?没问题!魔力现在可以被装瓶了。用一个玻璃瓶和八个魔力水晶制作一个魔力瓶并带在身上,当您需要使用它时,将它和您的法杖放在一起合成,法杖就会回复一些魔力,而魔力瓶会被消耗掉。在装瓶过程中魔力会有耗损。
|
||||
PAGEBREAK
|
||||
SECTION 等级
|
||||
等级
|
||||
--------------------
|
||||
法杖和法术有四个等级:BASIC_COLOUR新手RESET_COLOUR,APPRENTICE_COLOUR学徒RESET_COLOUR,ADVANCED_COLOUR进阶RESET_COLOUR和MASTER_COLOUR大师RESET_COLOUR。每一个等级都比上一个等级更加强大。
|
||||
|
||||
BASIC_COLOUR新手RESET_COLOUR法杖是可以被合成出来的法杖。它们至多储存 BASIC_MAX_CHARGE 魔力,并且只能施展新手级的法术。新手法术非常简单,可以被任何人施展并且一般不消耗很多魔力。然而这并不一定意味着等级很高时他们就毫无用处,它们的低消耗使得一些新手法术在您达到大师级之后仍十分有用。
|
||||
|
||||
APPRENTICE_COLOUR学徒RESET_COLOUR法杖是新手法杖的下一等级。它们至多储存 APPRENTICE_MAX_CHARGE 魔力,并且可以施展新手和学徒级的法术。学徒法术比起新手法术更令人印象深刻,但通常消耗更高。
|
||||
|
||||
ADVANCED_COLOUR进阶RESET_COLOUR法杖十分稀有且比前两级强大得多。它们可以施展除了大师级之外的所有法术,并储存 ADVANCED_MAX_CHARGE 魔力。进阶法术可以赋予巫师超人的力量,例如隐身,并在敌人头上倾泻毁灭。
|
||||
|
||||
MASTER_COLOUR大师RESET_COLOUR法杖是现存最强大的法杖。他们至多储存 MASTER_MAX_CHARGE 魔力,并且可以施展任何法术。大师级法术书非常稀有,而大师级法术可以给敌人带来完全的湮灭,甚至可以摧毁世界本身。慎重使用。
|
||||
PAGEBREAK
|
||||
SECTION 元素
|
||||
元素
|
||||
--------------------
|
||||
法术分属不同的元素,元素表现了法术的本质,并且在被特定的法杖使用时会有额外的效果。
|
||||
|
||||
FIRE_COLOUR火
|
||||
这也许是最具毁灭性的元素。火元素掌控燃烧、熔岩和爆炸。一位强大的烈焰法师能够在敌人头顶打开地狱之门,并能在这个过程中点燃世界。绝大多数火属性攻击法术会点燃其目标,造成持续伤害。但是,注意火属性法术也许对下界生物毫无效果。
|
||||
|
||||
ICE_COLOUR冰
|
||||
冰元素是一切寒冷之物的集合。冰属性法术通常会减速敌人或完全冻住他们,并且对火属性生物极为有效。冰属性魔法在战斗外同样有用,例如冻结水面来顺利过河。
|
||||
|
||||
LIGHTNING_COLOUR闪电
|
||||
这一元素掌控闪电、风暴和天气。一位强大的风暴法师是一股不可忽视的力量,而且他们中的某些人拥有随意降下闪电的能力。闪电法术通常会同时伤害多个敌人并且自动寻找目标,这使它们成为攻击任何生物的有效手段...但小心爬行者。
|
||||
|
||||
NECROMANCY_COLOUR死灵
|
||||
死灵是属于黑暗、混沌和不死生物的元素。死灵法师十分神秘并且常常被认为是邪恶的,虽然一般不是这回事。死灵法术通常被用来召唤为您而战的生物,甚至可以扭曲敌人的意志。
|
||||
|
||||
EARTH_COLOUR大地
|
||||
大地元素专注于自然界:动物,植物,风,凡此种种。大地魔法差异巨大且呈现形式多种多样,从让敌人中毒到释放大气的怒火。大地法术是攻击、防御和实用的综合。
|
||||
|
||||
SORCERY_COLOUR妖术
|
||||
妖术是操纵力和变化的元素。妖术法师操纵光、重力甚至是现实本身来迎合他们的需要。妖术也可以用在别的领域,例如赋予施法者魔法力量或者用意念移动物体。
|
||||
|
||||
HEALING_COLOUR治愈
|
||||
治愈元素掌控防御和再生。治愈法师尽可能地保护他们自己以及他们的盟友,因此可能是非常难缠的对手。尽管一般不用来攻击,某些治愈法术的净化光芒会对不死生物造成可观的伤害。治愈法术在战斗中是不可或缺的。
|
||||
|
||||
不同元素之间并不总是泾渭分明的,并且有些法术展现出除自身外的其他元素的特点。
|
||||
|
||||
如果您很幸运,您可能会邂逅一根元素法杖。这些法杖会让您在施展正确元素的法术时比平时拥有更强的能力。
|
||||
PAGEBREAK
|
||||
SECTION 巫师护甲
|
||||
巫师护甲
|
||||
--------------------
|
||||
作为一名巫师,您需要一些东西来保护您免受与您作战的生物的伤害。普通的护甲无法做到这一点。为了最大化利用您的法术,您将会需要巫师护甲:帽子,法袍,护腿和靴子。不像普通的护甲,这些护甲不会损坏。作为替代,它们使用奥术能量来保护穿戴者。这当然意味着它们需要像法杖一样用魔法水晶充能。幸运的是,这些服装并不会消耗很多魔力。像法杖一样用奥术工作台或魔力瓶充能它们,但小心了 - 如果它们没有了魔力,您将发现自己毫无防御力。
|
||||
|
||||
您可以用魔法丝绸来制作巫师护甲,魔法丝绸可以用线和一块魔法水晶合成。
|
||||
|
||||
那些完全专注于一种元素的巫师有时会穿上特殊的服装来让这一元素获得额外的增强。整套的此类服装十分受某些巫师的追捧而且不容易找到。
|
||||
|
||||
传说中最强大的巫师用一种奥术戳记来极大地强化他们的护甲。
|
||||
PAGEBREAK
|
||||
SECTION 巫师和巫师塔
|
||||
巫师和巫师塔
|
||||
--------------------
|
||||
别害怕 - 您不是这个世界里唯一的魔法使用者。在您的旅途中,您可能会遇到拥有标志性尖顶的高塔。这些是您巫师同僚的居所。孤独的生活有时可能会让巫师们变得有些性情乖戾,但他们通常是友好的人,并且乐意与您分享他们的知识 - 尽管要付出些代价。交给他们一些珍贵的金属和宝石,您将收获数不尽的奥术奇迹作为回报。但如果您要寻找的是大师级的法术,您需要与专家谈谈才行。
|
||||
|
||||
不幸的是,少数巫师并不欢迎访客。这些巫师通常是被放逐的人,并且对任何挡路者都怀有敌意。小心地接近他们,并准备好在强大的魔法洗礼下防卫自己。然而,如果您击败了他们,您就可以将他们的知识全部收入囊中。
|
||||
PAGEBREAK
|
||||
SECTION 合成配方
|
||||
合成配方
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
合成配方
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
合成配方
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
合成配方
|
||||
--------------------
|
||||
PAGEBREAK
|
||||
PAGEBREAK
|
||||
鸣谢
|
||||
--------------------
|
||||
Electroblob's Wizardry
|
||||
Version VERSION
|
||||
For Minecraft MCVERSION
|
||||
|
||||
Designed, coded and textured by Electroblob
|
||||
|
||||
Thanks to Minecraft Forge and MCP, without which this mod would not have been possible.
|
||||
|
||||
Thanks also to the Minecraft modding community, which always has an answer to my modding problems!
|
||||
|
||||
In addition, I'd like to thank the following individuals for their contributions to the mod:
|
||||
|
||||
Code:
|
||||
|
||||
- Corail31
|
||||
- 12foo
|
||||
- Shadows-of-Fire
|
||||
- HellFirePvP
|
||||
|
||||
Translations:
|
||||
|
||||
- Russian: VilagVil
|
||||
- Spanish and Mexican Spanish: MadWrist
|
||||
- Chinese: ZHENGLOC and dragon-evol
|
||||
|
||||
Lightning ray sound effect from OhhWowProductions
|
||||
@@ -732,7 +732,7 @@
|
||||
|
||||
"程式碼:",
|
||||
|
||||
"》Corail31 \n》12foo \n》Shadows-of-Fire \n》HellFirePvP \n》Tora-B \n》Avatair \n》Aeronica",
|
||||
"》Corail31 \n》12foo \n》Shadows-of-Fire \n》HellFirePvP \n》Tora-B \n》Avatair \n》Aeronica \n》UltraHex \n》Azim-Palmer \n》raoulvdberge \n》rafasoares",
|
||||
|
||||
"\n\n翻譯:",
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
"modid" : "ebwizardry",
|
||||
"name" : "Electroblob's Wizardry",
|
||||
"version" : "4.2.10",
|
||||
"version" : "4.2.11",
|
||||
"mcversion" : "1.12.2",
|
||||
"url" : "https://minecraft.curseforge.com/projects/electroblobs-wizardry",
|
||||
"credits" : "\nDesigned, coded and textured by Electroblob.\nCode contributed by: Corail31, 12foo, Shadows-of-Fire, Tora-B, Avatair, Aeronica, UltraHex, Azim-Palmer, raoulvdberge.\nTranslators: MadWrist (Spanish, Mexican Spanish), VilagVil, kellixon & bigenergy (Russian), Hahdrim (French), lorrampi (Brazilian Portuguese), ZHENGLOC & dragon-evol (Chinese), shejery & rewi_wire (Korean), Trozuu (Polish), chesterccj305 (Taiwanese).",
|
||||
|
||||
Reference in New Issue
Block a user