//粘贴至Players中
var exDamage=0.5;//造成的魔法伤害,大于0小于1则为最大生命百分比
var heal=0.9;//治疗血量,大于0小于1则为最大生命百分比
var time=6000;//最大间隔时间
var cd=60000;//冷却时间
var canAttackFriendlyNpc=false;//是否可以对友方npc使用
var canAttackNeutralNpc=false;//是否可以对中立npc使用
var canAttackAggressiveNpc=true;//是否可以对敌对npc使用
var canAttackPlayer=true;//是否可以对玩家使用
var canAttackFriendlyPlayer=true;//是否可以对队友使用
var canOp=false;//是否仅Op允许使用
var gamemode={};//能够造成伤害的模式
var useMessage=true;//是否启用攻击提示
function timer(e){
if(e.id==885){
var player=e.player;
var store=player.getStoreddata();
var Count=store.get("countGrasp");
var Time=store.get("timeGrasp");
var Cd=store.get("cdGrasp");
var canCd=store.get("canCdGrasp");
var date=new Date().getTime();
if(Cd<date && eval(canCd)){
message(player,"§5§l[不灭之握]§6不灭之握 §2结束冷却完毕");
store.put("cdGrasp",0);
store.put("canCdGrasp","false");
return;
}
if(date>Time && Count>0){
message(player,"§5§l[不灭之握]§6不灭之握 §4效果结束冷却 §6"+cd/1000+" §4秒");
store.put("countGrasp",0);
store.put("cdGrasp",date+cd);
store.put("canGrasp","false");
store.put("canCdGrasp","true");
return;
}
}
}
function draw(player,maxAngle,range,name){
var x=player.getX(),z=player.getZ();
var mcplayer=player.getMCEntity();
for(var angle=0;angle<maxAngle;angle++){
var h=2*Math.PI/360*6*angle;
var x1 = x + Math.sin(h)*range;
var z1 = z - Math.cos(h)*range;
player.world.spawnParticle(name,x1,player.y+0.5,z1,0,0,0,1,1);
}
}
function attack(e){
if(e.type==1){
var IEntityLivingBase=Java.type("noppes.npcs.api.entity.IEntityLivingBase");
var ICustomNpc=Java.type("noppes.npcs.api.entity.ICustomNpc");
var IPlayer=Java.type("noppes.npcs.api.entity.IPlayer");
var target=e.target;
var player=e.player;
var mcplayer=player.getMCEntity();
if(!new myCase().isOp(mcplayer,canOp)){
return;
}
if(!new myCase().isLivingBase(target)){
return;
}
if(new myCase().isNpc(target,mcplayer,canAttackFriendlyNpc,canAttackNeutralNpc,canAttackAggressiveNpc)){
return;
}
if(new myCase().isPlayer(target,mcplayer,canAttackPlayer,canAttackFriendlyPlayer,gamemode)){
return;
}
var store=player.getStoreddata();
player.timers.forceStart(885,1,true);
if(!store.has("canGrasp")){
store.put("canGrasp","false");
}
if(!store.has("timeGrasp")){
store.put("timeGrasp",0);
}
if(!store.has("cdGrasp")){
store.put("cdGrasp",0);
}
if(!store.has("canCdGrasp")){
store.put("canCdGrasp","false");
}
if(!store.has("countGrasp")){
store.put("countGrasp",0);
}
var date=new Date().getTime();
var Cd=store.get("cdGrasp");
var Count=store.get("countGrasp");
var Time=store.get("timeGrasp");
var Can=store.get("canGrasp");
var canCd=store.get("canCdGrasp");
if(eval(canCd)){
return;
}
if(eval(Can)){
var DamageSource=Java.type("net.minecraft.util.DamageSource");
var temp_heal=heal>0 && heal<1?player.getMaxHealth()*heal:heal;
player.getMCEntity().func_70691_i(temp_heal);
var temp_exDamage=exDamage>0 && exDamage<1?target.getMaxHealth()*exDamage:exDamage;
target.getMCEntity().func_70097_a(DamageSource.field_76376_m,temp_exDamage);
store.put("timeGrasp",0);
store.put("canGrasp","false");
return;
}
var add=15;//每次攻击增加圆弧
Count++;
var maxAngle=Count*add;
maxAngle=maxAngle>60?60:maxAngle;
draw(player,maxAngle,1,"happyVillager");
store.put("timeGrasp",date+time);
store.put("countGrasp",Count);
if(maxAngle==60){
var temp_exDamage=exDamage>0 && exDamage<1?"击中生物最大血量"+(exDamage*100)+"%%":exDamage;
var temp_heal=heal>0 && heal<1?"最大血量"+(heal*100)+"%%":heal;
message(player,"§5§l[不灭之握]§2下次攻击造成 §6"+temp_exDamage+" §2点魔法伤害,恢复 §6"+temp_heal+" §2点血量");
store.put("canGrasp","true");
return;
}
message(player,"§5§l[不灭之握]§2还需攻击 §6"+(Math.ceil(60/add)-Count)+" §2次触发");
}
}
function message(player,mess){
if(useMessage){
player.message(mess);
}
}
/*Soys的配置变量
*case1,case2,case3等等都属于顶层代码中配置变量所需,正常使用请填true
*各个case如何使用请参考 君油酱的油酱打不 的更多示例!
*/
function myCase(){
var IEntityLivingBase=Java.type("noppes.npcs.api.entity.IEntityLivingBase");
var ICustomNpc=Java.type("noppes.npcs.api.entity.ICustomNpc");
var IPlayer=Java.type("noppes.npcs.api.entity.IPlayer");
/* mcplayer 是否为 Op */
this.isOp=function(mcplayer,case1){
var NoppesUtilServer=Java.type("noppes.npcs.NoppesUtilServer");
if(NoppesUtilServer.isOp(mcplayer)){
return true;
}
if(!case1){
return true;
}
return false;
}
/* target 是否有继承 IEntityLivingBase */
this.isLivingBase=function(target){
if((target instanceof IEntityLivingBase)){
return true;
}
return false;
}
/* target 是否有继承 ICustomNpc */
this.isNpc=function(target,mcplayer,case1,case2,case3){
if(target instanceof ICustomNpc){
var faction=target.faction;
if(faction.isFriendlyToPlayer(mcplayer)){
if(!case1){
return true;
}
return false;
}
if(faction.isNeutralToPlayer(mcplayer)){
if(!case2){
return true;
}
return false;
}
if(faction.isAggressiveToPlayer(mcplayer)){
if(!case3){
return true;
}
return false;
}else if(mcplayer.field_71075_bZ.field_75098_d){
return false;
}
return true;
}
return false;
}
/* target 是否有继承 IPlayer case3 应填入Object */
this.isPlayer=function(target,mcplayer,case1,case2,case3){
if(target instanceof IPlayer){
if(!case1){
return false;
}
var target_p=target;
if(case2){
var team_p=mcplayer.func_96124_cp();
var team_t=target_p.getMCEntity().func_96124_cp();
if(team_p!=null && team_t!=null){
if(team_p.func_96661_b()==team_t.func_96661_b() && !team_p.func_96665_g()){
return true;
}
}
return false;
}
if(Object.keys(case3).length>0){
if(!case3[target_p.getGamemode()]){
return true;
}
return false;
}
return true;
}
return false;
}
}