Commit 20fcfc0f authored by hisuinohoshi's avatar hisuinohoshi

rev combat phase 1

add&update&change{...};

新增 战斗系统革新 阶段1:
在保留原战斗系统的基础上,新增以下文件:
revbattle.func.php(接敌相关);
revcombat.func.php(战斗流程相关);
revarrt.func.php(伤害计算相关);
玩家先制发现敌人调用findenemy_rev($edata);
玩家被动遇敌调用rev_combat_prepare($edata,NULL,0);
指定2个任意单位战斗调用rev_combat_prepare($sdata,$edata,1);

修改:
全系&属性防御非受贯穿影响失效的情况下,可触发单系防御;
触发复活不会再让灵魂绑定装备消失;
主界面、战斗界面背景的判定逻辑;

phase 2 土豆:
补完战斗函数说明文档、补完NPC战斗中特判效果、补完属性伤害系数与固定变化阶段、补完复活阶段、增加属性克制与传染效果、增加双系武器自动切换判定、增加玩家用副武器槽。
parent a62529c6
......@@ -405,23 +405,48 @@ if($hp > 0){
} elseif($mode == 'combat') {
include_once GAME_ROOT.'./include/game/combat.func.php';
combat(1,$command);
include_once GAME_ROOT.'./include/game/revcombat.func.php';
combat(1,$command);
} elseif($mode == 'revcombat'){
//NPC vs NPC:
if($command == 'enter' && (strpos($action,'corpse')===0 || strpos($action,'pacorpse')===0))
{
$cid = strpos($action,'corpse')===0 ? str_replace('corpse','',$action) : str_replace('pacorpse','',$action);
if($cid)
global $action;
if(strpos($action,'enemy')===0)
{
global $db,$tablepre;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$cid' AND hp=0");
if($db->num_rows($result)>0)
$enemyid = str_replace('enemy','',$action);
}
if(!$enemyid || (strpos($action,'enemy')===false))
{
$log .= "<span class=\"yellow b\">你没有遇到敌人,或已经离开战场!</span>{$enemyid}<br>";
goto back_flag;
}
$result = $db->query ( "SELECT * FROM {$tablepre}players WHERE pid='$enemyid'" );
if (! $db->num_rows ( $result )) {
$log .= "对方不存在!<br>";
goto back_flag;
}
$edata = $db->fetch_array($result);
extract($edata,EXTR_PREFIX_ALL,'w');
include_once GAME_ROOT.'./include/game/battle.func.php';
if ($edata ['pls'] != $pls)
{
$log .= "<span class=\"yellow b\">" . $edata ['name'] . "</span>已经离开了<span class=\"yellow b\">$plsinfo[$pls]</span>。<br>";
}
elseif ($edata ['hp'] <= 0)
{
$log .= "<span class=\"red b\">" . $edata ['name'] . "</span>已经死亡,不能被攻击。<br>";
include_once GAME_ROOT . './include/game/battle.func.php';
$action = 'corpse'.$edata['pid'];
findcorpse($edata);
}
elseif ($command == 'back')
{
$log .= "你逃跑了。";
$action = '';
back_flag:
$mode = 'command';
}
else
{
include_once GAME_ROOT . './include/game/revcombat.func.php';
rev_combat_prepare($pdata,$edata,1,$command);
}
} elseif($mode == 'rest') {
include_once GAME_ROOT.'./include/state.func.php';
......
......@@ -17,18 +17,55 @@ $dmg_fluc = Array('N' => 15, 'P' => 15, 'K' => 40, 'G' => 20, 'C' => 5, 'D' => 2
//熟练度对伤害的影响,每点熟练度增加的伤害
$skill_dmg = Array('N' => 0.6, 'P' => 0.6, 'K' => 0.65, 'G' => 0.6, 'C' => 0.4, 'D' => 0.75, 'F'=> 0.4, 'J'=>0.7);
//$skill_dmg = Array('N' => 0.5, 'P' => 0.5, 'K' => 0.5, 'G' => 0.6, 'C' => 0.3, 'D' => 0.4, 'F'=> 1.2);
//各攻击方式对应的防御属性
$def_kind = Array(
'P' => 'P',
'K' => 'K',
'G' => 'G', 'J' => 'G',
'C' => 'C',
'D' => 'D',
'F' => 'F',
);
//天气对攻击力的影响(单位:百分比加算)
$weather_attack_modifier = Array(10,10,0,-5,-10,-20,-15,0,0,7,20,-7,-20,-5,-10,-10,-10,10);
//天气对防御力的影响(单位:百分比加算)
$weather_defend_modifier = Array(10,30,0,0,-3,-15,-10,0,-20,-30,-50,-5,-20,-3,-20,5,-30,30);
//姿态对攻击力的影响(单位:百分比加算)
$pose_attack_modifier = Array(0,100,0,-25,25,-50,50);
//姿态对防御力的影响(单位:百分比加算)
$pose_defend_modifier = Array(0,25,0,-25,-50,-50,-466);
//应战策略对攻击力的加成(单位:百分比加算)
$tactic_attack_modifier = Array(0,20,-25,25,-50);
//应战策略对防御力的加成(单位:百分比加算)
$tactic_defend_modifier = Array(0,-20,50,-25,0);
//场景对攻击力的加成(单位:百分比加算)
$pls_attack_modifier = Array(0,0,0,0,0,0,10,0,0,-10,0,0,0,0,-10,0,0,0,10,0,0,0);
//场景对防御力的加成(单位:百分比加算)
$pls_defend_modifier = Array(0,-10,10,0,0,0,0,0,0,0,0,-10,10,0,0,0,0,0,0,0,10,0);
//各种攻击方式可能导致受伤的部位
$infatt = Array('N' => 'bhaf', 'P' => 'bhaf', 'K' =>'bhaf', 'G' =>'bhaf', 'C'=> 'bhaf', 'D' => 'bhaf', 'F'=> 'bhaf', 'J'=> 'bhaf');
//各种攻击方式可能导致受伤的部位
$infatt_rev = Array('N' => Array('b','h','a','f'), 'P' => Array('b','h','a','f'), 'K' => Array('b','h','a','f'), 'G' => Array('b','h','a','f'), 'C'=> Array('b','h','a','f'), 'D' => Array('b','h','a','f'), 'F'=> Array('b','h','a','f'), 'J'=> Array('b','h','a','f'),);
//各种攻击方式的致伤率
$infobbs = Array('N' => 5, 'P' => 15, 'K' => 55, 'G' => 20, 'C' => 10, 'D' => 45, 'F' => 30, 'J'=> 100);
//$infobbs = Array('N' => 5, 'P' => 15, 'K' => 30, 'G' => 30, 'C' => 15, 'D' => 40, 'F' => 30);
//各种攻击方式的武器损伤概率
$wepimprate = Array('N' => -1, 'P' => 12, 'K' => 30, 'G' => -1, 'C' => -1, 'D' => -1, 'F' => -1, 'J'=> -1);
//特殊效果发生的概率,这里指属性,跟武器系别无关
$specialrate = Array('N' => 40, 'n' => 30, 'B' => 95 ,'b' => 95);
$specialrate = Array('N' => 40, 'n' => 30, 'y' => 30, 'B' => 95 ,'b' => 95);
//属性攻击登录
$ex_attack = Array('p', 'u', 'i', 'd', 'e','w','f','k');
//各属性攻击对应的防御属性
$ex_def_kind = Array(
'p' => 'q',
'u' => 'U', 'f' => 'U',
'i' => 'I', 'k' => 'I',
'e' => 'E',
'w' => 'W',
'd' => 'D',
);
//各种属性攻击的得意武器( 伤害2倍)
$ex_good_wep = Array('p' => 'K','u' => 'G','i'=> 'C','d' => 'D', 'e' => 'P', 'w' => 'D');
//各种属性攻击的得意社团(致伤命中率+20)
......
......@@ -50,7 +50,7 @@ $clubinfo = Array(
98=>'换装迷宫',
99=>'决死结界'
);
$wthinfo = Array('晴天','大晴','多云','小雨','暴雨','台风','雷雨','下雪','起雾','浓雾','<span class="yellow">瘴气</span>','<span class="red">龙卷风</span>','<span class="clan">暴风雪</span>','<span class="blue">冰雹</span>','<span class="linen">离子暴</span>','<span class="green">辐射尘</span>','<span class="purple">臭氧洞</span>');
$wthinfo = Array('晴天','大晴','多云','小雨','暴雨','台风','雷雨','下雪','起雾','浓雾','<span class="yellow">瘴气</span>','<span class="red">龙卷风</span>','<span class="clan">暴风雪</span>','<span class="blue">冰雹</span>','<span class="linen">离子暴</span>','<span class="green">辐射尘</span>','<span class="purple">臭氧洞</span>','<span class="gold">极光</span>');
$sexinfo = Array(0=> '未定', 'm' => '男生', 'f' => '女生');
$raceinfo = Array(0=> '人类', 1=> '兽人', 2=> '妖精', 3=> '龙', 4=> '鱼人', 5=> 'AI');
$hpinfo = Array('并无大碍','伤痕累累','生命危险','已经死亡');
......@@ -1144,6 +1144,7 @@ $itemspkinfo_tooltip = Array
'w' => Array('title' => "攻击对手时,将产生额外的音波属性伤害。也有可能让对手陷入混乱异常状态。",),
'X' => Array('title' => "可能会一击必杀。",),
'x' => Array('title' => "人类,可以挑战神么?",),
'y' => Array('title' => "攻击对手时,一定几率无效属性抹消类与属性防御类属性,并增加让对手陷入异常状态的概率。",),
'Z' => Array('title' => "该物品可以使用特定物品进行强化。",),
'z' => Array('title' => "那么,这个有什么用呢……?",),
'-' => Array('title' => "战斗时无效双方的防具效果。",),
......@@ -1196,6 +1197,7 @@ $itemspkinfo = Array(
'w' => '音波',
'X' => '直死', //NPC专用
'x' => '奇迹',
'y' => '破格', //属穿
'Z' => '菁英',
'z' => '天然',
'-' => '精神抽取',
......
......@@ -91,6 +91,7 @@ table.admin td.tdtitle {
.clit {color: #feea23; font:18pt "微软雅黑" serif; }
.yellow{color:#ffff00; font: bold 10pt "微软雅黑" serif;line-height:16px}
.gold{color:rgb(255,215,0);font: bold 10pt "微软雅黑" serif;line-height:16px}
.clan{color: #00ffff;font: bold 10pt "微软雅黑" serif;line-height:16px}
.blue{color: #0060ff;font: bold 10pt "微软雅黑" serif;line-height:16px}
.red{color: #ff0000;font: bold 10pt "微软雅黑" serif;line-height:16px}
......
img/n_63.gif

6.95 KB | W: | H:

img/n_63.gif

6.95 KB | W: | H:

img/n_63.gif
img/n_63.gif
img/n_63.gif
img/n_63.gif
  • 2-up
  • Swipe
  • Onion skin
img/n_64.gif

5.66 KB | W: | H:

img/n_64.gif

5.7 KB | W: | H:

img/n_64.gif
img/n_64.gif
img/n_64.gif
img/n_64.gif
  • 2-up
  • Swipe
  • Onion skin
......@@ -359,27 +359,120 @@ function init_battle($ismeet = 0){
return;
}
//function get_pstate($pid){//玩家状态储存在内存表里,读取之前先判断是否存在
// global $db,$tablepre,$now;
// $result=$db->query("SELECT * FROM {$tablepre}pstate WHERE pid = '$pid'");
// if($db->num_rows($result)){
// $psdata = $db->fetch_array($result);
// }else{
// $psdata = false;
// }
// return $psdata;
//}
//function set_pstate($psdata){//玩家状态储存在内存表里,若存在则更新记录,否则创建记录
// global $db,$tablepre;
// $pid = $psdata['pid'];
// $result=$db->query("SELECT * FROM {$tablepre}pstate WHERE pid = '$pid'");
// if($db->num_rows($result)){
// return $db->array_update("{$tablepre}pstate",$psdata," pid = '$pid'");
// }else{
// return $db->array_insert("{$tablepre}pstate",$psdata);
// }
//}
function init_rev_battle($ismeet = 0)
{
global $fog,$hpinfo,$spinfo,$rageinfo,$wepeinfo,$typeinfo,$sexinfo,$infinfo;
$ui_data = Array('hpstate','spstate','ragestate','wepestate','wepk_words','wep_words','infdata','iconImg','iconImgB','sNoinfo');
$init_data = update_db_player_structure();
foreach(Array('w_','s_') as $p)
{
foreach ($init_data as $i)
{
global ${$p.$i};
}
foreach($ui_data as $u)
{
global ${$p.$u};
}
//更新血量、体力、怒气显示
if(${$p.'hp'} <= 0)
{
${$p.'hpstate'} = "<span class=\"red\">$hpinfo[3]</span>";
${$p.'spstate'} = "<span class=\"red\">$spinfo[3]</span>";
${$p.'ragestate'} = "<span class=\"red\">$rageinfo[3]</span>";
}
else
{
if(${$p.'hp'} < ${$p.'mhp'}*0.2) {
${$p.'hpstate'} = "<span class=\"red\">$hpinfo[2]</span>";
} elseif(${$p.'hp'} < ${$p.'mhp'}*0.5) {
${$p.'hpstate'} = "<span class=\"yellow\">$hpinfo[1]</span>";
} else {
${$p.'hpstate'} = "<span class=\"clan\">$hpinfo[0]</span>";
}
if(${$p.'sp'} < ${$p.'msp'}*0.2) {
${$p.'spstate'} = "$spinfo[2]";
} elseif(${$p.'sp'} < ${$p.'msp'}*0.5) {
${$p.'spstate'} = "$spinfo[1]";
} else {
${$p.'spstate'} = "$spinfo[0]";
}
if(${$p.'rage'} >= 100) {
${$p.'ragestate'} = "<span class=\"red\">$rageinfo[2]</span>";
} elseif(${$p.'rage'} >= 30) {
${$p.'ragestate'} = "<span class=\"yellow\">$rageinfo[1]</span>";
} else {
${$p.'ragestate'} = "$rageinfo[0]";
}
}
//更新武器效果情报
switch(${$p.'wepe'})
{
case ${$p.'wepe'}>= 400:
${$p.'wepestate'} = "$wepeinfo[3]";
break;
case ${$p.'wepe'}>= 200:
${$p.'wepestate'} = "$wepeinfo[2]";
break;
case ${$p.'wepe'}>= 60:
${$p.'wepestate'} = "$wepeinfo[1]";
break;
default :
${$p.'wepestate'} = "$wepeinfo[0]";
}
//更新武器名、武器类别情报
${$p.'wep_words'} = parse_itm_desc(${$p.'wep'},'m');
${$p.'wepk_words'} = parse_itm_desc(${$p.'wepk'},'k');
//更新编号情报
${$p.'sNoinfo'} = $typeinfo[${$p.'type'}]."(".$sexinfo[${$p.'gd'}].${$p.'sNo'}."号)";
//更新头像情报
$itype = ${$p.'type'} > 0 ? 'n' : ${$p.'gd'};
$iname = $itype.'_'.${$p.'icon'};
if(file_exists('img/'.$iname.'a.gif'))
{
${$p.'iconImgB'}= $iname.'a.gif';
}
else
{
${$p.'iconImg'} = $iname.'.gif';
unset(${$p.'iconImgB'});
}
//更新受伤状态
if(${$p.'inf'})
{
${$p.'infdata'} = '';
foreach ($infinfo as $inf_ky => $inf_nm)
{
if(strpos(${$p.'inf'},$inf_ky) !== false) ${$p.'infdata'} .= $inf_nm;
}
}
else
{
${$p.'infdata'} = '';
}
}
if($fog && !$ismeet)
{
//雾天显示???
$w_wep_words = '???';
$w_wepk_words = '???';
$w_sNoinfo = '???';
$w_iconImg = 'question.gif';
$w_iconImgB = '';
$w_name = '???';
$w_wep = '???';
$w_infdata = '???';
$w_pose = -1;
$w_tactic = -1;
$w_lvl = '?';
$w_hpstate = '???';
$w_spstate = '???';
$w_ragestate = '???';
$w_wepestate = '???';
$w_wepk = '';
}
return;
}
function get_remaincdtime($pid){
$psdata = get_pstate($pid);
......@@ -393,8 +486,23 @@ function get_remaincdtime($pid){
}
}
//用于将当前玩家数据保存至数据库
function current_player_save(){
global $db,$tablepre;
$pdata = Array();
$data = update_db_player_structure();
foreach($data as $key)
{
global $$key;
$pdata[$key]= $$key;
}
$db->array_update("{$tablepre}players",$pdata,"pid='$pid'");
return $pdata;
}
//用于将指定player数据存回数据库
function player_save($data){
global $db,$tablepre;
$ndata = Array();
if(isset($data['pid'])){
$pid = $data['pid'];
$ndata = player_format_with_db_structure($data);
......@@ -403,6 +511,7 @@ function player_save($data){
}
return;
}
//用于刷新当前玩家数据
function player_load($data)
{
$ndata = player_format_with_db_structure($data);
......
......@@ -17,7 +17,7 @@ $tacinfo = Array('通常','','重视防御','重视反击','重视躲避',);
function get_find_r($weather = 0,$pls = 0,$pose = 0,$tactic = 0,$club = 0,$inf = ''){
$_FIND = Array
(
'weather' => array(10,20,0,-2,-3,-10,-7,5,-10,-20,0,-7,-5,-30,-5,-20,0),
'weather' => array(10,20,0,-2,-3,-10,-7,5,-10,-20,0,-7,-5,-30,-5,-20,0,20),
//'weather' => array(10,20,0,-2,-3,-7,-10,-5,10,0,0,-7,-5,-30),
'pls' => array(10,0,0,10,-10,10,0,10,-10,0,10,0,0,-10,0,-10,-10,-10,0,10,0,10),
'pose' => array(0,0,0,25,-10,-25,85),
......@@ -52,7 +52,7 @@ function get_active_r($weather = 0,$pls = 0,$pose = 0,$tactic = 0,$club = 0,$inf
global $active_obbs,$inf_active_p;
$_ACTIVE = Array
(
'weather' => array(10,20,0,-5,-10,-20,-15,0,-7,-10,-10,-5,0,-5,-20,-5,0),
'weather' => array(10,20,0,-5,-10,-20,-15,0,-7,-10,-10,-5,0,-5,-20,-5,0,20),
//'weather' => array(20,10,0,-3,-5,-5,-7,10,-10,-10,-10,-5,0,-5),
'pls' => array(),
'pose' => array(0,0,0,0,25,-25,5),
......@@ -106,7 +106,7 @@ function get_attack_p($weather = 0,$pls = 0,$pose = 0,$tactic = 0,$club = 0,$inf
global $inf_att_p;
$_ATTACK = Array
(
'weather' => array(10,10,0,-5,-10,-20,-15,0,0,7,20,-7,-20,-5,-10,-10,-10),
'weather' => array(10,10,0,-5,-10,-20,-15,0,0,7,20,-7,-20,-5,-10,-10,-10,10),
'pls' => array(0,0,0,0,0,0,10,0,0,-10,0,0,0,0,-10,0,0,0,10,0,0,0),
'pose' => array(0,100,0,-25,25,-50,50),
'tactic' => array(0,20,-25,25,-50),
......@@ -131,7 +131,7 @@ function get_defend_p($weather = 0,$pls = 0,$pose = 0,$tactic = 0,$club = 0,$inf
global $inf_def_p;
$_DEFEND = Array
(
'weather' => array(10,30,0,0,-3,-15,-10,0,-20,-30,-50,-5,-20,-3,-20,5,-30),
'weather' => array(10,30,0,0,-3,-15,-10,0,-20,-30,-50,-5,-20,-3,-20,5,-30,30),
'pls' => array(0,-10,10,0,0,0,0,0,0,0,0,-10,10,0,0,0,0,0,0,0,10,0),
'pose' => array(0,25,0,-25,-50,-50,-466),
'tactic' => array(0,-20,50,-25,0),
......
......@@ -79,7 +79,7 @@ function findteam(&$w_pdata){
function findcorpse(&$w_pdata){
global $log,$mode,$main,$battle_title,$cmd,$iteminfo,$itemspkinfo;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;//,$itmsk0;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf,$w_rp;//,$itmsk0;
global $club;
$battle_title = '发现尸体';
......@@ -114,7 +114,7 @@ function findcorpse(&$w_pdata){
$log .= '你发现了<span class="red">'.$w_name.'</span>的尸体!<br>';
foreach (Array('wep','arb','arh','ara','arf','art','itm0','itm1','itm2','itm3','itm4','itm5','itm6') as $w_value)
{
${$w_value} = parse_itm_desc(${$w_value},'m');
if(isset(${$w_value})) ${$w_value} = parse_itm_desc(${$w_value},'m');
}
foreach (Array('w_wepk','w_arbk','w_arhk','w_arak','w_arfk','w_artk','w_itmk0','w_itmk1','w_itmk2','w_itmk3','w_itmk4','w_itmk5','w_itmk6') as $w_k_value) {
if(${$w_k_value}){
......
......@@ -3,6 +3,8 @@ if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
include_once GAME_ROOT.'./include/game/dice.func.php';
function getskills(&$arr)
{
$arr=Array(
......@@ -777,6 +779,248 @@ function upgradeclubskills($cmd)
}
}
#适配新版战斗函数的社团技能判定函数:
function rev_get_clubskill_bonus_hitrate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//命中率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==3 && $pa['wep_kind']=="K") //见敌必斩称号
{
$r*=(1+$clskl[3][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==5 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r*=(1+$clskl[5][${'a'.$i}][1]/100);
}
if ($blearn['learn'.$i]==12) //宛如疾风称号
{
$r*=(1-$clskl[12][${'b'.$i}][1]/100);
}
}
return $r;
}
function rev_get_clubskill_bonus_imfrate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//防具损坏率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r*=(1+$clskl[6][${'a'.$i}][1]/100);
}
}
return $r;
}
function rev_get_clubskill_bonus_imftime($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//防具损坏效果系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r+=$clskl[6][${'a'.$i}][2];
}
}
return $r;
}
function rev_get_clubskill_bonus_imprate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//武器损坏率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==4 && $pa['wep_kind']=="K") //见敌必斩称号
{
$r*=(1-$clskl[4][${'a'.$i}][1]/100);
}
}
return $r;
}
function rev_get_clubskill_bonus($aclub,$askl,$pa,$bclub,$bskl,$pd,&$att,&$def)
{
//攻击防御力加成
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$att=0; $def=0;
for ($i=1; $i<=2; $i++)
{
if ($blearn['learn'.$i]==1 && $pd['wep_kind']=="P") //铁拳无敌称号
{
$dup=$clskl[1][${'b'.$i}][1]/100*$pd['wepe'];
if ($dup>2000) $dup=2000;
$def+=$dup;
}
}
}
function rev_get_clubskill_bonus_p($aclub,$askl,$pa,$bclub,$bskl,$pd,&$att,&$def)
{
//攻击防御加成系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$att=1; $def=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==2 && $pa['wep_kind']=="P") //铁拳无敌称号
{
$att*=(1+$clskl[2][${'a'.$i}][1]/100);
if (rand(0,99)<$clskl[2][${'a'.$i}][2]) $def*=(1-$clskl[2][${'a'.$i}][3]/100);
}
if ($alearn['learn'.$i]==8 && $pa['wep_kind']=="C") //灌篮高手称号
{
$att*=(1+$clskl[8][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
if (rand(0,99)<$clskl[6][${'a'.$i}][3]) $att*=(1+$clskl[6][${'a'.$i}][4]/100);
}
}
}
function rev_get_clubskill_bonus_fluc($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//伤害浮动值
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=0;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==8 && $pa['wep_kind']=="C") //灌篮高手称号
{
$r+=$clskl[8][${'a'.$i}][2];
}
}
return $r;
}
function rev_get_clubskill_bonus_counter($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//反击率加成
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==7 && $pa['wep_kind']=='C') //灌篮高手称号
{
$r*=(1+$clskl[7][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==11) //宛如疾风称号
{
$r*=(1+$clskl[11][${'a'.$i}][3]/100);
}
if ($blearn['learn'.$i]==13 && $pd['wep_kind']=='F') //超能力者称号
{
$r*=(1-$clskl[13][${'b'.$i}][2]/100);
}
}
return $r;
}
function rev_get_clubskill_bonus_dmg_rate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//最终伤害加成/减成,a为攻击方,b为防御方
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$ar=100;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==14) //攻击方有晶莹技能,伤害大幅下降
{
$ar-=$clskl[14][${'a'.$i}][1];
}
}
$br=100;
for ($i=1; $i<=2; $i++)
{
if ($blearn['learn'.$i]==14) //防御方有晶莹技能,伤害下降
{
$br-=$clskl[14][${'b'.$i}][2];
}
}
$r = round($ar*$br)/10000*100; //高端的算法往往以低调的姿态示人
return $r;
}
function rev_get_clubskill_bonus_dmg_val($club,$skl,$pa,$pd)
{
//最终伤害增加值
getskills2($clskl);
getlearnt($learn,$club,$skl);
$a1=((int)($skl/10))%10; $a2=$skl%10;
$rate = 0;
for ($i=1; $i<=2; $i++)
{
if ($learn['learn'.$i]==15) //攻击方有剔透技能,得到概率
{
$rate=$clskl[15][${'a'.$i}][1];
}
}
$rate -= round($pa['rp']/20);
if($rate < 0){$rate = 0;}
$rpdmg = $pd['rp'] - $pa['rp'];
$dice = diceroll(99);
if($rpdmg > 0 && $dice < $rate){
return $rpdmg;
}
return 0;
}
function rev_get_clubskill_rp_dec($clb,$skl)
{
//RP增长率下降
getskills2($clskl);
getlearnt($alearn,$clb,$skl);
$a1=((int)($skl/10))%10; $a2=$skl%10;
$r=0;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==14) $r=$clskl[14][${'a'.$i}][3]; //晶莹剔透1
}
//echo $r;
return $r;
}
#### 原社团技能函数:
function get_clubskill_bonus_p($aclub,$askl,$prefix1,$bclub,$bskl,$prefix2,&$att,&$def)
{
//攻击防御加成系数
......
......@@ -12,6 +12,7 @@ function combat($active = 1, $wep_kind = '') {
global $w_wep, $w_wepk, $w_wepe, $w_weps, $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5,$w_itm6, $w_itmk6, $w_itme6, $w_itms6, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5, $w_itmsk6;
global $infinfo, $w_combat_inf;
global $rp,$w_rp,$action,$w_action,$achievement,$w_achievement,$skills,$w_skills,$skillpoint,$w_skillpoint;
global $clubpara,$w_clubpara;
$battle_title = '战斗发生';
......@@ -158,7 +159,8 @@ function combat($active = 1, $wep_kind = '') {
$w_wep_kind = $w_w1;
}
$def_dmg = defend ( $w_wep_kind, 1 );
if (($hp > 0) && ($tactic != 4) && ($pose != 5)) {
if(get_single_clbpara($clbpara,'revival_flag')) $revival_flag = get_single_clbpara($clbpara,'revival_flag');
if (($hp > 0) && ($tactic != 4) && ($pose != 5) && !$revival_flag) {
global $rangeinfo;
if ($rangeinfo [$wep_kind] >= $rangeinfo [$w_wep_kind] && $rangeinfo [$w_wep_kind] !== 0) {
$counter = get_counter ( $wep_kind, $tactic, $club, $inf );
......@@ -176,9 +178,12 @@ function combat($active = 1, $wep_kind = '') {
} else {
$log .= "<span class=\"red\">你攻击范围不足,不能反击,逃跑了!</span><br>";
}
} elseif($hp > 0) {
} elseif($revival_flag) {
//复活后不会反击,不发log
} else {
$log .= "<span class=\"red\">你逃跑了!</span><br>";
}
}
if($hp == 0 && !$w_action){$w_action = 'pacorpse'.$pid;}
......@@ -207,10 +212,28 @@ function combat($active = 1, $wep_kind = '') {
//include_once GAME_ROOT.'./include/game/achievement.func.php';
//check_battle_achievement($w_achievement,$w_type,$name);
}
if($revival_flag)
{
$w_log .= "<span class=\"yellow\">$name</span><span class=\"red\">被你杀死了!</span><br>";
if($revival_flag == 99)
{
$w_log .= "<span class=\"lime\">但由于及时按下了BOMB键,{$name}原地满血复活了!</span><br>";
}
elseif($revival_flag == 17)
{
$w_log .= "<span class=\"lime\">但是,空气中弥漫着的奥罗拉让{$name}重新站了起来!</span><br>";
}
}
logsave ( $w_pid, $now, $w_log ,'b');
}
//注销复活标记
if($revival_flag)
{
unset($revival_flag);
$clbpara = del_clbpara($clbpara,'revival_flag');
}
if (($att_dmg > $hdamage) && ($att_dmg >= $def_dmg)) {
$hdamage = $att_dmg;
$hplayer = $name;
......@@ -223,22 +246,52 @@ function combat($active = 1, $wep_kind = '') {
//$bid = $w_pid;
if ($w_hp <= 0 && $w_club != 99) {
if ($w_hp <= 0)
{
//二形态最优先判断
if ($w_club == 99 && $w_type)
{
$log .= npc_chat ( $w_type,$w_name, 'death' );
include_once GAME_ROOT . './include/system.func.php';
$npcdata = evonpc ($w_type,$w_name);
$log .= '<span class="yellow">'.$w_name.'却没死去,反而爆发出真正的实力!</span><br>';
if($npcdata){
addnews($now , 'evonpc',$w_name, $npcdata['name'], $name);
foreach($npcdata as $key => $val){
${'w_'.$key} = $val;
}
}
}
else
{
$w_bid = $pid;
$w_hp = 0;
if ($w_type==0){$killnum ++;};
$log .= "<span class=\"red\">{$w_name}被你杀死了!</span><br>";
//进行复活判定
include_once GAME_ROOT . './include/state.func.php';
$killmsg = kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp );
$killmsg = kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp ,$revival_flag);
if($revival_flag)
{
if($revival_flag == 99)
{
$log .= '<span class="yellow">'.$w_name.'由于其及时按了BOMB键而原地满血复活了!</span><br>';
}
elseif($revival_flag == 17)
{
$log .= '<span class="yellow">但是,空气中弥漫着的奥罗拉让敌人重新站了起来!</span><br>';
}
}
//没有复活 继续击杀判定
else
{
if ($w_type==0){$killnum ++;};
check_kill_events($pid,$w_pid);
$log .= npc_chat ( $w_type,$w_name, 'death' );
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_battle_achievement($name,$w_type,$w_name,$wep_temp);
$log .= "<span class=\"red\">{$w_name}被你杀死了!</span><br>";
//$rp = $rp + 20 ;
if(!$w_type){
if($w_rp < 80){
$rpup = 80;
......@@ -261,28 +314,13 @@ function combat($active = 1, $wep_kind = '') {
$action = 'corpse'.$edata['pid'];
findcorpse ( $cdata );
return;
} else {
if($w_hp <= 0){//有第二阶段
if ($w_type)
{
$log .= npc_chat ( $w_type,$w_name, 'death' );
include_once GAME_ROOT . './include/system.func.php';
$npcdata = evonpc ($w_type,$w_name);
$log .= '<span class="yellow">'.$w_name.'却没死去,反而爆发出真正的实力!</span><br>';
if($npcdata){
addnews($now , 'evonpc',$w_name, $npcdata['name'], $name);
foreach($npcdata as $key => $val){
${'w_'.$key} = $val;
}
}
}
else
{
include_once GAME_ROOT . './include/state.func.php';
$killmsg = kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp );
$log .= '<span class="yellow">'.$w_name.'由于其及时按了BOMB键而原地满血复活了!</span><br>';
}
}
//再注销一次复活标记
if($revival_flag) unset($revival_flag);
$main = 'battle';
init_battle ( 1 );
......@@ -296,7 +334,6 @@ function combat($active = 1, $wep_kind = '') {
}
$action = '';
return;
}
}
function attack($wep_kind = 'N', $active = 0) {
......@@ -1390,9 +1427,20 @@ function defend($w_wep_kind = 'N', $active = 0) {
include_once GAME_ROOT . './include/state.func.php';
$killmsg = death ( $w_wep_kind, $w_name, $w_type, $w_wep_temp );
$log .= npc_chat ( $w_type,$w_name, 'kill' );
if ($tmp_club==99)
global $clbpara;
if($hp>0 && get_single_clbpara($clbpara,'revival_flag'))
{
$revival_flag = get_single_clbpara($clbpara,'revival_flag');
if ($revival_flag == 99)
{
$log .= '<span class="yellow">由于你及时按了BOMB键,你原地满血复活了!</span><br>';
}
elseif ($revival_flag == 17)
{
$log .= "<span class=\"lime b\">但是,空气中弥漫着的奥罗拉让你重新站了起来!</span><br>";
}
}
}
} else {
$damage = 0;
$log .= "但是没有击中!<br>";
......
......@@ -19,7 +19,7 @@
global ${'element'.$e_key};
if(${'element'.$e_key})
{
$log.="<span title=\"".print_elements_tags($e_key)."\">";
$log.="<span tooltip=\"".print_elements_tags($e_key)."\">";
$log.="◆ {$e_info}{${'element'.$e_key}} 份;";
$log.="</span><br>";
}
......
......@@ -61,7 +61,7 @@ function poison($itmn = 0) {
function wthchange($itm,$itmsk){
global $now,$log,$weather, $wthinfo, $name,$nick;
$weathertd = $weather;
if($weather >= 14 && $weather <= 16){
if($weather >= 14 && $weather <= 17){
addnews ( $now, 'wthfail', $nick.' '.$name, $weather, $itm );
$log .= "你使用了{$itm}。<br /><span class=\"red\">但是恶劣的天气并未发生任何变化!</span><br />";
}else{
......@@ -69,6 +69,7 @@ function wthchange($itm,$itmsk){
elseif($itmsk==98){$weather = rand ( 10, 13 );}//随机恶劣天气
elseif($itmsk==97){$weather = rand ( 0, 9 );}//随机一般天气
elseif($itmsk==96){$weather = rand ( 8, 9 );}//随机起雾天气
elseif($itmsk==95){$weather = 17;}//极光天气
elseif(!empty($itmsk) && is_numeric($itmsk)){
if($itmsk >=0 && $itmsk < count($wthinfo)){
$weather = $itmsk;
......
......@@ -1106,7 +1106,104 @@ function getcorpse($item){
return;
}
//武器损耗&消耗计算:
function weapon_loss(&$pa)
{
global $log,$wepimprate;
if(isset($pa['wep_imp_times']) && $pa['wep_imp_times']>0)
{
$wep_loss_flag = 0;
//获取武器损耗类型
$wep_imp = $wepimprate[$pa['wep_kind']];
//损耗型武器
if($wep_imp > 0)
{
if($pa['weps'] == $nosta)
{
$pa['wepe'] -= $pa['wep_imp_times'];
$log.= "{$pa['nm']}{$pa['wep']}的攻击力下降了{$pa['wep_imp_times']}。<br>";
}
else
{
$pa['weps'] -= $pa['wep_imp_times'];
$log.= "{$pa['nm']}{$pa['wep']}的耐久度下降了{$pa['wep_imp_times']}。<br>";
}
if($pa['weps']<=0 || $pa['wepe']<=0)
{
$log .= "{$pa['nm']}的<span class=\"red\">{$pa['wep']}</span>使用过度,已经损坏,无法再装备了!<br>";
$wep_loss_flag = 1;
}
}
//消耗型武器
else
{
if($pa['weps'] != $nosta)
{
$pa['weps'] -= $pa['wep_imp_times'];
if($pa['wep_kind'] == 'C' || $pa['wep_kind'] == 'D' || $pa['wep_kind'] == 'F')
{
$log .= "{$pa['nm']}用掉了{$pa['wep_imp_times']}{$pa['wep']}。<br>";
if($pa['weps']<=0)
{
$log .= "{$pa['nm']}的<span class=\"red\">{$pa['wep']}</span>用光了!<br>";
$wep_loss_flag = 1;
}
}
elseif($pa['wep_kind'] == 'G' || $pa['wep_kind'] == 'J')
{
$log .= "{$pa['nm']}{$pa['wep']}的弹药数减少了{$pa['wep_imp_times']}。<br>";
if($pa['weps']<=0)
{
$log .= "{$pa['nm']}的<span class=\"red\">{$pa['wep']}</span>弹药用光了!<br>";
$wep_loss_flag = 1;
}
}
}
}
if($wep_loss_flag)
{
$pa['wep'] = '拳头'; $pa['wep_kind'] = 'N'; $pa['wepk'] = 'WN';
$pa['wepe'] = 0; $pa['weps'] = $nosta; $pa['wepsk'] = '';
}
}
return;
}
//扣除指定装备的耐久。$hurtkind 0=装备损坏文本 1=灵魂绑定消失文本
function armor_hurt(&$pa,$which,$hurtvalue,$hurtkind=0)
{
global $log,$nosta;
if(isset($pa[$which.'s']))
{
//无限耐久的防具可以抵挡1次任意点损耗
if ($pa[$which.'s'] == $nosta)
{
$pa[$which.'s'] = $hurtvalue;
}
//扣除耐久
$x = min($pa[$which.'s'], $hurtvalue);
$pa[$which.'s'] = $pa[$which.'s']-$x;
$log .= "{$pa['nm']}的".$pa[$which]."的耐久度下降了{$x}!<br>";
//耐久为0 装备损坏
if($pa[$which.'s'] <= 0)
{
$log .= "{$pa['nm']}的<span class=\"red b\">".$pa[$which]."</span>受损过重,无法再装备了!<br>";
if($which == 'arb')
{
$pa[$which] = '内衣'; $pa[$which.'k'] = 'DN';
$pa[$which.'e'] = 0; $pa[$which.'s'] = $nosta; $pa[$which.'sk'] = '';
}
else
{
$pa[$which] = $pa[$which.'k'] = $pa[$which.'sk'] = '';
$pa[$which.'e'] = $pa[$which.'s'] = 0;
}
}
}
return;
}
?>
<?php
if(!defined('IN_GAME')) {
exit('Access Denied');
}
include_once GAME_ROOT.'./include/game/dice.func.php';
include_once GAME_ROOT.'./include/game/clubskills.func.php';
include_once GAME_ROOT.'./include/game/itemmain.func.php';
//获取防具上的属性
//如果你想设计一个在战斗中能临时获得属性的机制,请在这两个函数执行完毕后,把属性加入返回的结果内。除非你希望技能的机制优先级高于三抽的判定。
function get_equip_ex_array(&$pa)
{
$skarr = Array();
foreach(Array('arb','arh','ara','arf') as $equip)
{
if($pa[$equip.'s'])
{
if(!empty($pa[$equip.'sk'])) $skarr = array_merge($skarr,get_itmsk_array($pa[$equip.'sk']));
}
}
return $skarr;
}
//获取武器、饰品上的属性
function get_wep_ex_array(&$pa)
{
$skarr = Array();
if(!isset($pa['is_wpg']) && $pa['weps'] && !empty($pa['wepsk']))
{
$skarr = array_merge($skarr,get_itmsk_array($pa['wepsk']));
}
if($pa['arts'])
{
if(!empty($pa['artsk'])) $skarr = array_merge($skarr,get_itmsk_array($pa['artsk']));
switch($pa['artk'])
{
case 'Ag':
$skarr[] = 'g';
break;
case 'Al':
$skarr[] = 'l';
break;
case 'Ah':
$skarr[] = 'h';
break;
case 'Ac':
$skarr[] = 'c';
break;
}
}
return $skarr;
}
//获取基础命中率与修正
function get_hitrate_rev(&$pa,&$pd,$active)
{
global $hitrate_obbs,$hitrate_max_obbs,$hitrate_r,$weather,$inf_htr_p;
//基础命中率
$hitrate = $hitrate_obbs[$pa['wep_kind']];
//熟练度修正
$hitrate += round($pa['wep_skill'] * $hitrate_r[$pa['wep_kind']]);
//武器基础命中率上限
$hitrate = min($hitrate_max_obbs[$pa['wep_kind']],$hitrate);
//获取社团技能对基础命中率的修正
$hitrate *= rev_get_clubskill_bonus_hitrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
//异常状态状态修正
foreach ($inf_htr_p as $inf_ky => $value)
{
if(strpos($pa['inf'], $inf_ky)!==false) $hitrate *= $value;
}
//天气修正
if($weather == 12) $hitrate += 20;
//属性修正
return $hitrate;
}
//获取命中次数
function get_hit_time_rev(&$pa,&$pd,$active)
{
global $nosta,$wepimprate,$infobbs;
//获取基础连击命中率衰减系数
$hitratebonus = 0.8;
//获取社团技能对连击命中率衰减系数的修正
$hitratebonus *= rev_get_clubskill_bonus_hitrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
//获取基础致伤率(防具耐久损伤率)系数
$inf_r = $infobbs[$pa['wep_kind']];
//获取社团技能对致伤率(防具耐久损伤率)的修正
$inf_r *= rev_get_clubskill_bonus_imfrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
//获取基础致伤效果(每次致伤会损耗多少点防具耐久)
$inf_points = rev_get_clubskill_bonus_imftime($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
//获取武器损耗类型
$wep_imp = $wepimprate[$pa['wep_kind']];
//武器是损耗型而非消耗型
if($wep_imp > 0)
{
//基础损伤系数
$wep_imp_obbs = $wep_imp;
//额外损伤系数
if(isset($pa['is_wpg'])) $wep_imp_obbs *= 4;
if($pa['weps']==$nosta) $wep_imp_obbs *= 2;
//社团技能对武器损伤系数的修正
$wep_imp_obbs *= rev_get_clubskill_bonus_imprate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
}
else
{
//消耗型武器 每次连击必定消耗1
$wep_imp_obbs = 100;
}
//获取可命中次数上限
$atk_t = 1;
if(in_array('r',$pa['ex_keys']) && !isset($pa['is_wpg']))
{
$atk_t = $pa['wep_skill'] >= 800 ? 6 : 2 + floor($pa['wep_skill']/200);
}
//对于消耗型武器,命中次数不能超过武器耐久
if($wep_imp < 0)
{
$atk_t = $pa['weps']==$nosta ? $atk_t : min($atk_t,$pa['weps']);
}
//计算实际命中次数
for($i = 1; $i <= $atk_t; $i ++)
{
$dice = diceroll(99);
$dice2 = diceroll(99);
$dice3 = diceroll(99);
if ($dice < $pa['hitrate'])
{
//增加命中次数
$pa['hitrate_times'] += 1;
//增加致伤(防具损伤)次数
if($dice2 < $inf_r) $pa['inf_times'] += $inf_points;
//损耗型武器,按概率计算损耗
if($wep_imp > 0 && $dice3 < $wep_imp_obbs) $pa['wep_imp_times']++;
}
//消耗型武器 不管有没有命中+1消耗
if($wep_imp < 0) $pa['wep_imp_times']++;
//连击命中系数衰减
$pa['hitrate'] *= $hitratebonus;
//连击致伤率衰减
$inf_r *= 0.9;
//武器是损耗型而非消耗型,随连击次数增加损耗率
if($wep_imp>0) $wep_imp_obbs *= 1.2;
}
//将可命中次数上限保存在$pa['hitrate_max_times']内
$pa['hitrate_max_times'] = $atk_t;
return;
}
//获取不受其他条件影响的固定伤害值(混沌伤害)
function get_fix_damage(&$pa,&$pd,$active)
{
//混沌伤害
if(in_array('R',$pa['ex_keys']))
{
$maxdmg = $pd['mhp'] > $pa['wepe'] ? $pa['wepe'] : $pd['mhp'];
$damage = rand(1,$maxdmg);
global $log;
$log .= "武器随机造成了<span class=\"red\">$damage</span>点伤害!<br>";
}
return $damage;
}
//获取pa的攻击力
function get_base_att(&$pa,&$pd,$active)
{
//空手 武器伤害=2/3熟练度
if($pa['wep_kind'] == 'N')
{
$pa['wepe_t'] = round($pa['wep_skill']*2/3);
}
//射系 武器伤害=面板数值
elseif($pa['wep_kind'] == 'G' || $pa['wep_kind'] == 'J')
{
$pa['wepe_t'] = $pa['wepe'];
}
//枪托打人 武器伤害=面板数值/5
elseif($pa['is_wpg'])
{
$pa['wepe_t'] = round ($pa['wepe']/ 5 );
}
//其他武器 武器伤害=面板数值*2
else
{
$pa['wepe_t'] = $pa['wepe'] * 2;
}
//获取pa社团技能对攻击力的加成
rev_get_clubskill_bonus($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$att1,$def1);
//pa攻击力:
$base_att = $pa['att'] + $pa['wepe_t'] + $att1;
echo "【DEBUG】{$pa['name']}的base_att是{$base_att},";
//计算攻击力修正
$base_att = get_base_att_modifier($pa,$pd,$active,$base_att);
echo "修正后是{$base_att}。<br>";
return $base_att;
}
//获取pa的攻击力修正
function get_base_att_modifier(&$pa,&$pd,$active,$base_att)
{
//计算天气、姿态、策略、地点对pa攻击力的修正
global $weather,$weather_attack_modifier,$pose_attack_modifier,$tactic_attack_modifier,$pls_attack_modifier;
$wth_atk_per = $weather_attack_modifier[$weather] ?: 0 ;
$pose_atk_per = $pose_attack_modifier[$pa['pose']] ?: 0 ;
$tac_atk_per = $tactic_attack_modifier[$pa['tactic']] ?: 0;
$pls_atk_per = $pls_attack_modifier[$pa['pls']] ?: 0;
$base_att = round($base_att*((100+$wth_atk_per+$pose_atk_per+$tac_atk_per+$pls_atk_per)/100));
//计算pa受伤状态对攻击力的修正
global $inf_att_p;
foreach ($inf_att_p as $inf_ky => $value)
{
if(strpos($pa['inf'], $inf_ky)!==false) $base_att *= $value;
}
//计算pa社团技能对攻击力的修正
rev_get_clubskill_bonus_p($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$attfac,$deffac);
$base_att *= $attfac;
$base_att = max(1,$base_att);
return $base_att;
}
//获取pd的防御力与修正
function get_base_def(&$pa,&$pd,$active)
{
global $specialrate;
//pd基础防御力:
$base_def = $pd['def'];
//pd装备提供防御力:
$equip_def = $pd['arbe']+$pd['arhe']+$pd['arae']+$pd['arfe'];
//是否受pa冲击效果影响:
if(in_array('N',$pa['ex_keys']))
{
$Ndice = diceroll(99);
if($Ndice < $specialrate['N'])
{
$equip_def = round($equip_def/2);
//为了美观考虑……冲击的log在之后的attack_prepare_events()显示
$pa['charge_flag'] = 1;
}
}
//获取pd社团技能对防御力的加成
rev_get_clubskill_bonus($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$att1,$def1);
//pd防御力:
$total_def = $base_def+$equip_def+$def1;
echo "【DEBUG】{$pd['name']}的total_def是{$total_def},";
//计算防御力修正
$total_def = get_base_def_modifier($pa,$pd,$active,$total_def);
echo "修正后是{$total_def}。<br>";
return $total_def;
}
//获取pd的防御力修正
function get_base_def_modifier(&$pa,&$pd,$active,$total_def)
{
//计算天气、姿态、策略、地点对pd防御力的修正
global $weather,$weather_defend_modifier,$pose_defend_modifier,$tactic_defend_modifier,$pls_defend_modifier;
$wth_def_per = $weather_defend_modifier[$weather] ?: 0 ;
$pose_def_per = $pose_defend_modifier[$pd['pose']] ?: 0 ;
$tac_def_per = $tactic_defend_modifier[$pd['tactic']] ?: 0;
$pls_def_per = $pls_defend_modifier[$pd['pls']] ?: 0;
$total_def = round($total_def*((100+$wth_def_per+$pose_def_per+$tac_def_per+$pls_def_per)/100));
//计算受伤状态对pd防御力的修正
global $inf_def_p;
foreach ($inf_def_p as $inf_ky => $value)
{
if(strpos($pd['inf'], $inf_ky)!==false) $total_def *= $value;
}
//计算社团技能对pd防御力的修正
rev_get_clubskill_bonus_p($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$attfac,$deffac);
$total_def *= $deffac;
$total_def = max(0.01,$total_def);
return $total_def;
}
//计算原始伤害
function get_original_dmg_rev(&$pa,&$pd,$active)
{
global $skill_dmg, $dmg_fluc, $weather, $pls;
//原始伤害:(pa基础攻击/pd基础防御) * pa熟练度 * pa熟练度系数
$damage = ($pa['base_att'] / $pd['base_def']) * $pa['wep_skill'] * $skill_dmg[$pa['wep_kind']];
//获取伤害浮动系数:
$dfluc = $dmg_fluc [$pa['wep_kind']];
//获取社团技能对伤害浮动系数的修正:
$dfluc += rev_get_clubskill_bonus_fluc($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd);
//计算伤害浮动:
$dmg_factor = (100 + rand ( - $dfluc, $dfluc )) / 100;
$damage = round ( $damage * $dmg_factor * rand ( 4, 10 ) / 10 );
return $damage;
}
//计算在原始伤害基础上附加的固定伤害
function get_original_fix_dmg_rev(&$pa,&$pd,$active)
{
//重枪
if ($pa['wep_kind'] == 'J')
{
$adddamage=$pd['mhp']/3;
if ($adddamage>20000) $adddamage=10000;
$damage += round($pa['wepe']*2/3+$adddamage);
}
//灵力武器
if ($pa['wep_kind'] == 'F')
{
global $log;
if($pa['sldr_flag'] || $pd['sldr_flag'])
{
$log.="<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>";
}
else
{
$damage += $pa['wepe'];
}
}
return $damage;
}
//计算伤害倍率变化(攻击方)
function get_damage_p_rev(&$pa,&$pd,$active)
{
global $log;
//每一条伤害倍率判定变化提示会以$dmg_p[]= $r;的形式放入伤害倍率数组内,
//在输出成log时会显示为:总计造成了100x0.5x1.2...=111点伤害 的形式
$dmg_p = Array();
# 重击判定:
//获取触发重击需要的最小怒气值
if(in_array('c',$pa['ex_keys']))
{
$rage_min_cost = $pa['club'] == 9 ? 20 : 10;
}
else
{
$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 ($pa['type'],$pa['nm'],'critical');
if ($pa['club'] == 9) $log .= "消耗<span class=\"yellow\">$rg_m</span>点怒气,<span class=\"red\">发动必杀技!</span><br>";
else $log .= "<span class=\"red\">使出重击!</span><br>";
}
}
# 灵力武器伤害↔体力消耗系数判定:
if($pa['wep_kind'] == 'F')
{
//玩家使用灵力武器才会计算体力消耗
if(!$pa['type'])
{
//获取体力消耗系数:
$sp_cost_r = $pa['club'] == 9 ? 0.2 : 0.25;
//获取社团技能对体力消耗系数的修正:
$sp_cost_r *= get_clubskill_bonus_spd($pa['club'],$pa['skills']);
//获取理论消耗体力最大值:
$sp_cost_max = $sp_cost_r*$pa['wepe'];
//获取实际消耗体力:
$sp_cost = min($sp_cost_max,$pa['sp']-1);
$log .= "消耗{$sp_cost}点体力,";
}
//获取威力系数:NPC固定为50%
$factor = $pa['type'] ? 0.5 : 0.5+($sp_cost/$sp_cost_max/2);
//获取伤害变化倍率并扣除体力
$dmg_p[]= $factor;
$pa['sp'] -= $sp_cost;
//输出log
$f = round ( 100 * $factor );
$log .= "发挥了灵力武器{$f}%的威力!<br>";
}
# 连击判定:
# 只要命中次数大于1就进入连击判定,不需要再检查武器有没有连击属性。方便一些技能强制附加连击
if($pa['hitrate_times'] > 1)
{
//获取连击次数伤害倍率:2次2倍,3次2.8倍,之后=2.8+(次数-3)*0.6
$r_dmg_p = Array(2=>2,3=>2.8);
$p = isset($r_dmg_p[$pa['hitrate_times']]) ? $r_dmg_p[$pa['hitrate_times']] : 2.8 + ($pa['hitrate_times']-3)*0.6;
$dmg_p[]= $p;
//输出log
$log .= "{$pa['hitrate_max_times']}次连续攻击命中<span class=\"yellow\">{$pa['hitrate_times']}</span>次!";
}
return $dmg_p;
}
//攻击方在造成伤害前触发的事件
function attack_prepare_events(&$pa,&$pd,$active)
{
global $log,$def_kind,$specialrate,$itemspkinfo;
# 冲击效果log显示(实际的效果判断在get_base_def()阶段)
if($pa['charge_flag'])
{
$log .= "<span class=\"yellow\">{$pa['nm']}的攻击隔着{$pd['nm']}的防具造成了伤害!</span><br>";
}
# 检查防守方(pd)有没有伤害抹消属性
if(in_array('B',$pd['ex_keys']))
{
$dice = diceroll(99);
//检查抹消属性是否生效
if($dice < $specialrate['B'])
{
$pd['phy_def_flag'] = 2;
}
else
{
$log .="纳尼?{$pd['nm']}的装备使攻击无效化的属性竟然失效了!<br>";
}
}
# 抹消不存在&未生效,检查防守方(pd)有没有全系防御属性
if(!isset($pd['phy_def_flag']) && in_array('A',$pd['ex_keys']))
{
$dice = diceroll(99);
//检查防御属性是否生效
if($dice < 90)
{
$pd['phy_def_flag'] = 1;
}
else
{
$log .= "{$pd['nm']}的装备没能发挥减半伤害的效果!<br>";
}
}
# 抹消、全系防御不存在&未生效,检查防守方(pd)有没有单系防御属性:
if(!isset($pd['phy_def_flag']) && in_array($def_kind[$pa['wep_kind']],$pd['ex_keys']))
{
$dice = diceroll(99);
//检查防御属性是否生效
if($dice < 90)
{
$pd['phy_def_flag'] = $def_kind[$pa['wep_kind']];
}
else
{
$log .= "{$pd['nm']}{$itemspkinfo[$def_kind[$pa['wep_kind']]]}没能发挥减半伤害的效果!<br>";
}
}
# 贯穿效果判定:
if(in_array('n',$pa['ex_keys']) && $pd['phy_def_flag'])
{
$dice = diceroll(99);
if ($dice < $specialrate['n'])
{
$pd['phy_def_flag'] = 0;
$log .= "<span class=\"yellow\">{$pa['nm']}的攻击贯穿了{$pd['nm']}的防具!</span><br>";
}
}
return;
}
//计算伤害倍率变化(防守方)
function get_damage_def_p_rev(&$pa,&$pd,$active)
{
global $log;
$dmg_p = Array();
# 防守方(pd)持有重枪受到额外伤害:
if($pd['wep_kind'] == 'J')
{
//获取伤害变化倍率并扣除体力
$p = 1.5;
$dmg_p[]= $p;
//输出log
$log.="<span class=\"red\">由于{$pd['nm']}手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>";
}
# 热恋、同志判定:
if(in_array('l',$pd['ex_keys']))
{
$dice = diceroll(100);
if($dice <= 25)
{
if($pa['gd'] != $pd['gd'])
{
$p = 0;
$dmg_p[]= $p;
$log .= "<span class=\"red\">{$pa['nm']}{$pd['nm']}迷惑,无法全力攻击!</span>";
}
else
{
$p = 2;
$dmg_p[]= $p;
$log .= "<span class=\"red\">{$pa['nm']}{$pd['nm']}激怒,伤害加倍!</span>";
}
}
}
if(in_array('g',$pd['ex_keys']))
{
$dice = diceroll(100);
if($dice <= 25)
{
if($pa['gd'] == $pd['gd'])
{
$p = 0;
$dmg_p[]= $p;
$log .= "<span class=\"red\">{$pa['nm']}{$pd['nm']}迷惑,无法全力攻击!</span>";
}
else
{
$p = 2;
$dmg_p[]= $p;
$log .= "<span class=\"red\">{$pa['nm']}{$pd['nm']}激怒,伤害加倍!</span>";
}
}
}
# 防御属性减伤判定:
if($pd['phy_def_flag'])
{
//存在抹消属性
if($pd['phy_def_flag']==2)
{
$p = 0;
$log .= "<span class=\"yellow\">{$pa['nm']}的攻击完全被{$pd['nm']}的装备吸收了!</span><br>";
}
else
{
$p = 0.5;
$log .= "<span class=\"yellow\">{$pd['nm']}的装备使{$pa['nm']}的攻击伤害减半了!</span><br>";
}
$dmg_p[]= $p;
}
return $dmg_p;
}
//获取pa能造成的属性伤害队列
function get_base_ex_att_array(&$pa,&$pd,$active)
{
global $ex_attack;
$ex_keys =Array();
foreach($ex_attack as $ex)
{
if(in_array($ex,$pa['ex_keys']))
{
//去除该条件后不会过滤重复属性 即可以造成多次同属性伤害
if(!in_array($ex,$ex_keys)) $ex_keys[]= $ex;
}
}
return $ex_keys;
}
//pa在造成属性伤害前触发的事件
function ex_attack_prepare_events(&$pa,&$pd,$active)
{
global $log,$ex_attack,$ex_def_kind,$specialrate,$itemspkinfo;
# 检查防守方(pd)有没有属性抹消属性
if(in_array('b',$pd['ex_keys']))
{
$dice = diceroll(99);
//检查抹消属性是否生效
if($dice < $specialrate['b'])
{
$pd['ex_def_flag'] = 2;
}
else
{
$log .="纳尼?{$pd['nm']}装备上使属性攻击无效化的属性竟然失效了!<br>"; //无效化属性攻击的属性无效化了 怎么会这样
}
}
# 属性抹消未生效&不存在的情况下,检查防守方(pd)是否存在属性防御
if(!isset($pd['ex_def_flag']) && in_array('a',$pd['ex_keys']))
{
$dice = diceroll(99);
if($dice < 90)
{
$pd['ex_def_flag'] = 1;
}
else
{
$log .= "属性防御装备没能发挥应有的作用!<br>";
}
}
# 属性抹消、防御均未生效&不存在的情况下,检查防守方(pd)是否存在单项属性防御
if(!isset($pd['ex_def_flag']))
{
foreach($pa['ex_attack_keys'] as $ex)
{
if(in_array($ex_def_kind[$ex],$pd['ex_keys']))
{
$dice = diceroll(99);
if($dice < 90) $pd['ex_def_flag'][] = $ex; //单项防御生效,加入队列
else $invaild_ex[]= $ex; //单项防御未生效,记录一下,之后统一输出提示文本
}
}
//输出未生效的单项防御提示文本
if(isset($invaild_ex))
{
$ivlog = '';
foreach($invaild_ex as $ivex)
{
if(!empty($ivlog)) $ivlog.="、".$itemspkinfo[$ex_def_kind[$ivex]];
else $ivlog = $itemspkinfo[$ex_def_kind[$ivex]];
}
$log.= $ivlog."装备没能发挥应有的作用!<br>";
}
}
# 破格(属穿)效果判断:
if(in_array('y',$pa['ex_keys']) && isset($pd['ex_def_flag']))
{
$dice = diceroll(99);
if ($dice < $specialrate['y'])
{
$pd['ex_def_flag'] = 0;
$log .= "<span class=\"yellow\">{$pa['nm']}的攻击瓦解了{$pd['nm']}的属性防护!</span><br>";
}
}
return;
}
//计算可造成的属性伤害
function get_original_ex_dmg(&$pa,&$pd,$active)
{
global $log;
//触发了属抹效果,直接返回固定伤害值
if($pd['ex_def_flag'] == 2)
{
$total_ex_dmg = count($pa['ex_attack_keys']);
$log .= "<span class=\"red\">属性攻击的力量完全被防具吸收了!</span>仅造成了<span class=\"red\">{$total_ex_dmg}</span>点伤害!<br>";
return $total_ex_dmg;
}
//遍历并执行单次属性伤害,返回的是一个数组
$ex_dmg = 0; $ex_inf = 0;
// 属性攻击名 异常状态 对应防御属性 基础属性伤害 属性伤害上限 效果↔伤害系数 熟练↔伤害系数 伤害浮动
global $exdmgname, $exdmginf, $ex_def_kind, $ex_base_dmg, $ex_max_dmg, $ex_wep_dmg, $ex_skill_dmg, $ex_dmg_fluc;
// 属性↔异常 异常率 异常率上限 熟练↔异常率系数 异常↔伤害系数 得意社团
global $ex_inf, $ex_inf_r, $ex_max_inf_r, $ex_skill_inf_r, $ex_inf_punish, $ex_good_club;
foreach($pa['ex_attack_keys'] as $ex)
{
$dmginf = '';
//计算单个属性的基础属性伤害: 基础伤害 + 效果↔伤害系数修正 + 熟练↔伤害系数修正
$ex_dmg = $ex_base_dmg[$ex] + $pa['wepe']/$ex_wep_dmg[$ex] + $pa['wep_skill']/$ex_skill_dmg[$ex];
//计算单个属性能造成的基础伤害上限
if($ex_max_dmg[$ex]>0 && $ex_dmg>$ex_max_dmg[$ex]) $ex_dmg = $ex_max_dmg[$ex];
//计算得意武器类型修正
if($ex_good_wep[$ex] == $pa['wep_kind']) $ex_dmg *= 2;
//计算已经进入的异常状态对属性攻击伤害的影响
if(strpos($inf,$exdmginf[$ex])!==false && isset($ex_inf_punish[$ex]))
{
$ex_dmg *= $ex_inf_punish[$ex];
$log .= "由于{$pd['nm']}已经{$dmginf}{$exdmgname[$ex]}伤害";
$log .= $ex_inf_punish[$ex]>1 ? "倍增!" : "减少!";
}
//计算属性伤害浮动
$ex_dmg = round($ex_dmg * rand(100-$ex_dmg_fluc[$ex],100+$ex_dmg_fluc[$ex])/100);
//计算属性伤害是否被防御
$log.=$exdmgname[$ex];
if($pd['ex_def_flag'] == 1 || in_array($ex,$pd['ex_def_flag']))
{
$ex_dmg = round($ex_dmg*0.5);
$log .="被防御效果抵消了!仅";
}
else
{
//计算是否施加属性异常
if (strpos($pd['inf'],$ex_inf[$ex])===false)
{
$dice = diceroll(99);
//获取属性施加异常的基础概率 + 熟练度修正
$e_htr = $ex_inf_r[$ex] + $pa['wep_skill']*$ex_skill_inf_r[$ex];
//获取属性施加异常率的基础上限
$e_htr = min($e_htr,$ex_max_inf_r[$ex]);
//获取属性施加异常概率的社团修正
if(isset($ex_good_club[$ex]) && $ex_good_club[$ex] == $pd['club']) $e_htr += 20;
//施加异常
if ($dice < $e_htr)
{
$dmginf = $ex_inf[$ex];
$pd['inf'] .= $dmginf;
addnews($now,'inf',$pa['name'],$pd['name'],$dmginf);
}
}
}
$log .= "造成了<span class=\"red\">{$ex_dmg}</span>点伤害!";
if(!empty($dmginf)) $log .= "并造成{$pd['name']}{$exdmginf[$dmginf]}了!";
$log .= "<br>";
$total_ex_dmg[] = $ex_dmg;
}
return $total_ex_dmg;
}
//计算最终伤害的系数变化
function get_final_dmg_p(&$pa,&$pd,$active)
{
global $log;
$fin_dmg_p = 1;
# 晶莹判定:
$p = rev_get_clubskill_bonus_dmg_rate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
if($p != 100)
{
$log.="<span class=\"yellow\">在「晶莹」的作用下,{$pa['nm']}造成的最终伤害变化至".$p."%!</span><br>";
$fin_dmg_p[] = round($p/100);
}
return $fin_dmg_p;
}
//计算最终伤害的定值变化
function get_final_dmg_fix(&$pa,&$pd,$active,$fin_dmg)
{
global $log;
# 伤害制御判定:
if(in_array('h',$pd['ex_keys']) && $fin_dmg>=1950)
{
$dice = diceroll(99);
if ($dice < 90)
{
$fin_dmg = 1950 + $dice;
$log .= "在{$pd['nm']}的装备的作用下,攻击伤害被限制了!<br>";
}
else
{
$log .= "{$pd['nm']}的装备没能发挥限制攻击伤害的效果!<br>";
}
}
#剔透判定:
$rp_dmg = rev_get_clubskill_bonus_dmg_val($pa['club'],$pa['skills'],$pa,$pd);
if($rp_dmg > 0)
{
$fin_dmg += $rp_dmg;
$log .= "<span class=\"yellow\">在「剔透」的作用下,敌人受到了<span class=\"red\">$rp_dmg</span>点额外伤害。</span><br>";
}
return $fin_dmg;
}
//攻击方(pa)在造成伤害后触发的事件
function attack_finish_events($pa,$pd,$active)
{
global $log;
#计算反噬伤害:
if ($pa['final_damage'] >= 1000)
{
if ($pa['final_damage'] < 2000) {
$hp_d = floor($pa['hp']/2);
} elseif ($dmg < 5000) {
$hp_d = floor($pa['hp']*2/3);
} else {
$hp_d = floor($pa['hp']*4/5);
}
if (in_array('H',$pa['ex_keys'])) {
$hp_d = floor ( $hp_d / 10 );
}
$log .= "惨无人道的攻击对{$pa['nm']}自身造成了<span class=\"red\">$hp_d</span>点<span class=\"red\">反噬伤害!</span><br>";
$pa['hp'] -= $hp_d;
}
return;
}
//防守方(pd)在受到伤害后触发的事件
function get_hurt_events(&$pa,&$pd,$active)
{
global $log,$infatt_rev,$infinfo;
# pa致伤次数>0时,计算pd防具受损或致伤情况
if($pa['inf_times']>0)
{
//获取可致伤部位
$inf_parts = $infatt_rev[$pa['wep_kind']];
$inf_att = Array();
for($i=0;$i<$pa['inf_times'];$i++)
{
//随机选择一个可致伤的部位
$aim = rand(0,count($inf_parts)-1);
$inf_aim = $inf_parts[$aim];
//对应部位致伤次数+1
$inf_att[$inf_aim] += 1;
}
//应用防具损伤/致伤效果
foreach($inf_att as $ipt => $times)
{
$which = 'ar'.$ipt;
if($pd[$which.'s'] > 0)
{
armor_hurt($pd,$which,$times);
}
else
{
if(strpos($pd['inf'],$inf_att) === false)
{
$pd['inf'] .= $inf_att;
$pd['combat_inf'] .= $inf_att;
$log .= "{$pd['nm']}的<span class=\"red\">$infinfo[$inf_att]</span>部受伤了!<br>";
}
}
}
}
return;
}
?>
\ No newline at end of file
<?php
if(!defined('IN_GAME')) {
exit('Access Denied');
}
//发现敌人
function findenemy_rev($edata)
{
global $db,$tablepre;
global $fog,$pid,$log,$mode,$main,$cmd,$battle_title,$attinfo,$skillinfo;
$battle_title = '发现敌人';
//保存当前玩家数据,返回当前玩家数据组
$sdata = current_player_save();
//格式化对战双方数据
$init_data = update_db_player_structure();
foreach(Array('w_','s_') as $p)
{
foreach ($init_data as $i) global ${$p.$i};
}
extract($edata,EXTR_PREFIX_ALL,'w'); extract($sdata,EXTR_PREFIX_ALL,'s');
init_rev_battle();
$log .= "你发现了敌人<span class=\"red\">$w_name</span>!<br>对方好像完全没有注意到你!<br>";
//初始化玩家攻击方式信息
$w1 = substr($s_wepk,1,1);
$w2 = substr($s_wepk,2,1);
if ($w2=='0'||$w2=='1') $w2='';
if (($w1 == 'G'||$w1=='J')&&($s_weps==$nosta)) $w1 = 'P';
include template('battlecmd_rev');
$cmd = ob_get_contents();
ob_clean();
$main = 'battle_rev';
return;
}
//发现中立NPC $kind 0=中立单位 1=友军
function findneut(&$edata,$kind=0)
{
global $log,$action,$mode,$name,$main,$cmd,$battle_title,$pid,$db,$tablepre;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_sp,$w_msp,$w_rage,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
$battle_title = $kind ? '发现朋友' : '发现敌人?';
extract($edata,EXTR_PREFIX_ALL,'w');
init_battle(1);
if(!is_array($edata['clbpara'])) $edata['clbpara']=get_clbpara($edata['clbpara']);
$log .= "你发现了<span class=\"yellow\">$w_name</span>!<br>";
if(!$kind) $log .= "对方看起来没有敌意。<br>";
//TODO:把这一段挪到一个独立函数里
if($edata['clbpara']['post'] == $pid)
{
$log.="对方一看见你,便猛地朝你扑了过来!<br>
<br><span class='sienna'>“老板!有你的快递喔!”</span><br>
<br>你被这突然袭击吓了一跳!<br>
但对方只是从身上摸出了一个包裹样的东西扔给了你。然后又急匆匆地转身离开了。<br>
<br>……这是在搞啥……?<br><br>";
$action='';
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$iid=$edata['clbpara']['postid'];
$itm0=$edata['itm'.$iid];$itmk0=$edata['itmk'.$iid];$itmsk0=$edata['itmsk'.$iid];
$itme0=$edata['itme'.$iid];$itms0=$edata['itms'.$iid];
//发一条news 表示快递已送达
$sponsorid = $edata['clbpara']['sponsor'];
$result = $db->query("SELECT * FROM {$tablepre}gambling WHERE uid = '$sponsorid'");
$sordata = $db->fetch_array($result);
addnews($now,'gpost_success',$sordata['uname'],$itm0,$name);
//再见了~快递员!
unset($edata['clbpara']['post']);unset($edata['clbpara']['postid']);unset($edata['clbpara']['sponsor']);
destory_corpse($edata);
//解除快递锁
$db->query("UPDATE {$tablepre}gambling SET bnid=0 WHERE uid='$sponsorid'");
}
include template('findneut');
$cmd = ob_get_contents();
ob_clean();
$main = 'battle';
return;
}
?>
\ No newline at end of file
......@@ -7,158 +7,98 @@
include_once GAME_ROOT.'./include/game/combat.func.php';
include_once GAME_ROOT.'./include/game/attr.func.php';
/*这个文件里的函数是供npc与npc战斗使用的。
但是只要提供了正确的pa和pd当然也可以给玩家使用。 //哈哈!不行!玩家数据存不回去!傻了吧! //搞定了! //没搞定啊!!不能100%保证不出怪问题,所以还是不要给玩家使用
本质上就是一套整理过的原版战斗函数。*/
//发现中立NPC $kind 0=中立单位 1=友军
function findneut(&$edata,$kind=0)
//战斗准备流程:根据active为交战双方分配视角,初始化界面
function rev_combat_prepare($pa,$pd,$active,$wep_kind='',$msg='',$log_print=1)
{
global $log,$action,$mode,$name,$main,$cmd,$battle_title,$pid,$db,$tablepre;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_sp,$w_msp,$w_rage,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
$battle_title = $kind ? '发现朋友' : '发现敌人?';
extract($edata,EXTR_PREFIX_ALL,'w');
init_battle(1);
if(!is_array($edata['clbpara'])) $edata['clbpara']=get_clbpara($edata['clbpara']);
$log .= "你发现了<span class=\"yellow\">$w_name</span>!<br>";
if(!$kind) $log .= "对方看起来没有敌意。<br>";
//TODO:把这一段挪到一个独立函数里
if($edata['clbpara']['post'] == $pid)
{
$log.="对方一看见你,便猛地朝你扑了过来!<br>
<br><span class='sienna'>“老板!有你的快递喔!”</span><br>
<br>你被这突然袭击吓了一跳!<br>
但对方只是从身上摸出了一个包裹样的东西扔给了你。然后又急匆匆地转身离开了。<br>
<br>……这是在搞啥……?<br><br>";
$action='';
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$iid=$edata['clbpara']['postid'];
$itm0=$edata['itm'.$iid];$itmk0=$edata['itmk'.$iid];$itmsk0=$edata['itmsk'.$iid];
$itme0=$edata['itme'.$iid];$itms0=$edata['itms'.$iid];
//发一条news 表示快递已送达
$sponsorid = $edata['clbpara']['sponsor'];
$result = $db->query("SELECT * FROM {$tablepre}gambling WHERE uid = '$sponsorid'");
$sordata = $db->fetch_array($result);
addnews($now,'gpost_success',$sordata['uname'],$itm0,$name);
//再见了~快递员!
unset($edata['clbpara']['post']);unset($edata['clbpara']['postid']);unset($edata['clbpara']['sponsor']);
destory_corpse($edata);
//解除快递锁
$db->query("UPDATE {$tablepre}gambling SET bnid=0 WHERE uid='$sponsorid'");
}
global $db,$tablepre,$log,$mode,$main,$cmd,$battle_title;
include template('findneut');
$cmd = ob_get_contents();
ob_clean();
$main = 'battle';
return;
}
//没有传入pd时,读取当前玩家数据
if(!isset($pd)) $pd = current_player_save();
//战斗准备流程:通过传入的战斗双方ID初始化
function rev_combat_prepare($nid,$eid)
//显示界面
if($log_print)
{
global $db,$tablepre,$log,$mode,$main,$cmd,$battle_title;
global $n_type,$n_name,$n_gd,$n_sNo,$n_icon,$n_hp,$n_mhp,$n_sp,$n_msp,$n_rage,$n_wep,$n_wepk,$n_wepe,$n_lvl,$n_pose,$n_tactic,$n_inf;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
//初始化进攻方数据
if($nid)
//格式化交战双方信息
$init_data = update_db_player_structure();
foreach(Array('w_','s_') as $p)
{
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$nid' AND hp>0");
if($db->num_rows($result)>0)
{
$ndata = $db->fetch_array($result);
extract($ndata,EXTR_PREFIX_ALL,'n');
foreach ($init_data as $i) global ${$p.$i};
}
if($active)
{ //先制攻击,主视角是pa,给一个s_前缀;敌对视角是pd,给一个w_前缀;
extract($pa,EXTR_PREFIX_ALL,'s');extract($pd,EXTR_PREFIX_ALL,'w');
}
//初始化防守方数据
if($eid)
{
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$eid' AND hp>0");
if($db->num_rows($result)>0)
{
$edata = $db->fetch_array($result);
extract($edata,EXTR_PREFIX_ALL,'w');
else
{ //被先制攻击,主视角是pd,敌对视角是pa
extract($pd,EXTR_PREFIX_ALL,'s');extract($pa,EXTR_PREFIX_ALL,'w');
}
init_rev_battle(1);
$battle_title = '战斗发生';
$main = 'battle_rev';
}
if($ndata && $edata && $nid!=$eid)
{
init_battle(1);
$main = 'revbattle';
//加入喊话
if(!empty($msg)) $pa['message'] = $msg;
//进入战斗流程
rev_combat($ndata,$edata,1);
include template('revbattleresult');
$cmd = ob_get_contents();
ob_clean();
}
else
{
$log.="初始化战斗对象失败,可能是攻方/守方已死,或传入的NPCID非法。<br>";
}
return;
rev_combat($pa,$pd,$active,$wep_kind,$log_print);
}
//战斗流程:pa(攻方)pd(守方)active(1=玩家为pa;0=玩家为pd)
function rev_combat(&$pa,&$pd,$active,$wep_kind='')
//战斗流程:
function rev_combat(&$pa,&$pd,$active,$wep_kind='',$log_print=1)
{
global $log,$mode,$main,$cmd,$action,$db,$tablepre,$now,$nosta,$hdamage,$hplayer;
global $infinfo,$plsinfo,$hplsinfo,$battle_title,$message;
global $db,$tablepre,$now,$mode,$main,$cmd,$log;
global $hdamage,$hplayer,$message;
global $infinfo,$plsinfo,$hplsinfo,$nosta;
//登记非功能性地点信息时合并隐藏地点
foreach($hplsinfo as $hgroup=>$hpls) $plsinfo += $hpls;
$battle_title = '战斗发生';
//传入了攻击方式/主动技的情况下,在这里判断传入参数的合法性
if (!$wep_kind)
{
$w1 = substr ($pa['wepk'], 1, 1 );
$w2 = substr ($pa['wepk'], 2, 1 );
if ((($w1 == 'G')||($w1=='J')) && ($pa['weps'] == $nosta)) $wep_kind = $w2 ? $w2 : 'P';
else $wep_kind = $w1;
if ((($w1 == 'G')||($w1=='J')) && ($pa['weps'] == $nosta))
{
$wep_kind = $w2 ? $w2 : $w1; //这里不判断枪没子弹的情况 传进下个流程后再同一批判断
}
else
{
$wep_kind = $w1;
}
}
elseif(strpos($pa['wepk'],$wep_kind)===false && $wep_kind != 'back')
elseif(strpos($pa['wepk'],$wep_kind)===false)
{
$wep_kind = substr ($pa['wepk'], 1, 1 );
}
$pa['wep_kind'] = $wep_kind;
//战斗发起者是玩家时才会判断的一些事件
if(!$pa['type'] && $active)
{
if($pa['pls'] != $pd['pls'])
{
$log .= "<span class=\"yellow\">".$pd['name']."</span>已经离开了<span class=\"yellow\">{$plsinfo[$pa['pls']]}</span>。<br>";
$action = '';
$mode = 'command';
return;
}
if($pd['hp'] <= 0)
//登记称谓
$pa['nm'] = (!$pa['type'] && $active) ? '你' : $pa['name'];
$pd['nm'] = (!$pd['type'] && !$active && $pa['nm']!=='你') ? '你' : $pd['name'];
if($active)
{
$log .= "<span class=\"red\">".$pd['name']."</span>已经死亡,不能被攻击。<br>";
return;
}
if ($message)
if(!$pa['type'] && $pa['message'])
{
$log.="<span class=\"lime\">你对{$pd['name']}大喊:{$message}</span><br>";
$log.="<span class=\"lime\">{$pa['nm']}大喊着:{$pa['message']},向<span class=\"red\">{$pd['nm']}</span>发起了攻击!</span><br>";
if (!$pd['type'])
{
$w_log = "<span class=\"lime\">{$name}对你大喊:{$message}</span><br>";
$w_log = "<span class=\"lime\">{$pa['name']}对你大喊:{$pa['message']}</span><br>";
logsave ($pd['pid'],$now,$w_log,'c');
}
}
}
if($active)
else
{
$log .= "你向<span class=\"red\">{$pd['name']}</span>发起了攻击!<br>";
$log .= "{$pa['nm']}向<span class=\"red\">{$pd['nm']}</span>发起了攻击!<br>";
}
}
else
{
$log .= "<span class=\"red\">{$pa['name']}</span>突然向你袭来!<br>";
$log .= "<span class=\"red\">{$pa['nm']}</span>突然向{$pd['nm']}袭来!<br>";
}
//战斗发起者是NPC时进行的判断
if($pa['type'])
{
......@@ -206,26 +146,26 @@
$counter_dice = rand ( 0, 99 );
if ($counter_dice < $counter)
{
$log .= "<span class=\"red\">{$pd['name']}的反击!</span><br>";
$log .= npc_chat ($pd['type'],$pd['name'], 'defend' );
$log .= "<span class=\"red\">{$pd['nm']}的反击!</span><br>";
$log .= npc_chat ($pd['type'],$pd['nm'], 'defend' );
//反击打击实行
$def_dmg = rev_attack($pd,$pa,1);
}
else
{
$log .= npc_chat ($pd['type'],$pd['name'], 'escape' );
$log .= "<span class=\"red\">{$pd['name']}处于无法反击的状态,逃跑了!</span><br>";
$log .= npc_chat ($pd['type'],$pd['nm'], 'escape' );
$log .= "<span class=\"red\">{$pd['nm']}处于无法反击的状态,逃跑了!</span><br>";
}
}
else
{
$log .= npc_chat($pd['type'],$pd['name'], 'cannot' );
$log .= "<span class=\"red\">{$pd['name']}攻击范围不足,不能反击,逃跑了!</span><br>";
$log .= npc_chat($pd['type'],$pd['nm'], 'cannot' );
$log .= "<span class=\"red\">{$pd['nm']}攻击范围不足,不能反击,逃跑了!</span><br>";
}
}
elseif($pd['hp']>0 && !$att_result)
{
$log .= "<span class=\"red\">{$pd['name']}逃跑了!</span><br>";
$log .= "<span class=\"red\">{$pd['nm']}逃跑了!</span><br>";
}
//反击效果结算
......@@ -273,318 +213,270 @@
$pd['action'] = 'corpse'.$pa['pid'];
}
}
$log = str_replace('你',$pa['name'],$log); //偷懒做法 如果NPC的台词里有“你”出现的话 会变得很怪23333
//保存两个人的状态
player_save($pa);player_save($pd);
if(!$pa['type']) player_load($pa);
if(!$pd['type']) player_load($pd);
//刷新界面状态
global $n_iconImg,$n_type,$n_name,$n_gd,$n_sNo,$n_icon,$n_hp,$n_mhp,$n_sp,$n_msp,$n_rage,$n_wep,$n_wepk,$n_wepe,$n_lvl,$n_pose,$n_tactic,$n_inf,$n_wep_words,$n_wepk_words;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
extract($pa,EXTR_PREFIX_ALL,'n'); extract($pd,EXTR_PREFIX_ALL,'w');
$main = 'revbattle';
init_battle (1);
//条件TODO:由玩家控制的,或者与玩家处于盟友状态的NPC完成了击杀,给玩家传一个摸尸体标记,这样玩家点了确定之后就可以去摸尸体了
if(!$pa['type'] && $acitve)
{
//主视角-pa是NPC的情况下,把身上的标记传递给玩家
global $action;
$action = $pa['action'];
//毁尸灭迹
unset($pa);unset($pd);
return;
}
//打击流程:pa(打击方);pd(被打方);active(1=pa主动攻击;0=pa发起反击)
function rev_attack(&$pa,&$pd,$active = 1)
{
//通用
global $now,$nosta,$log,$infobbs,$infinfo,$attinfo,$skillinfo,$wepimprate,$specialrate;
global $db,$tablepre;
//枪托攻击标识
$is_wpg = false;
//武器效果值修正
$watt=-1;
if (((strpos ($pa['wepk'], 'G' ) == 1)||(strpos($pa['wepk'],'J')==1)) && ($pa['weps'] == $nosta)) {
if (($pa['wep_kind'] == 'G')||($pa['wep_kind'] == 'P')||($pa['wep_kind']=='J'))
//保存两个人的状态
if ($active)
{
$pa['wep_kind'] = 'P';
$is_wpg = true;
$watt = round ($pa['wepe']/ 5 );
//pa是玩家/主视角NPC的情况下 把edata(w_前缀)发给$pd
$edata=$pd; $sdata=$pa;
player_save($pa); player_save($pd);
if (!$pd['type']) save_enemy_battlelog($pd);
}
else
{
$watt = $pa['wepe'];
}
}
$log .= "{$pa['name']}使用{$pa['wep']}<span class=\"yellow\">{$attinfo[$pa['wep_kind']]}</span>{$pd['name']}!<br>";
$pa['att_key'] = getatkkey ( $pa['wepsk'], $pa['arhsk'], $pa['arbsk'], $pa['arask'], $pa['arfsk'], $pa['artsk'], $pa['artk'], $is_wpg );
$pd['def_key'] = getdefkey ( $pd['wepsk'], $pd['arhsk'], $pd['arbsk'], $pd['arask'], $pd['arfsk'], $pd['artsk'], $pd['artk'] );
//三抽标识
$mdr = $skdr = $sldr = false;
if(strpos($pa['att_key'].$pd['def_key'],'-')!==false){$mdr = true;}//精抽
if(strpos($pa['att_key'].$pd['def_key'],'*')!==false){$sldr = true;}//魂抽
if(strpos($pa['att_key'].$pd['def_key'],'+')!==false){$skdr = true;}//技抽
if($mdr || $sldr || $skdr){
list($wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk)=Array($pa['wepsk'], $pa['arhsk'], $pa['arbsk'], $pa['arask'], $pa['arfsk'], $pa['artsk'], $pa['artk']);
list($wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk)=Array($pd['wepsk'],$pd['arhsk'],$pd['arbsk'],$pd['arask'],$pd['arfsk'],$pd['artsk'],$pd['artk']);
if($mdr){
$log .= "<span class=\"yellow\">精神抽取使双方的防具属性全部失效!</span><br>";
$hsk = $bsk = $ask = $fsk = $whsk = $wbsk = $wask = $wfsk = '';
}
if($sldr){
$log .= "<span class=\"yellow\">灵魂抽取使双方的武器和饰物属性全部失效!</span><br>";
$wsk = $tsk = $tk = $wwsk = $wtsk = $wtk = '';
}
if($skdr){
$log .= "<span class=\"yellow\">技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>";
//pd是玩家/主视角NPC的情况下 把edata(w_前缀)发给$pa
$edata=$pa; $sdata=$pd;
player_save($pa); player_save($pd);
if (!$pa['type']) save_enemy_battlelog($pa);
}
$pa['att_key'] = getatkkey ( $wsk,$hsk,$bsk,$ask,$fsk,$tsk,$tk, $is_wpg );
$pd['def_key'] = getdefkey ( $wwsk,$whsk,$wbsk,$wask,$wfsk,$wtsk,$wtk );
}
//echo "【DEBUG】pa_att_key={$pa['att_key']},pd_def_key={$pd['def_key']}<br>";
//直死 NPC打NPC 无效果
//刷新玩家状态
if(!$sdata['type']) player_load($sdata);
//真红暮护盾/特效
if(($pd['type']==19)&&($pd['name']=="红暮")&&(substr($pa['wepk'],0,2)!=$pd['wepk']))
//刷新界面状态
$init_data = update_db_player_structure();
foreach(Array('w_','s_','') as $p)
{
$log .= "<span class=\"red\">红暮身上的武器投射出了防护罩,轻松挡下了{$pa['name']}的攻击!</span><br>";
return 0;
foreach ($init_data as $i) global ${$p.$i};
}
extract($sdata,EXTR_PREFIX_ALL,'s'); extract($edata,EXTR_PREFIX_ALL,'w');
init_rev_battle (1);
$main = 'battle_rev';
//数据护盾 NPC打NPC
if($pd['artk']=="AA")
{ //主动攻击判定
if($pd['type']!=0)
{ //pd是NPC
if($pd['arte'] < 100)
{
$log .= "<span class=\"red\">对手身上的数据护盾投射出了防护罩,轻松挡下了{$pa['name']}的攻击!</span><br>";
$pd['arte'] = $pd['arte'] + $pd['arts'];
if($pd['arte'] > 100){$pd['arte'] = 100;}
return 0;
//获取后续页面
if(substr($action,0,6)=='corpse')
{
include_once GAME_ROOT . './include/game/battle.func.php';
findcorpse($edata);
}
else
{
$log .= "<span class=\"red\">对手身上的数据护盾失效了!</span><br>";
include template('battleresult');
$cmd = ob_get_contents();
ob_clean();
}
return;
}
//打击流程:
function rev_attack(&$pa,&$pd,$active = 1)
{
//通用
global $now,$nosta,$log,$infobbs,$infinfo,$attinfo,$skillinfo,$wepimprate,$specialrate;
global $db,$tablepre;
include_once GAME_ROOT . './include/game/revattr.func.php';
//枪托修正:你怎么老搞特殊化
if (($pa['wep_kind'] == 'G'||$pa['wep_kind']=='J') && ($pa['weps'] == $nosta))
{
$pa['wep_kind'] = 'P';
$pa['is_wpg'] = true;
}
//迷你蜂 - NPC打NPC TODO
//登记武器名
$pa['wep_name'] = $pa['wep'];
//电子狐 - NPC打NPC TODO
$log .= "{$pa['nm']}使用{$pa['wep']}<span class=\"yellow\">{$attinfo[$pa['wep_kind']]}</span>{$pd['nm']}!<br>";
//熟练度修正
//$add_skill = &$pa[$skillinfo[$pa['wep_kind']]];
//提醒自己一下:$skillinfo[$pa['wep_kind']]返回的是'wp','wk'...这种熟练名字段,对应熟练度值是$pa[$skillinfo[$pa['wep_kind']]]
if ($pa['club']==18){
$pa['wep_skill']=round($pa[$skillinfo[$pa['wep_kind']]]*0.7+($pa['wp']+$pa['wk']+$pa['wc']+$pa['wg']+$pa['wd']+$pa['wf'])*0.3);
}else{
$pa['wep_skill']=$pa[$skillinfo[$pa['wep_kind']]];
# 获取属性
$pa['ex_equip_keys'] = $pa['ex_wep_keys'] = Array();
$pa['ex_equip_keys'] = get_equip_ex_array($pa); //获取pa防具上的所有属性
$pa['ex_wep_keys'] = get_wep_ex_array($pa); //获取pd武器、饰品上的所有属性
$pd['ex_equip_keys'] = $pd['ex_wep_keys'] = Array();
$pd['ex_equip_keys'] = get_equip_ex_array($pd);//获取pd防具上的所有属性
$pd['ex_wep_keys'] = get_wep_ex_array($pd);//获取pd武器、饰品上的所有属性
//技能抽取判定
if(in_array('+',array_merge($pa['ex_wep_keys'],$pa['ex_equip_keys'])) || in_array('+',array_merge($pd['ex_wep_keys'],$pd['ex_equip_keys'])))
{
$log .= "<span class=\"yellow\">技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>";
$pa['skdr_flag'] = $pd['skdr_flag'] = 1;
}
//三抽修正
if($skdr)
//灵魂抽取判定
if(in_array('*',$pa['ex_wep_keys']) || in_array('*',$pd['ex_wep_keys']))
{
$pa['wep_skill']=sqrt($pa['wep_skill']);
$log .= "<span class=\"yellow\">灵魂抽取使双方的武器和饰物属性全部失效!</span><br>";
$pa['ex_wep_keys'] = $pd['ex_wep_keys'] = Array();
$pa['sldr_flag'] = $pd['sldr_flag'] = 1;
}
//空手武器效果值修正
if ($watt==-1)
//精神抽取判定
if(in_array('-',$pa['ex_equip_keys']) || in_array('-',$pd['ex_equip_keys']))
{
if ($pa['wep_kind'] == 'N')
$log .= "<span class=\"yellow\">精神抽取使双方的防具属性全部失效!</span><br>";
$pa['ex_equip_keys'] = $pd['ex_equip_keys'] = Array();
$pa['mdr_flag'] = $pd['mdr_flag'] = 1;
}
//PS:三抽检定现在没有做彼此保留的额外判定。因为单独写在这里太丑陋了。
//因此如果一件武器/防具上同时带有3抽,有可能会被灵抽/精抽洗掉对方的效果。但是现在游戏里还没有这样的装备,所以等出问题了再解决。
//三抽检定过后把2个属性数组合并,不然每次都要拖着一长串
$pa['ex_keys'] = array_merge($pa['ex_wep_keys'],$pa['ex_equip_keys']); unset($pa['ex_wep_keys']); unset($pa['ex_equip_keys']);
$pd['ex_keys'] = array_merge($pd['ex_wep_keys'],$pd['ex_equip_keys']); unset($pd['ex_wep_keys']); unset($pd['ex_equip_keys']);
# 获取真实熟练度 保存在$pa['wep_skill']内
if ($pa['club'] == 18)
{
$watt = round ($pa['wep_skill']*2/3);
$pa['wep_skill']=round($pa[$skillinfo[$pa['wep_kind']]]*0.7+($pa['wp']+$pa['wk']+$pa['wc']+$pa['wg']+$pa['wd']+$pa['wf'])*0.3);
}
else
{
$watt = $pa['wepe'] * 2;
$pa['wep_skill']=$pa[$skillinfo[$pa['wep_kind']]];
}
//应用技抽效果
if(isset($pa['skdr_flag']) || isset($pd['skdr_flag']))
{
$pa['wep_skill']=sqrt($pa['wep_skill']);
}
//echo "【DEBUG】pa_wep_kind={$pa['wep_kind']},pa_wep_skill={$pa['wep_skill']},pa_skills={$pa['skills']}<br>";
$hitrate = get_hitrate ($pa['wep_kind'],$pa['wep_skill'], $pa['club'], $pa['inf'] );
//echo "【DEBUG】hitrate={$hitrate}<br>";
$hitrate *= rev_get_clubskill_bonus_hitrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
//echo "【DEBUG】修正后hitrate={$hitrate}<br>";
$damage_p = get_damage_p ( $pa['rage'], $pa['att_key'], 0, $pa['name'] , $pa['club'], $message);
//echo "【DEBUG】damage_p={$damage_p}<br>";
//……咕咕?
$clb_bonus_imfrate = rev_get_clubskill_bonus_imfrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
$clb_bonus_imftime = rev_get_clubskill_bonus_imftime($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
$clb_bonus_imprate = rev_get_clubskill_bonus_imprate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
$clb_bonus_hitrate = rev_get_clubskill_bonus_hitrate($pa['club'],$pa['skills'],$pa,$pd['club'],$pd['skills'],$pd);
$hit_time = get_hit_time ($pa['att_key'],$pa['wep_skill'],$hitrate, $pa['wep_kind'], $pa['weps'],$infobbs[$pa['wep_kind']]*$clb_bonus_imfrate,$clb_bonus_imftime,$wepimprate[$pa['wep_kind']]*$clb_bonus_imprate,$is_wpg,$clb_bonus_hitrate);
//echo "【DEBUG】看上面是输出的hit_time数组".print_r($hit_time)."<br>";
# 计算武器基础命中率 保存在$pa['hitrate']内
$pa['hitrate'] = get_hitrate_rev($pa,$pd,$active);
# 计算命中次数 保存在$pa['hitrate_times']内
get_hit_time_rev($pa,$pd,$active);
if ($hit_time [1] > 0)
# 命中次数大于0时 执行伤害判断
if ($pa['hitrate_times'] > 0)
{
if(strpos($pa['att_key'],'R')!==false)
//检查是否存在造成不受其他因素影响的固定伤害(例:混沌伤害、直死)
$fix_dmg = get_fix_damage($pa,$pd,$active);
if($fix_damage)
{
//随机伤害无视一切伤害计算
$maxdmg = $pd['mhp'] > $pa['wepe'] ? $pa['wepe'] : $pd['mhp'];
$damage = rand(1,$maxdmg);
$log .= "武器随机造成了<span class=\"red\">$damage</span>点伤害!<br>";
$damage = $fix_dmg;
}
//如无,则正常计算伤害
else
{
$gender_dmg_p = check_gender($pa['name'],$pd['name'],$pa['gd'],$pd['gd'],$pa['att_key']);
if ($gender_dmg_p == 0)
{
$damage = 1;
# 物理伤害计算部分:
//获取攻击方(pa)的基础攻击力与修正
$pa['base_att'] = get_base_att($pa,$pd,$active);
//获取防守方(pd)的基础防御与修正
$pd['base_def'] = get_base_def($pa,$pd,$active);
//获取攻击方(pa)的原始伤害
$damage = get_original_dmg_rev ($pa,$pd,$active);
//获取攻击方(pa)在原始伤害基础上附加的固定伤害(重枪、灵武固伤)
$damage += get_original_fix_dmg_rev($pa,$pd,$active);
//获取攻击方(pa)对伤害倍率施加的变化(连击、必杀、灵力武器发挥了x%的威力) 返回的是一个数组 每个值是一个单独的系数
$damage_p = get_damage_p_rev ($pa,$pd,$active);
//获取攻击方(pa)在造成伤害前触发的事件(检查pd身上是否有防御属性,pa是否触发了贯穿、冲击)
attack_prepare_events($pa,$pd,$active);
//获取防守方(pd)对伤害倍率施加的变化(防御属性、持有重枪受伤增加、热恋、同志) 系数保存在同一个数组里,分开2个函数只是为了调整log顺序
$damage_p = array_merge($damage_p,get_damage_def_p_rev($pa,$pd,$active));
//计算物理伤害:
$log.="造成了";
//存在伤害系数队列
if(is_array($damage_p) && count($damage_p)>0 && $damage>1)
{
if(in_array('0',$damage_p))
{
//队列内系数有0 直接归零
$damage = 0;
}
else
{
$attack = $pa['att'] + $watt;
$defend = checkdef($pd['def'] , $pd['arbe'] + $pd['arhe'] + $pd['arae'] + $pd['arfe'] , $pa['att_key'], 1);
$damage = rev_get_original_dmg ( $pa , $pd , $attack, $defend, $pa['wep_skill'] , $pa['wep_kind'] );
//echo "【DEBUG】rev_get_original_dmg={$damage}<br>";
if ($pa['wep_kind'] == 'F')
//否则输出一段 A×B×C=D 样式的文本
$log .= "{$damage}";
foreach($damage_p as $p)
{
if($sldr)
{
$log.="<span class=\"red\">由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>";
$damage = round($damage*$p);
$log .= {$p}";
}
else
{
$damage = round (($pa['wepe']+$damage)*rev_get_WF_p($pa, $pa['club'],$pa['wepe']));
//echo "【DEBUG】rev_get_WF_p修正后damage={$damage}<br>";
$log .= "=";
}
}
if ($pa['wep_kind'] == 'J')
$damage = $damage > 1 ? round ( $damage ) : 1; //命中了至少会保留1点伤害 此所谓雁过拔毛
$log.="<span class=\"red\">$damage</span>点伤害!<br>";
//最终物理伤害
$pdamage = $damage;
# 属性伤害计算部分:
//获取攻击方(pa)能造成的属性伤害类型
$pa['ex_attack_keys'] = get_base_ex_att_array($pa,$pd,$active);
//攻击方(pa)存在属性伤害:
if($pa['ex_attack_keys'])
{
//获取攻击方(pa)在造成属性伤害前触发的事件(检查pd身上是否有防御属性,pa是否触发了属穿)
ex_attack_prepare_events($pa,$pd,$active);
//获取攻击方(pa)能造成的属性伤害
$ex_damage = get_original_ex_dmg($pa,$pd,$active);
//存在大于1种属性伤害,输出一段 A+B+C=D 样式的文本
$total_ex_damage = 0;
if(is_array($ex_damage))
{
if(count($ex_damage)>1)
{
$adddamage=$pd['mhp']/3;
if ($adddamage>20000) {$adddamage=10000;}
$damage += round($pa['wepe']*2/3+$adddamage);
$log .= "造成了";
$elog = '';
foreach($ex_damage as $edmg)
{
$total_ex_damage += $edmg;
if(!empty($elog)) $elog .= "+".$edmg;
else $elog = $edmg;
}
checkarb ( $damage, $pa['wep_kind'], $pa['att_key'], $pd['def_key'] ,1);
$damage *= $damage_p;
$damage = $damage > 1 ? round ( $damage ) : 1;
$damage *= $gender_dmg_p;
$log .= $elog."=<span class=\"red\">{$total_ex_damage}</span>点属性伤害!<br>";
}
if ($pd['wepk']=='WJ')
else
{
$log.="<span class=\"red\">由于{$pd['name']}手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>";
$damage+=round($damage*0.5);
$total_ex_damage = $ex_damage[0];
}
// 书中虫 TODO
if ($hit_time [1] > 1)
}
else
{
$d_temp = $damage;
if ($hit_time [1] == 2) {
$dmg_p = 2;
} elseif ($hit_time [1] == 3) {
$dmg_p = 2.8;
} else {
$dmg_p = 2.8 + 0.6 * ($hit_time [1] - 3);
$total_ex_damage = $ex_damage;
}
//$dmg_p = $hit_time[1] - ($hit_time[1]-1)*0.2;
$damage = round ( $damage * $dmg_p );
$log .= "造成{$d_temp}×{$dmg_p}=<span class=\"red\">$damage</span>点伤害!<br>";
} else {
$log .= "造成<span class=\"red\">$damage</span>点伤害!<br>";
//最终属性伤害
$damage += $total_ex_damage;
}
$pdamage = $damage;
$damage += rev_get_ex_dmg ($pa,$pd, 0, $pa['club'], $pd['inf'], $pa['att_key'], $pa['wep_kind'], $pa['wepe'], $pa['wep_skill'], $pd['def_key'] );
$damage = checkdmgdef($damage, $pa['att_key'],$pd['def_key'],1);
$bonus_dmg = get_clubskill_bonus_dmg_rate($pa['club'],$pa['skills'],$pd['club'],$pd['skills'])*100;
if($bonus_dmg < 100)
#最终伤害计算部分:
//获取最终伤害的系数变化(晶莹)
$fin_damage_p = get_final_dmg_p($pa,$pd,$active);
foreach($fin_damage_p as $fin_p)
{
$log.="<span class=\"yellow\">由于技能效果的作用,伤害下降至".$bonus_dmg."%!</span><br>";
$damage = round($damage * $bonus_dmg / 100);
$damage = round($damage * $fin_p);
}
$rpdmg=get_clubskill_bonus_dmg_val($pa['club'],$pa['skills'],$pa['rp'],$pd['rp']);
if($rpdmg > 0)
//获取最终伤害的定值变化(伤害制御、剔透)
$damage = get_final_dmg_fix($pa,$pd,$active,$damage);
//输出log
if($pdamage != $damage)
{
$log .= "<span class=\"yellow\">由于技能的影响,对方受到了<span class=\"red\">$rpdmg</span>点额外伤害。</span><br>";
$damage += $rpdmg;
}
if($pdamage != $damage){
$log .= "<span class=\"yellow\">造成的总伤害:<span class=\"red\">$damage</span>。</span><br>";
}
}
checkdmg ( $pa['name'], $pd['name'], $damage );
if(!$pa['type']) get_dmg_punish ( $pa['name'], $damage, $pa['hp'], $pa['att_key'] ); //npc不受反噬伤害
rev_get_inf ($pd, $hit_time [2], $pa['wep_kind']);
check_KP_wep ( $pa['name'], $hit_time [3], $pa['wep'], $pa['wepk'], $pa['wepe'], $pa['weps'], $pa['wepsk'] );
//将造成的最终伤害登记在$pa['final_damage']内
$pa['final_damage'] = $damage;
//将伤害发送至进行状况
checkdmg ($pa['name'],$pd['name'],$damage);
//攻击方(pa)造成伤害后的事件(计算反噬伤害)
attack_finish_events($pa,$pd,$active);
//防守方(pd)受到伤害后的事件(防具耐久下降、受伤)
get_hurt_events($pa,$pd,$active);
//经验结算
$is_player_flag = $pa['type'] ? 0 : 1;
exprgup ( $pa['lvl'], $pd['lvl'], $pa['exp'], $is_player_flag , $pd['rage'] );
} else {
$damage = 0;
$log .= "但是没有击中!<br>";
}
//真蓝凝伏计
if (($pd['type']==19)&&($pd['name']=='蓝凝'))
{
$ttr="♪臻蓝之愿♪";$ttr2="♫钴蓝之灵♫";$ttr3="❀矢车菊的回忆❀";
if (rand(1,100)<5) $pa['rp']=rand(1,33);
$le=rand(1,200)+$pa['mhp']-100;
if ($le>1001) $le=1001;
$w_pid = $pd['pid'];$n_rp = $pa['rp'];
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$ttr', 'TO', '$le', '1', '$w_pid', '$n_rp')");
$le=rand(1,200)+$damage-100;
if ($le>2000) $le=2000;
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$ttr2', 'TO', '$le', '1', '$w_pid', '$n_rp')");
$le=rand(1,$pa['hp']);
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$ttr3', 'TO', '$le', '1', '$w_pid', '$n_rp')");
$log .= "从蓝凝的身边飞出了数个光球,散布在了战场上!<br>";
}
//echo "【DEBUG】武器耐久为:{$pa['weps']}<br>";
check_GCDF_wep ( $pa['name'], $hit_time [0], $pa['wep'], $pa['wep_kind'], $pa['wepk'], $pa['wepe'], $pa['weps'], $pa['wepsk'] );
//echo "【DEBUG】武器耐久变更为:{$pa['weps']}<br>";
addnoise ( $pa['wep_kind'], $pa['wepsk'], $now, $pa['pls'], $pa['pid'], $pd['pid'], $pa['wep_kind'] );
if($pa['club'] == 10)
{
//就这样了 不用引用了
$pa[$skillinfo[$pa['wep_kind']]] +=2;
exprgup ( $pa['lvl'], $pd['lvl'], $pa['exp'], $is_player_flag , $pd['rage']);
}
else
{
$pa[$skillinfo[$pa['wep_kind']]] +=1;
$damage = 0;
$log .= "但是没有击中!<br>";
}
//计算武器损耗
weapon_loss($pa);
//发出声音
addnoise ( $pa['wep_kind'], $pa['wepsk'], $now, $pa['pls'], $pa['pid'], $pd['pid'], $pa['wep_kind'] );
//增加熟练度
$pa[$skillinfo[$pa['wep_kind']]] += $pa['club'] == 10 ? 2 : 1;
if ($pd['hp']<=$damage)
{
foreach (Array('wep','arb','arh','ara','arf','art') as $a)
{
if(strpos($pd[$a.'sk'],'v')!==false)
{
$log .= "伴随着对方的死亡,对方的<span class=\"yellow\">{$pd[$a]}</span>也化作灰烬消散了。<br>";
$pd[$a] = $pd[$a.'k'] = $pd[$a.'sk'];
$pd[$a.'e'] = $pd[$a.'s'];
}
}
for($i = 0;$i <= 6;$i++)
{
if(strpos($pd['itm'.$i.'sk'],'v')!==false)
{
$log .= "伴随着对方的死亡,对方的<span class=\"yellow\">{$pd['itm'.$i]}</span>也化作灰烬消散了。<br>";
$pd['itm'.$i] = $pd['itm'.$i.'k'] = $pd['itm'.$i.'sk'];
$pd['itm'.$i.'e'] = $pd['itm'.$i.'s'];
}
}
}
return $damage;
}
//战斗结算流程:pa(杀人方);pd(被杀方);active(1=pa视角;0=pd视角)
//战斗结算流程:
function rev_combat_result(&$pa,&$pd,$active)
{
global $log;
......@@ -596,10 +488,10 @@
//NPC进化
if ($pd['type'])
{
$log .= npc_chat ($pd['type'],$pd['name'], 'death' );
$log .= npc_chat ($pd['type'],$pd['nm'], 'death' );
include_once GAME_ROOT . './include/system.func.php';
$npcdata = evonpc ($pd['type'],$pd['name']);
$log .= '<span class="yellow">'.$pd['name'].'却没死去,反而爆发出真正的实力!</span><br>';
$npcdata = evonpc ($pd['type'],$pd['nm']);
$log .= '<span class="yellow">'.$pd['nm'].'却没死去,反而爆发出真正的实力!</span><br>';
if($npcdata){
addnews($now , 'evonpc',$pd['name'], $npcdata['name'], $pa['name']);
foreach($npcdata as $key => $val)
......@@ -612,29 +504,19 @@
else
{
$killmsg = rev_kill($pa,$pd,$pa['wep_kind'],$pa['wep']);
if($active) $log .= '<span class="yellow">'.$pd['name'].'由于其及时按了BOMB键而原地满血复活了!</span><br>';
else $log .= '<span class="yellow">由于你及时按了BOMB键,你原地满血复活了!</span><br>';
$log .= '<span class="yellow">由于及时按了BOMB键,'.$pd['nm'].'原地满血复活了!</span><br>';
}
return 1;
}
elseif($pd['hp'] <= 0)
{
$pd['bid'] = $pa['pid'];
$pd['hp'] = 0;
if (!$pd['type']) $pa['killnum'] ++;
$killmsg = rev_kill($pa,$pd,$pa['wep_kind'],$pa['wep']);
$killmsg = rev_kill($pa,$pd,$active,$pa['wep_kind']);
$log .= npc_chat ($pd['type'],$pd['name'], 'death' );
if($active)
{
$log .= "<span class=\"red\">{$pd['name']}被你杀死了!</span><br>";
if($killmsg) $log .= "<span class=\"yellow\">你对{$pd['name']}说:“{$killmsg}”</span><br>";
}
else
{
$log .= "<span class=\"red\">你被{$pa['name']}杀死了!</span><br>";
if($killmsg) $log .= "<span class=\"yellow\">{$pd['name']}对你说:“{$killmsg}”</span><br>";
}
$log .= "<span class=\"red\">{$pd['nm']}{$pa['nm']}杀死了!</span><br>";
if($killmsg) $log .= "<span class=\"yellow\">{$pa['nm']}{$pd['nm']}说:“{$killmsg}”</span><br>";
//杀人rp结算
if(!$pd['type'])
......@@ -659,382 +541,11 @@
}
return 0;
}
//pa、pd格式的社团技能-命中率系数修正
//这个函数能帮你找回10年前的记忆
function rev_get_clubskill_bonus_hitrate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//命中率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==3 && $pa['wep_kind']=="K") //见敌必斩称号
{
$r*=(1+$clskl[3][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==5 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r*=(1+$clskl[5][${'a'.$i}][1]/100);
}
if ($blearn['learn'.$i]==12) //宛如疾风称号
{
$r*=(1-$clskl[12][${'b'.$i}][1]/100);
}
}
return $r;
}
//时代变得很快,我们还没有跟上时代
function rev_get_clubskill_bonus_imfrate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//防具损坏率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r*=(1+$clskl[6][${'a'.$i}][1]/100);
}
}
return $r;
}
//也可能我们只是想活在过去
function rev_get_clubskill_bonus_imftime($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//防具损坏效果系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
$r+=$clskl[6][${'a'.$i}][2];
}
}
return $r;
}
//还是过去拽住了我们的腿不让我们向前走
function rev_get_clubskill_bonus_imprate($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//武器损坏率系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==4 && $pa['wep_kind']=="K") //见敌必斩称号
{
$r*=(1-$clskl[4][${'a'.$i}][1]/100);
}
}
return $r;
}
//用引用的方式修改一个变量,很像人和过去藕断丝连的关系。你以为你已经把过去的自己消化干净了,但ta仍会在某个毫无预兆的夜晚,出现在你的面前,让你辗转反侧、难以入眠。
function rev_get_clubskill_bonus($aclub,$askl,$pa,$bclub,$bskl,$pd,&$att,&$def)
{
//攻击防御力加成
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$att=0; $def=0;
for ($i=1; $i<=2; $i++)
{
if ($blearn['learn'.$i]==1 && $pd['wep_kind']=="P") //铁拳无敌称号
{
$dup=$clskl[1][${'b'.$i}][1]/100*$pd['wepe'];
if ($dup>2000) $dup=2000;
$def+=$dup;
}
}
}
//复杂的东西是怎么变得复杂的:可能是因为我们把它想得太简单。当一个问题出现时,我们总以为ta会是最后一个出现的问题。
function rev_get_clubskill_bonus_p($aclub,$askl,$pa,$bclub,$bskl,$pd,&$att,&$def)
{
//攻击防御加成系数
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$att=1; $def=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==2 && $pa['wep_kind']=="P") //铁拳无敌称号
{
$att*=(1+$clskl[2][${'a'.$i}][1]/100);
if (rand(0,99)<$clskl[2][${'a'.$i}][2]) $def*=(1-$clskl[2][${'a'.$i}][3]/100);
}
if ($alearn['learn'.$i]==8 && $pa['wep_kind']=="C") //灌篮高手称号
{
$att*=(1+$clskl[8][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==6 && ($pa['wep_kind']=="G" || $pa['wep_kind']=="J")) //狙击鹰眼称号
{
if (rand(0,99)<$clskl[6][${'a'.$i}][3]) $att*=(1+$clskl[6][${'a'.$i}][4]/100);
}
}
}
//反而是我们以为很复杂的人,其实意外的更容易看懂。
function rev_get_clubskill_bonus_fluc($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//伤害浮动值
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=0;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==8 && ${$prefix1.'wepk'}=="WC") //灌篮高手称号
{
$r+=$clskl[8][${'a'.$i}][2];
}
}
return $r;
}
function rev_get_clubskill_bonus_counter($aclub,$askl,$pa,$bclub,$bskl,$pd)
{
//反击率加成
getskills2($clskl);
getlearnt($alearn,$aclub,$askl);
getlearnt($blearn,$bclub,$bskl);
$a1=((int)($askl/10))%10; $a2=$askl%10;
$b1=((int)($bskl/10))%10; $b2=$bskl%10;
$r=1;
for ($i=1; $i<=2; $i++)
{
if ($alearn['learn'.$i]==7 && $pa['wep_kind']=='C') //灌篮高手称号
{
$r*=(1+$clskl[7][${'a'.$i}][1]/100);
}
if ($alearn['learn'.$i]==11) //宛如疾风称号
{
$r*=(1+$clskl[11][${'a'.$i}][3]/100);
}
if ($blearn['learn'.$i]==13 && $pd['wep_kind']=='F') //超能力者称号
{
$r*=(1-$clskl[13][${'b'.$i}][2]/100);
}
}
return $r;
}
//pa、pd格式的原始伤害计算
//其实想翻新一个函数,不一定需要看得懂它本身——也许只要看懂当时写它的人。
function rev_get_original_dmg($pa, $pd, $att, $def, $ws, $wp_kind, $active=1)
{
global $skill_dmg, $dmg_fluc, $weather, $pls;
include_once GAME_ROOT.'./include/game/clubskills.func.php';
rev_get_clubskill_bonus($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$att1,$def1);
$att+=$att1; $def+=$def1;
$attack_p = get_attack_p($weather,$pls, $pa['pose'], $pa['tactic'], $pa['club'], $pa['inf'], $active);
$att_pow = $att * $attack_p;
$defend_p = get_defend_p($weather,$pls, $pd['pose'], $pd['tactic'], $pd['club'], $pd['inf'], 1-$active);
$def_pow = $def * $defend_p;
rev_get_clubskill_bonus_p($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd,$attfac,$deffac);
$att_pow *= $attfac;
$def_pow *= $deffac;
if($def_pow <= 0){$def_pow = 0.01;}
$damage = ($att_pow / $def_pow) * $ws * $skill_dmg [$wp_kind];
$dfluc = $dmg_fluc [$wp_kind];
$dfluc += rev_get_clubskill_bonus_fluc($pa['club'],$pa['skills'],$pa,$pd['club'],$pa['skills'],$pd);
$dmg_factor = (100 + rand ( - $dfluc, $dfluc )) / 100;
$damage = round ( $damage * $dmg_factor * rand ( 4, 10 ) / 10 );
return $damage;
}
function rev_get_WF_p($pa, $clb, $we) {
global $log;
if ($pa['type'])
{
//你要找的是不是:NPC作弊
$factor = 0.5;
}
else
{
$we = $we > 0 ? $we : 1;
if ($clb == 9) {
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$spd0 = round ( 0.2*get_clubskill_bonus_spd($clb,$pa['skills'])*$we);
} else {
$spd0 = round ( 0.25*$we);
}
if ($spd0 >= $pa['sp']) {
$spd = $pa['sp'] - 1;
} else {
$spd = $spd0;
}
$factor = 0.5 + $spd / $spd0 / 2;
$f = round ( 100 * $factor );
$log .= "你消耗{$spd}点体力,发挥了灵力武器{$f}%的威力!";
$pa['sp'] -= $spd;
}
return $factor;
}
function rev_get_ex_dmg($pa, $pd, $sd, $clb, &$inf, $ky, $wk, $we, $ws, $dky)
{
if ($ky)
{
global $log, $exdmgname, $exdmginf, $ex_attack,$specialrate,$now;
global $ex_dmg_def, $ex_base_dmg,$ex_max_dmg, $ex_wep_dmg, $ex_skill_dmg, $ex_dmg_fluc, $ex_inf, $ex_inf_r, $ex_max_inf_r, $ex_skill_inf_r, $ex_inf_punish, $ex_good_wep, $ex_good_club;
$ex_final_dmg = 0;
$exinv = false;
$ex_list = array();
foreach ( $ex_attack as $ex_dmg_sign ) {
if (strpos ( $ky, $ex_dmg_sign ) !== false){
$ex_list[] = $ex_dmg_sign;
}
}
if (strpos ( $dky, 'b' ) !== false && !empty($ex_list)){
$dice = rand ( 0, 99);
if ($dice < $specialrate['b']) {//几率4%
$ex_final_dmg = 1;$exnum = 0;
foreach ( $ex_attack as $ex_dmg_sign ) {
if (strpos ( $ky, $ex_dmg_sign ) !== false) {
$exnum ++;
}
}
$log .= "<span class=\"red\">属性攻击的力量完全被防具吸收了!</span>只造成了<span class=\"red\">{$exnum}</span>点伤害!<br>";
$exinv = true;
}else{
$log .= "纳尼?防具使属性攻击无效化的属性竟然失效了!<br>";
}
}
if(!$exinv){
foreach ( $ex_list as $ex_dmg_sign ) {
$dmgnm = $exdmgname [$ex_dmg_sign];
$def = $ex_dmg_def [$ex_dmg_sign];
$bdmg = $ex_base_dmg [$ex_dmg_sign];
$mdmg = $ex_max_dmg [$ex_dmg_sign];
$wdmg = $ex_wep_dmg [$ex_dmg_sign];
$sdmg = $ex_skill_dmg [$ex_dmg_sign];
$fluc = $ex_dmg_fluc [$ex_dmg_sign];
if (in_array($ex_dmg_sign,array_keys($ex_inf))) {
$dmginf = $exdmginf [$ex_inf[$ex_dmg_sign]];
$ex_inf_sign = $ex_inf [$ex_dmg_sign];
$infr = $ex_inf_r [$ex_inf_sign];
$minfr = $ex_max_inf_r [$ex_inf_sign];
$sinfr = $ex_skill_inf_r [$ex_inf_sign];
$punish = $ex_inf_punish [$ex_dmg_sign];
$e_htr = $ex_good_club [$ex_inf_sign] == $clb ? 20 : 0;
} else {
$ex_inf_sign = '';
$punish = 1;
$e_htr = 0;
}
$wk_dmg_p = $ex_good_wep [$ex_dmg_sign] == $wk ? 2 : 1;
$e_dmg = $bdmg + $we/$wdmg + $ws/$sdmg;
if(($mdmg>0)&&($wk!='H')){
$e_dmg = round($wk_dmg_p*$mdmg*($e_dmg/($e_dmg+$mdmg/2))*rand(100 - $fluc, 100 + $fluc)/100);
} else{
$e_dmg = round($wk_dmg_p*$e_dmg*rand(100 - $fluc, 100 + $fluc)/100);
}
$ex_def_dice = rand(0,99);
if (strpos ( $dky, $def ) === false || $ex_def_dice > 90) {
if(strpos ( $dky, $def ) !== false){
$log .= "属性防御装备没能发挥应有的作用!";
}
if ($ex_inf_sign && strpos ( $inf, $ex_inf_sign ) !== false && $punish > 1) {
$log .= "由于{$pd['name']}已经{$dmginf}{$dmgnm}伤害倍增!";
$e_dmg *= $punish;
} elseif ($ex_inf_sign && strpos ( $inf, $ex_inf_sign ) !== false && $punish < 1) {
$log .= "由于{$pd['name']}已经{$dmginf}{$dmgnm}伤害减少!";
$e_dmg *= $punish;
} else {
$e_htr += $infr + $ws * $sinfr;
$e_htr = $e_htr > $minfr ? $minfr : $e_htr;
}
$e_dmg = round($e_dmg);
$log .= "{$dmgnm}造成了<span class=\"red\">{$e_dmg}</span>点额外伤害!<br>";
if (!empty($ex_inf_sign) && (strpos ( $inf, $ex_inf_sign ) === false)) {
$dice = rand ( 0, 99 );
if ($dice < $e_htr) {
$inf .= $ex_inf_sign;
if ($sd == 0) {
$pd['combat_inf'] .= $ex_inf_sign;
}
$log .= "并造成{$pd['name']}{$dmginf}了!<br>";
addnews($now,'inf',$pa['name'],$pd['name'],$ex_inf_sign);
}
}
} else {
$e_dmg = round ( $e_dmg / 2 );
$log .= "{$dmgnm}被防御效果抵消了!造成了<span class=\"red\">{$e_dmg}</span>点额外伤害!<br>";
}
$ex_final_dmg += $e_dmg;
}
}
return $ex_final_dmg;
} else {
return 0;
}
}
function rev_get_inf($pd,$ht,$wp_kind)
{
if ($ht > 0) {
global $infatt,$log;
$infatt_dice = rand ( 1, 4 );
if (($infatt_dice == 1) && (strpos ( $infatt [$wp_kind], 'b' ) !== false)) {
$inf_att = 'b';
} elseif (($infatt_dice == 2) && (strpos ( $infatt [$wp_kind], 'h' ) !== false)) {
$inf_att = 'h';
} elseif (($infatt_dice == 3) && (strpos ( $infatt [$wp_kind], 'a' ) !== false)) {
$inf_att = 'a';
} elseif (($infatt_dice == 4) && (strpos ( $infatt [$wp_kind], 'f' ) !== false)) {
$inf_att = 'f';
}
if ($inf_att)
{
if ($pd['ar'.$inf_att.'s'])
{
$pd['ar'.$inf_att.'s'] -= $ht;
$log .= "{$pd['name']}{$pd['ar'.$inf_att]}的耐久度下降了{$ht}!<br>";
if ($pd['ar'.$inf_att.'s'] <= 0)
{
$log .= "{$nm}的<span class=\"red\">{$pd['ar'.$inf_att.'s']}</span>受损过重,无法再装备了!<br>";
$pd['ar'.$inf_att] = $pd['ar'.$inf_att.'k'] = $pd['ar'.$inf_att.'sk'] = '';
$pd['ar'.$inf_att.'e'] = $pd['ar'.$inf_att.'s'] = 0;
}
}
else
{
global $infinfo;
if (strpos($pd['inf'],$inf_att) === false)
{
$pd['inf'] .= $inf_att;
$pd['combat_inf'] .= $inf_att;
$log .= "{$pd['name']}的<span class=\"red\">$infinfo[$inf_att]</span>部受伤了!<br>";
}
}
}
}
return;
}
function rev_kill(&$pa,&$pd,$death,$annex = '')
function rev_kill(&$pa,&$pd,$active,$death)
{
global $now, $db, $tablepre, $alivenum, $deathnum, $typeinfo, $lwinfo;
global $log, $now, $db, $tablepre, $alivenum, $deathnum, $typeinfo, $lwinfo;
//echo "【DEBUG】检测到{$pa['name']}使用{$death}击杀了{$pd['name']},凶器是{$annex}。<br>";
$log.="rev_kill阶段:pa是{$pa['name']},pd是{$pd['name']},active是{$active}<br>";
//登记玩家狠话
$killmsg = '';
......@@ -1096,7 +607,7 @@
//发news
$kname = $pa['type'] ? $pa['name'] : $pa['nick'].' '.$pa['name'];
addnews ($now,'death'.$pd['state'],$dname,$dtype,$kname,$annex,$lastword );
addnews ($now,'death'.$pd['state'],$pd['name'],$pd['type'],$pa['name'],$pa['wep_name'],$lastword );
//玩家决死结界复活判定
$revivaled = false;
......
......@@ -609,8 +609,10 @@ function discover($schmode = 0) {
if($active_dice < $active_r)
{
$action = 'enemy'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findenemy($edata);
//include_once GAME_ROOT.'./include/game/battle.func.php';
//findenemy($edata);
include_once GAME_ROOT.'./include/game/revbattle.func.php';
findenemy_rev($edata);
return;
}
//挨打
......@@ -623,8 +625,10 @@ function discover($schmode = 0) {
echo "passive_w_type={$edata['type']}\n";
echo "passive_w_sNo={$edata['sNo']}\n";
}
include_once GAME_ROOT.'./include/game/combat.func.php';
combat(0);
//include_once GAME_ROOT.'./include/game/combat.func.php';
//combat(0);
include_once GAME_ROOT.'./include/game/revcombat.func.php';
rev_combat_prepare($edata,NULL,0);
return;
}
}
......
......@@ -662,8 +662,24 @@ function get_clbpara($para)
return json_decode($para,true);
}
function set_clbpara($para)
function get_single_clbpara($para,$key)
{
$para = get_clbpara($para);
if(isset($para[$key])) return $para[$key];
return;
}
function del_clbpara($para,$key)
{
$para = get_clbpara($para);
if(isset($para[$key])) unset($para[$key]);
return json_encode($para);
}
function set_clbpara($para,$key,$value)
{
$para = get_clbpara($para);
$para[$key] = $value;
return json_encode($para);
}
......
......@@ -90,6 +90,8 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"red\">本局游戏被GM中止</span><br>\n";
} elseif($news == 'revival') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}因为及时按了BOMB键而原地满血复活了!</span><br>\n";
} elseif($news == 'aurora_revival') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}在奥罗拉的作用下原地复活了!</span></li>";
} elseif(strpos($news,'death') === 0) {
if($news == 'death11') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"yellow\">$a</span>因滞留在<span class=\"red\">禁区【{$plsinfo[$c]}】</span>死亡";
......
......@@ -6,6 +6,7 @@ if (! defined ( 'IN_GAME' )) {
function death($death, $kname = '', $ktype = 0, $annex = '') {
global $now, $db, $tablepre, $alivenum, $deathnum, $name, $state, $deathtime, $type, $lvl, $bid, $killmsginfo, $typeinfo, $hp, $mhp, $wp, $wk, $wg, $wc, $wd, $wf, $sp, $msp, $club, $pls , $nick;
global $weather,$clbpara;
if (! $death) {
return;
}
......@@ -95,16 +96,35 @@ function death($death, $kname = '', $ktype = 0, $annex = '') {
addnews ( $now, 'death' . $state, $name, $type, $knname, $annex, $lastword );
//$alivenum = $db->result($db->query("SELECT COUNT(*) FROM {$tablepre}players WHERE hp>0 AND type=0"), 0);
if ($type==0 && $club==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" || $death=="D" || $death=="F" || $death=="J" || $death=="trap"))
$revival_flag = false;
//依次判定复活效果
if (!$revival_flag && $weather == 17)
{
include_once GAME_ROOT.'./include/game/dice.func.php';
$aurora_rate = 10; //玩家10%概率复活
$aurora_dice = diceroll(100);
if($aurora_dice<=$aurora_rate)
{
//奥罗拉复活效果
addnews($now,'aurora_revival',$name);
$hp += min($mhp,max($aurora_dice,1)); $sp += min($msp,max($aurora_dice,1));
$alivenum++; $state=0;
$clbpara = set_clbpara($clbpara,'revival_flag','17');
$revival_flag = true;
}
}
if (!$revival_flag && $type==0 && $club==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" || $death=="D" || $death=="F" || $death=="J" || $death=="trap"))
{
addnews($now,'revival',$name); //玩家春哥附体称号的处理
$hp=$mhp; $sp=$msp;
$club=17; $state=0;
$clbpara = set_clbpara($clbpara,'revival_flag','99');
$alivenum++;
}
//PORT
//死亡时灵魂绑定的道具也会消失
if(!$revival_flag)
{
//死亡时灵魂绑定的道具也会消失 嗨呀 死了没复活才会消失
global $wep,$arb,$arh,$ara,$arf,$art,$itm1,$itm2,$itm3,$itm4,$itm5,$itm6;
global $weps,$arbs,$arhs,$aras,$arfs,$arts,$itms1,$itms2,$itms3,$itms4,$itms5,$itms6;
global $wepe,$arbe,$arhe,$arae,$arfe,$arte,$itme1,$itme2,$itme3,$itme4,$itme5,$itme6;
......@@ -149,17 +169,17 @@ function death($death, $kname = '', $ktype = 0, $annex = '') {
$arts=$arte = 0;
}
}
$alivenum --;
$deathnum ++;
}
save_gameinfo ();
return $killmsg;
}
function kill($death, $dname, $dtype = 0, $dpid = 0, $annex = '') {
function kill($death, $dname, $dtype = 0, $dpid = 0, $annex = '', &$revival_flag=0) {
global $now, $db, $tablepre, $alivenum, $deathnum, $name, $w_state, $type, $pid, $typeinfo, $pls, $lwinfo, $w_achievement;
global $weather;
if (! $death || ! $dname) {
return;
......@@ -199,11 +219,6 @@ function kill($death, $dname, $dtype = 0, $dpid = 0, $annex = '') {
if ($dtype) {
if($dtype == 15){//静流AI
global $gamevars;
$gamevars['sanmadead'] = 1;
save_gameinfo();
}
$lwname = $typeinfo [$dtype] . ' ' . $dname;
if (is_array ( $lwinfo [$dtype] )) {
$lastword = $lwinfo [$dtype] [$dname];
......@@ -225,30 +240,48 @@ function kill($death, $dname, $dtype = 0, $dpid = 0, $annex = '') {
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid=$dpid" );
$res=$db->fetch_array($result);
$revivaled=false;
if ($res['type']==0 && $res['club']==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" ||$death=="D" || $death=="F" || $death=="J" || $death=="trap"))
//依次判定复活效果
if (!$revival_flag && $weather == 17)
{
include_once GAME_ROOT.'./include/game/dice.func.php';
$aurora_rate = $dtype ? 1 : 10; //NPC概率1% 玩家概率10%
$aurora_dice = diceroll(100);
if($aurora_dice<=$aurora_rate)
{
//奥罗拉复活效果
addnews($now,'aurora_revival',$res['name']);
$res['hp'] += min($res['mhp'],max($aurora_dice,1)); $res['sp'] += min($res['msp'],max($aurora_dice,1));
$res['state']=0;
$alivenum++;
$revival_flag = 17;
}
}
if (!$revival_flag && $res['type']==0 && $res['club']==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" ||$death=="D" || $death=="F" || $death=="J" || $death=="trap"))
{
addnews($now,'revival',$res['name']); //玩家春哥附体称号的处理
$db->query ( "UPDATE {$tablepre}players SET hp=mhp WHERE pid=$dpid" );
$res['hp'] = $res['mhp']; $res['sp'] = $res['msp'];
$res['club'] = 17; $res['state'] = 0;
/*$db->query ( "UPDATE {$tablepre}players SET hp=mhp WHERE pid=$dpid" );
$db->query ( "UPDATE {$tablepre}players SET sp=msp WHERE pid=$dpid" );
$db->query ( "UPDATE {$tablepre}players SET club=17 WHERE pid=$dpid" );
$db->query ( "UPDATE {$tablepre}players SET state=0 WHERE pid=$dpid" );
$db->query ( "UPDATE {$tablepre}players SET state=0 WHERE pid=$dpid" );*/
$alivenum++;
$revivaled=true;
}
if (!$revivaled) $db->query ( "UPDATE {$tablepre}players SET hp='0',endtime='$now',deathtime='$now',bid='$pid',state='$w_state' WHERE pid=$dpid" );
// if($dtype == 1 || $dtype == 9){
// global $rdown,$bdown;
// if($dtype == 1){
// $rdown = 1;
// storyputchat($now,'rdown');
// }elseif($dtype == 9){
// $bdown = 1;
// storyputchat($now,'bdown');
// }
// }
$revivaled = 99;
}
if (!$revivaled)
{
if($dtype == 15){//静流AI
global $gamevars;
$gamevars['sanmadead'] = 1;
save_gameinfo();
}
//$db->query ( "UPDATE {$tablepre}players SET hp='0',endtime='$now',deathtime='$now',bid='$pid',state='$w_state' WHERE pid=$dpid" );
}
save_gameinfo ();
player_save($res);
save_gameinfo();
return $killmsg;
}
......
<!--{if (CURSCRIPT == 'game' && $pls=='0')}-->
<style>
body {background-image: url("../../img/location/0.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='1')}-->
<style>
body {background-image: url("../../img/location/1.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='2')}-->
<style>
body {background-image: url("../../img/location/2.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='3')}-->
<style>
body {background-image: url("../../img/location/3.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='4')}-->
<style>
body {background-image: url("../../img/location/4.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='5')}-->
<style>
body {background-image: url("../../img/location/5.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='6')}-->
<style>
body {background-image: url("../../img/location/6.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='7')}-->
<style>
body {background-image: url("../../img/location/7.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='8')}-->
<style>
body {background-image: url("../../img/location/8.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='9')}-->
<style>
body {background-image: url("../../img/location/9.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='10')}-->
<style>
body {background-image: url("../../img/location/10.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='11')}-->
<style>
body {background-image: url("../../img/location/11.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='12')}-->
<style>
body {background-image: url("../../img/location/12.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='13')}-->
<style>
body {background-image: url("../../img/location/13.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='14')}-->
<style>
body {background-image: url("../../img/location/14.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='15')}-->
<style>
body {background-image: url("../../img/location/15.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='16')}-->
<style>
body {background-image: url("../../img/location/16.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='17')}-->
<style>
body {background-image: url("../../img/location/17.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='18')}-->
<style>
body {background-image: url("../../img/location/18.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='19')}-->
<style>
body {background-image: url("../../img/location/19.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='20')}-->
<style>
body {background-image: url("../../img/location/20.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='21')}-->
<style>
body {background-image: url("../../img/location/21.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='22')}-->
<style>
body {background-image: url("../../img/location/22.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='23')}-->
<style>
body {background-image: url("../../img/location/23.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='24')}-->
<style>
body {background-image: url("../../img/location/24.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='25')}-->
<style>
body {background-image: url("../../img/location/25.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='26')}-->
<style>
body {background-image: url("../../img/location/26.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='27')}-->
<style>
body {background-image: url("../../img/location/27.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='28')}-->
<style>
body {background-image: url("../../img/location/28.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='29')}-->
<style>
body {background-image: url("../../img/location/29.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='30')}-->
<style>
body {background-image: url("../../img/location/30.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='31')}-->
<style>
body {background-image: url("../../img/location/31.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='32')}-->
<style>
body {background-image: url("../../img/location/32.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='33')}-->
<style>
body {background-image: url("../../img/location/33.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='34')}-->
<!--{loop $plsinfo $places $info}-->
<!--{if (CURSCRIPT == 'game' && $pls==$places)}-->
<!--{eval $bgurl = "img/location/".$places.".jpg"}-->
<style>
body {background-image: url("../../img/location/34.jpg");background-position: center;}
body {background-image: url("$bgurl");background-position: center;}
</style>
<!--{/if}-->
<!--{/loop}-->
<TABLE border="0" width=720px height=430px align="center" cellspacing="0" cellpadding="0" class="battle">
<tr>
<td class="b8" valign="top" rowspan=2>
......
<!--{loop $plsinfo $places $info}-->
<!--{if (CURSCRIPT == 'game' && $s_pls==$places)}-->
<!--{eval $bgurl = "img/location/".$places.".jpg"}-->
<style>
body {background-image: url("$bgurl");background-position: center;}
</style>
<!--{/if}-->
<!--{/loop}-->
<TABLE border="0" width=720px height=430px align="center" cellspacing="0" cellpadding="0" class="battle">
<tr>
<td class="b8" valign="top" rowspan=2>
<div style="position:relative;width:140px;height:340px;">
<!--{if $w_iconImgB}-->
<IMG src="img/$w_iconImgB" style="border:0;height:340px;position:absolute;left:0px;top:0px;<!--{if $w_hp==0}-->filter: grayscale(100%)<!--{/if}-->" />
<!--{else}-->
<IMG src="img/$w_iconImg" style="border:0;height:80px;<!--{if $w_hp==0}-->filter: grayscale(100%)<!--{/if}-->" />
<!--{/if}-->
</div>
</td>
<td colspan=2 width=580px>
<table border="0" cellspacing="0" height=75px width=580px cellpadding="0" width="100%" valign="middle">
<tr>
<td class="b1" colspan=2 height=20px><span>Lv. $w_lvl</span></td>
<td class="b1" colspan=2><span>$w_name</span></td>
<td class="b1" colspan=2><span>$w_sNoinfo</span><!--{if $s_club==19}--><span class="lime">报应点数:<span id="anum">$w_rp</span></span><!--{/if}--></td>
</tr>
<tr>
<td class="b2" width=70px height=20px><span>{lang rage}</span></td>
<td class="b3" width=95px><span>$w_ragestate</span></td>
<td class="b2" width=70px><span>{lang sp}</span></td>
<td class="b3" width=105px><span>$w_spstate</span></td>
<td class="b2" width=70px><span>{lang hp}</span></td>
<td class="b3" width=170px><span>$w_hpstate</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang wep}{lang effect}</span></td>
<td class="b3"><span>$w_wepestate</span></td>
<td class="b2"><span>{lang wep}{lang kind1}</span></td>
<td class="b3"><span><!--{if $w_wepk != ''}-->$w_wepk_words<!--{else}-->???<!--{/if}--></span></td>
<td class="b2"><span>{lang wep}</span></td>
<td class="b3"><span>$w_wep_words</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang tactic}</span></td>
<td class="b3"><span><!--{if $w_tactic >= 0}-->$tacinfo[$w_tactic]<!--{else}-->???<!--{/if}--></span></td>
<td class="b2"><span>{lang pose}</span></td>
<td class="b3"><span><!--{if $w_pose >= 0}-->$poseinfo[$w_pose]<!--{else}-->???<!--{/if}--></span></td>
<td height="20px" class="b2"><span>{lang inf}</span></td>
<td class="b3"><span><!--{if $w_infdata}-->$w_infdata<!--{else}--><!--{/if}--></span></td>
</tr>
</table>
</td>
</tr>
<tr>
<TD class="b8" height=270px width=440px>
<div style="position:relative;height:268px;width:438px;display: flex;align-items:center;justify-content: center;">
<span><B><FONT color="#ff0000" size="5" face="黑体">$battle_title</FONT></B></span>
</div>
</TD>
<td class="b8" width=140px rowspan="2" valign="bottom">
<div style="position:relative;width:140px;height:350px;">
<!--{if $iconImgB}-->
<IMG src="img/$iconImgB" style="border:0;height:340px;position:absolute;left:0px;bottom:-10px;<!--{if $hp==0}-->filter: grayscale(100%)<!--{/if}-->" />
<!--{else}-->
<IMG src="img/$iconImg" style="border:0;height:80px;position:absolute;left:0;bottom:0;<!--{if $hp==0}-->filter: grayscale(100%)<!--{/if}-->" />
<!--{/if}-->
</div>
</td>
</TR>
<tr>
<td colspan=2 width=580px>
<table border="0" width=580px height=80px cellspacing="0" cellpadding="0" valign="middle">
<tr>
<td class="b1" colspan=2 height=20px><span>$typeinfo[$s_type]({$sexinfo[$s_gd]}{$s_sNo}号)</span></td>
<td class="b1" colspan=2><span>$s_name</span></td>
<td class="b1" colspan=2><span>Lv. $s_lvl</span></td>
</tr>
<tr>
<td class="b2" width=70px height=20px><span>{lang hp}</span></td>
<td class="b3" width=170px><span><span class="$hpcolor">$s_hp / $s_mhp</span></span></td>
<td class="b2" width=70px><span>{lang sp}</span></td>
<td class="b3" width=105px><span>$s_sp / $s_msp</span></td>
<td class="b2" width=70px><span>{lang rage}</span></td>
<td class="b3" width=95px><span><!--{if $s_rage >=30}--><span class="yellow">$s_rage</span><!--{else}-->$s_rage<!--{/if}--></span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang wep}</span></td>
<td class="b3"><span>$s_wep_words</span></td>
<td class="b2"><span>{lang wep}{lang kind1}</span></td>
<td class="b3"><span>$s_wepk_words</span></td>
<td class="b2"><span>{lang wep}{lang effect}</span></td>
<td class="b3"><span>$s_wepe</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang inf}</span></td>
<td class="b3">
<span>
<!--{if $inf}-->
<!--{loop $infinfo $key $val}-->
<!--{if strpos($s_inf,$key)!==false}-->
$val
<!--{/if}-->
<!--{/loop}-->
<!--{else}-->
<!--{/if}-->
</span>
</td>
<td class="b2"><span>{lang pose}</span></td>
<td class="b3"><span>$poseinfo[$s_pose]</span></td>
<td class="b2"><span>{lang tactic}</span></td>
<td class="b3"><span>$tacinfo[$s_tactic]</span></td>
</tr>
</table>
</td>
</tr>
</TABLE>
现在想要做什么?<br><br>
向对手大喊:<br><input size="30" type="text" name="message" maxlength="60"><br><br>
<input type="hidden" name="mode" value="revcombat">
<input type="hidden" id="command" name="command" value="back">
<input type="button" class="cmdbutton" style="width:100" name="w1" value="{$attinfo[$w1]}" onclick="$('command').value='$w1';postCmd('gamecmd','command.php');this.disabled=true;"><br>
<!--{if $w2}-->
<input type="button" class="cmdbutton" style="width:100" name="w2" value="{$attinfo[$w2]}" onclick="$('command').value='$w2';postCmd('gamecmd','command.php');this.disabled=true;"><br>
<!--{/if}-->
<br><input type="button" class="cmdbutton" name="back" value="逃跑" onclick="postCmd('gamecmd','command.php');this.disabled=true;">
\ No newline at end of file
<!--{if (CURSCRIPT == 'game' && $pls=='0')}-->
<style>
body {background-image: url("../../img/location/0.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='1')}-->
<style>
body {background-image: url("../../img/location/1.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='2')}-->
<style>
body {background-image: url("../../img/location/2.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='3')}-->
<style>
body {background-image: url("../../img/location/3.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='4')}-->
<style>
body {background-image: url("../../img/location/4.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='5')}-->
<style>
body {background-image: url("../../img/location/5.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='6')}-->
<style>
body {background-image: url("../../img/location/6.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='7')}-->
<style>
body {background-image: url("../../img/location/7.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='8')}-->
<style>
body {background-image: url("../../img/location/8.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='9')}-->
<style>
body {background-image: url("../../img/location/9.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='10')}-->
<style>
body {background-image: url("../../img/location/10.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='11')}-->
<style>
body {background-image: url("../../img/location/11.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='12')}-->
<style>
body {background-image: url("../../img/location/12.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='13')}-->
<style>
body {background-image: url("../../img/location/13.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='14')}-->
<style>
body {background-image: url("../../img/location/14.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='15')}-->
<style>
body {background-image: url("../../img/location/15.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='16')}-->
<style>
body {background-image: url("../../img/location/16.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='17')}-->
<style>
body {background-image: url("../../img/location/17.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='18')}-->
<style>
body {background-image: url("../../img/location/18.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='19')}-->
<style>
body {background-image: url("../../img/location/19.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='20')}-->
<style>
body {background-image: url("../../img/location/20.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='21')}-->
<style>
body {background-image: url("../../img/location/21.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='22')}-->
<style>
body {background-image: url("../../img/location/22.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='23')}-->
<style>
body {background-image: url("../../img/location/23.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='24')}-->
<style>
body {background-image: url("../../img/location/24.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='25')}-->
<style>
body {background-image: url("../../img/location/25.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='26')}-->
<style>
body {background-image: url("../../img/location/26.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='27')}-->
<style>
body {background-image: url("../../img/location/27.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='28')}-->
<style>
body {background-image: url("../../img/location/28.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='29')}-->
<style>
body {background-image: url("../../img/location/29.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='30')}-->
<style>
body {background-image: url("../../img/location/30.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='31')}-->
<style>
body {background-image: url("../../img/location/31.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='32')}-->
<style>
body {background-image: url("../../img/location/32.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='33')}-->
<style>
body {background-image: url("../../img/location/33.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $pls=='34')}-->
<!--{loop $plsinfo $places $info}-->
<!--{if (CURSCRIPT == 'game' && $pls==$places)}-->
<!--{eval $bgurl = "img/location/".$places.".jpg"}-->
<style>
body {background-image: url("../../img/location/34.jpg");background-position: center;}
body {background-image: url("$bgurl");background-position: center;}
</style>
<!--{/if}-->
<!--{/loop}-->
<table border="0" width="720" height="100%" cellspacing="0" cellpadding="0" valign="middle">
<tr>
<td>
......
<!--{if (CURSCRIPT == 'game' && $w_pls=='0')}-->
<style>
body {background-image: url("../../img/location/0.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='1')}-->
<style>
body {background-image: url("../../img/location/1.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='2')}-->
<style>
body {background-image: url("../../img/location/2.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='3')}-->
<style>
body {background-image: url("../../img/location/3.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='4')}-->
<style>
body {background-image: url("../../img/location/4.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='5')}-->
<style>
body {background-image: url("../../img/location/5.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='6')}-->
<style>
body {background-image: url("../../img/location/6.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='7')}-->
<style>
body {background-image: url("../../img/location/7.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='8')}-->
<style>
body {background-image: url("../../img/location/8.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='9')}-->
<style>
body {background-image: url("../../img/location/9.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='10')}-->
<style>
body {background-image: url("../../img/location/10.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='11')}-->
<style>
body {background-image: url("../../img/location/11.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='12')}-->
<style>
body {background-image: url("../../img/location/12.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='13')}-->
<style>
body {background-image: url("../../img/location/13.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='14')}-->
<style>
body {background-image: url("../../img/location/14.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='15')}-->
<style>
body {background-image: url("../../img/location/15.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='16')}-->
<style>
body {background-image: url("../../img/location/16.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='17')}-->
<style>
body {background-image: url("../../img/location/17.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='18')}-->
<style>
body {background-image: url("../../img/location/18.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='19')}-->
<style>
body {background-image: url("../../img/location/19.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='20')}-->
<style>
body {background-image: url("../../img/location/20.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='21')}-->
<style>
body {background-image: url("../../img/location/21.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='22')}-->
<style>
body {background-image: url("../../img/location/22.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='23')}-->
<style>
body {background-image: url("../../img/location/23.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='24')}-->
<style>
body {background-image: url("../../img/location/24.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='25')}-->
<style>
body {background-image: url("../../img/location/25.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='26')}-->
<style>
body {background-image: url("../../img/location/26.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='27')}-->
<style>
body {background-image: url("../../img/location/27.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='28')}-->
<style>
body {background-image: url("../../img/location/28.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='29')}-->
<style>
body {background-image: url("../../img/location/29.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='30')}-->
<style>
body {background-image: url("../../img/location/30.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='31')}-->
<style>
body {background-image: url("../../img/location/31.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='32')}-->
<style>
body {background-image: url("../../img/location/32.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='33')}-->
<style>
body {background-image: url("../../img/location/33.jpg");background-position: center;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='34')}-->
<style>
body {background-image: url("../../img/location/34.jpg");background-position: center;}
</style>
<!--{/if}-->
<table border="0" width=720px height=380px cellspacing="0" cellpadding="0" valign="middle">
<TR align="center" >
<TD valign="middle" class="b5">
<TABLE border="0" width=720px height=380px align="center" cellspacing="0" cellpadding="0" class="battle">
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0" valign="top" width="100%">
<tr>
<td class="b1" colspan=2 height=20px><span>Lv. $w_lvl</span></td>
<td class="b1" colspan=2><span>$w_name</span></td>
<td class="b1" colspan=2><span>$w_sNoinfo</span><!--{if $club==19}--><span class="lime">报应点数:<span id="anum">$w_rp</span></span><!--{/if}--></td>
<td class="b5" rowspan=4 width=140px colspan=1 height=80px><IMG src="img/$w_iconImg" height=80px border="0" align="middle" <!--{if $w_hp==0}-->style="filter:Xray()"<!--{/if}--> /></td>
</tr>
<tr>
<td class="b2" width=75px height=20px><span>{lang rage}</span></td>
<td class="b3" width=90px><span>$w_ragestate</span></td>
<td class="b2" width=75px><span>{lang sp}</span></td>
<td class="b3" width=90px><span>$w_spstate</span></td>
<td class="b2" width=100px><span>{lang hp}</span></td>
<td class="b3" width=145px><span>$w_hpstate</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang wep}{lang effect}</span></td>
<td class="b3"><span>$w_wepestate</span></td>
<td class="b2"><span>{lang wep}{lang kind1}</span></td>
<td class="b3"><span><!--{if $w_wepk != ''}-->$w_wepk_words<!--{else}-->???<!--{/if}--></span></td>
<td class="b2"><span>{lang wep}</span></td>
<td class="b3"><span>$w_wep_words</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang tactic}</span></td>
<td class="b3"><span><!--{if $w_tactic >= 0}-->$tacinfo[$w_tactic]<!--{else}-->???<!--{/if}--></span></td>
<td class="b2"><span>{lang pose}</span></td>
<td class="b3"><span><!--{if $w_pose >= 0}-->$poseinfo[$w_pose]<!--{else}-->???<!--{/if}--></span></td>
<td class="b2"><span>{lang inf}</span></td>
<td class="b3"><span><!--{if $w_infdata}-->$w_infdata<!--{else}--><!--{/if}--></span></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</TR>
<tr>
<TD class="b3" height="100%">
<span><B><FONT color="#ff0000" size="5" face="黑体">$battle_title</FONT></B></span>
</TD>
</TR>
<tr>
<td>
<table border="0" width=720px cellspacing="0" cellpadding="0" valign="middle">
<tr>
<td class="b5" rowspan=4 colspan=1 width=140px height=80px><IMG src="img/$n_iconImg" height=80px border="0" align="middle" <!--{if $hp==0}-->style="filter:Xray()"<!--{/if}--> /></td>
<td class="b1" colspan=2 height=20px><span>$typeinfo[$n_type]({$sexinfo[$n_gd]}{$n_sNo}号)</span></td>
<td class="b1" colspan=2><span>$n_name</span></td>
<td class="b1" colspan=2><span>Lv. $n_lvl</span></td>
</tr>
<tr>
<td class="b2" width=100px height=20px><span>{lang hp}</span></td>
<td class="b3" width=145px><span>$n_hpstate</span></span></td>
<td class="b2" width=75px><span>{lang sp}</span></td>
<td class="b3" width=90px><span>$n_spstate</span></td>
<td class="b2" width=75px><span>{lang rage}</span></td>
<td class="b3" width=90px><span>$n_ragestate</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang wep}</span></td>
<td class="b3"><span>$n_wep_words</span></td>
<td class="b2"><span>{lang wep}{lang kind1}</span></td>
<td class="b3"><span>$n_wepk_words</span></td>
<td class="b2"><span>{lang wep}{lang effect}</span></td>
<td class="b3"><span>$n_wepe</span></td>
</tr>
<tr>
<td class="b2" height=20px><span>{lang inf}</span></td>
<td class="b3">
<span>
<!--{if $n_inf}-->
<!--{loop $infinfo $key $val}-->
<!--{if strpos($n_inf,$key)!==false}-->
$val
<!--{/if}-->
<!--{/loop}-->
<!--{else}-->
<!--{/if}-->
</span>
</td>
<td class="b2"><span>{lang pose}</span></td>
<td class="b3"><span>$poseinfo[$n_pose]</span></td>
<td class="b2"><span>{lang tactic}</span></td>
<td class="b3"><span>$tacinfo[$n_tactic]</span></td>
</tr>
</table>
</td>
</tr>
</TABLE>
</TD>
</TR>
</table>
<input type="hidden" name="mode" value="revcombat">
<input type="hidden" name="command" value="enter">
<input type="button" class="cmdbutton" name="submit" value="确定" onclick="postCmd('gamecmd','command.php');this.disabled=true;">
\ No newline at end of file
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