Commit 0bb887d5 authored by Nemo Ma's avatar Nemo Ma Committed by GitHub

Merge pull request #160 from hikawiier/waaagh

update club13
parents 4e64d8bb 4faa7f6a
<?php
if(!defined('IN_GAME')) exit('Access Denied');
$npcinit = array
(
'name' => '', 'pass' => 'bra', 'gd' => 'm', 'icon' => 0, 'club' => 0,
'mhp' => 0, 'msp' => 0, 'att' => 0, 'def' => 0, 'pls' => 0, 'lvl' => 0,
'money' => 0, 'inf' => '', 'rage' => 0, 'pose' => 0, 'tactic' => 0,
'killnum' => 0, 'state' => 1, 'teamID' => '', 'teamPass' => '','bid' => 0,
'wp' => 0, 'wk' => 0, 'wc' => 0, 'wg' => 0, 'wd' => 0, 'wf' => 0,
'wep' => '', 'wepk' => '', 'wepe' => 0, 'weps' => 0, 'wepsk' => '',
'arb' => '', 'arbk' => '', 'arbe' => 0, 'arbs' => 0, 'arbsk' => '',
'arh' => '', 'arhk' => '', 'arhe' => 0, 'arhs' => 0, 'arhsk' => '',
'arf' => '', 'arfk' => '', 'arfe' => 0, 'arfs' => 0, 'arfsk' => '',
'ara' => '', 'arak' => '', 'arae' => 0, 'aras' => 0, 'arask' => '',
'art' => '', 'artk' => '', 'arte' => 0, 'arts' => 0, 'artsk' => '',
'itm0' => '', 'itmk0' => '', 'itme0' => 0, 'itms0' => 0, 'itmsk0' => '',
'itm1' => '', 'itmk1' => '', 'itme1' => 0, 'itms1' => 0, 'itmsk1' => '',
'itm2' => '', 'itmk2' => '', 'itme2' => 0, 'itms2' => 0, 'itmsk2' => '',
'itm3' => '', 'itmk3' => '', 'itme3' => 0, 'itms3' => 0, 'itmsk3' => '',
'itm4' => '', 'itmk4' => '', 'itme4' => 0, 'itms4' => 0, 'itmsk4' => '',
'itm5' => '', 'itmk5' => '', 'itme5' => 0, 'itms5' => 0, 'itmsk5' => '',
'itm6' => '', 'itmk6' => '', 'itme6' => 0, 'itms6' => 0, 'itmsk6' => '',
);
$anpcinfo = array
(
2 => array
......@@ -159,6 +138,12 @@ $anpcinfo = array
'num' => 1,
'pass' => 'bra',
'club' => 9,
'clubskillpara' => Array
(
'c9_spirit' => Array(
'lvl' => 3,
),
),
'bid' => 0,
'inf' => '',
'state' => 1,
......@@ -278,6 +263,15 @@ $anpcinfo = array
'icon' => 3,
'gd' => 'f',
'club' => 9,
'clubskillpara' => Array
(
'c9_spirit' => Array(
'lvl' => 3,
),
'c9_charge' => Array(
'active-t' => 2,
),
),
'wep' => '简称为UCW的杏仁豆腐',
'wepk' => 'WK',
'wepe' => 133,
......@@ -295,6 +289,16 @@ $anpcinfo = array
'icon' => 4,
'gd' => 'm',
'club' => 8,
'inf' => 'p',
'clubskillpara' => Array
(
'c8_expert' => Array(
'lvl' => 3,
),
'c8_infilt' => Array(
'lvl' => 5,
),
),
'wep' => '彩虹色的杏仁豆腐',
'wepk' => 'WD',
'wepe' => 100,
......@@ -367,6 +371,19 @@ $anpcinfo = array
(
'name' => 'Acg_Xilin',
'icon' => 2,
'club' => 4,
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 3,
),
'c4_break' => Array(
'lvl' => 2,
),
'c4_roar' => Array(
'active' => 1,
),
),
'wep' => '【全屏幕弹幕发射】',
'wepk' => 'WG',
'wepe' => 360,
......@@ -390,9 +407,15 @@ $anpcinfo = array
'num' => 3,
'pass' => 'bra',
'club' => 9,
'clubskillpara' => Array
(
'c9_spirit' => Array(
'lvl' => 3,
),
),
'bid' => 0,
'inf' => '',
'rage' => 100,
'rage' => 255,
'pose'=> 1,
'tactic' => 3,
'killnum' => 0,
......@@ -1524,7 +1547,16 @@ $anpcinfo = array
(
'name' => '坚韧之子·拉姆',
'icon' => 154,
'club' => 1,
'club' => 13,
'clubskillpara' => Array
(
'c13_quick' => Array(
'lvl' => 2,
),
'c13_wingchun' => Array(
'lvl' => 1,
),
),
'mhp' => 2904,
'msp' => 2233,
'att' => 201,
......@@ -2160,7 +2192,22 @@ $anpcinfo = array
'mercsalary' => 50,
'mercfireaction' => 1,
'coverp' => 50,
'club' => 1,
'club' => 13,
'clubskill' => Array(
'buff_duel',
),
'clubskillpara' => Array
(
'c13_quick' => Array(
'lvl' => 3,
),
'c13_wingchun' => Array(
'lvl' => 2,
),
'c13_duel' => Array(
'active-t' => 1,
),
),
'name' => 'Chuck Norris',
'icon' => 360,
'pose'=> 2,
......
This diff is collapsed.
......@@ -6,6 +6,7 @@ $npcinit = array
'mhp' => 0, 'msp' => 0, 'att' => 0, 'def' => 0, 'pls' => 0, 'lvl' => 0,
'money' => 0, 'inf' => '', 'rage' => 0, 'pose' => 0, 'tactic' => 0,
'killnum' => 0, 'state' => 1, 'teamID' => '', 'teamPass' => '','bid' => 0,
'clbpara' => Array(),
'wp' => 0, 'wk' => 0, 'wc' => 0, 'wg' => 0, 'wd' => 0, 'wf' => 0, 'skills' => 0, 'rp' => 0,
'wep' => '', 'wepk' => '', 'wepe' => 0, 'weps' => 0, 'wepsk' => '',
'arb' => '', 'arbk' => '', 'arbe' => 0, 'arbs' => 0, 'arbsk' => '',
......@@ -1826,6 +1827,21 @@ $npcinfo = array
'gd' => 'f',
'icon' => 101,
'club' => 10,
'clubskill' => Array(
'c4_stable','c4_break',
),
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 3,
),
'c4_break' => Array(
'lvl' => 3,
),
'c10_insight' => Array(
'lvl' => 4,
),
),
'mhp' => 4932,
'att' => 5120,
'skill' => 1500,
......@@ -1977,7 +1993,22 @@ $npcinfo = array
'name' => '北京推倒你',
'gd' => 'm',
'icon' => 102,
'club' => 1,
'club' => 13,
'clubskill' => Array(
'buff_duel',
),
'clubskillpara' => Array
(
'c13_quick' => Array(
'lvl' => 4,
),
'c13_wingchun' => Array(
'lvl' => 2,
),
'c13_duel' => Array(
'active-t' => 1,
),
),
'skill' => 600,
'wep' => '拳头',
'wepk' => 'WN',
......@@ -2017,6 +2048,20 @@ $npcinfo = array
'icon' => 105,
'hp' => 4900,
'club' => 4,
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 6,
'costcount' => 20,
),
'c4_break' => Array(
'lvl' => 3,
'costcount' => 19,
),
'c4_sniper' => Array(
'active' => 1,
),
),
'skill' => 800,
'wep' => 'AKM-ExS',
'wepk' => 'WJ',
......@@ -2031,6 +2076,15 @@ $npcinfo = array
'mhp' => 19000,
'icon' => 98,
'club' => 2,
'clubskill' => Array(
'buff_annihil'
),
'clubskillpara' => Array
(
'c2_intuit' => Array(
'lvl' => 6,
),
),
'skill' => 600,
'wep' => '画(ping)笔(ru)',
'wepk' => 'WK',
......@@ -2044,6 +2098,19 @@ $npcinfo = array
'gd' => 'm',
'icon' => 10,
'club' => 7,
'clubskill' => Array
(
'buff_shield'
),
'clubskillpara' => Array
(
'c7_shield' => Array(
'lvl' => 5,
),
'buff_shield' => Array(
'svars' => 1766,
),
),
'skill' => 1000,
'wep' => '破解的PSP-3000',
'wepk' => 'WP',
......@@ -2058,7 +2125,17 @@ $npcinfo = array
'pose' => 4,
'att' => 4000,
'icon' => 10,
'inf' => 'p',
'club' => 8,
'clubskillpara' => Array
(
'c8_expert' => Array(
'lvl' => 4,
),
'c8_infilt' => Array(
'lvl' => 6,
),
),
'skill' => 600,
'wep' => '超级☆无敌辰音LILY',
'wepk' => 'WD',
......@@ -2073,6 +2150,20 @@ $npcinfo = array
'def' => 30250,
'icon' => 4,
'club' => 4,
'clubskillpara' => Array
(
'c4_stable' => Array(
'lvl' => 6,
'costcount' => 20,
),
'c4_break' => Array(
'lvl' => 3,
'costcount' => 19,
),
'c4_roar' => Array(
'active' => 1,
),
),
'skill' => 600,
'wep' => '光翼型近接支援残酷戦闘機',
'wepk' => 'WG',
......@@ -2250,6 +2341,18 @@ $npcinfo = array
'gd' => 'm',
'icon' => 4,
'club' => 10,
'clubskill' => Array(
'c4_sniper',
),
'clubskillpara' => Array
(
'c4_sniper' => Array(
'active' => 1,
),
'c10_insight' => Array(
'lvl' => 4,
),
),
'wep' => '205mm绯牡丹加农炮',
'wepk' => 'WJ',
'wepe' => 800,
......
......@@ -40,7 +40,7 @@ $gwin = Array(0 => '程序故障', 1 => '全部死亡',2 => '最后幸存',3 =>
$week = Array('日','一','二','三','四','五','六');
$clubinfo = Array(
0=>'无',
1=>'铁拳无敌',
1=>'街头霸王',
2=>'见敌必斩',
3=>'灌篮高手',
4=>'狙击鹰眼',
......@@ -53,6 +53,7 @@ $clubinfo = Array(
10=>'天赋异禀',
11=>'富家子弟',
12=>'全能兄贵', //根性兄贵、肌肉兄贵、全能骑士合并为全能兄贵
13=>'铁拳无敌',
//13=>'根性兄贵',
//14=>'肌肉兄贵',
15=>'<span class="L5">L5状态</span>',
......
......@@ -337,7 +337,7 @@ if(!defined('IN_GAME')) exit('Access Denied');
# 24. 殴系爱好者
24 => Array(
'wp' => '[:+=:]50',
'itm6' => '「铁拳无敌」称号卡', 'itmk6' => 'ZB', 'itme6' => 1, 'itms6' => 1, 'itmsk6' => '',
'itm6' => '「街头霸王」称号卡', 'itmk6' => 'ZB', 'itme6' => 1, 'itms6' => 1, 'itmsk6' => '',
),
# 26. 斩系爱好者
26 => Array(
......
......@@ -61,8 +61,8 @@ function valid_getclublist_t2($udata)
# 特殊社团列表
function valid_getclublist_t1($udata)
{
# 随机可选范围(选3):6-疾风 10-天赋 11-富家 12-全能 19-晶莹
$temp_t1_list = Array(6,10,11,12,19);
# 随机可选范围(选3):6-疾风 10-天赋 11-富家 12-全能 13-铁拳 19-晶莹
$temp_t1_list = Array(6,10,11,12,13,19);
global $db,$gtablepre;
......@@ -114,21 +114,11 @@ function getclub($who, &$c1, &$c2, &$c3)
if ($c2>$c3) swap($c2,$c3);
}
function changeclub($clb,&$data=NULL)
function changeclub($clb,&$data)
{
if(!isset($data))
{
global $club;
lostclub();
$club = $clb;
updateskill();
}
else
{
lostclub($data);
$data['club'] = $clb;
updateskill($data);
}
lostclub($data);
$data['club'] = $clb;
updateskill($data);
}
function updateskill(&$data=NULL)
......@@ -143,7 +133,7 @@ function updateskill(&$data=NULL)
}
extract($data,EXTR_REFS);
if ($club==1) {$wp+=50;}
if ($club==1 || $club==13) {$wp+=50;}
if ($club==2) $wk+=50;
if ($club==3) $wc+=50;
if ($club==4) $wg+=50;
......@@ -151,22 +141,19 @@ function updateskill(&$data=NULL)
if ($club==9) $wf+=40;
if ($club==11) $money+=680;
if ($club==12) {$wp+=25; $wk+=25; $wc+=25; $wg+=25; $wd+=25; $wf+=25; $mhp+=250; $hp+=250; $att+=300; $def+=300;}
/*if ($club==16) { $wp+=25; $wk+=25; $wc+=25; $wg+=25; $wd+=25; $wf+=25; }
if ($club==13) { $mhp+=250; $hp+=250; }
if ($club==14) { $att+=300; $def+=300; }*/
# 变更社团时 获取社团技能
//include_once GAME_ROOT.'./include/game/revclubskills.func.php';
if(!isset($data))
if(!empty($club_skillslist[$club]))
{
$cks = $club_skillslist[$club];
foreach($cks as $sk) getclubskill($sk,$clbpara);
}
else
{
$cks = $club_skillslist[$data['club']];
foreach($cks as $sk) getclubskill($sk,$data['clbpara']);
foreach($cks as $sk)
{
# NPC不会学习带有'player'标签的技能
if(get_skilltags($sk,'player') && $type) continue;
getclubskill($sk,$clbpara);
}
}
return;
}
function lostclub(&$data=NULL)
......
......@@ -331,14 +331,20 @@ function itemuse($itmn,&$data=NULL) {
}
} elseif (strpos ( $itmk, 'T' ) === 0) {
//global $pls, $exp, $upexp, $wd, $club,$lvl,$db,$tablepre;
if(!check_skill_unlock('c13_master',$data))
{
$log .= "你老脸一红,只觉得自己是被鬼迷了心窍,怎么会起了这种卑劣的念头!<br>羞愤之下,你一口把<span class='yellow'>{$itm}</span>吞进了肚子。<br>";
$itms = 0;
destory_single_item($data,$itmn,1);
$mode = 'command';
return;
}
$trapk = str_replace('TN','TO',$itmk);
//$mapfile = GAME_ROOT . "./gamedata/mapitem/{$pls}mapitem.php";
//$itemdata = "$itm,TO,$itme,1,$pid,\n";
//writeover ( $mapfile, $itemdata, 'ab' );
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$itm', '$trapk', '$itme', '1', '$pid', '$pls')");
$log .= "设置了陷阱<span class=\"red\">$itm</span>。<br>小心,自己也很难发现。<br>";
//echo $exp;
if($club == 5){$exp += 2;$wd+=2;}
else{$exp++;$wd++;}
......
......@@ -76,11 +76,45 @@ function calc_trap_escape_rate(&$pa,$playerflag=0,$selflag=0)
return min($escrate,$max_escrate);
}
# 计算触发陷阱后的“迎击事件”
# 计算触发陷阱后的陷阱伤害
function calc_trap_damage(&$pa,$pd=NULL,$playerflag=0,$selflag=0)
{
global $log;
// 奇迹陷阱
if($pa['itmk0'] == 'TOc')
{
$damage = $pa['hp'];
return $damage;
}
// 随机数大神的陷阱
if($pa['itmk0'] == 'TO8')
{
$damage = $pa['hp'] / 8;
return $damage;
}
$damage = round(rand(0,$pa['itme0']/2)+($pa['itme0']/2));
# 防御姿态可以降低陷阱伤害
$damage = $pa['tactic'] == 2 ? round($damage * 0.75) : $damage;
# 技能「宗师」效果判定
if(!check_skill_unlock('c13_master',$pa))
{
$pa['skilllog'] = "大祸临头,你却呵呵笑道:“雕虫小技,不足为惧!”<br>";
$damage_p = get_skillvars('c13_master','trapdmgloss');
$pa['skilllog'] .= "已经跳到你腿上的<span class='yellow'>{$pa['itm0']}</span>显然被你非凡的气魄震慑到了!你仅";
$damage = round($damage * (1 - ($damage_p/100)));
}
return $damage;
}
# 计算触发陷阱后的伤害减免事件
function check_trap_def_event(&$pa,$damage,$playerflag=0,$selflag=0)
{
# 奇迹雷不能迎击
if($pa['itmk0'] == 'TOc') return $damage;
# 奇迹雷、神力雷不能迎击
if($pa['itmk0'] == 'TOc' || $pa['itmk0'] == 'TO8') return $damage;
# 检查是否有迎击属性
include_once GAME_ROOT.'./include/game/revattr.func.php';
if(empty($pa['ex_keys'])) $pa['ex_keys'] = array_merge(\revattr\get_equip_ex_array($pa),\revattr\get_wep_ex_array($pa));
......@@ -95,6 +129,14 @@ function check_trap_def_event(&$pa,$damage,$playerflag=0,$selflag=0)
$damage = 0;
}
}
# 「天佑」技能判定
if($damage && !check_skill_unlock('buff_godbless',$data))
{
$damage = 0;
$log .= "<span class=\"yellow\">「天佑」使你免疫了陷阱伤害!</span><br>";
}
return $damage;
}
......@@ -122,7 +164,6 @@ function calc_trap_reuse_rate($pa,$playerflag=0,$selflag=0)
return $fdrate;
}
function trap(&$data=NULL){
global $log,$cmd,$mode,$iteminfo;
global $now,$db,$tablepre;
......@@ -167,47 +208,14 @@ function trap(&$data=NULL){
if($dice >= $escrate)
{
$bid = $itmsk0;
// 奇迹陷阱
if($itmk0 == 'TOc')
{
$damage = $hp;
$goodmancard = 0;
goto real_trap_damage;
}
// 随机数大神的陷阱
elseif($itmk0 == 'TO8')
{
$damage = $hp / 8;
$goodmancard = 0;
}
else
{
$damage = round(rand(0,$itme0/2)+($itme0/2));
// 防御姿态可以降低陷阱伤害
$damage = $tactic == 2 ? round($damage * 0.75) : $damage;
//好人卡特别活动
//global $itm1,$itmk1,$itms1,$itm2,$itmk2,$itms2,$itm3,$itmk3,$itms3,$itm4,$itmk4,$itms4,$itm5,$itmk5,$itms5;
$goodmancard = 0;
for($i=1;$i<=5;$i++){
if(${'itms'.$i} && ${'itm'.$i} == '好人卡' && ${'itmk'.$i} == 'Y'){
$goodmancard += ${'itms'.$i};
}
}
}
# 计算陷阱伤害
$damage = calc_trap_damage($data,NULL,$playerflag,$selflag);
# 检查陷阱是否被迎击
$damage = check_trap_def_event($data,$damage,$playerflag,$selflag);
# 「天佑」技能判定
if($damage && $itmk0 != 'TOc' && !check_skill_unlock('buff_godbless',$data))
{
$damage = 0;
$log .= "<span class=\"yellow\">「天佑」使你免疫了陷阱伤害!</span><br>";
}
if($damage)
{
real_trap_damage:
$tmp_club=$club;
$hp -= $damage;
$trapkill = false;
......@@ -216,19 +224,15 @@ function trap(&$data=NULL){
{
addnews($now,'trap',$name,$trname,$itm0,$nick);
}
$log .= "糟糕,你触发了{$trperfix}陷阱<span class=\"yellow\">$itm0</span>!受到<span class=\"dmg\">$damage</span>点伤害!<br>";
$log .= "糟糕,你触发了{$trperfix}陷阱<span class=\"yellow\">$itm0</span>!<br>";
if($data['skilllog']) $log.= $data['skilllog'];
$log .= "受到<span class=\"dmg\">$damage</span>点伤害!<br>";
# 踩雷rp结算
$rp_up = -1 * $rp / 2;
include_once GAME_ROOT.'./include/state.func.php';
if($rp_up) rpup_rev($data,$rp_up);
if($goodmancard)
{
$gm = ceil($goodmancard*rand(80,120)/100);
$log .= "在你身上的<span class=\"yellow\">好人卡</span>的作用下,你受到的伤害增加了<span class=\"red\">$gm</span>点!<br>";
$hp -= $gm;
}
# 陷阱击杀
if($hp <= 0)
{
......
......@@ -3,6 +3,20 @@ if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
# 创建一个合成索引
function smartmix_create_recipe_quest($itm,$tp=0,&$data=NULL)
{
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
# 创建新的合成索引时,清空旧索引内记录的数据
if(!empty($clbpara['smartmix'])) unset($clbpara['smartmix']);
}
//以道具名反查mixinfo数据
//tp & 1 以原料反查,tp & 2 以产物反查
//返回mixinfo里的单个array
......
......@@ -147,7 +147,7 @@ namespace revattr
$bsk = $pa['bskill'];
$bsk_name = $cskills[$bsk]['name'];
# 扣除怒气
$bsk_cost = get_skillvars($bsk,'ragecost');
$bsk_cost = get_skillragecost($bsk,$pa);
if($bsk_cost) $pa['rage'] -= $bsk_cost;
# 成功释放主动技,应用标记
$pa['bskill_'.$bsk] = 1;
......@@ -682,8 +682,14 @@ namespace revattr
if($pa['wep_kind'] == 'N')
{
if(!isset($pa['wep_skill'])) $pa['wep_skill'] = get_wep_skill($pa);
$pa['wepe_t'] = round($pa['wep_skill']*2/3);
}
$pa['wepe_t'] = round($pa['wep_skill']*2/3);
#「拳法」效果判定,在空手基础上再额外增加
if(isset($pa['skill_c13_kungfu']))
{
$pa['wepe_t'] = round($pa['wep_skill']);
}
}
//射系 武器伤害=面板数值
elseif($pa['wep_kind'] == 'G' || $pa['wep_kind'] == 'J')
{
......@@ -795,19 +801,22 @@ namespace revattr
$pa['charge_flag'] = 1;
}
}
# 获取pd社团技能对防御力的加成(旧)
/*if(!empty($pd['skills']))
{
rev_get_clubskill_bonus($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$att1,$def1);
}*/
# 获取pd社团技能对防御力的加成(新)
$sk_def = 0;
# 「格挡」技能加成
if(!check_skill_unlock('c1_def',$pd))
{
$def_trans_rate = $cskills['c1_def']['vars']['trans'];
$def_maxtrans = $cskills['c1_def']['vars']['maxtrans'];
$sk_def = min($def_maxtrans, $def_trans_rate * $pd['wepe'] / 100);
$sk_def += min($def_maxtrans, $def_trans_rate * $pd['wepe'] / 100);
}
# 「消力」技能加成
if(!check_skill_unlock('c13_parry',$pd))
{
$sk_def += $pd['wp'];
}
# 汇总:
$total_def = $base_def+$equip_def;
if(!empty($def1)) $total_def += $def1;
......@@ -918,6 +927,8 @@ namespace revattr
//计算在原始伤害基础上附加的固定伤害
function get_original_fix_dmg_rev(&$pa,&$pd,$active)
{
global $log;
$damage = 0;
# 重枪
if ($pa['wep_kind'] == 'J')
......@@ -929,7 +940,6 @@ namespace revattr
# 灵力武器
if ($pa['wep_kind'] == 'F')
{
global $log;
if(isset($pa['sldr_flag']) || isset($pd['sldr_flag']))
{
$log.="<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>";
......@@ -939,6 +949,14 @@ namespace revattr
$damage += $pa['wepe'];
}
}
#「乱击」判定:
if(isset($pa['bskill_c13_wingchun']))
{
$sk_p = get_skillvars('c13_wingchun','phydmgr',get_skilllvl('c13_wingchun',$pa));
$sk_dmg = round($pa['wep_skill'] * ($sk_p/100));
$log.="<span class='yellow'>{$pa['nm']}对着敌人打出了一屏幕的拳头,附加了{$sk_dmg}点伤害!</span><br>";
$damage += $sk_dmg;
}
$pa['original_dmg'] += $damage;
return $damage;
}
......@@ -1073,6 +1091,14 @@ namespace revattr
$dmg_p[]= $p;
$log.="<span class='yellow'>「解构」使{$pa['nm']}造成的物理伤害提高了{$sk_p}%!</span><br>";
}
#「宗师」判定:
if(isset($pa['skill_c13_master']) && $pa['wep_kind'] != 'N')
{
$sk_p = (strpos($pa['wep_name'],'拳')!==false && $pa['wep_kind'] == 'P') ? get_skillvars('c13_master','phydmgloss_2') : get_skillvars('c13_master','phydmgloss');
$p = 1 - ($sk_p / 100);
$dmg_p[]= $p;
$log.="<span class='yellow'>{$pa['nm']}耻于使用武器战斗!造成的物理伤害降低了{$sk_p}%!</span><br>";
}
return $dmg_p;
}
......@@ -1931,6 +1957,27 @@ namespace revattr
$log .= "<span class=\"lime\">「护盾」使{$pd['nm']}受到的伤害降低了{$sk_var}点!</span><br>";
}
# 「消力」效果判定
if(isset($pd['skill_c13_parry']))
{
$sk_dice = diceroll(99);
$sk_obbs = get_skillvars('c13_parry','parryr');
#「决战」概率增幅
if(isset($pd['skill_buff_duel'])) $sk_obbs += get_skillvars('buff_duel','rapidr');
if($sk_dice <= $sk_obbs)
{
$sk_var = min($pd['wep_skill'],get_skillvars('c13_parry','maxparry'));
if($sk_var)
{
$sk_var = min($fin_dmg,$sk_var);
$fin_dmg -= $sk_var;
$log .= "<span class=\"yellow\">{$pd['nm']}使出化劲儿,消去了{$sk_var}点伤害!</span><br>";
}
}
}
# 「灵俑」抵挡伤害判定
if(!empty($pd['clbpara']['zombieid']))
{
......
......@@ -5,9 +5,6 @@
}
# 新社团技能:
//include_once GAME_ROOT.'./include/game/dice.func.php';
# 获得指定技能 $sk:技能名;$para:$clbpara
function getclubskill($sk,&$para)
{
......@@ -41,7 +38,7 @@
function lostclubskill($sk,&$para)
{
global $cskills;
if(in_array($sk,$para['skill']))
if(!empty($para['skill']) && in_array($sk,$para['skill']))
{
# 检查技能丢失时是否要执行事件
if(isset($cskills[$sk]['lostevents']))
......@@ -74,27 +71,29 @@
return;
}
# 激活指定技能(技能名,额外参数)(这个做法还是太离谱,暂时废弃)
/*function actclbskills($data,$sk,$skpara=NULL)
# 通过自定义方式初始化技能与技能参数
# 'clubskill' => Array('sk1'); # 获取指定技能
# 'clubskillpara' => Array('sk1' => 'sk1para' => Array('para_key' => 'para_values')); # 修改指定技能参数
function customtclubskill(&$data)
{
global $log,$cskills;
if(isset($cskills[$sk]))
{
# 合法性检查
$flag = check_skill_unlock($sk,$data);
if($flag) return;
include_once GAME_ROOT.'./include/game/revclubskills_extra.func.php';
$sk_func = 'skill_'.$sk.'act';
if(function_exists($sk_func))
if(!empty($data['clubskill']))
{
foreach($data['clubskill'] as $sk) getclubskill($sk,$data['clbpara']);
}
if(!empty($data['clubskillpara']))
{
foreach($data['clubskillpara'] as $sk => $skpara)
{
if(!empty($skpara))
eval("$sk_func($skpara);");
else
eval("$sk_func();");
foreach($skpara as $para_key => $para_value)
{
//....
$data['clbpara']['skillpara'][$sk][$para_key] = $para_value;
//set_skillpara($sk,$para_key,$para_value,$data['clbpara']);
}
}
}
}*/
return;
}
# 升级指定技能 $sk:技能名;$nums:升级次数
function upgclbskills($sk,$nums=1)
......@@ -328,6 +327,17 @@
return 0;
}
function get_skillragecost($sk,$data)
{
$ragecost = get_skillvars($sk,'ragecost');
if(is_array($ragecost))
{
$sk_lvl = get_skilllvl($sk,$data);
$ragecost = $ragecost[$sk_lvl];
}
return $ragecost;
}
# 技能是否满足消耗条件,返回0时为可激活,否则返回对应的未满足条件 $sk:技能名;$data:角色数据
function check_skill_cost($sk,$data)
{
......@@ -336,8 +346,8 @@
$cannot_active_log = Array(
0 => '怒气不足,需要<span class="red">[:ragecost:]</span>点怒气',
);
$ragecost = get_skillragecost($sk,$data);
# 检查技能需要消耗的怒气条件是否满足
$ragecost = get_skillvars($sk,'ragecost');
if($ragecost && $data['rage'] < $ragecost)
{
$clog = str_replace('[:ragecost:]',$ragecost,$cannot_active_log[0]);
......
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
?>
......@@ -566,9 +566,33 @@ namespace revcombat
if(!empty($pa['wep_imp_times'])) weapon_loss($pa,$pa['wep_imp_times']);
//发出声音
addnoise ( $pa['wep_kind'], $pa['wepsk'], $now, $pa['pls'], $pa['pid'], $pd['pid'], $pa['wep_kind'] );
//增加熟练度 //天赋异禀攻击时额外+1熟练度
$pa[$skillinfo[$pa['wep_kind']]] += $pa['club'] == 10 ? 2 : 1;
//print_r($pa);
# 增加熟练度
$pa[$skillinfo[$pa['wep_kind']]] += 1;
# 天赋异禀额外+1熟练度
if($pa['club'] == 10) $pa[$skillinfo[$pa['wep_kind']]] += 1;
# 「拳法」效果判定
if(isset($pa['skill_c13_kungfu']) && $pa['wep_kind'] == 'N')
{
$sk_obbs = diceroll(99);
if($sk_obbs >= 96)
{
$pa[$skillinfo[$pa['wep_kind']]] += 4;
}
elseif($sk_obbs >= 94)
{
$pa[$skillinfo[$pa['wep_kind']]] += 3;
}
elseif($sk_obbs >= 85)
{
$pa[$skillinfo[$pa['wep_kind']]] += 2;
}
elseif($sk_obbs >= 65)
{
$pa[$skillinfo[$pa['wep_kind']]] += 1;
}
}
return $damage;
}
......
......@@ -341,7 +341,7 @@ namespace revcombat
$loop = 0;
# 「双响」效果判定
if(isset($pa['bskill_c5_double']))
if(!$loop && isset($pa['bskill_c5_double']))
{
unset($pa['bskill_c5_double']);unset($pa['bskilllog']);
$log .= "<span class=\"yellow\">{$pa['nm']}引爆了预埋的另一组爆炸物!</span><br>";
......@@ -349,7 +349,7 @@ namespace revcombat
}
# 「海虎」效果判定
if(isset($pa['skill_c12_swell']))
if(!$loop && isset($pa['skill_c12_swell']))
{
$pa['skill_c12_swell'] --;
if(empty($pa['skill_c12_swell'])) unset($pa['skill_c12_swell']);
......@@ -357,6 +357,26 @@ namespace revcombat
$loop = 1;
}
# 「快拳」效果判定
if(!$loop && isset($pa['skill_c13_quick']))
{
$sk_dice = diceroll(99);
$sk_obbs = get_skillvars('c13_quick','rapidr',get_skilllvl('c13_quick',$pa));
#「乱击」概率增幅
if(isset($pa['bskill_c13_wingchun'])) $sk_obbs += get_skillvars('c13_wingchun','rapidr',get_skilllvl('c13_wingchun',$pa));
#「决战」概率增幅
if(isset($pa['skill_buff_duel'])) $sk_obbs += get_skillvars('buff_duel','rapidr');
if($sk_dice <= $sk_obbs)
{
$pa['skill_c13_quick'] --;
if(empty($pa['skill_c13_quick'])) unset($pa['skill_c13_quick']);
$log .= "<span class=\"lime\">{$pa['nm']}身法灵动,再度出拳!</span><br>";
$loop = 1;
}
}
# 循环打击触发时,注销所有的主动技触发标记
if($loop && !empty($pa['bskill']) && !empty($pa['bskill_'.$pa['bskill']]))
{
......
......@@ -527,6 +527,13 @@ function move_search_events(&$data,$act)
set_skillpara($sk,'ms',$ms,$data['clbpara']);
}
# 「决战」效果判定
if(!check_skill_unlock('buff_duel',$data))
{
$sk_var = get_skillvars('buff_duel','wploss');
if($data['wp'] >= $sk_var) $data['wp'] -= $sk_var;
}
return;
}
......
......@@ -449,7 +449,7 @@
if(isset($pa['bskill']) && isset($pa['bskill_'.$pa['bskill']]))
{
$bsk = $pa['bskill'];
$bsk_cost = get_skillvars($bsk,'ragecost');
$bsk_cost = get_skillragecost($bsk,'ragecost');
if($bsk_cost)
{
$pa['rage'] += round($bsk_cost*0.1);
......
......@@ -72,6 +72,7 @@ function rs_game($mode = 0) {
//echo " - NPC初始化 - ";
$db->query("DELETE FROM {$tablepre}players WHERE type>0 ");
include_once config('npc',$gamecfg);
include_once GAME_ROOT."./include/game/clubslct.func.php";
//$typenum = sizeof($typeinfo);
$plsnum = sizeof($plsinfo);
$npcqry = '';
......@@ -111,30 +112,10 @@ function rs_game($mode = 0) {
//$npc['wp'] = $npc['wk'] = $npc['wg'] = $npc['wc'] = $npc['wd'] = $npc['wf'] = $npc['skill'];
if($npc['gd'] == 'r'){$npc['gd'] = rand(0,1) ? 'm':'f';}
# 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']);
}
}
# NPC称号技能初始化
if(!empty($npc['club'])) changeclub($npc['club'],$npc);
# NPC自定义技能初始化
if(!empty($npc['clubskill']) || !empty($npc['clubskillpara'])) customtclubskill($npc);
//初始化NPC所在位置
global $hidding_typelist,$deepzones;
......@@ -647,6 +628,8 @@ function movehtm($atime = 0) {
function addnpc($type,$sub,$num,$time = 0,$clbstatus=NULL,$aitem=NULL,$apls=NULL) {
global $now,$db,$gtablepre,$tablepre,$log,$plsinfo,$typeinfo,$arealist,$areanum,$gamecfg;
global $hidding_typelist,$deepzones;
include_once GAME_ROOT."./include/game/clubslct.func.php";
$time = $time == 0 ? $now : $time;
$plsnum = sizeof($plsinfo);
/*if(empty($anpcinfo) || empty($npcinit)){
......@@ -697,29 +680,12 @@ 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']);
}
}
# NPC称号技能初始化
if(!empty($npc['club'])) changeclub($npc['club'],$npc);
# NPC自定义技能初始化
if(!empty($npc['clubskill']) || !empty($npc['clubskillpara'])) customtclubskill($npc);
//自定义addnpc出现位置,会覆盖原本预设的位置。 TODO:要不要发个特别的news?
if(isset($apls)) $npc['pls'] = (int)$apls;
//自定义addnpc身上携带的道具,会覆盖原本预设的道具。 格式:$aitem=Array($iid=>Array($itm,$itmk,$itme,$itms,$itmsk),...)
......
......@@ -188,4 +188,9 @@
<input type="button" class="cmdbutton" name="sp_mercpage" value="佣兵管理" onclick="showModalDialog($('mercpage'));">
</span>
{template skill_mercpage}
<!--{/if}-->
\ No newline at end of file
<!--{/if}-->
<!--<br>
<span tooltip="创建一项新的合成索引,会覆盖掉原来的索引记录">
<input type="button" class="cmdbutton" id="v" name="skillstable" value="合成索引" onclick="showModalDialog($('skillpage'));">
</span> -->
......@@ -1643,7 +1643,7 @@ NPC也会发出重击和必杀技,请随时小心。</p>
</tr>
<tr>
<td class="b2" height=20px>
<span>铁拳无敌</span>
<span>街头霸王</span>
</td>
<td class="b3">
<span>一般</span>
......@@ -1826,6 +1826,22 @@ NPC也会发出重击和必杀技,请随时小心。</p>
<span><input type="button" class="cmdbutton" value="点击查看称号技能" onclick="showModalDialog($('skillhelp-c11'));"></span>
</td>
</tr>
<tr>
<td class="b2" height=20px>
<span>铁拳无敌</span>
</td>
<td class="b3">
<span>特殊</span>
</td>
<td class="b3">
<span>初始殴熟+50;殴熟成长更快,但使用武器的伤害大幅降低;<br>
有非比寻常的宗师气度;
</span>
</td>
<td class="b3">
<span><input type="button" class="cmdbutton" value="点击查看称号技能" onclick="showModalDialog($('skillhelp-c13'));"></span>
</td>
</tr>
<tr>
<td class="b2" height=20px>
<span>晶莹剔透</span>
......
......@@ -157,6 +157,9 @@ $language = array
'emoji' => '表情',
'chatswitch' => '切换',
'maptitle' => '虚拟世界地图',
'skillpage_no_skill' => '目前没有任何技能,去选择一个内定称号、或在游戏中寻找更多技能吧!',
);
......
......@@ -251,10 +251,10 @@ if($mode == 'enter') {
# 格式化插入player数据
$ndata = update_db_player_structure(1);
foreach($ndata as $key => $type)
foreach($ndata as $key => $ntype)
{
if(isset($$key)) $ndata[$key] = $$key;
elseif(strpos($type,'int')!==false) $ndata[$key] = 0;
elseif(strpos($ntype,'int')!==false) $ndata[$key] = 0;
else $ndata[$key] = '';
}
......
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