Commit 87c7bb99 authored by hisuinohoshi's avatar hisuinohoshi

rev combat phase 3.19

战斗系统革新 阶段3.19:

- 怒气技能系统:
移植回「超能力者」社团的怒气技能;
为「超能力者」社团增加技能「冰心」;
现在NPC将会在先制攻击时释放战斗技;
现在发动「歼灭」「充能」等主动技时会向进行状况发送news;
- 删除了自动重击与喊话必杀机制;
- 现在「重击辅助」属性的效果变更为:攻击时额外获得1点怒气,发动战斗技时会返还10%消耗的怒气;
parent 580a553b
......@@ -14,7 +14,7 @@ $club_skillslist = Array
6 => Array('s_hp','s_ad','f_heal'), #'宛如疾风',
7 => Array('s_hp','s_ad','f_heal'), #'锡安成员',
8 => Array('s_hp','s_ad','f_heal'), #'黑衣组织',
9 => Array('s_hp','s_ad','f_heal'), #'超能力者',
9 => Array('s_hp','s_ad','f_heal','c9_spirit','c9_lb','c9_iceheart','c9_charge','c9_heartfire'), #'超能力者',
10 => Array('s_hp','s_ad','f_heal'), #'高速成长',
11 => Array('s_hp','s_ad','f_heal'), #'富家子弟',
12 => Array('s_hp','s_ad','f_heal'), #'全能骑士',
......@@ -352,7 +352,7 @@ $cskills = Array
'effect' => Array(
0 => Array('skillpara|c2_annihil-active' => '=::1'),
),
'events' => Array('setstarttimes_c2_annihil','getskill_buff_annihil'),
'events' => Array('active_news','setstarttimes_c2_annihil','getskill_buff_annihil'),
'link' => Array('buff_annihil'),
'vars' => Array(
'lasttimes' => 200, //持续时间 仅供介绍文本显示用
......@@ -863,6 +863,140 @@ $cskills = Array
'wepk+wep_kind' => "[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF' || (!empty([:wep_kind:]) && [:wep_kind:] == 'D')",
),
),
'c9_kotodama' => Array
(
'name' => '言灵', //未完成
'tags' => Array('passive'),
'desc' => '使用灵力武器主动攻击敌人时,可通过喊话触发特殊效果<br>
升级该技能可解锁更多触发关键词,以下是目前可触发的关键词:',
'maxlvl' => 3,
'cost' => Array(3,3,4,-1),
'input' => '升级',
'log' => '<span class="yellow">技能「言灵」升级成功。</span>',
'status' => Array('skillpara|c9_kotodama-lvl'),
'effect' => Array(
0 => Array('skillpara|c9_kotodama-lvl' => '+=::1'),
),
'svars' => Array(
'lvl' => 0,
),
'vars' => Array(
),
),
'c9_spirit' => Array
(
'name' => '灵力',
'tags' => Array('passive'),
'desc' => '敌人攻击你时,其命中率降低<span class="yellow">[:accloss:]%</span>,连击命中率惩罚<span class="yellow">+[:rbloss:]%</span><br>
你使用灵系武器的体力消耗降低<span class="yellow">[:spcloss:]%</span>',
'maxlvl' => 3,
'cost' => Array(3,3,4,-1),
'input' => '升级',
'log' => '<span class="yellow">技能「灵力」升级成功。</span>',
'status' => Array('skillpara|c9_spirit-lvl'),
'effect' => Array(
0 => Array('skillpara|c9_spirit-lvl' => '+=::1'),
),
'svars' => Array(
'lvl' => 0, //初次获得时等级为0
),
'vars' => Array(
'accloss' => Array(0,4,8,12),
'rbloss' => Array(0,2,3,4),
'spcloss' => Array(40,50,60,70),
),
),
'c9_lb' => Array
(
'name' => '必杀',
'tags' => Array('battle'),
'desc' => '本次攻击造成物理伤害<span class="yellow">×[:phydmgr:]</span><br>
消耗<span class="yellow">[:ragecost:]</span>点怒气,若拥有<span class="yellow">重击辅助</span>属性会额外返还<span class="yellow">[:rageback:]</span>点怒气',
'bdesc' => '本次攻击物理伤害<span class="yellow">×[:phydmgr:]</span>,消耗<span class="red">[:ragecost:]</span>怒气',
'vars' => Array(
'ragecost' => 40,
'rageback' => 6,
'phydmgr' => 2,
),
'lockdesc' => Array(
'lvl' => '3级时解锁',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 3',
),
),
'c9_iceheart' => Array
(
'name' => '冰心',
'tags' => Array('passive'),
'desc' => '使用灵力武器攻击时,你受到的反噬伤害降低<span class="yellow">[:hpshloss:]%</span><br>
受到伤害时,即刻解除<span class="yellow">[:purify:]</span>个异常/受伤状态。<br>
每通过技能解除1个异常/受伤状态,你的怒气提升<span class="yellow">[:ragegain:]</span>点',
'vars' => Array(
'hpshloss' => 80,
'purify' => 1,
'ragegain' => 40,
),
'lockdesc' => Array(
'lvl' => '7级时解锁',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">灵力武器</span>时生效',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 7',
'wepk+wep_kind' => "[:wepk:] == 'WF' || [:wepk:] == 'WCF' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wepk:] == 'WDF' || (!empty([:wep_kind:]) && [:wep_kind:] == 'F')",
),
),
'c9_charge' => Array
(
'name' => '充能',
'tags' => Array('cd'),
'desc' => '发动后立即增加<span class="yellow">[:rageadd:]</span>点怒气。<br>
前<span class="yellow">[:freet:]</span>次发动没有冷却时间,之后每次发动冷却时间<span class="clan">[:cd:]</span>秒<br>
本局已发动:<span class="yellow">[^skillpara|c9_charge-active_t^]</span>次',
'input' => '发动',
'log' => '<span class="lime">技能「充能」发动成功。</span><br>',
'events' => Array('charge','active_news'),
'status' => Array('skillpara|c9_charge-active_t'),
'effect' => Array(
0 => Array('skillpara|c9_charge-active_t' => '+=::1'),
),
'svars' => Array(
'active_t' => 0,
),
'vars' => Array(
'rageadd' => 100,
'freet' => 2,
'cd' => 600, //冷却时间
),
'pvars' => Array(
'skillpara|c9_charge-active_t',
),
'lockdesc' => Array(
'lvl' => '11级时解锁',
'skillcooldown' => '技能冷却中!<br>剩余冷却时间:<span class="red">[:cd:]</span> 秒',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 11',
'skillcooldown' => 0,
),
),
'c9_heartfire' => Array
(
'name' => '心火',
'tags' => Array('battle'),
'desc' => '本次攻击造成的最终伤害<span class="yellow">×[:findmgr:]</span>。消耗<span class="yellow">[:ragecost:]</span>点怒气<br>',
'bdesc' => '本次攻击最终伤害<span class="yellow">×[:findmgr:]</span>,消耗<span class="red">[:ragecost:]</span>怒气',
'vars' => Array(
'ragecost' => 60,
'findmgr' => 2,
),
'lockdesc' => Array(
'lvl' => '19级时解锁',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 19',
),
),
'tl_cstick' => Array
(
'name' => '抡尸',
......
......@@ -68,6 +68,21 @@ $enpcinfo = array
'gd' => 'f',
'icon' => 62,
'club' => 4,
'clubskill' => Array(),
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 3,
'costcount' => 7,
),
'c4_break' => Array(
'lvl' => 1,
'costcount' => 6,
),
'c4_sniper' => Array(
'active' => 1,
),
),
'inf' => '',
'rage' => 225,
'state' => 1,
......@@ -123,6 +138,21 @@ $enpcinfo = array
'gd' => 'f',
'icon' => 64,
'club' => 4,
'clubskill' => Array(),
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 2,
'costcount' => 4,
),
'c4_break' => Array(
'lvl' => 1,
'costcount' => 6,
),
'c4_roar' => Array(
'active' => 1,
),
),
'inf' => '',
'rage' => 225,
'state' => 1,
......
......@@ -244,6 +244,7 @@ $lwinfo = Array(
92 => '成为……焰火……',
);
$infinfo = Array('b' => '<span class="red">胸</span>', 'h' => '<span class="red">头</span>', 'a' => '<span class="red">腕</span>', 'f' => '<span class="red">足</span>', 'p' => '<span class="purple">毒</span>', 'u' => '<span class="red">烧</span>', 'i' => '<span class="clan">冻</span>', 'e' => '<span class="yellow">麻</span>','w' => '<span class="grey">乱</span>');
$dtinfinfo = Array('b' => '<span class="red">胸部受伤</span>', 'h' => '<span class="red">头部受伤</span>', 'a' => '<span class="red">腕部受伤</span>', 'f' => '<span class="red">足部受伤</span>', 'p' => '<span class="purple">中毒</span>', 'u' => '<span class="red">烧伤</span>', 'i' => '<span class="clan">冻结</span>', 'e' => '<span class="yellow">麻痹</span>','w' => '<span class="grey">混乱</span>');
$attinfo = Array('N' => '徒手殴打', 'P' => '殴打','K' => '斩刺', 'G' => '射击', 'C' => '投掷', 'D' => '设置引信伏击', 'F' => '释放灵力攻击', 'J' => '狙击');
$skillinfo = Array('N' => 'wp', 'P' => 'wp', 'K' => 'wk', 'G' => 'wg', 'C' => 'wc', 'D' => 'wd', 'F'=> 'wf', 'J'=> 'wg');
//$rangeinfo = Array('N' => 'S', 'P' => 'S', 'K' => 'S', 'G' => 'M', 'C' => 'M', 'D' => 'L', 'F'=> 'M'); #各种攻击方式的射程,移动到combatcfg.php
......@@ -1157,7 +1158,7 @@ $tps_isk = Array
'B' => Array('title' => "极高概率将全部物理伤害变为1。",),
'b' => Array('title' => "极高概率将全部属性伤害变为1。",),
'C' => Array('title' => "高概率将投系对你的物理伤害减半。",),
'c' => Array('title' => "降低重击与必杀技的怒气消耗,以及重击概率。",),
'c' => Array('title' => "攻击时额外获得1点怒气,发动战斗技时会返还10%消耗的怒气",),
'D' => Array('title' => "高概率将爆系对你的物理伤害,以及爆炸属性伤害减半。",),
'd' => Array('title' => "攻击对手时,将产生额外的爆炸属性伤害。",),
'E' => Array('title' => "高概率将电击属性对你的属性伤害减半。并避免身体麻痹状态。",),
......
......@@ -86,7 +86,7 @@ function updateskill(&$data=NULL)
# 变更社团时 获取社团技能
//include_once GAME_ROOT.'./include/game/revclubskills.func.php';
if(empty($data))
if(!isset($data))
{
$cks = $club_skillslist[$club];
foreach($cks as $sk) getclubskill($sk,$clbpara);
......
......@@ -101,7 +101,7 @@ function check_trap_def_event(&$pa,$damage,$playerflag=0,$selflag=0)
function calc_trap_reuse_rate($pa,$playerflag=0,$selflag=0)
{
# 基础回收率
$fdrate = 5 + $lvl/3;
$fdrate = 5 + $pa['lvl']/3;
# 拆弹专家社团加成
if($pa['club'] == 5) $fdrate += 35;
# 自雷回收加成
......@@ -1192,7 +1192,7 @@ function getcorpse($item){
if($item == 'destory')
{
if(!$allow_destory_corpse || in_array($edata['tyep'],$no_destory_corpse_type))
if(!$allow_destory_corpse || in_array($edata['type'],$no_destory_corpse_type))
{
$log.="你还想对这具可怜的尸体干什么?麻烦给死者一点基本的尊重!<br>";
$action = '';
......
......@@ -51,7 +51,7 @@
if(empty($pa['wep_kind'])) get_wep_kind($pa);
$range = isset($rangeinfo[$pa['wep_kind']]) ? $rangeinfo[$pa['wep_kind']] : NULL;
#「穿杨」效果判定:
if(isset($pa['skill_c4_sniper']))
if(isset($pa['bskill_c4_sniper']))
{
//获取射程加成
$sk_rn = get_skillvars('c4_sniper','rangegain');
......@@ -138,7 +138,7 @@
}
}
#「穿杨」效果判定:
if(isset($pa['skill_c4_sniper']) && in_array('r',$pa['ex_keys']))
if(isset($pa['bskill_c4_sniper']) && in_array('r',$pa['ex_keys']))
{
$key = array_search('r',$pa['ex_keys']);
unset($pa['ex_keys'][$key]);
......@@ -150,8 +150,8 @@
function combat_prepare_events(&$pa,&$pd,$active)
{
# 社团技能初始化(主动型/战斗技)
if(isset($pa['bskill'])) attr_extra_active_skills($pa,$pd,$active);
if(isset($pd['bskill'])) attr_extra_active_skills($pd,$pa,$active); //这可能吗……?总之先写上没错……
attr_extra_active_skills($pa,$pd,$active);
attr_extra_active_skills($pd,$pa,$active);
# 社团技能初始化(被动型)(最好不要在这个阶段输出log,把log和成功触发的标记保存进对应角色里,到实际结算效果时再显示。)
if(!empty($pa['clbpara']['skill'])) attr_extra_passive_skills($pa,$pd,$active);
if(!empty($pd['clbpara']['skill'])) attr_extra_passive_skills($pd,$pa,$active);
......@@ -776,8 +776,16 @@
{
//获取体力消耗系数:
$sp_cost_r = $pa['club'] == 9 ? 0.2 : 0.25;
//获取社团技能对体力消耗系数的修正:
$sp_cost_r *= get_clubskill_bonus_spd($pa['club'],$pa['skills']);
//获取社团技能对体力消耗系数的修正:(旧)
//$sp_cost_r *= get_clubskill_bonus_spd($pa['club'],$pa['skills']);
//获取社团技能对体力消耗系数的修正:(新)
#「灵力」效果判定:
if(isset($pa['skill_c9_spirit']))
{
$sk_lvl = get_skilllvl('c9_spirit',$pa);
$sk_r = 1 - (get_skillvars('c9_spirit','spcloss',$sk_lvl) / 100);
$sp_cost_r *= $sk_r;
}
//获取理论消耗体力最大值:
$sp_cost_max = $sp_cost_r*$pa['wepe'];
//获取实际消耗体力:
......@@ -799,42 +807,15 @@
$log .= "发挥了灵力武器{$f}%的威力!<br>";
}
# 重击判定:
//获取触发重击需要的最小怒气值
if(in_array('c',$pa['ex_keys']))
{
$rage_min_cost = $pa['club'] == 9 ? 20 : 10;
}
else
#「必杀」效果判定:(原喊话必杀技)
if(isset($pa['bskill_c9_lb']))
{
$rage_min_cost = $pa['club'] == 9 ? 50 : 30;
}
if($pa['rage'] >= $rage_min_cost)
{
//获取触发概率
if (isset($pa['message']) || $pa['rage'] >= 255)
{
$max_dice = 100;
}
else
{
if($pa['type']) $max_dice = 40;
else $max_dice = $pa['club'] == 9 ? 0 : 30;
}
//掷骰
$cri_dice = diceroll(100);
if($cri_dice <= $max_dice)
{
$pa['rage'] -= $rage_min_cost;
//获取伤害变化倍率
$p = $pa['club'] == 9 ? 2 : 1.5;
$dmg_p[]= $p;
//输出log
$log .= npc_chat_rev ($pa,$pd,'critical');
$log .= "{$pa['nm']}消耗<span class=\"yellow\">{$rage_min_cost}</span>点怒气,";
if ($pa['club'] == 9) $log .= "<span class=\"red\">发动必杀技!</span><br>";
else $log .= "<span class=\"red\">使出重击!</span><br>";
}
//获取伤害变化倍率
$sk_r = get_skillvars('c9_lb','phydmgr');
$dmg_p[]= $sk_r;
//输出log
if($pa['type']) $log .= npc_chat_rev ($pa,$pd,'critical');
$log .= "<span class=\"red\">发动必杀技!</span><br>";
}
# 连击判定:
......@@ -877,7 +858,7 @@
$log.="<span class='yellow'>{$pa['nm']}打得{$pd['nm']}落花流水,物理伤害增加了{$sk_p}%!</span><br>";
}
#「瞄准」判定:
if(isset($pa['skill_c4_aiming']))
if(isset($pa['bskill_c4_aiming']))
{
$sk_p = get_skillvars('c4_aiming','phydmgr');
$p = 1 + ($sk_p / 100);
......@@ -885,7 +866,7 @@
$log.="<span class='yellow'>「瞄准」使{$pa['nm']}造成的物理伤害提高了{$sk_p}%!</span><br>";
}
#「咆哮」判定:
if(isset($pa['skill_c4_roar']))
if(isset($pa['bskill_c4_roar']))
{
$sk_p = get_skillvars('c4_roar','phydmgr');
$p = 1 + ($sk_p / 100);
......@@ -893,7 +874,7 @@
$log.="<span class='yellow'>「咆哮」使{$pa['nm']}造成的物理伤害提高了{$sk_p}%!</span><br>";
}
#「穿杨」判定:
if(isset($pa['skill_c4_sniper']))
if(isset($pa['bskill_c4_sniper']))
{
$sk_p = get_skillvars('c4_sniper','phydmgr');
$p = 1 + ($sk_p / 100);
......@@ -982,7 +963,7 @@
}
#「穿杨」效果判定:
if(isset($pa['skill_c4_sniper']) && !isset($pa['pierce_flag']) && !empty($pd['phy_def_flag']))
if(isset($pa['bskill_c4_sniper']) && !isset($pa['pierce_flag']) && !empty($pd['phy_def_flag']))
{
$dice = diceroll(99);
# 冴冴说这应该是odds……但是对不起,已经太迟了……^ ^;
......@@ -1300,7 +1281,7 @@
$log .= $exdmgname[$ex]; //xx
if(!empty($pa['ex_dmgdef_log'])) $log .= "被防御效果抵消了!仅";
$log .= "造成了<span class=\"red\">{$ex_dmg}</span>点伤害!";
if(!empty($pa['ex_dmginf_log'])) $log .= "并使{$pd['name']}{$exdmginf[$pa['ex_dmginf_log']]}了!";
if(!empty($pa['ex_dmginf_log'])) $log .= "并使{$pd['nm']}{$exdmginf[$pa['ex_dmginf_log']]}了!";
$log .= "<br>";
$total_ex_dmg[] = $ex_dmg;
}
......@@ -1310,7 +1291,7 @@
//计算单个属性伤害系数变化
function get_ex_base_dmg_p(&$pa,&$pd,$active,$ex,$ex_dmg)
{
global $ex_good_wep,$ex_inf,$ex_inf_punish,$log;
global $ex_good_wep,$ex_inf,$ex_inf_punish,$exdmginf,$exdmgname,$log;
# 「高能」效果判定:
if(isset($pa['bskill_c5_higheg']) && $ex == 'd')
{
......@@ -1343,7 +1324,7 @@
global $log;
$ex_dmg_p = Array();
#「咆哮」判定:
if(isset($pa['skill_c4_roar']))
if(isset($pa['bskill_c4_roar']))
{
//获取倍率
$sk_p = get_skillvars('c4_roar','exdmgr');
......@@ -1405,6 +1386,16 @@
$fin_dmg_p[] = $p;
}
}
# 「心火」效果判定:
if(isset($pa['bskill_c9_heartfire']))
{
$sk_p = get_skillvars('c9_heartfire','findmgr');
if($sk_p)
{
$log.= "<span class='lime'>{$pa['nm']}敛神聚气,谷足力量凝聚在这凌厉一击上!</span><br>";
$fin_dmg_p[] = $sk_p;
}
}
# 书中虫防守事件:移动到最终伤害系数变化阶段了
if($pd['type'] == 89 && ($pd['name'] == '高中生·白神' || $pd['name'] == '白神·讨价还价'))
......@@ -1534,6 +1525,13 @@
if (in_array('H',$pa['ex_keys'])) {
$hp_d = floor ( $hp_d / 10 );
}
# 「冰心」技能判定
if (isset($pa['skill_c9_iceheart']))
{
$sk_r = 1 - (get_skillvars('c9_iceheart','hpshloss') / 100);
$hp_d = floor($hp_d * $sk_r);
$log .= "<span class='yellow'>「冰心」使{$pa['nm']}受到的反噬伤害降低了!</span><br>";
}
if($hp_d > 0)
{
$log .= "惨无人道的攻击对{$pa['nm']}自身造成了<span class=\"red\">$hp_d</span>点<span class=\"red\">反噬伤害!</span><br>";
......@@ -1550,7 +1548,7 @@
//防守方(pd)在受到伤害后触发的事件
function get_hurt_events(&$pa,&$pd,$active)
{
global $log,$infatt_rev,$infinfo;
global $log,$infatt_rev,$infinfo,$dtinfinfo;
# 「灭气」技能效果
if(isset($pa['skill_c1_burnsp']))
......@@ -1600,6 +1598,26 @@
}
}
# 「冰心」效果判定
if (isset($pd['skill_c9_iceheart']) && !empty($pd['inf']))
{
$purify = get_skillvars('c9_iceheart','purify');
# 获取当前异常队列
$now_inf = str_split($pd['inf']);
# 计算最多可净化异常数
$purify = min($purify,count($now_inf));
for($p=0;$p<$purify;$p++)
{
$heal_inf = $now_inf[$p];
$flag = heal_inf_rev($pd,$heal_inf);
if($flag)
{
$log .= "<span class='yellow'>{$pd['nm']}敛神聚气,从{$dtinfinfo[$heal_inf]}中恢复了!</span><br>";
$pd['rage'] = max(255,$pd['rage']+get_skillvars('c9_iceheart','ragegain'));
}
}
}
# 将pa造成的伤害记录在pd的成就里
if(!$pd['type'] && $pa['final_damage'] >= 1000000) $pd['clbpara']['achvars']['takedmg'] = $pa['final_damage'];
......@@ -1639,6 +1657,19 @@
return 0;
}
# 从异常状态中恢复
function heal_inf_rev(&$pa,$infnm)
{
global $log;
if(strpos($pa['inf'],$infnm) !== false)
{
$pa['inf'] = str_replace($infnm,"",$pa['inf']);
//$pa['combat_inf'] .= $infnm;
return 1;
}
return 0;
}
//受到技能异常(眩晕、石化)
function get_skill_inf(&$pa,$sk,$times,$type=0)
{
......
......@@ -46,6 +46,37 @@
unset($pa['bskill']);
}
}
# NPC释放战斗技 暂时先重复写一遍,之后合并到一个函数里
if(!$active && $pa['type'] && !empty($pa['clbpara']['skill']))
{
# 打乱并遍历pa技能队列 寻找可用战斗技
$npc_skill = $pa['clbpara']['skill'];
shuffle($npc_skill);
foreach($npc_skill as $sk)
{
if(get_skilltags($sk,'battle') && !check_skill_unlock($sk,$pa) && !check_skill_cost($pa['bskill'],$pa))
{
$bsk = $sk;
$bsk_name = $cskills[$bsk]['name'];
# 扣除怒气
$bsk_cost = get_skillvars($bsk,'ragecost');
if($bsk_cost) $pa['rage'] -= $bsk_cost;
# 成功释放主动技,应用标记
$pa['bskill_'.$bsk] = 1;
$log .= "<span class=\"lime\">{$pa['nm']}{$pd['nm']}发动了技能「{$bsk_name}」!</span><br>";
# 限次技每次使用时次数+1
if(get_skilltags($bsk,'limit'))
{
set_skillpara($bsk,'active_t',get_skillpara($bsk,'active_t',$pa['clbpara'])+1,$pa['clbpara']);
}
# 检查是否需要addnews
addnews($now,'bsk_'.$bsk,$pa['name'],$pd['name']);
# 别让NPC放两个技能!
break;
}
}
}
return;
}
......@@ -72,7 +103,7 @@
if($sk_dice < $sk_obbs)
{
$pa['skill_c1_crit'] = 1;
$pa['skill_c1_crit_log'] = "<span class=\"yellow b\">{$pa['nm']}朝着{$pd['nm']}打出了凶猛的一击!<span class=\"cyan b\">{$pd['nm']}被打晕了过去!</span></span><br>";
$pa['skill_c1_crit_log'] = "<span class=\"yellow\">{$pa['nm']}朝着{$pd['nm']}打出了凶猛的一击!<span class=\"clan\">{$pd['nm']}被打晕了过去!</span></span><br>";
}
}
# 「枭眼」特殊判定:射程不小于对方时激活效果
......@@ -194,13 +225,13 @@
$hitrate *= $sk_r;
}
#「瞄准」效果判定:
if(isset($pa['skill_c4_aiming']))
if(isset($pa['bskill_c4_aiming']))
{
$sk_r = 1 + (get_skillvars('c4_aiming','accgain') / 100);
$hitrate *= $sk_r;
}
#「穿杨」效果判定:
if(isset($pa['skill_c4_sniper']))
if(isset($pa['bskill_c4_sniper']))
{
$sk_r = 1 + (get_skillvars('c4_sniper','accgain') / 100);
$hitrate *= $sk_r;
......@@ -213,6 +244,13 @@
$sk_r = 1 - (get_skillvars('c3_hawkeye','accloss') / 100);
$hitrate *= $sk_r;
}
#「灵力」效果判定:
if(isset($pd['skill_c9_spirit']))
{
$sk_lvl = get_skilllvl('c9_spirit',$pd);
$sk_r = 1 - (get_skillvars('c9_spirit','accloss',$sk_lvl) / 100);
$hitrate *= $sk_r;
}
return $hitrate;
}
......@@ -242,6 +280,7 @@
$sk_r = 1 + (get_skillvars('c4_stable','rbgain',$sk_lvl) / 100);
$hitrate *= $sk_r;
}
# 减益:
#「枭眼」效果判定:
if(isset($pd['skill_c3_hawkeye']))
......@@ -249,6 +288,13 @@
$sk_r = 1 - (get_skillvars('c3_hawkeye','rbloss') / 100);
$hitrate *= $sk_r;
}
#「灵力」效果判定:
if(isset($pd['skill_c9_spirit']))
{
$sk_lvl = get_skilllvl('c9_spirit',$pd);
$sk_r = 1 - (get_skillvars('c9_spirit','rbloss',$sk_lvl) / 100);
$hitrate *= $sk_r;
}
return $hitrate;
}
......@@ -278,7 +324,7 @@
$inftimes += $sk_fix;
}
#「咆哮」效果判定:
if(isset($pa['skill_c4_roar']))
if(isset($pa['bskill_c4_roar']))
{
//获取致伤效果加成
$sk_fix = get_skillvars('c4_roar','inftfix');
......@@ -306,7 +352,7 @@
{
$ex_dmg_r = 1;
# 「附魔」效果判定:
if(isset($pa['skill_c3_enchant']))
if(isset($pa['bskill_c3_enchant']))
{
$exdmgarr = get_skillvars('c3_enchant','exdmgarr');
if(isset($exdmgarr[$key]) && !empty(get_skillpara('c3_enchant',$exdmgarr[$key],$pa['clbpara'])))
......
......@@ -178,9 +178,15 @@
}
# 升级指定技能会触发的事件,返回0时代表无法升级技能
function upgclbskills_events($event,$sk)
function upgclbskills_events($event,$sk,$data=NULL)
{
global $log,$cskills,$clbpara;
global $log,$cskills,$clbpara,$name;
# 事件:激活技能
if($event == 'active_news')
{
addnews($now,'ask_'.$sk,$name);
return 1;
}
# 事件:治疗
if($event == 'heal')
{
......@@ -206,6 +212,28 @@
}
return 1;
}
# 事件:怒气充能
if($event == 'charge')
{
global $rage;
if($rage >= 255)
{
$log .= "你不需要使用这个技能!<br>";
return 0;
}
$rage = min(255,$rage + get_skillvars('c9_charge','rageadd'));
// 检查当前技能使用次数
$active_t = get_skillpara('c9_charge','active_t',$clbpara);
// 第3次使用时开始冷却
if($active_t+1 > get_skillvars('c9_charge','freet'))
{
$event = 'setstarttimes_c9_charge';
}
else
{
return 1;
}
}
# 事件:获取指定技能
if(strpos($event,'getskill_') === 0)
{
......
......@@ -1037,6 +1037,18 @@
{
$pa_rgup = rand(1,2);
$pa['rage'] = min(255,$pa['rage']+$pa_rgup);
# 成功发动战斗技时,额外返还10%怒气
if(isset($pa['bskill']) && isset($pa['bskill_'.$pa['bskill']]))
{
$bsk = $pa['bskill'];
$bsk_cost = get_skillvars($bsk,'ragecost');
if($bsk_cost)
{
$pa['rage'] += round($bsk_cost*0.1);
# 必杀技能额外返还15点怒气
if($bsk == 'c9_lb') $pa['rage'] += get_skillvars('c9_lb','rageback');
}
}
}
}
# 无论攻击是否命中,计算pd(防守方)因挨打获得的怒气
......
......@@ -317,6 +317,10 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"orange\">{$a}发送了控制指令,全部禁区解除!</span><br>\n";
} elseif($news == 'csl_addarea') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"orange\">{$a}发送了控制指令,下一回禁区提前到来了!</span><br>\n";
} elseif(strpos($news,'ask_')===0) {
$ask = substr($news,4);
$aname = $cskills[$ask]['name'];
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}发动了技能<span class=\"yellow\">「{$aname}」</span>!</span><br>\n";
} elseif(strpos($news,'bsk_')===0) {
$bsk = substr($news,4);
$bname = $cskills[$bsk]['name'];
......
......@@ -687,6 +687,29 @@ function addnpc($type,$sub,$num,$time = 0,$clbstatus=NULL,$aitem=NULL,$apls=NULL
}
//$npc['pls'] = rand(1,$plsnum-1);
}
# NPC技能初始化
// 社团技能初始化
global $club_skillslist;
if(isset($club_skillslist[$npc['club']]))
{
if(empty($npc['clbpara'])) $npc['clbpara']['skill'] = Array();
$npc_csk = $club_skillslist[$npc['club']];
foreach($npc_csk as $sk) getclubskill($sk,$npc['clbpara']);
}
// 自定技能初始化
global $cskills;
if(!empty($npc['clubskill']))
{
foreach($npc['clubskill'] as $sk) getclubskill($sk,$npc['clbpara']);
}
// 自定技能参数初始化
if(!empty($npc['clubskillpara']))
{
foreach($npc['clubskillpara'] as $sk => $skarr)
{
foreach($skarr as $skpara => $skvalue) set_skillpara($sk,$skpara,$skvalue,$npc['clbpara']);
}
}
//自定义addnpc出现位置,会覆盖原本预设的位置。 TODO:要不要发个特别的news?
if(isset($apls)) $npc['pls'] = (int)$apls;
//自定义addnpc身上携带的道具,会覆盖原本预设的道具。 格式:$aitem=Array($iid=>Array($itm,$itmk,$itme,$itms,$itmsk),...)
......@@ -758,6 +781,33 @@ function evonpc($type,$name){
$npc['wp'] = $npc['wk'] = $npc['wg'] = $npc['wc'] = $npc['wd'] = $npc['wf'] = $npc['skill'];
unset($npc['skill']);
$qry = '';
# NPC进化后技能初始化
// 社团技能初始化
global $club_skillslist;
if(isset($club_skillslist[$npc['club']]))
{
if(empty($npc['clbpara'])) $npc['clbpara']['skill'] = Array();
$npc_csk = $club_skillslist[$npc['club']];
foreach($npc_csk as $sk) getclubskill($sk,$npc['clbpara']);
}
// 自定技能初始化
global $cskills;
if(!empty($npc['clubskill']))
{
foreach($npc['clubskill'] as $sk) getclubskill($sk,$npc['clbpara']);
}
// 自定技能参数初始化
if(!empty($npc['clubskillpara']))
{
foreach($npc['clubskillpara'] as $sk => $skarr)
{
foreach($skarr as $skpara => $skvalue) set_skillpara($sk,$skpara,$skvalue,$npc['clbpara']);
}
}
unset($npc['clubskill']);unset($npc['clubskillpara']);
# todo:整理下这堆烂摊子
$npc['clbpara'] = json_encode($npc['clbpara']);
//$npc = player_format_with_db_structure($npc);
foreach($npc as $key => $val){
$qry .= "$key = '{$val}',";
}
......
......@@ -2,8 +2,8 @@
<TR height="20">
<TD class="b1" width="30px"><span>排名</span></TD>
<TD class="b1" width="45px"><span>UID</span></TD>
<TD class="b1" width="95px"><span>{lang nick}</span></TD>
<TD class="b1" width="95px"><span>{lang name}</span></TD>
<TD class="b1" width="75px"><span>{lang nick}</span></TD>
<TD class="b1" width="35px"><span>{lang gender}</span></TD>
<TD class="b1" width="80px"><span>{lang icon}</span></TD>
<TD class="b1" style="maxwidth:120"><span>{lang motto}</span></TD>
......@@ -18,8 +18,8 @@
<TR height="20">
<TD class="b2"><span><!--{if $urdata['number']==1}--><a title="触手!"><span class="red">榜首</span></a><!--{elseif $urdata['number']<=10}--><span class="yellow">$urdata['number']</span><!--{else}-->$urdata['number']<!--{/if}--></span></TD>
<TD class="b3"><span>$urdata['uid']</span></TD>
<TD class="b3"><span><u><a href="user_profile.php?playerID=$urdata['username']">$urdata['username']</a></u></span></TD>
<TD class="b3"><span>$urdata['nickinfo']</span></TD>
<TD class="b3"><span><u><a href="user_profile.php?playerID=$urdata['username']">$urdata['username']</a></u></span></TD>
<TD class="b3"><span><!--{if $urdata['gender']}-->$sexinfo[$urdata['gender']]<!--{else}-->$sexinfo[0]<!--{/if}--></span></TD>
<TD class="b3"><span><IMG src="img/$urdata['img']" width="70" height="40" border="0" align="absmiddle"></span></TD>
<TD class="b3"><span>$urdata['motto']</span></TD>
......
......@@ -3,6 +3,8 @@
<!--{eval $cskill = $cskills[$skid];}-->
<!--{if isset($cskill['maxlvl'])}-->
<!--{eval $now_clvl = get_skilllvl($skid,$uidata); $max_lvl_flag = $now_clvl >= $cskill['maxlvl'] ? 1 : 0;}-->
<!--{else}-->
<!--{eval $max_lvl_flag = 0;}-->
<!--{/if}-->
<tr>
<td class="b1" width="40">
......@@ -43,12 +45,11 @@
<td valign="center" align="center">
<span class="yellow">
<!-- 未满足解锁条件时显示的文本,自己填或使用下面的方式 -->
<!--{eval $skid_lockdesc = $cskill['lockdesc'][$unlock_flag];}-->
<!--{if is_array($unlock_flag)}-->
<!--{eval $unlock_cd = $unlock_flag[1]; $unlock_flag = $unlock_flag[0]; $unlock_flag = str_replace("[:cd:]","$unlock_cd",$unlock_flag);}-->
<!--{/if}-->
<!--{eval $unlock_flag = is_array($cskill['lockdesc']) ? $cskill['lockdesc'][$unlock_flag] : $cskill['lockdesc']; $unlock_flag = isset($unlock_cd) ? str_replace("[:cd:]","$unlock_cd",$unlock_flag) : $unlock_flag;}-->
<span class="yellow">$skid_lockdesc</span>
$unlock_flag
</span>
</td>
</tr>
......
......@@ -8,7 +8,7 @@
<TR height="20">
<TD class="b1" width="30px"><span></span></TD>
<TD class="b1" width="60px"><span>胜利方式</span></TD>
<TD class="b1" width="75px"><span>头衔</span></TD>
<TD class="b1" width="95px"><span>头衔</span></TD>
<TD class="b1" width="95px"><span>优胜者名</span></TD>
<TD class="b1" width="80px"><span>头像</span></TD>
<TD class="b1"><span>游戏结束时间</span></TD>
......
......@@ -124,7 +124,9 @@ if($mode == 'enter') {
//$itm[6] = '银白盒子'; $itmk[6] = 'p'; $itme[6] = 1; $itms[6] = 1; $itmsk[6] = 'ps';
$itm[5] = '秋刀鱼罐头'; $itmk[5] = 'HB'; $itme[5] = 70; $itms[5] = 15;
//$itm[5] = 'GRAND OPENING 「开门大吉」'; $itmk[5] = 'p000'; $itme[5] = 1; $itms[5] = 1;
$dice = rand(1,5); $dice_name = $clubinfo[$dice];
$dice = rand(1,6);
if($dice == 6) $dice = 9;
$dice_name = $clubinfo[$dice];
$itm[5] = '「'.$dice_name.' 社团卡」'; $itmk[5] = 'ZB'; $itme[5] = $dice; $itms[5] = 1;
if ($wingames <=1){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment