Commit 245a9c67 authored by Nemo Ma's avatar Nemo Ma

Maint - before cursor merge

parent 48b314cd
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -41,13 +41,20 @@ $pdata['clbpara'] = get_clbpara($pdata['clbpara']); ...@@ -41,13 +41,20 @@ $pdata['clbpara'] = get_clbpara($pdata['clbpara']);
//Also copying for $weppara, $itmpara and such. //Also copying for $weppara, $itmpara and such.
$pdata['weppara'] = get_itmpara($pdata['weppara']); $pdata['weppara'] = get_itmpara($pdata['weppara']);
$pdata['wep2para'] = get_itmpara($pdata['wep2para']); $pdata['wep2para'] = get_itmpara($pdata['wep2para']);
$pdata['itm0para'] = get_itmpara($pdata['itm0para']); //$pdata['itm0para'] = get_itmpara($pdata['itm0para']);
$pdata['itm1para'] = get_itmpara($pdata['itm1para']); //$pdata['itm1para'] = get_itmpara($pdata['itm1para']);
$pdata['itm2para'] = get_itmpara($pdata['itm2para']); //$pdata['itm2para'] = get_itmpara($pdata['itm2para']);
$pdata['itm3para'] = get_itmpara($pdata['itm3para']); //$pdata['itm3para'] = get_itmpara($pdata['itm3para']);
$pdata['itm4para'] = get_itmpara($pdata['itm4para']); //$pdata['itm4para'] = get_itmpara($pdata['itm4para']);
$pdata['itm5para'] = get_itmpara($pdata['itm5para']); //$pdata['itm5para'] = get_itmpara($pdata['itm5para']);
$pdata['itm6para'] = get_itmpara($pdata['itm6para']); //$pdata['itm6para'] = get_itmpara($pdata['itm6para']);
$pdata['itmpara0'] = get_itmpara($pdata['itmpara0']);
$pdata['itmpara1'] = get_itmpara($pdata['itmpara1']);
$pdata['itmpara2'] = get_itmpara($pdata['itmpara2']);
$pdata['itmpara3'] = get_itmpara($pdata['itmpara3']);
$pdata['itmpara4'] = get_itmpara($pdata['itmpara4']);
$pdata['itmpara5'] = get_itmpara($pdata['itmpara5']);
$pdata['itmpara6'] = get_itmpara($pdata['itmpara6']);
$pdata['arbpara'] = get_itmpara($pdata['arbpara']); $pdata['arbpara'] = get_itmpara($pdata['arbpara']);
$pdata['arhpara'] = get_itmpara($pdata['arhpara']); $pdata['arhpara'] = get_itmpara($pdata['arhpara']);
$pdata['arapara'] = get_itmpara($pdata['arapara']); $pdata['arapara'] = get_itmpara($pdata['arapara']);
......
...@@ -39,6 +39,18 @@ $dialogues = Array ...@@ -39,6 +39,18 @@ $dialogues = Array
4 => '你似乎看到了,听到了,感觉到了一个模糊的场景,<br>但你不知道这是什么。', 4 => '你似乎看到了,听到了,感觉到了一个模糊的场景,<br>但你不知道这是什么。',
5 => '大量类似的场景掠过你的脑海,而你已经无力吸收。<br>你浑身疼痛,不禁口吐鲜血,无助地等待着一切结束。', 5 => '大量类似的场景掠过你的脑海,而你已经无力吸收。<br>你浑身疼痛,不禁口吐鲜血,无助地等待着一切结束。',
), ),
//NPC Platform Usage
'npcplatform' => Array
(
0 => '你将这个按钮部署在了地上,它扩张成了一个平台。<br>你毅然地站了进去。',
1 => '你看着脚底下的使用说明,将脚放在了平台边缘的按钮上,<br>将其按下。',
2 => '刹那间,七彩的光束从平台涌动而出,将你淹没。',
3 => '你感觉你的一切都被读取,扭曲,改写。<br>血液在翻滚,内脏在舞动,意识在倾泻。<br>你甚至已经有了一种你不是你自己的错觉。',
4 => '随着光束散去,平台也凭空消失。<br>留下的只有一位崭新的你。',
5 => '希望……这真的值得。',
),
//TESTING ONLY - DELETE THIS WHEN DEPLOYING //TESTING ONLY - DELETE THIS WHEN DEPLOYING
'testingDialog' => Array 'testingDialog' => Array
( (
......
...@@ -249,7 +249,7 @@ $mixinfo = array ...@@ -249,7 +249,7 @@ $mixinfo = array
array('class' => 'fseed', 'stuff' => array('◆焰火','✦ЦВЙΨХЩΗЖФ✦'),'result' => array('✦ЦΨЙЩЦΑПΨЁВЦЩΨ✦','🎆C',1,1),), array('class' => 'fseed', 'stuff' => array('◆焰火','✦ЦВЙΨХЩΗЖФ✦'),'result' => array('✦ЦΨЙЩЦΑПΨЁВЦЩΨ✦','🎆C',1,1),),
array('class' => 'fseed', 'stuff' => array('◆◆◆愈合数据','✦烈焰火'),'result' => array('✦愈合数据','🎆H',120,'∞',),), array('class' => 'fseed', 'stuff' => array('◆◆◆愈合数据','✦烈焰火'),'result' => array('✦愈合数据','🎆H',120,'∞',),),
array('class' => 'fseed', 'stuff' => array('◆◆◆熟练数据','✦烈焰火'),'result' => array('✦熟练数据','🎆V',75,1,),), array('class' => 'fseed', 'stuff' => array('◆◆◆熟练数据','✦烈焰火'),'result' => array('✦熟练数据','🎆V',175,1,),),
array('class' => 'fseed', 'stuff' => array('◆◆◆生命数据','✦烈焰火'),'result' => array('✦生命数据','🎆O',500,1,),), array('class' => 'fseed', 'stuff' => array('◆◆◆生命数据','✦烈焰火'),'result' => array('✦生命数据','🎆O',500,1,),),
array('class' => 'fseed', 'stuff' => array('◆◆◆意念数据','✦烈焰火'),'result' => array('✦意念数据','🎆D',500,1,),), array('class' => 'fseed', 'stuff' => array('◆◆◆意念数据','✦烈焰火'),'result' => array('✦意念数据','🎆D',500,1,),),
......
...@@ -97,7 +97,7 @@ $wthinfo = Array( ...@@ -97,7 +97,7 @@ $wthinfo = Array(
17 => '<span class="gold">极光</span>', 17 => '<span class="gold">极光</span>',
18 => '<span class="minirainbow">光玉雨</span>' 18 => '<span class="minirainbow">光玉雨</span>'
); );
$sexinfo = Array(0=> '未定', 'm' => '男生', 'f' => '女生'); $sexinfo = Array(0=> '未定', 'm' => '男生', 'f' => '女生', 'n' => '投影');
$raceinfo = Array(0=> '人类', 1=> '兽人', 2=> '妖精', 3=> '龙', 4=> '鱼人', 5=> 'AI'); $raceinfo = Array(0=> '人类', 1=> '兽人', 2=> '妖精', 3=> '龙', 4=> '鱼人', 5=> 'AI');
$hpinfo = Array('<span class="clan">并无大碍</span>','<span class="yellow">伤痕累累</span>','<span class="red">生命危险</span>','<span class="red">已经死亡</span>'); $hpinfo = Array('<span class="clan">并无大碍</span>','<span class="yellow">伤痕累累</span>','<span class="red">生命危险</span>','<span class="red">已经死亡</span>');
$spinfo = Array('精力充沛','略有疲惫','精疲力尽','已经死亡'); $spinfo = Array('精力充沛','略有疲惫','精疲力尽','已经死亡');
...@@ -1077,6 +1077,7 @@ $iteminfo = Array(//注意顺序,AB必须在A的前面,以此类推 ...@@ -1077,6 +1077,7 @@ $iteminfo = Array(//注意顺序,AB必须在A的前面,以此类推
'🎆C' => '余烬', #种火盒子·报社篇 '🎆C' => '余烬', #种火盒子·报社篇
'P🎆' => '余烬', #霍霍完歌魂是不是还要霍霍种火数据(悲 'P🎆' => '余烬', #霍霍完歌魂是不是还要霍霍种火数据(悲
'🎆' => '余烬', # Catch-All '🎆' => '余烬', # Catch-All
'💝' => '投射平台', // NPC/Player platform - uses its $itmpara for logic
); );
$itemspkinfo = Array( $itemspkinfo = Array(
......
...@@ -131,6 +131,68 @@ table.infotable th { ...@@ -131,6 +131,68 @@ table.infotable th {
50% { border-color: orange } 50% { border-color: orange }
} }
/* Quest Panel */
#quest-panel {
position: fixed;
right: -250px; /* Start hidden */
top: 50%;
transform: translateY(-50%);
width: 250px;
background-color: rgba(0, 0, 0, 0.9);
border: 2px solid rgba(225, 124, 226, 0.4);
border-radius: 10px 0 0 10px;
box-shadow: -3px 0 5px rgba(0, 0, 0, 0.5);
overflow: hidden;
transition: right 0.3s ease-in-out;
z-index: 100;
}
#quest-panel.open {
right: 0; /* Slide in */
}
#quest-tab {
position: fixed; /* Make it relative to the viewport */
/* right: 0; Align to the edge of the viewport */
top: 50%;
transform: translateY(-50%);
width: 50px;
height: 100px;
background-color: rgba(225, 124, 226, 0.9);
border: 2px solid rgba(225, 124, 226, 0.4);
border-radius: 10px 0 0 10px;
color: #fff;
text-align: center;
line-height: 100px;
font: bold 12pt "FusionPixel10px";
cursor: pointer;
box-shadow: -3px 0 5px rgba(0, 0, 0, 0.5);
z-index: 101; /* Ensure it stays above other elements */
}
#quest-content {
padding: 50px;
color: #ddd;
font: 10pt "FusionPixel10px";
}
#quest-content h3 {
font: bold 12pt "FusionPixel12px";
color: #cceafa;
margin-bottom: 10px;
}
#quest-content ul {
list-style: none;
padding: 0;
}
#quest-content ul li {
margin: 5px 0;
font: 10pt "FusionPixel10px";
color: #98fb98;
}
.typewritersong {@include typed("到哪都一样 一样乐观 耐操耐撞","永远都一样 一样天真 敢梦敢想","现在还一样 一样冲动 爱疯爱狂","不能停 不能闲 不能不忙","不管他 不怕你笑我","我生来就这样");} .typewritersong {@include typed("到哪都一样 一样乐观 耐操耐撞","永远都一样 一样天真 敢梦敢想","现在还一样 一样冲动 爱疯爱狂","不能停 不能闲 不能不忙","不管他 不怕你笑我","我生来就这样");}
.clit {color: #feea23; font:18pt "FusionPixel10px" serif; } .clit {color: #feea23; font:18pt "FusionPixel10px" serif; }
......
...@@ -37,7 +37,8 @@ function itemuse($itmn,&$data=NULL) { ...@@ -37,7 +37,8 @@ function itemuse($itmn,&$data=NULL) {
$itme = & ${'itme' . $itmn}; $itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn}; $itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn}; $itmsk = & ${'itmsk' . $itmn};
$itmpara = & ${'itmpara' . $itmn}; //$itmpara = & ${'itmpara' . $itmn};
$itmpara = & get_itmpara(${'itmpara' . $itmn});
$i=$itm;$ik=$itmk;$ie=$itme;$is=$itms;$isk=$itmsk;$ipara=$itmpara; $i=$itm;$ik=$itmk;$ie=$itme;$is=$itms;$isk=$itmsk;$ipara=$itmpara;
if (($itms <= 0) && ($itms != $nosta)) { if (($itms <= 0) && ($itms != $nosta)) {
...@@ -2231,6 +2232,210 @@ function itemuse($itmn,&$data=NULL) { ...@@ -2231,6 +2232,210 @@ function itemuse($itmn,&$data=NULL) {
$log .= "<span class=\"red\">$itm</span>的余烬向天上盘旋飞舞,消失了。<br>"; $log .= "<span class=\"red\">$itm</span>的余烬向天上盘旋飞舞,消失了。<br>";
$itm = $itmk = $itmsk = ''; $itm = $itmk = $itmsk = '';
$itme = $itms = 0; $itme = $itms = 0;
}elseif (strpos ( $itmk, '💝' ) === 0 ) {
// NPC Platform Logic starts here.- 2024-07-24
// Part 0: Extracting some special values from $itmpara.
$targetChargeBaseValue = (int)$itmpara['PlatformChargeBaseValue'] + $itme;
$playerOriginalName = $name;
$platformPlayerMode = $itmpara['PlatformPlayerMode'];
$platformPlayerPID = $itmpara['PlatformPlayerPID'];
$platformPlayerName = $itmpara['PlatformPlayerName'];
// 1st part: decides if the item is a pid type.
if($platformPlayerMode == 2 && isset($platformPlayerPID)){
//Extract the target player PID.
$targetPID = $platformPlayerPID;
//Extract all other data by going into Player Table.
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$targetPID' LIMIT 1");
$targetData = $db->fetch_array($result);
//Extract Process
//Name
$targetname = $targetData['name'];
$targeticon = $targetData['icon'];
$targettype = $targetData['type'];
//Stats
$targetlvl = $targetData['lvl'];$targetexp = $targetData['exp'];
$targetclub = $targetData['club'];$targetclubskill = $targetData['clubskill'];
$targetclubskillpara = $targetData['clubskillpara'];$targetskills = $targetData['skills'];
$targetskill = $targetData['skill'];
$targetwp = $targetData['wp'];$targetwk = $targetData['wk'];$targetwg = $targetData['wg'];
$targetwc = $targetData['wc'];$targetwd = $targetData['wd'];$targetwf = $targetData['wf'];
$targetinf = $targetData['inf'];
$targetgd = $targetData['gd'];
$targetmhp = $targetData['mhp'];$targetmsp = $targetData['msp'];$targetmss = $targetData['mss'];
$targetatt = $targetData['att'];$targetdef = $targetData['def'];
$targetrp = $targetData['rp'];$targetrage = $targetData['rage'];
//Weapon + Armor
$targetwep = $targetData['wep'];$targetwepk = $targetData['wepk'];$targetwepe = $targetData['wepe'];
$targetweps = $targetData['weps'];$targetwepsk = $targetData['wepsk'];$targetweppara = $targetData['weppara'];
$targetarb = $targetData['arb'];$targetarbk = $targetData['arbk'];$targetarbe = $targetData['arbe'];
$targetarbs = $targetData['arbs'];$targetarbsk = $targetData['arbsk'];$targetarbpara = $targetData['arbpara'];
$targetarh = $targetData['arh'];$targetarhk = $targetData['arhk'];$targetarhe = $targetData['arhe'];
$targetarhs = $targetData['arhs'];$targetarhsk = $targetData['arhsk'];$targetarhpara = $targetData['arhpara'];
$targetara = $targetData['ara'];$targetarak = $targetData['arak'];$targetarae = $targetData['arae'];
$targetaras = $targetData['aras'];$targetarask = $targetData['arask'];$targetarapara = $targetData['arapara'];
$targetarf = $targetData['arf'];$targetarfk = $targetData['arfk'];$targetarfe = $targetData['arfe'];
$targetarfs = $targetData['arfs'];$targetarfsk = $targetData['arfsk'];$targetarfpara = $targetData['arfpara'];
$targetart = $targetData['art'];$targetartk = $targetData['artk'];$targetarte = $targetData['arte'];
$targetarts = $targetData['arts'];$targetartsk = $targetData['artsk'];$targetartpara = $targetData['artpara'];
//Items
$targetitm1 = $targetData['itm1'];$targetitmk1 = $targetData['itmk1'];$targetitme1 = $targetData['itme1'];
$targetitms1 = $targetData['itms1'];$targetitmsk1 = $targetData['itmsk1'];$targetitmpara1 = $targetData['itmpara1'];
$targetitm2 = $targetData['itm2'];$targetitmk2 = $targetData['itmk2'];$targetitme2 = $targetData['itme2'];
$targetitms2 = $targetData['itms2'];$targetitmsk2 = $targetData['itmsk2'];$targetitmpara2 = $targetData['itmpara2'];
$targetitm3 = $targetData['itm3'];$targetitmk3 = $targetData['itmk3'];$targetitme3 = $targetData['itme3'];
$targetitms3 = $targetData['itms3'];$targetitmsk3 = $targetData['itmsk3'];$targetitmpara3 = $targetData['itmpara3'];
$targetitm4 = $targetData['itm4'];$targetitmk4 = $targetData['itmk4'];$targetitme4 = $targetData['itme4'];
$targetitms4 = $targetData['itms4'];$targetitmsk4 = $targetData['itmsk4'];$targetitmpara4 = $targetData['itmpara4'];
$targetitm5 = $targetData['itm5'];$targetitmk5 = $targetData['itmk5'];$targetitme5 = $targetData['itme5'];
$targetitms5 = $targetData['itms5'];$targetitmsk5 = $targetData['itmsk5'];$targetitmpara5 = $targetData['itmpara5'];
$targetitm6 = $targetData['itm6'];$targetitmk6 = $targetData['itmk6'];$targetitme6 = $targetData['itme6'];
$targetitms6 = $targetData['itms6'];$targetitmsk6 = $targetData['itmsk6'];$targetitmpara6 = $targetData['itmpara6'];
//Other values
$targetclbpara = $targetData['clbpara'];
$targetclbstatusa = $targetData['clbstatusa'];$targetclbstatusb = $targetData['clbstatusb'];$targetclbstatusc = $targetData['clbstatusc'];$targetclbstatusd = $targetData['clbstatusd'];$targetclbstatuse = $targetData['clbstatuse'];
$targetnikstatusa = $targetData['nikstatusa'];$targetnikstatusb = $targetData['nikstatusb'];$targetnikstatusc = $targetData['nikstatusc'];$targetnikstatusd = $targetData['nikstatusd'];$targetnikstatuse = $targetData['nikstatuse'];
}elseif($platformPlayerMode != 2 && isset($platformPlayerName)){
//Extract Following values from item
//Name
$targetname = $itmpara['PlatformPlayername'];
$targeticon = $itmpara['PlatformPlayericon'];
//Stats
$targetlvl = $itmpara['PlatformPlayerlvl'];$targetexp = $itmpara['PlatformPlayerexp'];
$targetclub = $itmpara['PlatformPlayerclub'];$targetclubskill = $itmpara['PlatformPlayerclubskill'];
$targetclubskillpara = $itmpara['PlatformPlayerclubskillpara'];$targetskills = $itmpara['PlatformPlayerskills'];
$targetskill = $itmpara['PlatformPlayerskill'];
$targetwp = $itmpara['PlatformPlayerwp'];$targetwk = $itmpara['PlatformPlayerwk'];$targetwg = $itmpara['PlatformPlayerwg'];
$targetwc = $itmpara['PlatformPlayerwc'];$targetwd = $itmpara['PlatformPlayerwd'];$targetwf = $itmpara['PlatformPlayerwf'];
$targetinf = $itmpara['PlatformPlayerinf'];
$targetgd = $itmpara['PlatformPlayergd'];
$targetmhp = $itmpara['PlatformPlayermhp'];$targetmsp = $itmpara['PlatformPlayermsp'];$targetmss = $itmpara['PlatformPlayermss'];
$targetatt = $itmpara['PlatformPlayeratt'];$targetdef = $itmpara['PlatformPlayerdef'];
$targetrp = $itmpara['PlatformPlayerrp'];$targetrage = $itmpara['PlatformPlayerrage'];
//Weapon + Armor
$targetwep = $itmpara['PlatformPlayerwep'];$targetwepk = $itmpara['PlatformPlayerwepk'];$targetwepe = $itmpara['PlatformPlayerwepe'];
$targetweps = $itmpara['PlatformPlayerweps'];$targetwepsk = $itmpara['PlatformPlayerwepsk'];$targetweppara = $itmpara['PlatformPlayerweppara'];
$targetarb = $itmpara['PlatformPlayerarb'];$targetarbk = $itmpara['PlatformPlayerarbk'];$targetarbe = $itmpara['PlatformPlayerarbe'];
$targetarbs = $itmpara['PlatformPlayerarbs'];$targetarbsk = $itmpara['PlatformPlayerarbsk'];$targetarbpara = $itmpara['PlatformPlayerarbpara'];
$targetarh = $itmpara['PlatformPlayerarh'];$targetarhk = $itmpara['PlatformPlayerarhk'];$targetarhe = $itmpara['PlatformPlayerarhe'];
$targetarhs = $itmpara['PlatformPlayerarhs'];$targetarhsk = $itmpara['PlatformPlayerarhsk'];$targetarhpara = $itmpara['PlatformPlayerarhpara'];
$targetara = $itmpara['PlatformPlayerara'];$targetarak = $itmpara['PlatformPlayerarak'];$targetarae = $itmpara['PlatformPlayerarae'];
$targetaras = $itmpara['PlatformPlayeraras'];$targetarask = $itmpara['PlatformPlayerarask'];$targetarapara = $itmpara['PlatformPlayerarapara'];
$targetarf = $itmpara['PlatformPlayerarf'];$targetarfk = $itmpara['PlatformPlayerarfk'];$targetarfe = $itmpara['PlatformPlayerarfe'];
$targetarfs = $itmpara['PlatformPlayerarfs'];$targetarfsk = $itmpara['PlatformPlayerarfsk'];$targetarfpara = $itmpara['PlatformPlayerarfpara'];
$targetart = $itmpara['PlatformPlayerart'];$targetartk = $itmpara['PlatformPlayerartk'];$targetarte = $itmpara['PlatformPlayerarte'];
$targetarts = $itmpara['PlatformPlayerarts'];$targetartsk = $itmpara['PlatformPlayerartsk'];$targetartpara = $itmpara['PlatformPlayerartpara'];
//Items
$targetitm1 = $itmpara['PlatformPlayeritm1'];$targetitmk1 = $itmpara['PlatformPlayeritmk1'];$targetitme1 = $itmpara['PlatformPlayeritme1'];
$targetitms1 = $itmpara['PlatformPlayeritms1'];$targetitmsk1 = $itmpara['PlatformPlayeritmsk1'];$targetitmpara1 = $itmpara['PlatformPlayeritmpara1'];
$targetitm2 = $itmpara['PlatformPlayeritm2'];$targetitmk2 = $itmpara['PlatformPlayeritmk2'];$targetitme2 = $itmpara['PlatformPlayeritme2'];
$targetitms2 = $itmpara['PlatformPlayeritms2'];$targetitmsk2 = $itmpara['PlatformPlayeritmsk2'];$targetitmpara2 = $itmpara['PlatformPlayeritmpara2'];
$targetitm3 = $itmpara['PlatformPlayeritm3'];$targetitmk3 = $itmpara['PlatformPlayeritmk3'];$targetitme3 = $itmpara['PlatformPlayeritme3'];
$targetitms3 = $itmpara['PlatformPlayeritms3'];$targetitmsk3 = $itmpara['PlatformPlayeritmsk3'];$targetitmpara3 = $itmpara['PlatformPlayeritmpara3'];
$targetitm4 = $itmpara['PlatformPlayeritm4'];$targetitmk4 = $itmpara['PlatformPlayeritmk4'];$targetitme4 = $itmpara['PlatformPlayeritme4'];
$targetitms4 = $itmpara['PlatformPlayeritms4'];$targetitmsk4 = $itmpara['PlatformPlayeritmsk4'];$targetitmpara4 = $itmpara['PlatformPlayeritmpara4'];
$targetitm5 = $itmpara['PlatformPlayeritm5'];$targetitmk5 = $itmpara['PlatformPlayeritmk5'];$targetitme5 = $itmpara['PlatformPlayeritme5'];
$targetitms5 = $itmpara['PlatformPlayeritms5'];$targetitmsk5 = $itmpara['PlatformPlayeritmsk5'];$targetitmpara5 = $itmpara['PlatformPlayeritmpara5'];
$targetitm6 = $itmpara['PlatformPlayeritm6'];$targetitmk6 = $itmpara['PlatformPlayeritmk6'];$targetitme6 = $itmpara['PlatformPlayeritme6'];
$targetitms6 = $itmpara['PlatformPlayeritms6'];$targetitmsk6 = $itmpara['PlatformPlayeritmsk6'];$targetitmpara6 = $itmpara['PlatformPlayeritmpara6'];
//Other values
$targetclbpara = $itmpara['PlatformPlayerclbpara'];
$targetclbstatusa = $itmpara['PlatformPlayerclbstatusa'];$targetclbstatusb = $itmpara['PlatformPlayerclbstatusb'];$targetclbstatusc = $itmpara['PlatformPlayerclbstatusc'];$targetclbstatusd = $itmpara['PlatformPlayerclbstatusd'];$targetclbstatuse = $itmpara['PlatformPlayerclbstatuse'];
$targetnikstatusa = $itmpara['PlatformPlayernikstatusa'];$targetnikstatusb = $itmpara['PlatformPlayernikstatusb'];$targetnikstatusc = $itmpara['PlatformPlayernikstatusc'];$targetnikstatusd = $itmpara['PlatformPlayernikstatusd'];$targetnikstatuse = $itmpara['PlatformPlayernikstatuse'];
}else{
$log .= '似乎这个NPC平台损坏了,不能使用……<br>';
}
// 2nd part: decides if the clone status is temporary, if so, store player's values in their $clbpara
if (isset($itmpara['PlatformIsTimed'])){
//Name
$clbpara['oriname'] = $name;
$clbpara['oriicon'] = $icon;
$clbpara['orinick'] = $nick;
//Stats
$clbpara['orilvl'] = $lvl;$clbpara['oriexp'] = $exp;
$clbpara['oriclub'] = $club;$clbpara['oriclubskill'] = $clubskill;
$clbpara['oriclubskillpara'] = $clubskillpara;
$clbpara['oriwp'] = $wp;$clbpara['oriwk'] = $wk;$clbpara['oriwg'] = $wg;
$clbpara['oriwc'] = $wc;$clbpara['oriwd'] = $wd;$clbpara['oriwf'] = $wf;
$clbpara['oriinf'] = $inf;
$clbpara['origd'] = $gd;
$clbpara['orimhp'] = $mhp;$clbpara['orimsp'] = $msp;$clbpara['orimss'] = $mss;
$clbpara['oriatt'] = $att;$clbpara['oridef'] = $def;
$clbpara['orirp'] = $rp;$clbpara['orirage'] = $rage;
//Weapon + Armor
$clbpara['oriwep'] = $wep;$clbpara['oriwepk'] = $wepk;$clbpara['oriwepe'] = $wepe;
$clbpara['oriweps'] = $weps;$clbpara['oriwepsk'] = $wepsk;$clbpara['oriweppara'] = $weppara;
$clbpara['oriarb'] = $arb;$clbpara['oriarbk'] = $arbk;$clbpara['oriarbe'] = $arbe;
$clbpara['oriarbs'] = $arbs;$clbpara['oriarbsk'] = $arbsk;$clbpara['oriarbpara'] = $arbpara;
$clbpara['oriarh'] = $arh;$clbpara['oriarhk'] = $arhk;$clbpara['oriarhe'] = $arhe;
$clbpara['oriarhs'] = $arhs;$clbpara['oriarhsk'] = $arhsk;$clbpara['oriarhpara'] = $arhpara;
$clbpara['oriara'] = $ara;$clbpara['oriarak'] = $arak;$clbpara['oriarae'] = $arae;
$clbpara['oriaras'] = $aras;$clbpara['oriarask'] = $arask;$clbpara['oriarapara'] = $arapara;
$clbpara['oriarf'] = $arf;$clbpara['oriarfk'] = $arfk;$clbpara['oriarfe'] = $arfe;
$clbpara['oriarfs'] = $arfs;$clbpara['oriarfsk'] = $arfsk;$clbpara['oriarfpara'] = $arfpara;
$clbpara['oriart'] = $art;$clbpara['oriartk'] = $artk;$clbpara['oriarte'] = $arte;
$clbpara['oriarts'] = $arts;$clbpara['oriartsk'] = $artsk;$clbpara['oriartpara'] = $artpara;
//Items
$clbpara['oriitm1'] = $itm1;$clbpara['oriitmk1'] = $itmk1;$clbpara['oriitme1'] = $itme1;
$clbpara['oriitms1'] = $itms1;$clbpara['oriitmsk1'] = $itmsk1;$clbpara['oriitmpara1'] = $itmpara1;
$clbpara['oriitm2'] = $itm2;$clbpara['oriitmk2'] = $itmk2;$clbpara['oriitme2'] = $itme2;
$clbpara['oriitms2'] = $itms2;$clbpara['oriitmsk2'] = $itmsk2;$clbpara['oriitmpara2'] = $itmpara2;
$clbpara['oriitm3'] = $itm3;$clbpara['oriitmk3'] = $itmk3;$clbpara['oriitme3'] = $itme3;
$clbpara['oriitms3'] = $itms3;$clbpara['oriitmsk3'] = $itmsk3;$clbpara['oriitmpara3'] = $itmpara3;
$clbpara['oriitm4'] = $itm4;$clbpara['oriitmk4'] = $itmk4;$clbpara['oriitme4'] = $itme4;
$clbpara['oriitms4'] = $itms4;$clbpara['oriitmsk4'] = $itmsk4;$clbpara['oriitmpara4'] = $itmpara4;
$clbpara['oriitm5'] = $itm5;$clbpara['oriitmk5'] = $itmk5;$clbpara['oriitme5'] = $itme5;
$clbpara['oriitms5'] = $itms5;$clbpara['oriitmsk5'] = $itmsk5;$clbpara['oriitmpara5'] = $itmpara5;
$clbpara['oriitm6'] = $itm6;$clbpara['oriitmk6'] = $itmk6;$clbpara['oriitme6'] = $itme6;
$clbpara['oriitms6'] = $itms6;$clbpara['oriitmsk6'] = $itmsk6;$clbpara['oriitmpara6'] = $itmpara6;
//Other values
$clbpara['oriclbpara'] = $clbpara;
$clbpara['oriclbstatusa'] = $clbstatusa;$clbpara['oriclbstatusb'] = $clbstatusb;$clbpara['oriclbstatusc'] = $clbstatusc;$clbpara['oriclbstatusd'] = $clbstatusd;$clbpara['oriclbstatuse'] = $clbstatuse;
$clbpara['orinikstatusa'] = $nikstatusa;$clbpara['orinikstatusb'] = $nikstatusb;$clbpara['orinikstatusc'] = $nikstatusc;$clbpara['orinikstatusd'] = $nikstatusd;$clbpara['orinikstatuse'] = $nikstatuse;
}
//3rd Part: Write in all the cloned values.
//DEBUG
//echo "clbpara is ",gettype($clbpara),"itmpara is $itmpara ",gettype($itmpara),"platformPlayerMode is $platformPlayerMode ",gettype($platformPlayerMode), "targetPID is $targetPID ", gettype($targetPID),"targetData is $targetData ",gettype($targetData);
//Name
//$name = $targetname; # can't do this.
$clbpara['PlatformName'] = $targetname;
$icon = $targeticon;
//Stats
$lvl = $targetlvl;$exp = $targetexp;
changeclub($targetclub,$data);
$clubskill = $targetclubskill;
$clubskillpara = $targetclubskillpara;
$wp = $targetwp + $targetskill;$wk = $targetwk + $targetskill;$wc = $targetwc + $targetskill;$wg = $targetwg + $targetskill;$wd = $targetwd + $targetskill;$wf = $targetwf + $targetskill;
$inf = $targetinf; $gd = $targetgd;
if ($targettype > 0) {$gd = 'n';}
$hp = $mhp = $targetmhp; $sp = $msp = $targetmsp; $ss = $mss = $targetmss;
$rp = $targetrp;$att = $targetatt;$def = $targetdef;$rage = $targetrage;
//Weapon + Armor
$wep = $targetwep;$wepk = $targetwepk;$wepe = $targetwepe;$weps = $targetweps;$wepsk = $targetwepsk;$weppara = $targetweppara;
$arb = $targetarb;$arbk = $targetarbk;$arbe = $targetarbe;$arbs = $targetarbs;$arbsk = $targetarbsk;$arbpara = $targetarbpara;
$arh = $targetarh;$arhk = $targetarhk;$arhe = $targetarhe;$arhs = $targetarhs;$arhsk = $targetarhsk;$arhpara = $targetarhpara;
$ara = $targetara;$arak = $targetarak;$arae = $targetarae;$aras = $targetaras;$arask = $targetarask;$arapara = $targetarapara;
$arf = $targetarf;$arfk = $targetarfk;$arfe = $targetarfe;$arfs = $targetarfs;$arfsk = $targetarfsk;$arfpara = $targetarfpara;
$art = $targetart;$artk = $targetartk;$arte = $targetarte;$arts = $targetarts;$artsk = $targetartsk;$artpara = $targetartpara;
//Items
$itm1 = $targetitm1;$itmk1 = $targetitmk1;$itme1 = $targetitme1;$itms1 = $targetitms1;$itmsk1 = $targetitmsk1;$itmpara1 = $targetitmpara1;
$itm2 = $targetitm2;$itmk2 = $targetitmk2;$itme2 = $targetitme2;$itms2 = $targetitms2;$itmsk2 = $targetitmsk2;$itmpara2 = $targetitmpara2;
$itm3 = $targetitm3;$itmk3 = $targetitmk3;$itme3 = $targetitme3;$itms3 = $targetitms3;$itmsk3 = $targetitmsk3;$itmpara3 = $targetitmpara3;
$itm4 = $targetitm4;$itmk4 = $targetitmk4;$itme4 = $targetitme4;$itms4 = $targetitms4;$itmsk4 = $targetitmsk4;$itmpara4 = $targetitmpara4;
$itm5 = $targetitm5;$itmk5 = $targetitmk5;$itme5 = $targetitme5;$itms5 = $targetitms5;$itmsk5 = $targetitmsk5;$itmpara5 = $targetitmpara5;
$itm6 = $targetitm6;$itmk6 = $targetitmk6;$itme6 = $targetitme6;$itms6 = $targetitms6;$itmsk6 = $targetitmsk6;$itmpara6 = $targetitmpara6;
//Other Values
//$clbpara = $targetclbpara; Let's not do this for now.
$clbstatusa = $targetclbstatusa;$clbstatusb = $targetclbstatusb; $clbstatusc = $targetclbstatusc; $clbstatusd = $targetclbstatusd; $clbstatuse = $targetclbstatuse;
$nikstatusa = $targetnikstatusa;$nikstatusb = $targetnikstatusb; $nikstatusc = $targetnikstatusc; $nikstatusd = $targetnikstatusd; $nikstatuse = $targetnikstatuse;
//Write in the temporary charge value. Won't matter if the clone is permanent anyways.
$clbpara['NPCPlatformCharge'] = $clbpara['NPCPlatformMAXCharge'] = $targetChargeBaseValue;
//4th Part: Produce some dialogue.
$clbpara['dialogue'] = 'npcplatform';
//$clbpara['noskip_dialogue'] = 1;
//5th Part: Output a log and news.
$log .= '这个平台完成了使命,消失了……<br>';
addnews ( $now, 'npcplatformusage',$playerOriginalName,$nick);
}elseif (strpos ( $itmk, 'Y' ) === 0 || strpos ( $itmk, 'Z' ) === 0) { }elseif (strpos ( $itmk, 'Y' ) === 0 || strpos ( $itmk, 'Z' ) === 0) {
if ($itm == '电池') { if ($itm == '电池') {
//功能需要修改,改为选择道具使用YE类型道具可充电 //功能需要修改,改为选择道具使用YE类型道具可充电
......
...@@ -28,7 +28,7 @@ XX => ``mhp``, ``msp``, ``mss``, ``att``, ``def``, ``wp/k/g/c/d/f``, ``money``, ...@@ -28,7 +28,7 @@ XX => ``mhp``, ``msp``, ``mss``, ``att``, ``def``, ``wp/k/g/c/d/f``, ``money``,
The following keys will apply: The following keys will apply:
> ``PlatformPlayerMode`` - ``0`` - Uses the values builtin ``$itmpara``, ``1`` - Unused for now. ``2`` - Grab values from player table by matching ``PlatformPlayerName`` and populate them. > ``PlatformPlayerMode`` - ``0`` - Uses the values builtin ``$itmpara``, ``1`` - Unused for now. ``2`` - Grab values from player table by matching ``PlatformPlayerName`` and populate them. In case this value is ``2``, use ``PlatformPlayerPID`` instead of ``PlatformPlayerName``, obviously.
> >
> ``PlatformPlayerName`` - players.sql -> ``name``. > ``PlatformPlayerName`` - players.sql -> ``name``.
> >
......
...@@ -261,6 +261,7 @@ namespace revattr ...@@ -261,6 +261,7 @@ namespace revattr
function calc_enmity_losshpr(&$pa,&$pd) function calc_enmity_losshpr(&$pa,&$pd)
{ {
$hpr = 1 - ($pa['hp']/$pa['mhp']); $hpr = 1 - ($pa['hp']/$pa['mhp']);
if($hpr<0) $hpr = 0;
$r = (1 + 2*$hpr) * $hpr; $r = (1 + 2*$hpr) * $hpr;
return $r; return $r;
} }
...@@ -269,6 +270,7 @@ namespace revattr ...@@ -269,6 +270,7 @@ namespace revattr
function calc_garrison_losshpr(&$pa,&$pd) function calc_garrison_losshpr(&$pa,&$pd)
{ {
$hpr = 1 - ($pa['hp']/$pa['mhp']); $hpr = 1 - ($pa['hp']/$pa['mhp']);
if($hpr<0) $hpr = 0;
$r = -1 * pow($hpr,3) + 4 * $hpr; $r = -1 * pow($hpr,3) + 4 * $hpr;
return $r; return $r;
} }
......
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
} }
if($hp < $mhp || $sp < $msp) if($hp < $mhp || $sp < $msp)
{ {
$hp = $mhp; $sp = $msp; //$hp = $mhp; $sp = $msp;
if($hp < $mhp){$hp = $mhp;}
if($sp < $msp){$sp = $msp;}
$heal_flag = 1; $heal_flag = 1;
$log .= "你的生命与体力完全恢复了!<br>"; $log .= "你的生命与体力完全恢复了!<br>";
} }
......
...@@ -618,12 +618,17 @@ namespace revcombat ...@@ -618,12 +618,17 @@ namespace revcombat
if($pd['hp']<= 0) if($pd['hp']<= 0)
{ {
# NPC二阶段处理: # NPC二阶段处理:
if($pd['club'] == 99 && $pd['type']) # Adding additional check for 百命猫 here to prevent she coming back if she's killed enough times.
if($pd['club'] == 99 && $pd['type'] && $pd['clbpara']['lifedestroyed'] < 111)
{ {
$log .= npc_chat_rev ($pd,$pa, 'death' ); $log .= npc_chat_rev ($pd,$pa, 'death' );
include_once GAME_ROOT . './include/system.func.php'; include_once GAME_ROOT . './include/system.func.php';
$npcdata = evonpc ($pd['type'],$pd['name']); $npcdata = evonpc ($pd['type'],$pd['name']);
$log .= '<span class="yellow">'.$pd['name'].'却没死去,反而爆发出真正的实力!</span><br>'; $log .= '<span class="yellow">'.$pd['name'].'却没死去,反而爆发出真正的实力!</span><br>';
# add additional logic for 百命猫
if($pd['name']=='是TSEROF啦!'){
$pd['clbpara']['lifedestroyed'] += 1;
}
if($npcdata) if($npcdata)
{ {
addnews($now , 'evonpc',$pd['name'], $npcdata['name'], $pa['name']); addnews($now , 'evonpc',$pd['name'], $npcdata['name'], $pa['name']);
......
...@@ -919,6 +919,7 @@ function set_clbpara($para,$key,$value) ...@@ -919,6 +919,7 @@ function set_clbpara($para,$key,$value)
//将itmpara转为数组 //将itmpara转为数组
function get_itmpara($para) function get_itmpara($para)
{ {
//echo $para, "is a ", gettype($para);
if(empty($para)) $para = Array(); if(empty($para)) $para = Array();
if(!is_array($para)) return json_decode($para,true); if(!is_array($para)) return json_decode($para,true);
else return $para; else return $para;
......
...@@ -359,6 +359,8 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') { ...@@ -359,6 +359,8 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,$nword<br>\n"; $newsinfo .= "<li>{$hour}{$min}{$sec}秒,$nword<br>\n";
} elseif($news == 'notworthit') { } elseif($news == 'notworthit') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}做出了一个他自己可能会后悔很长一段时间的决定。</span><br>\n"; $newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}做出了一个他自己可能会后悔很长一段时间的决定。</span><br>\n";
} elseif($news == 'npcplatformusage') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"lime\">{$a}决定化身成为全新的自我。</span><br>\n";
} elseif($news == 'present') { } elseif($news == 'present') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"yellow\">{$a}打开了{$b},获得了{$c}!</span><br>\n"; $newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"yellow\">{$a}打开了{$b},获得了{$c}!</span><br>\n";
} elseif($news == 'emix_success') { } elseif($news == 'emix_success') {
......
...@@ -382,7 +382,8 @@ function add_once_area($atime) { ...@@ -382,7 +382,8 @@ function add_once_area($atime) {
} }
//躲避禁区判定 //躲避禁区判定
//} elseif($sub['type'] != 1 && $sub['type'] != 7 && $sub['type'] != 9 && $sub['type'] != 13 && $sub['type'] != 20 && $sub['type'] != 21 && $sub['type'] != 88 && $sub['type'] != 22 && $sub['type'] != 92) { //} elseif($sub['type'] != 1 && $sub['type'] != 7 && $sub['type'] != 9 && $sub['type'] != 13 && $sub['type'] != 20 && $sub['type'] != 21 && $sub['type'] != 88 && $sub['type'] != 22 && $sub['type'] != 92) {
}elseif(!in_array($sub['type'],$sentinel_typelist)){ // Let's try giving NPCs less human rights to migrate the leak problem
}elseif(!in_array($sub['type'],$sentinel_typelist) && $gamestate <= 40){
if($npc_away_from_deepzones) if($npc_away_from_deepzones)
{ //开启了NPC不会因躲避禁区移动到危险地图的功能 { //开启了NPC不会因躲避禁区移动到危险地图的功能
do{ do{
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<table border="0" cellspacing="0" height=75px width=580px cellpadding="0" width="100%" valign="middle"> <table border="0" cellspacing="0" height=75px width=580px cellpadding="0" width="100%" valign="middle">
<tr> <tr>
<td class="b1" colspan=2 height=20px><span>$tdata['lvlinfo']</span></td> <td class="b1" colspan=2 height=20px><span>$tdata['lvlinfo']</span></td>
<td class="b1" colspan=2><span>$tdata['nameinfo']</span></td> <td class="b1" colspan=2><span>$tdata['nameinfo']<!--{if !empty($tdata['clbpara']['PlatformName'])}--> ($tdata['clbpara']['PlatformName'])<!--{/if}--></span></td>
<td class="b1" colspan=2><span>{$tdata['typeinfo']}{$tdata['sNoinfo']}</span><!--{if $sdata['club']==19}--><span class="lime">报应点数:<span id="anum">$tdata['rp']</span></span><!--{/if}--></td> <td class="b1" colspan=2><span>{$tdata['typeinfo']}{$tdata['sNoinfo']}</span><!--{if $sdata['club']==19}--><span class="lime">报应点数:<span id="anum">$tdata['rp']</span></span><!--{/if}--></td>
</tr> </tr>
<tr> <tr>
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<table border="0" width=580px height=80px cellspacing="0" cellpadding="0" valign="middle"> <table border="0" width=580px height=80px cellspacing="0" cellpadding="0" valign="middle">
<tr> <tr>
<td class="b1" colspan=2 height=20px><span>$typeinfo[$sdata['type']]({$sexinfo[$sdata['gd']]}{$sdata['sNo']}号)</span></td> <td class="b1" colspan=2 height=20px><span>$typeinfo[$sdata['type']]({$sexinfo[$sdata['gd']]}{$sdata['sNo']}号)</span></td>
<td class="b1" colspan=2><span>$sdata['name']</span></td> <td class="b1" colspan=2><span>$sdata['name']<!--{if !empty($sdata['clbpara']['PlatformName'])}--> ($sdata['clbpara']['PlatformName'])<!--{/if}--></span></td>
<td class="b1" colspan=2><span>Lv. $sdata['lvl']</span></td> <td class="b1" colspan=2><span>Lv. $sdata['lvl']</span></td>
</tr> </tr>
<tr> <tr>
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</td> </td>
<td valign="top"> <td valign="top">
无名机关的爱发电:<br> 无名机关的爱发电:<br>
<a href="https://afdian.net/@brdts">https://afdian.net/@brdts</a> <a href="https://afdian.com/@brdts">https://afdian.com/@brdts</a>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<table border="0" width="720" cellspacing="0" cellpadding="0" valign="middle"> <table border="0" width="720" cellspacing="0" cellpadding="0" valign="middle">
<tr> <tr>
<!--{eval $nickinfo = titles_get_desc($nick,1);}--> <!--{eval $nickinfo = titles_get_desc($nick,1);}-->
<td width="210" colspan="3" class="b1" id="nickinfo"><span>{$nickinfo} {$name}</span></td> <td width="210" colspan="3" class="b1" id="nickinfo"><span>{$nickinfo} {$name}<!--{if !empty($clbpara['PlatformName'])}--> ($clbpara['PlatformName'])<!--{/if}--></span></td>
<td width="100" colspan="1" class="b1"><span>{$sexinfo[$gd]}{$sNo}号</span></td> <td width="100" colspan="1" class="b1"><span>{$sexinfo[$gd]}{$sNo}号</span></td>
<td width="95" colspan="2" class="b1"><span>{lang weather}:$wthinfo[$weather]</span></td> <td width="95" colspan="2" class="b1"><span>{lang weather}:$wthinfo[$weather]</span></td>
<td width="215" colspan="1" class="b1"><span>{lang gamedate}<!--{if $gamestate == 40 }--><span class="yellow">{lang combo}</span><!--{/if}--><!--{if $gamestate == 50 }--><span class="red">{lang duel}</span><!--{/if}--></span></td> <td width="215" colspan="1" class="b1"><span>{lang gamedate}<!--{if $gamestate == 40 }--><span class="yellow">{lang combo}</span><!--{/if}--><!--{if $gamestate == 50 }--><span class="red">{lang duel}</span><!--{/if}--></span></td>
......
<div id="quest-panel">
<div id="quest-tab" onmouseover="showPanel()" onmouseout="hidePanel()">无授权魔改造</div>
<div id="quest-content" onmouseover="keepPanelOpen()" onmouseout="hidePanel()">
<h3>任务窗体</h3>
<ul id="quest-list">
<!-- Dynamically populate quests -->
<li>这里是任务窗体。</li>
<li>该窗体的内容通过读取clbpara中的键值生成。</li>
<li>目前这只是一个范例。</li>
</ul>
<h3>其他信息</h3>
<ul id="misc-list">
<!-- Dynamically populate quests -->
<li>理论上这里也能放点别的。</li>
<li>GPT4o:会赢的。</li>
</ul>
</div>
</div>
<script>
let panelTimeout;
function showPanel() {
clearTimeout(panelTimeout);
document.getElementById('quest-panel').classList.add('open');
}
function hidePanel() {
panelTimeout = setTimeout(() => {
document.getElementById('quest-panel').classList.remove('open');
}, 500); // Delay hiding to allow smooth interaction
}
function keepPanelOpen() {
clearTimeout(panelTimeout);
}
</script>
\ 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