Sqr/character/priest/passive_skill_priest.nut

200 lines
7.9 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/////////////////////////////////////////////////////////
//
// ?卫粽 蝶鉴籀葬
// ?渡 蝶鉴暧 ?卫粽 蝶鉴暧 Appendage蛔烟/?薯 蛔蛔
//
/////////////////////////////////////////////////////////
function ProcPassiveSkillAvenger(obj, skill_index, skill_level)
{
if (skill_index == SKILL_SCYTHE_MASTERY)
{
if (obj.getWeaponSubType() == WEAPON_SUBTYPE_SCYTHE && skill_level > 0)
{
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/scythe_mastery.nut", true);
local attack_speed = sq_GetLevelData(obj, skill_index, 0, skill_level);
local dark_element = sq_GetLevelData(obj, skill_index, 1, skill_level);
local light_element = sq_GetLevelData(obj, skill_index, 2, skill_level) * -1;
local weaponMagicAttack = sq_GetLevelData(obj, skill_index, 3, skill_level);
local change_appendage = appendage.sq_getChangeStatus("scythe");
if(!change_appendage) {
change_appendage = appendage.sq_AddChangeStatus("scythe",obj, obj, 0, CHANGE_STATUS_TYPE_ATTACK_SPEED, true, attack_speed );
}
// 奢楼隶陛, 檩楼撩 荡?隶陛, 赀楼撩 荡?马模
if(change_appendage) {
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, attack_speed.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_DARK, false, dark_element.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_LIGHT, false, light_element.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, true, weaponMagicAttack.tofloat());
}
}
else
{
//CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/scythe_mastery.nut");
if(skill_level > 0) {
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/scythe_mastery.nut", true);
if(appendage) {
local change_appendage = appendage.sq_getChangeStatus("scythe");
if(change_appendage) {
change_appendage.clearParameter();
}
}
}
}
}
else if(skill_index == SKILL_HEARTHINGS)
{
if (skill_level > 0)
obj.sq_addPassiveSkillAttackBonusRate(SKILL_HEARTHINGS,1);
}
if(skill_index == SKILL_DEVILSTRIKE) { // 等网蝶?塭桧醴
if (skill_level > 0) {
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/ap_avenger_devilstrike.nut", true);
local maxValue = sq_GetIntData(obj, SKILL_DEVILSTRIKE, SI_DS_MAX_DEVIL_GAUGE); // 譆渠 学葆啪桧虽 热纂
if(appendage.sq_var.size_vector() != 5) { // 虽陪 啪桧虽陛 虽表虽朝 帼斜热姜
appendage.sq_var.clear_vector();
appendage.sq_var.push_vector(maxValue); // 譆渠 学葆啪桧虽 热纂
appendage.sq_var.push_vector(0); // ?营 学葆啪桧虽 热纂
appendage.sq_var.push_vector(0); // 虽陪 热纂
appendage.sq_var.push_vector(0); //
appendage.sq_var.push_vector(0);
}
else {
// 虏橾 裟蝶啪桧虽陛 棻脑棻贼 侦褐?丑捡?栖棻..
local max_gauge = appendage.sq_var.get_vector(DS_APEND_MAX_GAUGE);
if(max_gauge != maxValue) {
appendage.sq_var.set_vector(DS_APEND_MAX_GAUGE, maxValue);
}
}
obj.getVar("devilStrike").clear_vector();
obj.getVar("devilStrike").push_vector(0); // character "devilstrike" sqrvar 0廓樯策蝶 晦奖击 当 樯策蝶
obj.getVar("devilStrike").push_vector(0);
obj.getVar("devilStrike").push_vector(0);
obj.getVar("devilStrike").push_vector(0);
obj.getVar("devilStrike").clear_ct_vector(); // 颤桧该 赝葬横
obj.getVar("devilStrike").push_ct_vector();
obj.getVar("devilStrike").push_ct_vector();
obj.getVar("devilStrike").push_ct_vector();
obj.getVar("devilStrike").get_ct_vector(0).Reset();
obj.getVar("devilStrike").get_ct_vector(0).Start(0,0);
appendage.sq_var.clear_timer_vector(); // 颤桧该 赝葬横
appendage.sq_var.push_timer_vector(); // 颤桧该 ?卫
appendage.sq_var.push_timer_vector();
}
else {
CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_avenger_devilstrike.nut");
}
}
if(skill_index == SKILL_NIGHTMARE) { // 陕撩 ?卫粽学跦(48溯涟)
// 陕撩?卫粽 : 学跦(48溯涟)
// 1. 陕撩 渗褐 翕寰 陕撩晦 奢问溘桧 隶陛?
// 2. 等网 蝶?塭桧醴暧 学葆 啪桧虽 离朝榆 隶陛.
// 陕撩?卫粽 学跦击 乾坚 毡朝虽 羹觼?坚 乾坚 毡棻贼 学葆 啪桧虽 离朝榆击 隶陛卫面怃 葬欐?栖棻..
if (skill_level > 0) {
obj.sq_addPassiveSkillAttackBonusRate(SKILL_NIGHTMARE,1); // 1.奢问溘 隶陛榆(%)
}
//if (skill_level > 0) {
//local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/ap_avenger_nightmare.nut", true);
//obj.sq_addPassiveSkillAttackBonusRate(SKILL_NIGHTMARE,1);
//}
//else {
//CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_avenger_nightmare.nut");
//}
}
return true;
}
function onUseSkillAvengerPassiveSkill(obj,skillIndex, skillLevel)
{
if(!obj)
return;
local hearthingsLevel = obj.sq_getSkillLevel(SKILL_HEARTHINGS);
local activeRate = obj.sq_getIntData(SKILL_HEARTHINGS,1); //嫦翕 ?睦
if(activeRate >= sq_getRandom(0,100) && hearthingsLevel > 0 && obj.isSkillClassType(skillIndex,3)) {
local time = obj.sq_getLevelData(SKILL_HEARTHINGS,0,hearthingsLevel);
local changeMoveSpeed = obj.sq_getLevelData(SKILL_HEARTHINGS,2,hearthingsLevel);
local changeHp = obj.sq_getLevelData(SKILL_HEARTHINGS,3,hearthingsLevel) * -1;
local changeMp = obj.sq_getLevelData(SKILL_HEARTHINGS,4,hearthingsLevel) * -1;
local currentCount = 1;
local maxCount = obj.sq_getIntData(SKILL_HEARTHINGS,0);
local oldAppendage = obj.GetSquirrelAppendage("Appendage/Character/hearthings.nut");
if(oldAppendage) {
currentCount = currentCount + oldAppendage.sq_var.getInt(0);
if(currentCount > maxCount) // 酝绘 譆渠纂
return;
}
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skillIndex, true, "Appendage/Character/hearthings.nut", true);
local change_appendage = appendage.sq_getChangeStatus("hearthings");
if(!change_appendage) {
change_appendage = appendage.sq_AddChangeStatus("hearthings",obj, obj, 0, CHANGE_STATUS_TYPE_MOVE_SPEED, true, currentCount.tointeger() * changeMoveSpeed.tointeger() );
}
if(change_appendage) {
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, true, currentCount.tofloat() * changeMoveSpeed.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_HP_MAX, true, currentCount.tofloat() * changeHp.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MP_MAX, true, currentCount.tofloat() * changeMp.tofloat());
}
appendage.getAppendageInfo().setValidTime(time); // 嵘?卫除
appendage.sq_var.setInt(0,currentCount.tointeger());
}
}
function OnBeforeAttackAvengerPassiveSkill(obj, damager, bounding_box, is_stuck)
{
// 饵桧萄 葆蝶搅葬蒂 乾坚 毡棻贼, 陷缣 暧? 颤问 僭葬 奢问击 -> 葆彻 奢问戏煎 夥脯遽棻.
if(!obj) return false;
if (is_stuck == false)
{
local result = CNSquirrelAppendage.sq_IsAppendAppendage(obj, "Appendage/Character/scythe_mastery.nut");
if (result == true)
{
if(obj.getWeaponSubType() == WEAPON_SUBTYPE_SCYTHE) { // 陷 橾阳虏
// state 陛 ?颤橾阳谛 僭葬颤橾阳虏 瞳辨腌栖棻..
local state = obj.sq_GetSTATE();
if(sqr_IsNormalAttack(state) == true) {
local attack_info = sq_GetCurrentAttackInfo(obj);
local eType = sq_GetAttackType(attack_info);
if(eType == ATTACKTYPE_PHYSICAL) {
sq_ChangeAttackTypeToOpposite(attack_info);
}
}
}
}
}
return true;
}