Commit fbab5ee3 authored by Nemo Ma's avatar Nemo Ma Committed by GitHub

Merge pull request #83 from hikawiier/waaagh

Update & Fix
parents 6bd5d589 f48f7db7
......@@ -3,7 +3,7 @@
define('CURSCRIPT', 'game');
require './include/common.inc.php';
require GAME_ROOT.'./include/game.func.php';
require_once GAME_ROOT.'./include/game/titles.func.php';
include_once GAME_ROOT.'./include/game/titles.func.php';
if(!$cuser||!$cpass) { gexit($_ERROR['no_login'],__file__,__line__); }
if(isset($mode) && $mode == 'quit') {
......
......@@ -185,6 +185,7 @@ $cskills = Array
(
'name' => '偷袭',
'tags' => Array('battle','opening'),
'wepk' => Array('P'),
'desc' => '本次攻击必定触发技能“<span class="yellow">猛击</span>”且不会被反击。<br>
持殴系武器方可发动,发动消耗<span class="yellow">[:ragecost:]</span>点怒气。<br>',
'bdesc' => '必定触发技能“<span class="yellow">猛击</span>”且不会被反击。消耗<span class="red">[:ragecost:]</span>怒气',
......@@ -224,6 +225,7 @@ $cskills = Array
(
'name' => '闷棍',
'tags' => Array('battle'),
'wepk' => Array('P'),
'desc' => '本次攻击必定触发技能“<span class="yellow">猛击</span>”,<br>
并对敌人额外造成(<span class="yellow">敌方体力上限减当前体力</span>)点的最终伤害。<br>
持钝器方可发动,发动消耗<span class="yellow">[:ragecost:]</span>点怒气。',
......@@ -261,6 +263,7 @@ $cskills = Array
(
'name' => '解牛',
'tags' => Array('battle'),
'wepk' => Array('K'),
'desc' => '本次攻击附加<span class="yellow">([:fixdmg:]+<span tooltip="基于你目前的等级">[^lvl^]</span>)</span>点的最终伤害,且武器损耗率减半。<br>
持斩系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气',
'bdesc' => '本次攻击附加<span class="yellow">[:fixdmg:]+[^lvl^]</span>点伤害,且武器损耗率减半,消耗<span class="red">[:ragecost:]</span>怒气',
......@@ -313,6 +316,7 @@ $cskills = Array
(
'name' => '强袭',
'tags' => Array('battle'),
'wepk' => Array('K'),
'desc' => '本次攻击无视减半类防御属性,最终伤害<span class="yellow">+[:findmgr:]%</span>',
'bdesc' => '本次攻击攻击最终伤害<span class="yellow">+[:findmgr:]%</span>,无视敌方减半类防御属性;消耗<span class="red">[:ragecost:]</span>怒气',
'vars' => Array(
......@@ -430,6 +434,7 @@ $cskills = Array
(
'name' => '附魔',
'tags' => Array('battle','passive'),
'wepk' => Array('C'),
'desc' => '<span tooltip="主动发动时,若角色身上不存在伤害类属性,则会为其临时附加一项随机属性。"><span class="grey">[附加提示]</span>
主动发动时,<br>在本次施加的下列属性中随机选择一种,<br>你持投系武器造成的该属性伤害永久<span class="yellow">+[:exdmggain:]%</span>(最高[:exdmgmax:]%)。<br>
持投掷兵器时生效,消耗<span class="yellow">[:ragecost:]</span>点怒气。<br>
......@@ -479,6 +484,7 @@ $cskills = Array
(
'name' => '潜能',
'tags' => Array('battle'),
'wepk' => Array('C'),
'desc' => '本次攻击必中且物理伤害<span class="yellow">+[:phydmgr:]%</span><br>
持投系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气',
'bdesc' => '攻击必中且物理伤害<span class="yellow">+[:phydmgr:]%</span><br>消耗<span class="red">[:ragecost:]</span>怒气',
......@@ -594,9 +600,11 @@ $cskills = Array
),
'lockdesc' => Array(
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c4_break' => Array
......@@ -627,15 +635,18 @@ $cskills = Array
),
'lockdesc' => Array(
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c4_aiming' => Array
(
'name' => '瞄准',
'tags' => Array('battle'),
'wepk' => Array('G','J'),
'desc' => '本次攻击物理伤害<span class="yellow">+[:phydmgr:]</span>,命中率<span class="yellow">+[:accgain:]%</span><br>
使用射系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气',
'bdesc' => '本次攻击物理伤害<span class="yellow">+[:phydmgr:]%</span>,<br>命中率<span class="yellow">+[:accgain:]%</span><br>
......@@ -648,10 +659,12 @@ $cskills = Array
'lockdesc' => Array(
'lvl' => '3级时解锁',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 3',
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c4_loot' => Array
......@@ -674,6 +687,7 @@ $cskills = Array
(
'name' => '咆哮',
'tags' => Array('battle','unlock_battle_hidden'),
'wepk' => Array('G','J'),
'desc' => '本次攻击物理伤害<span class="yellow">+[:phydmgr:]%</span>,属性伤害<span class="yellow">+[:exdmgr:]%</span>,<br>
防具损坏效果<span class="yellow">+[:inftfix:]</span>。使用射系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气',
'bdesc' => '物理伤害<span class="yellow">+[:phydmgr:]%</span>,属性伤害<span class="yellow">+[:exdmgr:]%</span>,
......@@ -690,18 +704,21 @@ $cskills = Array
'skillpara|c4_roar-active' => '点击「解锁」获得此技能,之后将无法使用技能「穿杨」<br>',
'lvl' => '已解锁,15级后可用',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'skillpara|c4_roar-disable' => 'empty([:skillpara|c4_roar-disable:])',
'skillpara|c4_roar-active' => '!empty([:skillpara|c4_roar-active:])',
'lvl' => '[:lvl:] >= 15',
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c4_sniper' => Array
(
'name' => '穿杨',
'tags' => Array('battle','unlock_battle_hidden'),
'wepk' => Array('G','J'),
'desc' => '物理伤害<span class="yellow">+[:phydmgr:]%</span>,命中率<span class="yellow">+[:accgain:]%</span>,射程<span class="yellow">+[:rangegain:]</span>,<span class="yellow">连击</span>无效,<br>
但<span class="yellow">[:prfix:]%概率贯穿</span>。使用远程武器/重型枪械方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气',
'bdesc' => '物理伤害<span class="yellow">+[:phydmgr:]%</span>,命中率<span class="yellow">+[:accgain:]%</span>,射程<span class="yellow">+[:rangegain:]</span>,<span class="yellow">连击</span>无效,
......@@ -719,12 +736,14 @@ $cskills = Array
'skillpara|c4_sniper-active' => "点击「解锁」获得此技能,之后将无法使用技能「咆哮」<br>",
'lvl' => '已解锁,15级后可用',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'skillpara|c4_sniper-disable' => 'empty([:skillpara|c4_sniper-disable:])',
'skillpara|c4_sniper-active' => '!empty([:skillpara|c4_sniper-active:])',
'lvl' => '[:lvl:] >= 15',
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c4_headshot' => Array
......@@ -739,11 +758,13 @@ $cskills = Array
'lvl' => '15级时解锁',
'skillpara|c4_stable-costcount+skillpara|c4_break-costcount' => '在「静息」和「破甲」上共计花费至少15技能点以解锁',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">射系武器</span>或<span class="yellow">重型枪械</span>时生效',
'weps' => '武器弹药不足,无法发动',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 15',
'skillpara|c4_stable-costcount+skillpara|c4_break-costcount' => '[:skillpara|c4_stable-costcount:]+[:skillpara|c4_break-costcount:] >= 15',
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
'weps' => "[:weps:] != '∞'",
),
),
'c5_sneak' => Array
......@@ -824,6 +845,7 @@ $cskills = Array
(
'name' => '高能',
'tags' => Array('battle'),
'wepk' => Array('D'),
'desc' => '本次攻击中爆炸属性伤害无视一切增益减益效果,<br>
使用爆系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气。',
'bdesc' => '本次攻击中爆炸属性伤害无视一切增益减益效果;消耗<span class="red">[:ragecost:]</span>怒气',
......@@ -843,6 +865,7 @@ $cskills = Array
(
'name' => '双响',
'tags' => Array('battle','limit'),
'wepk' => Array('D'),
'desc' => '本局已发动<span class="redseed"> [^skillpara|c5_double-active_t^]/[:maxactive_t:] </span>次<br>使用爆系武器方可发动,连续攻击[:chase_t:]次。',
'bdesc' => '本次战斗你将连续攻击[:chase_t:]次;本局已发动<span class="redseed">[^skillpara|c5_double-active_t^]/[:maxactive_t:]</span>次',
'svars' => Array(
......
......@@ -75,6 +75,8 @@ $moneylimit = 65500;
$sleep_time = 3;
//生命恢复时间(秒):*秒1点恢复
$heal_time = 6;
//静养时怒气增长时间(秒):*秒1点恢复
$rage_time = 6;
//包扎伤口需要的体力
$inf_sp = 50;
//治疗特殊状态需要的体力
......
<? if(!defined('IN_GAME')) exit('Access Denied'); ?>
0,2,,,补给,,,,,
1,1000,13,0,体力饮料,HS,50,1,,
1,500,17,0,体力回复药,HS,100,1,,
1,200,26,1,圆形罐头,HS,200,1,,
1,1000,12,0,疗伤粉,HH,30,2,,
1,500,22,0,治疗针,HH,100,1,,
1,200,55,1,超级治疗针,HH,200,1,,
1,500,43,0,美味水,HB,50,1,,
1,200,98,1,非常食,HB,80,2,,
1,100,113,2,龙料理,HB,100,2,,
1,300,13,0,矿泉水,HS,120,1,,
1,150,17,0,体力回复药,HS,240,1,,
1,100,26,1,圆形罐头,HS,600,1,,
1,300,12,0,面包,HH,120,1,,
1,150,22,0,治疗针,HH,220,1,,
1,100,55,1,超级治疗针,HH,640,1,,
1,100,43,0,美味水,HB,75,2,,
1,100,98,1,非常食,HB,788,2,,
1,100,113,2,龙料理,HB,1500,2,,
0,2,,,药剂,,,,,
2,1000,1,0,装有H173的注射器,Y,1,1,,
2,50,20,0,溶剂SCP-294_PT_Poini_Kune,Y,1,1,,
......@@ -16,12 +16,12 @@
2,50,20,0,溶剂SCP-294_PT_Strarf,Y,1,1,,
2,50,20,1,溶剂SCP-294_PT_ErulTron,Y,1,1,,
2,750,5,0,毒药,Y,1,1,,
2,5000,10,0,解毒剂,Cp,1,1,,
2,5000,20,0,烧伤药剂,Cu,1,1,,
2,5000,20,0,解冻药水,Ci,1,1,,
2,5000,20,0,麻痹药剂,Ce,1,1,,
2,5000,20,0,清醒药剂,Cw,1,1,,
2,1000,200,1,全恢复药剂,Ca,1,1,,
2,25,10,0,解毒剂,Cp,1,1,,
2,25,20,0,烧伤药剂,Cu,1,1,,
2,25,20,0,解冻药水,Ci,1,1,,
2,25,20,0,麻痹药剂,Ce,1,1,,
2,25,20,0,清醒药剂,Cw,1,1,,
2,10,60,1,全恢复药剂,Ca,1,1,,
0,3,,,钝器,,,,,
3,500,10,0,桌球拍,WP,20,15,,
3,100,300,0,超级重锤,WP,80,15,,
......@@ -86,7 +86,7 @@
9,300,14,0,死库水,DB,1,75,,
9,1,5,0,『Poini Kune的死库水』,DB,5,75,,
9,1,5,0,『Erul Tron的泳装』,DB,10,75,,
9,1,32768,0,数据……碎片,DB,573,765,Z,
9,1,32768,0,数据……碎片,DB,3756,7,Z,
9,100,600,0,防弹背心,DB,25,30,G,
9,50,1500,1,☆能量装甲☆,DB,50,30,GC,
9,25,3200,2,☆光学迷彩改进型☆,DB,90,20,GC,
......
<?php
if(!defined('IN_GAME')) exit('Access Denied');
$cmd_tips = Array
(
);
?>
......@@ -51,6 +51,7 @@ require config('combatcfg',$gamecfg);
require config('clubskills',$gamecfg);
require config('dialogue',$gamecfg);
require config('audio',$gamecfg);
require config('tooltip',$gamecfg);
include GAME_ROOT.'./gamedata/combatinfo.php';
......
......@@ -392,14 +392,13 @@ function init_bgm($force_update=0)
if(!empty($bgmlink) && !empty($bgmtype))
{
$bgmplayer = <<<EOT
<audio id="gamebgm" autoplay controls onplay="$('gamebgm').volume=$volume_r;">
<audio id="gamebgm" autoplay controls=1">
<source id="gbgm" src="$bgmlink" type="$bgmtype">
</audio>
<div id="bgmlist">$json_bgmarr</div>
<div id="nowbgm">0</div>
<script>
$('gamebgm').volume = $volume_r;
$('bgmname').innerHTML = $bgmname;
gamebgm.addEventListener('ended', function () {
changeBGM();
}, false);
......
......@@ -13,6 +13,8 @@ function itemuse($itmn,&$data=NULL) {
global $url,$cmd,$mode,$db,$tablepre,$log,$nosta,$noarb,$gamevars,$corpseprotect,$now,$gamecfg,$hack,$gamevars;
global $exdmginf,$ex_inf,$cskills,$elements_info,$sparkle,$event_bgm;
global $upexp,$baseexp,$elec_cap;
//Some globals seems to be still needed... ...
global $itemspkinfo;
if(!isset($data))
{
......@@ -2162,8 +2164,6 @@ function itemuse($itmn,&$data=NULL) {
$log.= $emix_slip[array_rand($emix_slip)];
//除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合
$log .= "<br><span class='yellow'>附:见面有缘,再送你一条提示吧:<br>“将带有";
//Some globals seems to be still needed... ...
global $itemspkinfo;
include_once GAME_ROOT.'./include/game/elementmix.func.php';
if(!preg_match('/(A|B|C|D)/',$itm))
{
......
......@@ -11,28 +11,60 @@
include_once GAME_ROOT.'./include/game/revattr_extra.func.php';
//获取真实攻击类别
function get_wep_kind(&$pa,$wep_kind='')
function get_wep_kind(&$pa,$wep_kind='',$pd_range=NULL)
{
global $nosta;
global $nosta,$attinfo;
# 刷新空弹药判定
if(isset($pa['is_wpg'])) unset($pa['is_wpg']);
if(!empty($wep_kind))
# 检查是否为双系武器
$w1 = substr($pa['wepk'],1,1);
$w2 = substr($pa['wepk'],2,1);
$w2 = !empty($w2) && isset($attinfo[$w2]) ? $w2 : '';
# 输入了预设的攻击方式,检查是否合法
if(!empty($wep_kind))
{
$pa['wep_kind'] = strpos($pa['wepk'],$wep_kind)===false ? substr ($pa['wepk'], 1, 1 ) : $wep_kind;
if(strpos($pa['wepk'],$wep_kind)!==false) $pa['wep_kind'] = $wep_kind;
else $pa['wep_kind'] = $wep_kind == $w2 ? $w2 : $w1;
}
else
# 没有输入预设攻击方式,自动选择
else
{
$w1 = substr ($pa['wepk'], 1, 1 );
$w2 = substr ($pa['wepk'], 2, 1 );
# 这里是判断双系武器没有弹药的情况下 能否使用第二系武器
if((($w1 == 'G')||($w1=='J')) && ($pa['weps'] == $nosta))
if(empty($w2))
{
$pa['wep_kind']= $w2 ? $w2 : $w1;
$pa['wep_kind'] = $w1;
}
else
{
$pa['wep_kind'] = $w1;
# 射系武器没有子弹的情况下,自动选用第二攻击模式
if(($w1 == 'G' || $w1 == 'J') && $pa['weps'] == $nosta)
{
$pa['wep_kind'] = $w2;
}
elseif(($w2 == 'G' || $w2 == 'J') && $pa['weps'] == $nosta)
{
$pa['wep_kind'] = $w1;
}
# 检查策略模式:射程优先 & 熟练优先
else
{
$pa['wep_kind'] = $w1; $w1_skill = get_wep_skill($pa); $w1_range = get_wep_range($pa);
$pa['wep_kind'] = $w2; $w2_skill = get_wep_skill($pa); $w2_range = get_wep_range($pa);
# 传入pd射程,且当前两种攻击方式在射程判定上没有区别,则熟练优先
if(isset($pd_range) && (($w1_range > $pd_range && $w2_range > $pd_range) || ($w1_range < $pd_range && $w2_range < $pd_range)))
{
$pa['wep_kind'] = $w1_skill > $w2_skill ? $w1 : $w2;
}
else
{
# 两把武器熟练都大于250的情况下,射程优先
if($w1_skill > 250 && $w2_skill > 250) $pa['wep_kind'] = $w1_range > $w2_range ? $w1 : $w2;
# 否则熟练优先
else $pa['wep_kind'] = $w1_skill > $w2_skill ? $w1 : $w2;
}
}
}
}
# 这里是最终判断是否为枪托打人的环节
......
......@@ -34,6 +34,11 @@
{
set_skillpara($bsk,'active_t',get_skillpara($bsk,'active_t',$pa['clbpara'])+1,$pa['clbpara']);
}
# 重新判定双系武器的攻击方式
if(isset($cskills[$bsk]['wepk']) && !in_array($pa['wep_kind'],$cskills[$bsk]['wepk']))
{
get_wep_kind($pa,$cskills[$bsk]['wepk'][0]);
}
# 检查是否需要addnews
addnews($now,'bsk_'.$bsk,$pa['name'],$pd['name']);
# 检查是否需要进行logsave
......
......@@ -63,7 +63,7 @@
//初始化玩家攻击方式信息
$w1 = substr($pdata['wepk'],1,1);
$w2 = substr($pdata['wepk'],2,1);
if ($w2=='0'||$w2=='1') $w2='';
if(empty($w2) || is_numeric($w2)) $w2='';
if (($w1 == 'G'||$w1=='J')&&($pdata['weps']==$nosta)) $w1 = 'P';
include template('battlecmd_rev');
......
......@@ -137,13 +137,14 @@
{
$bskill = substr($wep_kind,7);
$pa['bskill'] = $bskill;
$wep_kind = '';
}
# 初始化双方的真实攻击方式wep_kind,传入了攻击方式/主动技的情况下,在这里判断传入参数的合法性。
get_wep_kind($pa,$wep_kind);
$pa['wep_range'] = get_wep_range($pa);
get_wep_kind($pd);
$pd['wep_range'] = get_wep_range($pd);
get_wep_kind($pa,$wep_kind,$pd['wep_range']);
$pa['wep_range'] = get_wep_range($pa);
# 传入pa为玩家、pd为NPC,且存在鏖战/追击标志时,判断战斗流程类型(标准/追击/鏖战/协战)
if(!$pa['type'] && $pd['type'] && (strpos($pa['action'],'dfight')!==false || strpos($pa['action'],'chase')!==false))
......
......@@ -408,8 +408,10 @@ function changeBGM(mode=1){
Cookie.setCookie("nowbgmid",bgmlist[nowbgm].id, {
path: "/",
});
var v = $('gamebgm').volume;
$('bgmname').innerHTML = bgmlist[nowbgm].name;
$('gamebgm').load();
$('gamebgm').volume = v;
$('gamebgm').play();
}
......
......@@ -657,6 +657,15 @@ function parse_info_desc($info,$type,$vars='',$short=0)
}
$sk_nums++;
}
# 枪械弹药类型特判
if($vars == 'WG' || $vars == 'WGK' || $vars == 'WDG')
{
if(empty($info)) $sk_tp.= "\r【需装填】:手枪子弹";
elseif(in_array('e',$info) || in_array('w',$info)) $sk_tp.= "\r【需装填】:枪械电池";
elseif(in_array('u',$info) || in_array('i',$info)) $sk_tp.= "\r【需装填】:能源弹药";
elseif(in_array('r',$info)) $sk_tp.= "\r【需装填】:机枪子弹";
}
if($vars == 'WJ') $sk_tp.= "\r【需装填】:重型弹药";
if(!empty($sk_info)) $ret = $sk_info;
if($sk_max > $short_nums && $short) $ret = $itemspkinfo[$info[0]]."+...+".$itemspkinfo[end($info)];
if(!empty($sk_tp))
......
......@@ -369,194 +369,138 @@ function lvlup(&$lvl, &$exp, $isplayer = 1) {
return;
}
/*function lvlup(&$lvl, &$exp, $isplayer = 1) {
global $log,$baseexp;
$up_exp_temp = round((2*$lvl+1)*$baseexp);
if($exp >= $up_exp_temp && $lvl<255) {
if($isplayer){
global $name,$hp,$mhp,$sp,$msp,$att,$def,$upexp,$club;
$sknlist=Array(1=>'wp',2=>'wk',3=>'wc',4=>'wg',5=>'wd',9=>'wf');//每级提升熟练
$skname=$sknlist[$club];
if($skname){
global ${$skname},$skilllaninfo;
}
$lvup = 1+floor(($exp - $up_exp_temp)/$baseexp/2);
$lvup = $lvup > 255-$lvl ? 255-$lvl : $lvup;
//$log .="$lvup<br>";
$lvuphp = $lvupatt = $lvupdef = $lvupskill =0;
for ($i=0;$i<$lvup;$i+=1){
$lvuphp += rand(8,10);$lvupatt += rand(2,4);$lvupdef += rand(3,5);
if($skname){
$lvupskill += rand(3,5);
}
$sp += ($msp * 0.1);
}
$lvl += $lvup;$up_exp_temp = round((2*$lvl+1)*$baseexp);
if($lvl>=255){$lvl=255;$exp=$up_exp_temp;}
$upexp=$up_exp_temp;
$hp += $lvuphp;$mhp += $lvuphp;
$att += $lvupatt;$def += $lvupdef;
${$skname} += $lvupskill;
if($sp >= $msp){$sp = $msp;}
if($skname){
$sklog = ",{$skilllaninfo[$skname]}+{$lvupskill}";
}
$log .= "<span class=\"yellow\">你升了{$lvup}级!生命+{$lvuphp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog}!</span><br>";
} else {
global $now,$w_type,$w_pid,$w_name,$w_hp,$w_mhp,$w_sp,$w_msp,$w_att,$w_def,$w_upexp,$w_club;
$sknlist=Array(1=>'wp',2=>'wk',3=>'wg',4=>'wc',5=>'wd',9=>'wf');//每级提升熟练
$skname=$sknlist[$w_club];
if($skname){
global ${'w_'.$skname},$skilllaninfo;
}
$lvup = 1+floor(($exp - $up_exp_temp)/$baseexp/2);
$lvup = $lvup > 255-$lvl ? 255-$lvl : $lvup;
$lvuphp = $lvupatt = $lvupdef = $lvupskill = 0;
for ($i=0;$i<$lvup;$i+=1){
$lvuphp += rand(8,10);$lvupatt += rand(2,4);$lvupdef += rand(3,5);
if($skname){
$lvupskill += rand(3,5);
}
$w_sp += ($w_msp * 0.1);
}
$lvl += $lvup;$up_exp_temp = round((2*$lvl+1)*$baseexp);
//玩家被攻击时的生命恢复未实现
if($lvl>=255){$lvl=255;$exp=$up_exp_temp;}
$w_upexp=$up_exp_temp;
$w_hp += $lvuphp;$w_mhp += $lvuphp;
$w_att += $lvupatt;$w_def += $lvupdef;
${'w_'.$skname} += $lvupskill;
if($w_sp >= $w_msp){$w_sp = $w_msp;}
if(!$w_type){
if($skname){
$sklog = ",{$skilllaninfo[$skname]}+{$lvupskill}";
}
$w_log = "<span class=\"yellow\">你升了{$lvup}级!生命+{$lvuphp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog}!</span><br>";
logsave($w_pid,$now,$w_log);
}
function calculate_rest_upsp($rtime,&$pa)
{
global $sleep_time,$db,$tablepre,$log;
# 治疗姿态下恢复速率变为3倍
if($pa['pose'] == 5) $rtime *= 3;
$upsp = round ($pa['msp'] * $rtime / $sleep_time / 100 );
# 灵子姿态下,恢复速率受种火数量加成
if($pa['pose'] == 8 && $pa['sp'] < $pa['msp'])
{
$result = $db->query("SELECT pid FROM {$tablepre}players WHERE type=92 AND pls={$pa['pls']} AND hp>0 ");
$nums = $db->num_rows($result);
if($nums)
{
$log .= "在你闭目养神之际……似乎有什么东西戳了戳你的脸……<br>感觉身体轻松了不少。<br>";
$upsp += $nums * 10 * $rtime;
}
} elseif($lvl >= 255){$lvl=255;$exp=$up_exp_temp;}
return;
}*/
}
return $upsp;
}
function calculate_rest_uphp($rtime,&$pa)
{
global $heal_time,$db,$tablepre,$log;
# 治疗姿态下恢复速率变为3倍
if($pa['pose'] == 5) $rtime *= 3;
$uphp = round ($pa['mhp'] * $rtime / $heal_time / 100 );
/*if (strpos ($pa['inf'], 'b' ) !== false) {
$uphp = round ( $uphp / 2 );
}*/
# 灵子姿态下,恢复速率受种火数量加成
if($pa['pose'] == 8 && $pa['hp'] < $pa['mhp'])
{
$result = $db->query("SELECT pid FROM {$tablepre}players WHERE type=92 AND pls={$pa['pls']} AND hp>0 ");
$nums = $db->num_rows($result);
if($nums)
{
$log .= "在你专心治疗伤口时……似乎有什么东西靠了过来……<br>伤口好像不那么疼了。<br>";
$uphp += $nums * 10 * $rtime;
}
}
return $uphp;
}
//静养获得怒气
function calculate_rest_rageup($rtime,&$pa)
{
global $rage_time;
$max_rage = 255;
$rageup = round ($max_rage * $rtime / $rage_time / 100 );
if (strpos ( $pa['inf'], 'h' ) !== false) {//脑袋受伤不容易愤怒(
$rageup = round ( $rageup / 2 );
}
return $rageup;
}
function rest($command,&$data=NULL) {
//global $now, $log, $mode, $cmd, $state, $endtime, $hp, $mhp, $sp, $msp, $sleep_time, $heal_time, $restinfo, $pose, $inf,$club,$exdmginf;
global $now,$log,$mode,$cmd,$sleep_time,$heal_time,$restinfo,$exdmginf;
global $pdata;
//玩家被攻击时的生命恢复未实现
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$resttime = $now - $endtime;
$endtime = $now;
function rest($command) {
global $now, $log, $mode, $cmd, $state, $endtime, $hp, $mhp, $sp, $msp, $sleep_time, $heal_time, $restinfo, $pose, $inf,$club,$exdmginf;
if ($state == 1) {
$resttime = $now - $endtime;
$endtime = $now;
$oldsp = $sp;
$upsp = round ( $msp * $resttime / $sleep_time / 100 );
if ($pose == 5) {
$upsp *= 2;
}
if (strpos ( $inf, 'b' ) !== false) {
$upsp = round ( $upsp / 2 );
}
if ($club ==16){
$upsp *= 2;
}
$sp += $upsp;
if ($sp >= $msp) {
$sp = $msp;
}
$upsp = $sp - $oldsp;
$log .= "你的体力恢复了<span class=\"yellow\">$upsp</span>点。<br>";
} elseif ($state == 2) {
$resttime = $now - $endtime;
$endtime = $now;
$oldhp = $hp;
$uphp = round ( $mhp * $resttime / $heal_time / 100 );
if ($pose == 5) {
$uphp *= 2;
}
if (strpos ( $inf, 'b' ) !== false) {
$uphp = round ( $uphp / 2 );
}
if ($club ==16){
$uphp *= 2;
}
$hp += $uphp;
if ($hp >= $mhp) {
$hp = $mhp;
}
$uphp = $hp - $oldhp;
$log .= "你的生命恢复了<span class=\"yellow\">$uphp</span>点。<br>";
} elseif ($state == 3) {
$resttime = $now - $endtime;
$endtime = $now;
if ($state == 1 || $state == 3) {
$oldsp = $sp;
$upsp = round ( $msp * $resttime / $sleep_time / 100 );
if ($pose == 5) {
$upsp *= 2;
}
if (strpos ( $inf, 'b' ) !== false) {
$upsp = round ( $upsp / 2 );
}
if ($club ==16){
$upsp *= 2;
}
$sp += $upsp;
if ($sp >= $msp) {
$sp = $msp;
}
$upsp = calculate_rest_upsp($resttime,$data);
$sp += $upsp; $sp = min($sp, $msp);
$upsp = $sp - $oldsp;
$upsp=max(0,$upsp);
if(!$upsp && $sp >= $msp) $log .= "已经不需要休息了。";
else $log .= "你的体力恢复了<span class=\"yellow\">$upsp</span>点。";
}
if ($state == 2 || $state == 3) {
$oldhp = $hp;
$uphp = round ( $mhp * $resttime / $heal_time / 100 );
if ($pose == 5) {
$uphp *= 2;
}
if (strpos ( $inf, 'b' ) !== false) {
$uphp = round ( $uphp / 2 );
}
if ($club ==16){
$uphp *= 2;
}
$hp += $uphp;
if ($hp >= $mhp) {
$hp = $mhp;
}
$uphp = calculate_rest_uphp($resttime,$data);
$hp += $uphp; $hp = min($hp, $mhp);
$uphp = $hp - $oldhp;
$log .= "你的体力恢复了<span class=\"yellow\">$upsp</span>点,生命恢复了<span class=\"yellow\">$uphp</span>点。<br>";
$refintv = 90;
if ($pose == 5) {
$refintv -= 30;
}
if (strpos ( $inf, 'b' ) !== false) {
$refintv += 30;
$uphp=max(0,$uphp);
if(!$uphp && $hp >= $mhp) $log .= "没有伤口需要治疗了。";
else $log .= "你的生命恢复了<span class=\"yellow b\">$uphp</span>点。";
}
if($state == 3)
{
if($pose != 8)
{
$rageup = min(255-$rage,calculate_rest_rageup($resttime,$data));
$rage += $rageup;
$log .= "<br>但你在病床上辗转反侧,脑中回忆起种种倒霉遭遇,忍不住越想越气!<br>怒气增加了<span class=\"yellow\">$rageup</span>点!";
}
$spinf = preg_replace("/[h|b|a|f]/", "", $inf);
$spinflength = strlen($spinf);
if($spinf){
$refflag = false;
do{
$dice = rand(0,$refintv);
if($dice + 15 < $resttime){
$infno = rand(0,$spinflength-1);
$refinfstr = substr($spinf,$infno,1);
$inf = str_replace($refinfstr,'',$inf);
$spinf = str_replace($refinfstr,'',$spinf);
$log .= "<span class=\"yellow\">你从{$exdmginf[$refinfstr]}状态中恢复了!</span><br>";
$spinflength -= 1;
$refflag = true;
if (!empty($inf))
{
$refintv = 90;
if ($pose == 5) {
$refintv -= 30;
}
if (strpos ( $inf, 'b' ) !== false) {
$refintv += 30;
}
$spinf = preg_replace("/[h|b|a|f]/", "", $inf);
$spinflength = strlen($spinf);
if($spinf){
$refflag = false;
do{
$dice = rand(0,$refintv);
if($dice + 15 < $resttime){
$infno = rand(0,$spinflength-1);
$refinfstr = substr($spinf,$infno,1);
$inf = str_replace($refinfstr,'',$inf);
$spinf = str_replace($refinfstr,'',$spinf);
$log .= "<span class=\"yellow\">你从{$exdmginf[$refinfstr]}状态中恢复了!</span><br>";
$spinflength -= 1;
$refflag = true;
}
$resttime -= $refintv;
} while ($resttime > 0 && $spinflength > 0);
if(!$refflag){
$log .= "也许是时间不够吧……你没有治好任何异常状态。<br>";
}
$resttime -= $refintv;
} while ($resttime > 0 && $spinflength > 0);
if(!$refflag){
$log .= "也许是时间不够吧……你没有治好任何异常状态。<br>";
}
}
} else {
$mode = 'command';
}
$log .= '<br>';
if ($command != 'rest') {
$state = 0;
$endtime = $now;
......
......@@ -73,14 +73,18 @@
<!--{/if}-->
<!-- 第 3 行:休养指令-->
<span tooltip="进入睡眠状态,随时间缓慢恢复体力">
<span tooltip="进入睡眠状态,随时间缓慢恢复体力
<!--{if $pose == 8}-->当前地图存活种火数量越多,恢复速率越快<!--{/if}-->
">
<input type="button" class="cmdbutton" id="rest1" name="rest1" value="睡眠" onclick="$('command').value='rest1';postCmd('gamecmd','command.php');this.disabled=true;">
</span>
<span tooltip="进入治疗状态,随时间缓慢恢复生命">
<span tooltip="进入治疗状态,随时间缓慢恢复生命
<!--{if $pose == 8}-->当前地图存活种火数量越多,恢复速率越快<!--{/if}-->
">
<input type="button" class="cmdbutton" id="rest2" name="rest2" value="治疗" onclick="$('command').value='rest2';postCmd('gamecmd','command.php');this.disabled=true;">
</span>
<!--{if in_array($pls,$hospitals)}-->
<span tooltip="进入静养状态,随时间缓慢恢复生命与体力">
<span tooltip="进入静养状态,随时间缓慢恢复生命与体力,同时可以积攒怒气">
<input type="button" class="cmdbutton" id="rest3" name="rest3" value="静养" onclick="$('command').value='rest3';postCmd('gamecmd','command.php');this.disabled=true;">
</span>
<!--{/if}-->
......
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