From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../jp/plusplus/fbs/magic/MagicTouchFlexible.java | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java (limited to 'src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java') diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java new file mode 100644 index 0000000..f665449 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java @@ -0,0 +1,83 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.IMagicEnchant; +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.item.ItemStaff; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; + +import java.util.LinkedList; + +/** + * Created by pluslus_F on 2015/06/23. + * 魔法の拳+付与魔法の汎用共鳴 + */ +public class MagicTouchFlexible extends MagicBase { + @Override + public boolean checkSuccess() { + return true; + } + + @Override + public void success() { + ItemStack item=player.getCurrentEquippedItem(); + if(item==null || !(item.getItem() instanceof ItemStaff)) return; + + int bookNum=((ItemStaff) item.getItem()).bookNum; + ItemStack[] items=ItemStaff.loadInventory(item); + + //付与魔法のリストを作成する + LinkedList magics = new LinkedList(); + for (int i = 0; i < bookNum; i++) { + if (items[i] != null && items[i].getItem() == ItemCore.bookSorcery) { + Registry.MagicData md=Registry.GetMagicDataFromItemStack(items[i]); + if(md==null) continue; + if(MagicArrow.class==md.magic) continue; + + //付与魔法であればリストに追加 + if(IMagicEnchant.class.isAssignableFrom(md.magic)){ + magics.add(md); + } + } + } + if (magics.isEmpty()) return; + + Entity e=getTouchEntity(); + if(e instanceof EntityLivingBase){ + float d=3.0f; + int lv=getLvDiff(); + if(lv>0) d+=0.5*(lv/5); + if(!isSpelled) d/=2.0f; + + float dValue=0.f; + float dScale=1.f; + + //IMagicEnchantのインスタンス化 + //スタッフによる使用なので常に詠唱破棄状態 + IMagicEnchant[] me=new IMagicEnchant[magics.size()]; + for(int i=0;i