黎明三国2,自1280版本起,将在剧本编辑器中支持自定义武将特技。剧本开发者可以创造自己的专属特技。
自定义武将特技包括:
这种玩法可以将系统自带108特技组合在一起,形成更加强力的特技。
例如:我想实现一个新特技“神算2”,效果是:同时支持“神算”与“火神”特技。
做法:
1,新建一个特技“神算-火”,并设置基本信息。
2,设置希望组合的子特技。
3,将该特技设置给武将。
当组合特技也无法满足需要时,可以利用脚本系统实现定制化的特技。
例如:我想实现一个新特技“奋发”,效果是:当部队士兵数量少于2000时,攻击伤害为1.5倍。
做法:
1,新建一个特技“奋发”,并设置基本信息。
2,将该特技设置给武将。
3,编写脚本。
脚本思路:利用伤害回调函数,检查发起方部队武将中,是否包含“奋发”特技的武将。如果不包含,不做任何处理,按照系统设定进行;如果包含拥有该特技的武将,先进行系统自带伤害计算,再修改伤害结果。
/*
英雄的黎明2脚本系统
手册:https://lmcd.xyz/doc/LMCD.html
本文件实现自定义特技“奋发”。效果是:士兵少于3000时,攻击力提升到1.5倍。
*/
// 注册系统回调
var handle={
CalcAttackArmyArmy:CalcAttackArmyArmyFunc,//部队攻击部队伤害计算
};
RegGameHandler(handle);
// 实现部队攻击部队回调函数
function CalcAttackArmyArmyFunc(armyida, armyidb, zfid, critical){
// 获取发起方部队信息
var source_army = Story.GetArmy(armyida);
// 检查发起方部队是否含有特技“奋发”(id为501)。
var has_fenfa = CheckArmyHasSkill(source_army, 501);
// 如果攻击方士兵少于等于3000,并且包含“奋发”特技,进入特殊处理。
if (source_army.soldier <=3000 && has_fenfa){
// 调用系统函数,计算伤害
var damage = Story.DoCalcArmyArmyDamage(armyida, armyidb);
// 将伤害的1.5倍
damage = Math.ceil(damage * 1.5);
// 返回本次计算的伤害替换系统伤害计算
return damage;
}
// 如果不是以上情况,返回null表示以系统计算为准。
return null;
}
// 判断一支部队中,是否有武将拥有某技能
function CheckArmyHasSkill(army, skillid){
for (var i=0;i<army.heroids.lenght;i++){
var heroid = army.heroids[i];
if (heroid != 0){
var hero = Story.GetHero(heroid);
if (hero.skillid == skillid){
return true;
}
}
}
return false;
}