Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
phpdts
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nemo Ma
phpdts
Commits
0614f15d
Commit
0614f15d
authored
Mar 31, 2023
by
Nemo Ma
Committed by
GitHub
Mar 31, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #99 from hikawiier/waaagh
rev combat phase 4.44
parents
f0f46ac1
86cac374
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
637 additions
and
116 deletions
+637
-116
command.php
command.php
+10
-2
gamedata/cache/clubskills_1.php
gamedata/cache/clubskills_1.php
+203
-32
gamedata/cache/combatcfg_1.php
gamedata/cache/combatcfg_1.php
+7
-5
include/game/elementmix.calc.php
include/game/elementmix.calc.php
+15
-0
include/game/elementmix.func.php
include/game/elementmix.func.php
+72
-12
include/game/item.func.php
include/game/item.func.php
+4
-1
include/game/itemmain.func.php
include/game/itemmain.func.php
+8
-7
include/game/revattr.func.php
include/game/revattr.func.php
+184
-22
include/game/revclubskills.func.php
include/game/revclubskills.func.php
+6
-8
include/game/revclubskills_extra.func.php
include/game/revclubskills_extra.func.php
+47
-2
include/game/revcombat.func.php
include/game/revcombat.func.php
+15
-1
include/game/search.func.php
include/game/search.func.php
+46
-15
include/news.func.php
include/news.func.php
+10
-0
templates/default/corpse.htm
templates/default/corpse.htm
+5
-1
templates/default/help.htm
templates/default/help.htm
+1
-3
templates/default/itemfind.htm
templates/default/itemfind.htm
+1
-1
templates/default/itemmix_tips.htm
templates/default/itemmix_tips.htm
+3
-4
No files found.
command.php
View file @
0614f15d
...
...
@@ -126,8 +126,16 @@ if($hp > 0){
$command
=
'itemmain'
;
$itemcmd
=
'itemmix'
;
}
if
(
$action
!=
'chase'
&&
$action
!=
'dfight'
&&
$mode
!==
'combat'
&&
$mode
!==
'revcombat'
&&
$mode
!==
'corpse'
&&
$action
!=
'pacorpse'
&&
$mode
!==
'senditem'
){
$action
=
''
;
$bid
=
0
;
if
(
!
empty
(
$action
))
{
if
(
$action
==
'tpmove'
)
{
$mode
=
'command'
;
$command
=
'search'
;
}
if
(
$action
!=
'chase'
&&
$action
!=
'dfight'
&&
$mode
!==
'combat'
&&
$mode
!==
'revcombat'
&&
$mode
!==
'corpse'
&&
$action
!=
'pacorpse'
&&
$mode
!==
'senditem'
){
$action
=
''
;
$bid
=
0
;
}
}
if
(
$command
==
'menu'
)
{
$mode
=
'command'
;
...
...
gamedata/cache/clubskills_1.php
View file @
0614f15d
...
...
@@ -25,7 +25,7 @@ $club_skillslist = Array
17
=>
Array
(
'f_heal'
),
#'走路萌物',
//18 => Array('s_hp','s_ad','f_heal'), #'天赋异禀',
19
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c19_nirvana'
,
'c19_reincarn'
,
'c19_purity'
,
'c19_crystal'
,
'c19_redeem'
,
'c19_dispel'
,
'c19_woesea'
),
#'晶莹剔透', //晶莹剔透、决死结界合并为晶莹剔透
20
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'元素大师', #商店购买社团卡
20
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c20_fertile'
,
'c20_windfall'
,
'c20_lighting'
,
'c20_zombie'
,
'c20_sparkle'
,
'c20_lotus'
),
#'元素大师', #商店购买社团卡
21
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'灵子梦魇', #暂定名,商店购买社团卡
22
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'偶像大师', #暂定名,「除错大师」头衔奖励
98
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'换装迷宫',
...
...
@@ -65,7 +65,8 @@ $cskills_tags = Array
$sktpshield
=
'<span class="gold" tooltip2="【护盾】:可抵消等同于护盾值的伤害。护盾值只在抵消属性伤害时消耗,抵消电击伤害时双倍消耗。护盾存在时不会受到反噬伤害或陷入异常状态。">护盾</span>'
;
$sktprp
=
'<span class="yellow">报应点数</span>'
;
$sktpwhitedmg
=
'<span class="gold" tooltip2="【纯粹伤害】:不会受防御、抹消或制御效果影响的定值伤害">纯粹伤害</span>'
;
$sktpzombie
=
'<span class="gold" tooltip2="【灵俑】:此状态下的角色造成的最终伤害降低50%,受到的伤害降低25%;不会受到反噬伤害,但不能再造成除毒性、冻气外的属性伤害;">灵俑</span>'
;
$sktpemsdmg
=
"<span class=
\"
gold
\"
tooltip2=
\"
【亮晶晶】:造成纯粹伤害(不受防御、抹消或制御效果影响的定值伤害)
\r
【暖洋洋】:造成火焰伤害
\r
【冷冰冰】:造成冻气伤害
\r
【冷冰冰】:造成冻气伤害
\r
【郁萌萌】:造成毒性伤害
\r
【昼闪闪】:造成电气伤害
\r
【夜静静】:造成音波伤害
\"
>属性/纯粹</span>"
;
# 技能登记:
$cskills
=
Array
(
...
...
@@ -160,7 +161,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">殴系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'P')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'P')
"
,
),
),
'c1_crit'
=>
Array
...
...
@@ -189,7 +190,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">殴系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'P')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'P')
"
,
),
),
'c1_stalk'
=>
Array
...
...
@@ -209,7 +210,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 3'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'P')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'P')
"
,
),
),
'c1_burnsp'
=>
Array
...
...
@@ -229,7 +230,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 6'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'P')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'P')
"
,
),
),
'c1_bjack'
=>
Array
...
...
@@ -250,7 +251,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 11'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'P')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'P')
"
,
),
),
'c1_veteran'
=>
Array
...
...
@@ -288,7 +289,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">斩系武器</span>时可发动'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
),
),
'c2_intuit'
=>
Array
...
...
@@ -320,7 +321,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">斩系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
),
),
'c2_raiding'
=>
Array
...
...
@@ -340,7 +341,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 15'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
),
),
'c2_master'
=>
Array
...
...
@@ -354,7 +355,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 15'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
),
),
'c2_annihil'
=>
Array
...
...
@@ -388,7 +389,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 21'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
'skillpara|c2_annihil-active'
=>
'empty([:skillpara|c2_annihil-active:])'
,
'skillcooldown'
=>
0
,
),
...
...
@@ -412,7 +413,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">斩系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'K')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'K')
"
,
),
),
'c3_pitchpow'
=>
Array
...
...
@@ -438,7 +439,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">投系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c3_enchant'
=>
Array
...
...
@@ -488,7 +489,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 5'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c3_potential'
=>
Array
...
...
@@ -509,7 +510,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 7'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c3_hawkeye'
=>
Array
...
...
@@ -529,7 +530,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 9'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c3_offset'
=>
Array
...
...
@@ -562,7 +563,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 13'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c3_numerous'
=>
Array
...
...
@@ -582,7 +583,7 @@ $cskills = Array
//……
'unlock'
=>
Array
(
'skillpara|c3_enchant-ur+skillpara|c3_enchant-ir+skillpara|c3_enchant-pr+skillpara|c3_enchant-er+skillpara|c3_enchant-wr+skillpara|c3_enchant-dr'
=>
'[:skillpara|c3_enchant-ur:] >= 120 || [:skillpara|c3_enchant-ir:] >= 120 || [:skillpara|c3_enchant-er:] >= 120 || [:skillpara|c3_enchant-wr:] >= 120 || [:skillpara|c3_enchant-pr:] >= 120 || [:skillpara|c3_enchant-dr:] >= 120'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WC' || [:wepk:] == 'WCF' || [:wepk:] == 'WCP' || [:wep_kind:] == 'C'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'C')!==false || (!empty([:wep_kind:]) && [:wep_kind:] == 'C')
"
,
),
),
'c4_stable'
=>
Array
...
...
@@ -614,7 +615,7 @@ $cskills = Array
'weps'
=>
'武器弹药不足,无法发动'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -649,7 +650,7 @@ $cskills = Array
'weps'
=>
'武器弹药不足,无法发动'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -674,7 +675,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 3'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -721,7 +722,7 @@ $cskills = 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'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -753,7 +754,7 @@ $cskills = 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'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -774,7 +775,7 @@ $cskills = Array
'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'
"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'G')!==false || strpos([:wepk:],'J')!==false || (!empty([:wep_kind:]) && ([:wep_kind:] == 'G' || [:wep_kind:] == 'J' ))
"
,
'weps'
=>
"[:weps:] != '∞'"
,
),
),
...
...
@@ -828,7 +829,7 @@ $cskills = Array
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">爆系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"
[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF'
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'D')!==false
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
),
),
'c5_focus'
=>
Array
...
...
@@ -869,7 +870,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 6'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF'
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'D')!==false
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
),
),
'c5_double'
=>
Array
...
...
@@ -898,7 +899,7 @@ $cskills = Array
'unlock'
=>
Array
(
'skillpara|c5_double-active_t'
=>
'[:skillpara|c5_double-active_t:] < 2'
,
'lvl'
=>
'[:lvl:] >= 19'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF'
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'D')!==false
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'D')"
,
),
),
'c9_kotodama'
=>
Array
...
...
@@ -981,7 +982,7 @@ $cskills = Array
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 7'
,
'wepk+wep_kind'
=>
"
[:wepk:] == 'WF' || [:wepk:] == 'WCF' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wepk:] == 'WDF'
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'F')"
,
'wepk+wep_kind'
=>
"
strpos([:wepk:],'F')!==false
|| (!empty([:wep_kind:]) && [:wep_kind:] == 'F')"
,
),
),
'c9_charge'
=>
Array
...
...
@@ -1526,7 +1527,7 @@ $cskills = Array
'active_t'
=>
0
,
),
'vars'
=>
Array
(
'mcost'
=>
20
00
,
'mcost'
=>
15
00
,
'mst'
=>
25
,
'movep'
=>
2
,
//移动佣兵花费
'atkp'
=>
10
,
//主动出击花费
...
...
@@ -1538,11 +1539,11 @@ $cskills = Array
),
'lockdesc'
=>
Array
(
'skillpara|c11_merc-active_t'
=>
'次数耗尽,已无法再召唤佣兵'
,
'money'
=>
'招募佣兵至少需要
20
00元!'
,
'money'
=>
'招募佣兵至少需要
15
00元!'
,
),
'unlock'
=>
Array
(
'skillpara|c11_merc-active_t'
=>
'[:skillpara|c11_merc-active_t:] < 4'
,
'money'
=>
'[:money:] >=
20
00'
,
'money'
=>
'[:money:] >=
15
00'
,
),
),
'c11_stock'
=>
Array
...
...
@@ -1866,6 +1867,176 @@ $cskills = Array
'ss'
=>
'[:ss:] >= 100'
,
),
),
'c20_fertile'
=>
Array
(
'name'
=>
'沃土'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'获得元素时,获得量<span class="yellow">+0%~[:emsgain:]%</span>;<br>
每探索/移动<span class="yellow">[:mst:]</span>次,口袋中存量最低的元素数量<span class="yellow">+[:minemsgain:]%</span><br>
<span class="grey">当前已探索/移动次数:[^skillpara|c20_fertile-ms^] 次</span>'
,
'maxlvl'
=>
6
,
'cost'
=>
Array
(
2
,
3
,
3
,
4
,
4
,
5
,
-
1
),
'input'
=>
'升级'
,
'log'
=>
'<span class="yellow">「沃土」升级成功。</span><br>'
,
'status'
=>
Array
(
'skillpara|c20_fertile-lvl'
),
'effect'
=>
Array
(
0
=>
Array
(
'skillpara|c20_fertile-lvl'
=>
'+=::1'
,),
),
'svars'
=>
Array
(
'lvl'
=>
0
,
'ms'
=>
0
),
'vars'
=>
Array
(
'emsgain'
=>
Array
(
1
,
2
,
2
,
3
,
3
,
4
,
5
),
'mst'
=>
Array
(
35
,
35
,
30
,
30
,
25
,
25
,
20
),
'minemsgain'
=>
Array
(
1
,
1
,
2
,
2
,
3
,
3
,
4
),
),
'pvars'
=>
Array
(
'skillpara|c20_fertile-ms'
),
),
'c20_windfall'
=>
Array
(
'name'
=>
'横财'
,
'tags'
=>
Array
(
'active'
,
'cd'
),
'desc'
=>
'清空你口袋中的所有元素,<br>
然后以尽可能平均的方式重新获得它们。冷却时间<span class="clan">[:cd:]</span>秒'
,
'input'
=>
'发动'
,
'log'
=>
'……<br>'
,
'events'
=>
Array
(
'windfall'
,
'setstarttimes_c20_windfall'
,
'active_news'
),
'vars'
=>
Array
(
'cd'
=>
900
,
//冷却时间
),
'lockdesc'
=>
Array
(
'skillcooldown'
=>
'技能冷却中!<br>剩余冷却时间:<span class="red">[:cd:]</span> 秒'
,
),
'unlock'
=>
Array
(
'skillcooldown'
=>
0
,
),
),
'c20_lighting'
=>
Array
(
'name'
=>
'闪电'
,
'tags'
=>
Array
(
'battle'
),
'desc'
=>
"消耗<span class='yellow'>[:ragecost:]</span>点怒气与<span class='yellow'>[:emcost:]</span>份随机元素,<br>
根据所消耗元素种类附加
{
$sktpemsdmg
}
伤害;<br>
累计发动次数达<span class='yellow'>(1+...+n)</span>次时,<br>
消耗<span class='yellow'>(30×n)</span>份元素,同时触发<span class='yellow'>(n)</span>次效果;<br>
<span class='grey'>当前累计发动次数:[^skillpara|c20_lighting-active_t^] 次</span>"
,
'bdesc'
=>
"消耗<span class='yellow'>[:emcost:]</span>份随机元素,根据所消耗元素种类附加
{
$sktpemsdmg
}
;消耗<span class='red'>[:ragecost:]</span>怒气</span>"
,
'vars'
=>
Array
(
'ragecost'
=>
15
,
'emcost'
=>
30
,
'emextype'
=>
Array
(
// 各类元素能造成的伤害类型
0
=>
'white'
,
1
=>
'u'
,
2
=>
'i'
,
3
=>
'p'
,
4
=>
'e'
,
5
=>
'w'
,
),
),
'svars'
=>
Array
(
'active_t'
=>
0
,
//技能发动次数
),
'pvars'
=>
Array
(
'skillpara|c20_lighting-active_t'
),
'lockdesc'
=>
Array
(
'lvl'
=>
'5级时解锁'
,
'element0+element1+element2+element3+element4+element5'
=>
'至少需要30份元素才能发动'
,
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 5'
,
'element0+element1+element2+element3+element4+element5'
=>
"[:element0:]>=30 || [:element1:]>=30 || [:element2:]>=30 || [:element3:]>=30 || [:element4:]>=30 || [:element5:]>=30"
,
),
),
'c20_zombie'
=>
Array
(
'name'
=>
'灵俑'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
"发现尸体时,消耗等同于<span class=
\"
yellow
\"
>尸体等级的平方根×提炼尸体可获得的元素数量</span>,将尸体复活为
{
$sktpzombie
}
;<br>
复活后的
{
$sktpzombie
}
有<span class=
\"
yellow
\"
>50%</span>概率为你<span class='gold' tooltip2='当你攻击敌人且敌人未死亡时,与你在同一地点的灵俑有概率主动为你助战。'>协战</span>,并在你受到攻击时,<br>
为你抵挡最多不超过<span class=
\"
yellow
\"
>[:maxdefhp:]%</span>灵俑当前生命的伤害"
,
'vars'
=>
Array
(
'maxdefhp'
=>
50
,
'notype'
=>
Array
(
1
,
9
,
19
,
88
,
92
),
//不能复活为灵俑的NPC
),
'lockdesc'
=>
Array
(
'lvl'
=>
'11级时解锁'
,
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 11'
,
),
),
'c20_sparkle'
=>
Array
(
'name'
=>
'火花'
,
'tags'
=>
Array
(
'switch'
,
'limit'
),
'desc'
=>
'技能开启后,<br>
造成伤害时有<span class="yellow">[:tpr:]%</span>概率将敌人传送至随机地点,<br>
被传送者会受到轻微伤害、或遭遇意外;<br>
火花持有者受到<span class="red">致命伤害</span>时,会紧急传送回避伤害,但<span class="red">永久失去</span>火花;<br>
点击右侧的<span class="yellow">“切换”</span>键随时激活或禁用该技能<br>
[^skill-active^]'
,
'input'
=>
'切换'
,
'log'
=>
'<span class="yellow">切换了「火花」的状态。</span>'
,
'events'
=>
Array
(
'active|c20_sparkle'
),
'svars'
=>
Array
(
'active'
=>
0
,
'active_t'
=>
0
,
),
'vars'
=>
Array
(
'tpr'
=>
15
,
'maxactive_t'
=>
1
,
),
'pvars'
=>
Array
(
'skill-active'
,
'skillpara|c20_sparkle-active_t'
),
'lockdesc'
=>
Array
(
'skillpara|c20_sparkle-active_t'
=>
'已失去火花。'
,
'lvl'
=>
'13级时解锁'
,
),
'unlock'
=>
Array
(
'skillpara|c20_sparkle-active_t'
=>
'[:skillpara|c20_sparkle-active_t:] < 1'
,
'lvl'
=>
'[:lvl:] >= 13'
,
),
),
'c20_lotus'
=>
Array
(
'name'
=>
'黑莲'
,
'tags'
=>
Array
(
'active'
,
'limit'
),
'desc'
=>
'本局已献祭<span class="redseed"> [^skillpara|c20_lotus-active_t^]/[:maxactive_t:] </span>次<br>
献祭黑莲花,口袋中所有元素存量<span class="yellow">x3</span><br>'
,
'input'
=>
'献祭'
,
'no_reload_page'
=>
1
,
'log'
=>
'<span class="mtgblack">你将一坨不知道从哪弄来的黑糊糊的东西扔进了元素口袋里……<br>
片刻后,口袋里传来了令人毛骨悚然的咀嚼声……</span><br>
……<br>'
,
'status'
=>
Array
(
'skillpara|c20_lotus-active_t'
),
'effect'
=>
Array
(
0
=>
Array
(
'skillpara|c20_lotus-active_t'
=>
'+=::1'
,
),
),
'events'
=>
Array
(
'lotus'
,
'active_news'
),
'vars'
=>
Array
(
'emsgain'
=>
3
,
'maxactive_t'
=>
3
,
),
'svars'
=>
Array
(
'active_t'
=>
0
,),
'pvars'
=>
Array
(
'skillpara|c20_lotus-active_t'
),
'lockdesc'
=>
Array
(
'skillpara|c20_lotus-active_t'
=>
'黑莲花已经用光了。'
,
'lvl'
=>
'17级时解锁'
,
),
'unlock'
=>
Array
(
'skillpara|c20_lotus-active_t'
=>
'[:skillpara|c20_lotus-active_t:] < 3'
,
'lvl'
=>
'[:lvl:] >= 17'
,
),
),
'inf_zombie'
=>
Array
(
'name'
=>
'灵俑'
,
'tags'
=>
Array
(
'inf'
),
'desc'
=>
'你不会受到反噬伤害,但不能造成除了毒性、冻气以外的属性伤害<br>
你造成的最终伤害降低<span class="yellow">[:findmgloss:]%</span>,从敌人处受到的伤害降低<span class="yellow">[:findmgr:]%</span>'
,
'vars'
=>
Array
(
'findmgloss'
=>
50
,
'findmgr'
=>
25
,
),
),
'tl_cstick'
=>
Array
(
'name'
=>
'抡尸'
,
...
...
gamedata/cache/combatcfg_1.php
View file @
0614f15d
...
...
@@ -42,17 +42,19 @@ $weather_active_r = Array(10,20,0,-5,-10,-20,-15,0,-7,-10,-10,-5,0,-5,-20,-5,0,2
//姿态对攻击力的影响始终生效(1:只在作出先制攻击时生效)
$pose_attack_active
=
0
;
//姿态对攻击力的影响(单位:百分比加算)
$pose_attack_modifier
=
Array
(
0
,
100
,
0
,
-
25
,
25
,
-
50
,
50
,
-
777
,
5
);
$pose_attack_modifier
=
Array
(
0
,
100
,
0
,
-
25
,
25
,
-
50
,
50
,
-
777
,
0
);
//姿态对防御力的影响始终生效(1:只在受到先制攻击伤害时生效)
$pose_defend_active
=
0
;
//姿态对防御力的影响(单位:百分比加算)
$pose_defend_modifier
=
Array
(
0
,
25
,
0
,
-
25
,
-
50
,
-
50
,
-
466
,
777
,
0
);
$pose_defend_modifier
=
Array
(
0
,
25
,
0
,
-
25
,
-
50
,
-
50
,
-
466
,
777
,
10
);
//姿态对遇敌率的影响(遇敌率越低道具发现率越高)
$pose_find_modifier
=
Array
(
0
,
5
,
10
,
-
20
,
10
,
25
,
-
20
,
85
,
10
);
//姿态对躲避率的影响
$pose_hide_modifier
=
Array
(
0
,
-
25
,
0
,
-
10
,
10
,
-
25
,
-
40
,
-
40
,
0
,
0
);
$pose_hide_modifier
=
Array
(
0
,
-
25
,
-
10
,
-
10
,
10
,
-
25
,
-
40
,
-
4
0
,
0
);
//姿态对先制率的影响(单位:百分比加算)(计算方式:进攻方姿态先制率-防守方姿态先制率)
$pose_active_modifier
=
Array
(
0
,
0
,
50
,
0
,
25
,
-
25
,
5
,
-
100
,
5
);
$pose_active_modifier
=
Array
(
0
,
0
,
50
,
0
,
25
,
-
25
,
5
,
-
100
,
0
);
//姿态对反击率的影响(单位:百分比加算)
$pose_counter_modifier
=
Array
(
0
,
0
,
0
,
0
,
0
,
-
100
,
0
,
-
100
,
5
);
$pose_counter_modifier
=
Array
(
0
,
0
,
0
,
0
,
0
,
-
100
,
0
,
-
100
,
0
);
//'通常','','重视防御','重视反击','重视躲避'
//应战策略对攻击力的影响始终生效(1:只在作出反击时生效)
...
...
include/game/elementmix.calc.php
View file @
0614f15d
...
...
@@ -4,6 +4,21 @@
exit
(
'Access Denied'
);
}
function
get_clbskill_emgain_r
(
$ev
,
&
$data
)
{
if
(
!
check_skill_unlock
(
'c20_fertile'
,
$data
))
{
$sk
=
'c20_fertile'
;
$sk_lvl
=
get_skilllvl
(
$sk
,
$data
);
$sk_var
=
rand
(
0
,
get_skillvars
(
$sk
,
'emsgain'
,
$sk_lvl
));
if
(
!
empty
(
$sk_var
))
{
$ev
=
ceil
(
$ev
*
(
1
+
(
$sk_var
/
100
)));
}
}
return
$ev
;
}
# 过滤不能拆解的道具(数组) 不能分解返回1 能分解返回0
function
split_to_elements_filter
(
$i
)
{
...
...
include/game/elementmix.func.php
View file @
0614f15d
...
...
@@ -147,9 +147,11 @@
/********拆解元素部分********/
# 把尸体打散成元素
function
split_corpse_to_elements
(
&
$edata
)
function
split_corpse_to_elements
(
&
$edata
,
$emode
)
{
global
$log
,
$mode
,
$typeinfo
,
$elements_info
,
$gamecfg
,
$gamevars
;
global
$now
,
$log
,
$mode
,
$typeinfo
,
$elements_info
,
$gamecfg
,
$gamevars
;
global
$db
,
$tablepre
;
include
config
(
'elementmix'
,
$gamecfg
);
if
(
!
isset
(
$data
))
{
...
...
@@ -157,25 +159,39 @@
$data
=
&
$pdata
;
}
extract
(
$data
,
EXTR_REFS
);
if
(
$club
!=
20
)
$edata
[
'clbpara'
]
=
get_clbpara
(
$edata
[
'clbpara'
]);
if
(
$club
!=
20
||
(
$emode
==
'c20_zombie'
&&
check_skill_unlock
(
'c20_zombie'
,
$data
)))
{
$log
.=
"你还想对这具可怜的尸体干什么?<br>"
;
$mode
=
'command'
;
return
;
}
# 过滤不能分解的尸体
if
(
in_array
(
$edata
[
'type'
],
$no_type_to_e_list
))
if
((
$emode
==
'element_split'
&&
in_array
(
$edata
[
'type'
],
$no_type_to_e_list
))
||
(
$emode
==
'c20_zombie'
&&
in_array
(
$edata
[
'type'
],
get_skillvars
(
$emode
,
'notype'
)))
)
{
$desc
=
(
$emode
==
'element_split'
)
?
'提炼为元素'
:
'转化成灵俑'
;
$log
.=
"无法将
{
$edata
[
'name'
]
}{
$desc
}
……为什么呢?<br>"
;
$mode
=
'command'
;
return
;
}
# 不能灵俑套娃……
if
(
$emode
==
'c20_zombie'
&&
!
check_skill_unlock
(
'inf_zombie'
,
$edata
))
{
$log
.=
"
无法从
{
$edata
[
'name'
]
}
身上提炼元素……为什么呢?
<br>"
;
$log
.=
"
竟然想让一个已经死了两次的人再起来替你打工……你的良心不会痛吗!
<br>"
;
$mode
=
'command'
;
return
;
}
# 开始提炼尸体
$ev_arr
=
Array
();
$log
.=
"<span class='grey'>
{
$edata
[
'name'
]
}
化作点点荧光四散开来……</span><br>"
;
if
(
$emode
==
'element_split'
)
$log
.=
"<span class='grey'>
{
$edata
[
'name'
]
}
化作点点荧光四散开来……</span><br>"
;
else
$log
.=
"<span class='grey'>
{
$edata
[
'name'
]
}
身上升腾起缕缕不详黑气……</span><br>"
;
# 处理绑定有秘钥的尸体
if
(
!
empty
(
$split_spcorpse_fix
[
$edata
[
'type'
]]))
esplit_vip_things
(
$ev_arr
,
$edata
,
$data
);
if
(
$emode
==
'element_split'
&&
!
empty
(
$split_spcorpse_fix
[
$edata
[
'type'
]]))
esplit_vip_things
(
$ev_arr
,
$edata
,
$data
);
# 根据尸体等级计算能获得的全种类元素数量
$ev_lvl
=
ceil
(
$edata
[
'lvl'
]
*
$split_corpse_lvl_r
);
...
...
@@ -197,15 +213,57 @@
$add_ev
+=
$edata
[
'element'
.
$e_key
];
$edata
[
'element'
.
$e_key
]
=
0
;
}
$
{
'element'
.
$e_key
}
+=
$add_ev
;
$total_addev
+=
$add_ev
;
$log
.=
"获得了
{
$add_ev
}
份
{
$e_info
}
!<br>"
;
if
(
$emode
==
'element_split'
)
{
# 计算技能加成
$add_ev
=
get_clbskill_emgain_r
(
$add_ev
,
$data
);
$
{
'element'
.
$e_key
}
+=
$add_ev
;
$total_addev
+=
$add_ev
;
$log
.=
"获得了
{
$add_ev
}
份
{
$e_info
}
!<br>"
;
}
else
{
$add_ev
=
ceil
(
$add_ev
*
sqrt
(
$edata
[
'lvl'
]));
if
(
$
{
'element'
.
$e_key
}
<
$add_ev
)
{
$log
.=
"但是你的元素库存告罄了!转化被迫中止了……<br>"
;
$mode
=
'command'
;
return
;
}
$
{
'element'
.
$e_key
}
-=
$add_ev
;
$log
.=
"<span class='grey'>消耗了
{
$add_ev
}
份
{
$e_info
}
...</span><br>"
;
}
}
# 转化灵俑成功,复制一个相同属性的人丢进战场,然后把旧尸体销毁
if
(
$emode
==
'c20_zombie'
)
{
$gdata
=
$edata
;
unset
(
$gdata
[
'pid'
]);
$gdata
[
'name'
]
.=
'的灵俑'
;
$gdata
[
'hp'
]
=
$gdata
[
'mhp'
];
$gdata
[
'action'
]
=
''
;
$gdata
[
'state'
]
=
$gdata
[
'endtime'
]
=
$gdata
[
'deathtime'
]
=
$gdata
[
'bid'
]
=
0
;
# 登记为盟友,并记录创造者id
$gdata
[
'clbpara'
][
'mate'
][]
=
$pid
;
$gdata
[
'clbpara'
][
'zombieoid'
]
=
$pid
;
# 获得灵俑状态技能
getclubskill
(
'inf_zombie'
,
$gdata
[
'clbpara'
]);
# 插入
$gdata
=
player_format_with_db_structure
(
$gdata
);
if
(
!
empty
(
$gdata
))
{
$db
->
array_insert
(
"
{
$tablepre
}
players"
,
$gdata
);
$gid
=
$db
->
insert_id
();
$clbpara
[
'mate'
][]
=
$gid
;
$clbpara
[
'zombieid'
][]
=
$gid
;
# addnews
addnews
(
$now
,
'ctozombie'
,
$name
,
$edata
[
'name'
]);
}
unset
(
$gdata
);
}
if
(
$mode
==
'element_split'
)
addnews
(
$now
,
'cesplit'
,
$name
,
$edata
[
'name'
]);
# 分解的结果有参数合法的特殊道具
if
(
!
empty
(
$ev_arr
[
'spitm'
])
&&
count
(
$ev_arr
[
'spitm'
])
>
3
)
if
(
$emode
==
'element_split'
&&
!
empty
(
$ev_arr
[
'spitm'
])
&&
count
(
$ev_arr
[
'spitm'
])
>
3
)
{
global
$itm0
,
$itmk0
,
$itme0
,
$itms0
,
$itmsk0
;
$log
.=
"但出现在你面前的不是元素,而是<span class='yellow'>
{
$ev_arr
[
'result'
][
0
]
}
</span>!<br>……这又是什么鬼东西!<br>"
;
$itm0
=
$ev_arr
[
'result'
][
0
];
$itmk0
=
$ev_arr
[
'result'
][
1
];
$itmsk0
=
$ev_arr
[
'result'
][
4
];
$itme0
=
$ev_arr
[
'result'
][
2
];
$itms0
=
$ev_arr
[
'result'
][
3
];
...
...
@@ -290,6 +348,8 @@
}
else
{
# 计算技能加成
$ev
=
get_clbskill_emgain_r
(
$ev
,
$data
);
$ev
=
ceil
(
$ev
);
$
{
'element'
.
$e_key
}
+=
$ev
;
$total_addev
+=
$ev
;
...
...
include/game/item.func.php
View file @
0614f15d
...
...
@@ -14,7 +14,7 @@ function itemuse($itmn,&$data=NULL) {
global
$exdmginf
,
$ex_inf
,
$cskills
,
$elements_info
,
$sparkle
,
$event_bgm
;
global
$upexp
,
$baseexp
,
$elec_cap
;
//Some globals seems to be still needed... ...
global
$itemspkinfo
;
global
$itemspkinfo
,
$plsinfo
;
if
(
!
isset
(
$data
))
{
...
...
@@ -1570,6 +1570,9 @@ function itemuse($itmn,&$data=NULL) {
addnpc
(
2
,
1
,
4
);
addnpc
(
2
,
2
,
4
);
addnpc
(
2
,
3
,
4
);
addnews
(
$now
,
'key0'
,
$name
);
$itm
=
$itmk
=
$itmsk
=
''
;
$itme
=
$itms
=
0
;
}
elseif
(
$itm
==
'✦NPC钥匙·一阶段'
)
{
include_once
GAME_ROOT
.
'./include/system.func.php'
;
$log
.=
'已解锁一阶段NPC!<br>似乎大量NPC已经部署至游戏内……<br>'
;
...
...
include/game/itemmain.func.php
View file @
0614f15d
...
...
@@ -1293,7 +1293,7 @@ function getcorpse($item,&$data=NULL)
# 销毁尸体rp结算
$rp_up
=
diceroll
(
$rpup_destory_corpse
);
include_once
GAME_ROOT
.
'./include/game/revcombat.func.php'
;
rpup_rev
(
$data
,
$rpup
);
rpup_rev
(
$data
,
$rp
_
up
);
addnews
(
$now
,
'cdestroy'
,
$name
,
$edata
[
'name'
]);
destory_corpse
(
$edata
);
...
...
@@ -1301,7 +1301,7 @@ function getcorpse($item,&$data=NULL)
$mode
=
'command'
;
return
;
}
elseif
(
$item
==
'element_split'
)
elseif
(
$item
==
'element_split'
||
$item
==
'c20_zombie'
)
{
if
(
$club
!=
20
)
{
...
...
@@ -1311,7 +1311,7 @@ function getcorpse($item,&$data=NULL)
return
;
}
include_once
GAME_ROOT
.
'./include/game/elementmix.func.php'
;
split_corpse_to_elements
(
$edata
);
split_corpse_to_elements
(
$edata
,
$item
);
$action
=
''
;
$bid
=
0
;
$mode
=
'command'
;
return
;
...
...
@@ -1455,19 +1455,20 @@ function reload_single_set_item(&$pa,$eqp,$enm,$active=0)
//在背包内寻找道具进行编辑
function
check_item_edit_event
(
&
$pa
,
$event
)
function
check_item_edit_event
(
$pa
,
&
$pd
,
$event
)
{
$flag
=
0
;
for
(
$i
=
0
;
$i
<=
6
;
$i
++
)
{
if
(
!
empty
(
$p
a
[
'itms'
.
$i
]))
if
(
!
empty
(
$p
d
[
'itms'
.
$i
]))
{
# 「渗透」效果判定
if
(
$event
==
'c8_infilt'
)
{
if
(
strpos
(
$p
a
[
'itmk'
.
$i
],
'H'
)
===
0
)
if
(
strpos
(
$p
d
[
'itmk'
.
$i
],
'H'
)
===
0
)
{
$pa
[
'itmk'
.
$i
]
=
str_replace
(
"H"
,
'P'
,
$pa
[
'itmk'
.
$i
]);
$pd
[
'itmk'
.
$i
]
=
str_replace
(
"H"
,
'P'
,
$pd
[
'itmk'
.
$i
]);
$pd
[
'itmsk'
.
$i
]
=
$pa
[
'pid'
];
$flag
=
1
;
}
}
...
...
include/game/revattr.func.php
View file @
0614f15d
...
...
@@ -1240,7 +1240,8 @@
//获取pa能造成的属性伤害队列
function
get_base_ex_att_array
(
&
$pa
,
&
$pd
,
$active
)
{
global
$ex_attack
,
$log
,
$itemspkinfo
;
global
$ex_attack
,
$log
,
$itemspkinfo
,
$elements_info
,
$r_elements_info
;
$ex_keys
=
Array
();
foreach
(
$pa
[
'ex_keys'
]
as
$ex
)
{
...
...
@@ -1250,6 +1251,7 @@
$ex_keys
[]
=
$ex
;
}
}
# 「附魔」效果判定:
if
(
isset
(
$pa
[
'bskill_c3_enchant'
]))
{
...
...
@@ -1278,8 +1280,10 @@
// 使用次数+1
set_skillpara
(
'c3_enchant'
,
'active_t'
,
get_skillpara
(
'c3_enchant'
,
'active_t'
,
$pa
[
'clbpara'
])
+
1
,
$pa
[
'clbpara'
]);
}
# 「磁暴」效果判定:
if
(
isset
(
$pa
[
'bskill_c7_electric'
])
&&
(
empty
(
$ex_keys
)
||
!
in_array
(
'e'
,
$ex_keys
)))
$ex_keys
[]
=
'e'
;
# 「渗透」效果判定:
if
(
isset
(
$pa
[
'skill_c8_infilt'
]))
{
...
...
@@ -1294,6 +1298,55 @@
$log
.=
"<span class='purple'>致命毒雾从
{
$pa
[
'nm'
]
}
身遭蔓延开来……</span><br>"
;
}
}
# 「闪电」效果判定:
if
(
isset
(
$pa
[
'bskill_c20_lighting'
]))
{
$sk
=
'c20_lighting'
;
# 元素 ↔ 效果队列
$sk_etype
=
get_skillvars
(
$sk
,
'emextype'
);
# 获取已使用次数,并+1计数:
$sk_t
=
get_skillpara
(
$sk
,
'active_t'
,
$pa
[
'clbpara'
]);
set_skillpara
(
$sk
,
'active_t'
,
$sk_t
+
1
,
$pa
[
'clbpara'
]);
# 根据已使用次数计算可释放次数
$sk_t
=
floor
((
sqrt
(
8
*
$sk_t
+
1
)
-
1
)
/
2
);
# 根据可释放次数依次执行对应效果
$sk_eid
=
range
(
0
,
5
);
for
(
$s
=
1
;
$s
<=
$sk_t
;
$s
++
)
{
shuffle
(
$sk_eid
);
$t
=
0
;
$no_cost
=
0
;
# 在当前库存的6种元素中,满足消耗量的元素
do
{
$sk_cost
=
$s
*
get_skillvars
(
$sk
,
'emcost'
);
$eid
=
$sk_eid
[
$t
];
if
(
$sk_cost
<
$pa
[
'element'
.
$eid
])
{
$pa
[
'element'
.
$eid
]
-=
$sk_cost
;
# 如果造成的伤害是属性伤害,直接加入队列;否则保存进 $pa['bskill_c20_lighting_white_dmg'] 内
if
(
$eid
==
0
)
{
if
(
!
isset
(
$pa
[
'bskill_c20_lighting_white_dmg'
]))
$pa
[
'bskill_c20_lighting_white_dmg'
]
=
0
;
$pa
[
'bskill_c20_lighting_white_dmg'
]
+=
$sk_cost
;
}
else
{
if
(
empty
(
$light_log
)
||
!
in_array
(
$r_elements_info
[
$eid
],
$light_log
))
$light_log
[]
=
$r_elements_info
[
$eid
];
$ex_keys
[]
=
$sk_etype
[
$eid
];
}
break
;
}
$t
++
;
if
(
$t
==
5
)
$no_cost
=
1
;
}
while
(
$t
<=
5
);
# 库存内没有可消耗的元素了,提前终止
if
(
$no_cost
)
break
;
}
if
(
!
empty
(
$light_log
))
{
$log
.=
implode
(
'、'
,
$light_log
)
.
"<span class='yellow'>附着在了
{
$pa
[
'nm'
]
}
的武器上!</span><br>"
;
}
}
return
$ex_keys
;
}
...
...
@@ -1480,6 +1533,7 @@
$log
.=
$exdmgname
[
$ex
];
//xx
if
(
$ex_dmg
)
{
$ex_dmg
=
ceil
(
$ex_dmg
);
if
(
!
empty
(
$pa
[
'ex_dmgdef_log'
]))
$log
.=
"被防御效果抵消了!仅"
;
$log
.=
"造成了<span class=
\"
red
\"
>
{
$ex_dmg
}
</span>点伤害!"
;
if
(
!
empty
(
$pa
[
'ex_dmginf_log'
]))
$log
.=
"并使
{
$pd
[
'nm'
]
}{
$exdmginf
[
$pa
[
'ex_dmginf_log'
]]
}
了!"
;
...
...
@@ -1705,7 +1759,7 @@
//计算最终伤害的定值变化
function
get_final_dmg_fix
(
&
$pa
,
&
$pd
,
$active
,
$fin_dmg
)
{
global
$log
;
global
$log
,
$plsinfo
,
$now
;
# 「量心」效果判定 手加减:
if
(
isset
(
$pa
[
'askill_c19_dispel'
])
&&
$fin_dmg
>=
$pd
[
'hp'
])
...
...
@@ -1827,6 +1881,15 @@
}
}
# 「闪电」无色伤害效果判定:
if
(
isset
(
$pa
[
'bskill_c20_lighting_white_dmg'
]))
{
global
$elements_info
;
$fin_dmg
+=
$pa
[
'bskill_c20_lighting_white_dmg'
];
$log
.=
"<span class='mtgcolorless'>
{
$elements_info
[
0
]
}
使
{
$pa
[
'nm'
]
}
的攻击附加了
{
$pa
[
'bskill_c20_lighting_white_dmg'
]
}
点额外伤害!</span><br>"
;
unset
(
$pa
[
'bskill_c20_lighting_white_dmg'
]);
}
# 「护盾」效果判定
if
(
isset
(
$pd
[
'skill_buff_shield'
]))
{
...
...
@@ -1835,6 +1898,48 @@
$log
.=
"<span class=
\"
lime
\"
>「护盾」使
{
$pd
[
'nm'
]
}
受到的伤害降低了
{
$sk_var
}
点!</span><br>"
;
}
# 「灵俑」抵挡伤害判定
if
(
!
empty
(
$pd
[
'clbpara'
][
'zombieid'
]))
{
$mate_list
=
$pd
[
'clbpara'
][
'zombieid'
];
shuffle
(
$mate_list
);
foreach
(
$mate_list
as
$mid
)
{
$mdata
=
fetch_playerdata_by_pid
(
$mid
);
# 跳过不在同一地图且状态不健康的灵俑
if
(
$mdata
[
'pls'
]
!=
$pd
[
'pls'
]
||
$mdata
[
'hp'
]
<
10
)
continue
;
# 抵挡伤害
$max_cover_dmg
=
min
(
$fin_dmg
,
round
(
$mdata
[
'hp'
]
/
2
));
if
(
$max_cover_dmg
)
{
$mdata
[
'hp'
]
-=
$max_cover_dmg
;
player_save
(
$mdata
);
$fin_dmg
-=
$max_cover_dmg
;
$log
.=
"<span class=
\"
yellow
\"
>但是
{
$mdata
[
'name'
]
}
为
{
$pd
[
'nm'
]
}
抵挡了
{
$max_cover_dmg
}
点伤害!</span><br>"
;
break
;
}
}
}
# 「火花」技能判定:救命
if
(
$fin_dmg
>=
$pd
[
'hp'
]
&&
isset
(
$pd
[
'askill_c20_sparkle'
]))
{
$sk
=
'c20_sparkle'
;
unset
(
$pa
[
'askill_c20_sparkle'
]);
$plslist
=
get_safe_plslist
();
$sp_pls
=
$plslist
[
array_rand
(
$plslist
)];
# 注销技能状态
set_skillpara
(
$sk
,
'active'
,
0
,
$pd
[
'clbpara'
]);
set_skillpara
(
$sk
,
'active_t'
,
1
,
$pd
[
'clbpara'
]);
# 切换地图
$pd
[
'pls'
]
=
$sp_pls
;
$pd
[
'tp_by_sparkle'
]
=
$sp_pls
;
$log
.=
"<span class=
\"
yellow
\"
>千钧一发之际,
{
$pd
[
'nm'
]
}
点燃火花传送到了别处!</span><br>"
;
if
(
!
$pa
[
'type'
])
$pa
[
'log_save'
]
.=
"
{
$pd
[
'name'
]
}
在千钧一发之际点燃了火花,传送到不知道哪去了!"
;
addnews
(
$now
,
'sparklerevival'
,
$pd
[
'name'
],
$pa
[
'name'
],
$plsinfo
[
$sp_pls
]);
return
0
;
}
# 「爆头」技能效果
if
(
isset
(
$pa
[
'skill_c4_headshot'
])
&&
$fin_dmg
>
$pd
[
'hp'
]
*
0.85
&&
$fin_dmg
<
$pd
[
'hp'
])
{
...
...
@@ -1979,7 +2084,7 @@
{
$flag
=
get_inf_rev
(
$pd
,
'p'
);
include_once
GAME_ROOT
.
'./include/game/itemmain.func.php'
;
check_item_edit_event
(
$pd
,
'c8_infilt'
);
check_item_edit_event
(
$p
a
,
$p
d
,
'c8_infilt'
);
if
(
$flag
)
$log
.=
"<span class='yellow'>「渗透」使
{
$pd
[
'nm'
]
}{
$exdmginf
[
'p'
]
}
了!</span><br>"
;
else
$log
.=
"<span class='yellow'>
{
$pd
[
'nm'
]
}
没有受到「渗透」影响……大概吧?</span><br>"
;
}
...
...
@@ -2043,7 +2148,7 @@
//打击结束,已经应用扣血后的事件结算
function
rev_combat_result_events
(
&
$pa
,
&
$pd
,
$active
)
{
global
$
log
,
$infinfo
,
$exdmginf
;
global
$
now
,
$log
,
$infinfo
,
$exdmginf
,
$plsinfo
;
# 真蓝凝防守事件:
if
(
$pd
[
'type'
]
==
19
&&
$pd
[
'name'
]
==
'蓝凝'
)
...
...
@@ -2102,6 +2207,36 @@
}
}
# 「火花」技能判定:触发后不会再触发协战流程
if
(
isset
(
$pa
[
'askill_c20_sparkle'
]))
{
$sk
=
'c20_sparkle'
;
$dice
=
diceroll
(
99
);
$obbs
=
get_skillvars
(
$sk
,
'tpr'
);
if
(
$dice
<
$obbs
)
{
$pa
[
'askill_c20_sparkle'
]
=
2
;
$plslist
=
get_safe_plslist
();
$sp_pls
=
$plslist
[
array_rand
(
$plslist
)];
# 切换地图
$pd
[
'pls'
]
=
$sp_pls
;
$pd
[
'tp_by_sparkle'
]
=
$sp_pls
;
# NPC敌人扣血,玩家在被送到新地图后强制探索一次
if
(
$pd
[
'type'
])
{
$pd
[
'hp'
]
-=
min
(
$pd
[
'hp'
]
-
1
,
rand
(
1
,
$sp_pls
*
10
));
}
else
{
$pd
[
'action'
]
=
'tpmove'
;
$pd
[
'logsave'
]
.=
"<span class=
\"
grey
\"
>
{
$pa
[
'name'
]
}
点燃火花,将你传送到了
{
$plsinfo
[
$sp_pls
]
}
!</span><br>"
;
}
$log
.=
"<span class=
\"
yellow
\"
>你点燃火花,将
{
$pd
[
'nm'
]
}
送到了
{
$plsinfo
[
$sp_pls
]
}
!祝他好运吧……</span><br>"
;
addnews
(
$now
,
'sparklemove'
,
$pa
[
'name'
],
$pd
[
'name'
],
$plsinfo
[
$sp_pls
]);
return
;
}
}
# 「协战」判定
# 拥有佣兵的情况下,主动攻击敌人/成功反击敌人,且敌人仍存活时,判定是否有佣兵协战
if
(
!
empty
(
get_skillpara
(
'c11_merc'
,
'id'
,
$pa
[
'clbpara'
])))
...
...
@@ -2125,22 +2260,44 @@
}
}
}
# 「灵俑」协战判定
if
(
empty
(
$pa
[
'coveratk_flag'
])
&&
!
empty
(
$pa
[
'clbpara'
][
'zombieid'
]))
{
# 「灵俑」基础协战率:50
$cover_obbs
=
50
;
$cover_dice
=
diceroll
(
99
);
if
(
$cover_dice
<
$cover_obbs
)
{
$mate_list
=
$pa
[
'clbpara'
][
'mate'
];
shuffle
(
$mate_list
);
foreach
(
$mate_list
as
$mid
)
{
$mdata
=
fetch_playerdata_by_pid
(
$mid
);
# 跳过不在同一地图的灵俑
if
(
$mdata
[
'pls'
]
!=
$pd
[
'pls'
]
||
$mdata
[
'hp'
]
<
1
)
continue
;
# 触发协战
$pa
[
'coveratk_flag'
]
=
$mid
;
break
;
}
}
}
return
;
}
// 获取pa在探索时的遇敌率(遇敌率越低道具发现率越高)
function
calc_meetman_rate
(
&
$pa
)
{
global
$gamestate
;
global
$gamestate
,
$pose_find_modifier
,
$pls_find_modifier
,
$weather_find_r
;
# 基础遇敌率
$enemyrate
=
40
;
# 连斗阶段遇敌率+20
if
(
$gamestate
==
40
){
$enemyrate
+=
20
;}
# 死斗阶段遇敌率+40
elseif
(
$gamestate
==
50
){
$enemyrate
+=
40
;}
# 姿态修正
if
(
$pa
[
'pose'
]
==
3
)
{
$enemyrate
-=
20
;}
elseif
(
$pa
[
'pose'
]
==
4
){
$enemyrate
+=
10
;}
# 姿态对遇敌率的修正
if
(
!
empty
(
$pose_find_modifier
[
$pa
[
'pose'
]]))
$enemyrate
+=
$pose_find_modifier
[
$pa
[
'pose'
]];
# 天气对遇敌率的修正
if
(
!
empty
(
$weather_find_r
[
'weather'
]))
$enemyrate
+=
$weather_find_r
[
'weather'
];
# 地图场景对遇敌率的修正
if
(
!
empty
(
$pls_find_modifier
[
$pa
[
'pls'
]]))
$enemyrate
+=
$pls_find_modifier
[
$pa
[
'pls'
]];
# 社团技能修正(新)
# 「专注」效果判定
...
...
@@ -2172,8 +2329,7 @@
# 计算天气对躲避率的修正
$wth_r
=
$weather_hide_r
[
$weather
]
?:
0
;
# 计算地点对躲避率的修正
//$pls_r = $pls_hide_modifier[$pd['pls']] ?: 0 ;
$pls_r
=
0
;
//暂时不应用地点躲避率 等遇敌率也重做之后再说
$pls_r
=
$pls_hide_modifier
[
$pd
[
'pls'
]]
?:
0
;
# 计算pd姿态对于躲避率的修正:
$pose_r
=
$pose_hide_modifier
[
$pd
[
'pose'
]]
?:
0
;
# 计算pd策略对于躲避率的修正:
...
...
@@ -2266,18 +2422,6 @@
// 判断pd是否满足反击pa的基础条件(最高优先级)
function
check_can_counter
(
&
$pa
,
&
$pd
,
$active
)
{
# 治疗姿态、躲避策略不能反击
if
(
$pd
[
'pose'
]
==
5
||
$pd
[
'tactic'
]
==
4
)
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
处于无法反击的状态!转身逃开了!"
;
return
0
;
}
# 哨戒姿态不会反击,但是会生气……
if
(
$pd
[
'pose'
]
==
7
)
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
看起来非常生气!还是离他远点吧……"
;
return
0
;
}
# 被协战攻击无法反击
if
(
isset
(
$pa
[
'is_coveratk'
]))
{
...
...
@@ -2296,12 +2440,30 @@
$pd
[
'cannot_counter_log'
]
=
"被你放了一马的
{
$pd
[
'nm'
]
}
一瘸一拐地逃开了。<br>希望你的决定是正确的……"
;
return
0
;
}
# 被火花传送走了不能反击
if
(
isset
(
$pd
[
'tp_by_sparkle'
]))
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
传送走了!<br>"
;
return
0
;
}
# 处于眩晕状态时,无法反击
if
(
isset
(
$pd
[
'skill_inf_dizzy'
]))
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
正处于眩晕状态,无法反击!"
;
return
0
;
}
# 治疗姿态、躲避策略不能反击
if
(
$pd
[
'pose'
]
==
5
||
$pd
[
'tactic'
]
==
4
)
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
处于无法反击的状态!转身逃开了!"
;
return
0
;
}
# 哨戒姿态不会反击,但是会生气……
if
(
$pd
[
'pose'
]
==
7
)
{
$pd
[
'cannot_counter_log'
]
=
"
{
$pd
[
'nm'
]
}
看起来非常生气!还是离他远点吧……"
;
return
0
;
}
return
1
;
}
...
...
include/game/revclubskills.func.php
View file @
0614f15d
...
...
@@ -353,20 +353,18 @@
# 检查冷却时间
if
(
is_array
(
$lock
))
{
$cd
=
$lock
[
0
];
$lock
=
$lock
[
1
];
$cd
=
$lock
[
1
];
$lock
=
$lock
[
0
];
}
# 通用未解锁项目
if
(
$lock
==
'noskill'
||
!
isset
(
$cskill
[
'lockdesc'
]))
return
"技能未解锁或解锁条件不明!<br>"
;
# 返回对应的未解锁描述
if
(
is_array
(
$cskill
[
'lockdesc'
]))
$lockdesc
=
$cskill
[
'lockdesc'
];
if
(
is_array
(
$lockdesc
))
{
$lockdesc
=
isset
(
$cskill
[
'lockdesc'
][
$lock
])
?
$cskill
[
'lockdesc'
][
$lock
]
:
"技能不可用,可能是因为:
{
$lock
}
<br>"
;
}
else
{
$lockdesc
=
$cskill
[
'lockdesc'
];
$lockdesc
=
isset
(
$lockdesc
[
$lock
])
?
$lockdesc
[
$lock
]
:
"技能不可用,可能是因为:
{
$lock
}
<br>"
;
}
if
(
isset
(
$cd
))
$lockdesc
=
str_replace
(
"[:cd:]"
,
$cd
,
$lockdesc
);
return
$lockdesc
;
}
...
...
include/game/revclubskills_extra.func.php
View file @
0614f15d
...
...
@@ -10,6 +10,7 @@
function
upgclbskills_events
(
$event
,
$sk
,
&
$data
=
NULL
)
{
global
$log
,
$cskills
,
$now
,
$club_skillslist
,
$weather
,
$gamevars
,
$wthinfo
,
$db
,
$tablepre
;
global
$elements_info
;
if
(
!
isset
(
$data
))
{
...
...
@@ -62,7 +63,7 @@
// 第3次使用时开始冷却
if
(
$active_t
+
1
>
get_skillvars
(
$sk
,
'freet'
))
{
$event
=
'setstarttimes_'
.
$sk
.
'_charge'
;
$event
=
'setstarttimes_'
.
$sk
;
}
else
{
...
...
@@ -210,7 +211,7 @@
$mid
=
get_skillpara
(
$sk
,
'active_t'
,
$clbpara
);
# 召唤佣兵,并获取佣兵pid
include_once
GAME_ROOT
.
'./include/system.func.php'
;
$merc_pid
=
addnpc
(
25
,
$merc
,
1
,
$now
,
Array
(
'clbpara'
=>
Array
(
'mkey'
=>
$mid
,
'oid'
=>
$pid
,
'onm'
=>
$name
)),
NULL
,
$pls
)[
0
];
$merc_pid
=
addnpc
(
25
,
$merc
,
1
,
$now
,
Array
(
'clbpara'
=>
Array
(
'mkey'
=>
$mid
,
'oid'
=>
$pid
,
'onm'
=>
$name
,
'mate'
=>
Array
(
$pid
)
)),
NULL
,
$pls
)[
0
];
# 初始化佣兵参数
$clbpara
[
'skillpara'
][
$sk
][
'id'
][
$mid
]
=
$merc_pid
;
# 登记佣兵薪水
...
...
@@ -226,6 +227,50 @@
$log
.=
"你掏出千元大钞振臂一呼,「
{
$mercinfo
[
$merc
][
'name'
]
}
」突然出现在了你的面前!<br>"
;
return
1
;
}
# 事件:横财
if
(
$event
==
'windfall'
)
{
$tot
=
$element0
+
$element1
+
$element2
+
$element3
+
$element4
+
$element5
;
if
(
$tot
<
5
)
{
$log
.=
"你口袋中的元素太少了!再去捡点吧!<br>"
;
return
0
;
}
$numbers
=
array_fill
(
0
,
6
,
14
);
# 生成5个随机数,使它们的和等于15
$t
=
16
;
for
(
$i
=
0
;
$i
<
6
;
$i
++
)
{
$at
=
rand
(
1
,
$t
);
$t
-=
$at
;
$numbers
[
$i
]
+=
$at
;
}
$log
.=
"你把口袋中的元素搅混在一起……然后满怀期待得等着它们自己把自己整理好……<br>"
;
foreach
(
$elements_info
as
$key
=>
$info
)
{
$
{
'element'
.
$key
}
=
0
;
$add_ev
=
ceil
(
$tot
*
(
$numbers
[
$key
]
/
100
));
include_once
GAME_ROOT
.
'./include/game/elementmix.calc.php'
;
$add_ev
=
get_clbskill_emgain_r
(
$add_ev
,
$data
);
$
{
'element'
.
$key
}
+=
$add_ev
;
$log
.=
"获得了
{
$add_ev
}
份
{
$info
}
!<br>"
;
}
return
1
;
}
# 事件:黑莲花
if
(
$event
==
'lotus'
)
{
foreach
(
$elements_info
as
$key
=>
$info
)
{
# 不足3000的,补足到3000
if
(
$
{
'element'
.
$key
}
<
3000
)
{
$
{
'element'
.
$key
}
=
3000
;
continue
;
}
$
{
'element'
.
$key
}
*=
3
;
}
return
1
;
}
# 事件:获取指定技能
if
(
strpos
(
$event
,
'getskill_'
)
===
0
)
{
...
...
include/game/revcombat.func.php
View file @
0614f15d
...
...
@@ -49,9 +49,11 @@
get_wep_kind
(
$pd
);
$pd
[
'wep_range'
]
=
get_wep_range
(
$pd
);
$pd
[
'wep_skill'
]
=
get_wep_skill
(
$pd
);
$pd
[
'wep_name'
]
=
$pd
[
'wep'
];
get_wep_kind
(
$pa
,
$wep_kind
,
$pd
[
'wep_range'
]);
$pa
[
'wep_range'
]
=
get_wep_range
(
$pa
);
$pa
[
'wep_skill'
]
=
get_wep_skill
(
$pa
);
$pa
[
'wep_name'
]
=
$pa
[
'wep'
];
# 传入pa为玩家、pd为NPC,且存在鏖战/追击标志时,判断战斗流程类型(标准/追击/鏖战/协战)
if
(
!
$pa
[
'type'
]
&&
$pd
[
'type'
]
&&
(
strpos
(
$pa
[
'action'
],
'dfight'
)
!==
false
||
strpos
(
$pa
[
'action'
],
'chase'
)
!==
false
))
...
...
@@ -393,7 +395,7 @@
findcorpse
(
$edata
);
return
;
}
elseif
(
$action
==
'chase'
||
$action
==
'pchase'
||
$action
==
'dfight'
||
$action
==
'cover'
)
elseif
(
$action
==
'chase'
||
$action
==
'pchase'
||
$action
==
'dfight'
||
$action
==
'cover'
||
$action
==
'tpmove'
)
{
$chase_flag
=
1
;
}
...
...
@@ -1053,6 +1055,18 @@
$log
.=
"<span clas='red'>由于战死,"
;
skill_merc_fire
(
'c11_merc'
,
$pd
[
'clbpara'
][
'mkey'
],
$pd
,
1
);
}
# 灵俑死亡时,从创造者的灵俑队列中删除
if
(
isset
(
$pd
[
'clbpara'
][
'zombieoid'
]))
{
$odata
=
fetch_playerdata_by_pid
(
$pd
[
'clbpara'
][
'zombieoid'
]);
$mkey
=
array_search
(
$pd
[
'pid'
],
$odata
[
'clbpara'
][
'mate'
]);
unset
(
$odata
[
'clbpara'
][
'mate'
][
$mkey
]);
$zkey
=
array_search
(
$pd
[
'pid'
],
$odata
[
'clbpara'
][
'zombieid'
]);
unset
(
$odata
[
'clbpara'
][
'zombieid'
][
$zkey
]);
player_save
(
$odata
);
$w_log
=
"<span class=
\"
grey
\"
>你的灵俑
{
$pd
[
'name'
]
}
归于尘土了……</span><br>"
;
logsave
(
$odata
[
'pid'
],
$now
,
$w_log
,
'c'
);
}
return
;
}
...
...
include/game/search.func.php
View file @
0614f15d
...
...
@@ -370,7 +370,7 @@ function search(&$data=NULL){
function
move_search_events
(
&
$data
=
NULL
,
$act
)
{
global
$log
,
$inf_move_hp
,
$inf_move_sp
,
$infwords
,
$weather
,
$gamevars
,
$now
;
global
$log
,
$inf_move_hp
,
$inf_move_sp
,
$infwords
,
$weather
,
$gamevars
,
$now
,
$elements_info
;
if
(
!
isset
(
$data
))
{
...
...
@@ -487,6 +487,41 @@ function move_search_events(&$data=NULL,$act)
player_save
(
$mdata
);
}
}
# 「沃土」效果判定:
if
(
!
check_skill_unlock
(
'c20_fertile'
,
$data
))
{
$sk
=
'c20_fertile'
;
$sk_lvl
=
get_skilllvl
(
$sk
,
$data
);
$sk_mst
=
get_skillvars
(
$sk
,
'mst'
,
$sk_lvl
);
$ms
=
get_skillpara
(
$sk
,
'ms'
,
$data
[
'clbpara'
])
+
1
;
# 赚钱!
if
(
$ms
>=
$sk_mst
)
{
$temp_enums
=
0
;
$temp_ekey
=
0
;
foreach
(
$elements_info
as
$key
=>
$info
)
{
if
(
!
empty
(
$data
[
'element'
.
$key
]))
{
if
(
empty
(
$temp_enums
)
||
$data
[
'element'
.
$key
]
<
$temp_enums
)
{
$temp_enums
=
$data
[
'element'
.
$key
];
$temp_ekey
=
$key
;
}
}
}
if
(
$temp_enums
)
{
$sk_var
=
get_skillvars
(
$sk
,
'minemsgain'
,
$sk_lvl
);
$add_ev
=
$temp_enums
*
(
1
+
(
$sk_var
/
100
));
$data
[
'element'
.
$temp_ekey
]
=
$add_ev
;
$ms
=
0
;
$log
.=
"<span class='yellow'>你的口袋里冒出了新的元素!</span><br>"
;
}
}
set_skillpara
(
$sk
,
'ms'
,
$ms
,
$data
[
'clbpara'
]);
}
return
;
}
...
...
@@ -584,9 +619,6 @@ function discover($schmode = 0,&$data=NULL)
$mode_dice
=
rand
(
0
,
99
);
if
(
$mode_dice
<
$schmode
)
{
//echo "进入遇敌判定<br>";
//global $pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
//global $clbstatusa,$clbstatusb,$clbstatusc,$clbstatusd,$clbstatuse;
global
$fog
,
$gamestate
;
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
players WHERE pls='
$pls
' AND pid!='
$pid
'"
);
...
...
@@ -600,8 +632,6 @@ function discover($schmode = 0,&$data=NULL)
$enemynum
=
$db
->
num_rows
(
$result
);
$enemyarray
=
range
(
0
,
$enemynum
-
1
);
shuffle
(
$enemyarray
);
$find_r
=
get_find_r
(
$weather
,
$pls
,
$pose
,
$tactic
,
$club
,
$inf
);
$find_obbs
=
$enemy_obbs
+
$find_r
;
//移除了重复调用discover()的设定,尝试用一种正常一点的办法确保敌人/尸体发现率符合基础设定值,不然现在的尸体确实太难摸了。
//现在触发遇敌事件只会返回三种结果:1、发现尸体;2、发现敌人、3、敌人隐藏起来;所以实际的尸体发现率=$enemyrate*$corpse_obbs
...
...
@@ -611,6 +641,7 @@ function discover($schmode = 0,&$data=NULL)
{
$db
->
data_seek
(
$result
,
$enum
);
$edata
=
$db
->
fetch_array
(
$result
);
$edata
[
'clbpara'
]
=
get_clbpara
(
$edata
[
'clbpara'
]);
if
(
!
$edata
[
'type'
]
||
$gamestate
<
50
)
{
if
(
$edata
[
'hp'
]
<=
0
)
...
...
@@ -639,21 +670,21 @@ function discover($schmode = 0,&$data=NULL)
}
else
{
//直接略过决斗者
//global $artk;
# 略过决斗者
if
((
!
$edata
[
'type'
])
&&
(
$artk
==
'XX'
)
&&
((
$edata
[
'artk'
]
!=
'XX'
)
||
(
$edata
[
'art'
]
!=
$name
))
&&
(
$gamestate
<
50
))
continue
;
if
((
$artk
!=
'XX'
)
&&
(
$edata
[
'artk'
]
==
'XX'
)
&&
(
$gamestate
<
50
))
continue
;
//暂时直接略过自己的佣兵,之后做完组队面板交互再加回来
if
(
!
empty
(
get_skillpara
(
'c11_merc'
,
'id'
,
$clbpara
))
&&
in_array
(
$edata
[
'pid'
],
get_skillpara
(
'c11_merc'
,
'id'
,
$clbpara
)
))
continue
;
//
灵子状态只能遭遇同为灵子状态的对象,非灵子状态对象无法发现灵子状态下的对象……但是尸体就没有这种考量了
# 暂时直接略过盟友单位
if
(
!
empty
(
$edata
[
'clbpara'
][
'mate'
])
&&
in_array
(
$pid
,
$edata
[
'clbpara'
][
'mate'
]
))
continue
;
#
灵子状态只能遭遇同为灵子状态的对象,非灵子状态对象无法发现灵子状态下的对象……但是尸体就没有这种考量了
if
((
$edata
[
'pose'
]
==
8
||
$data
[
'pose'
]
==
8
)
&&
$data
[
'pose'
]
!=
$edata
[
'pose'
])
continue
;
//
「量心」技能效果判定:
#
「量心」技能效果判定:
if
(
!
check_skill_unlock
(
'c19_dispel'
,
$data
)
&&
!
empty
(
get_skillpara
(
'c19_dispel'
,
'active'
,
$clbpara
))
&&
$edata
[
'hp'
]
<=
1
)
continue
;
//计算活人发现率
# 计算活人发现率
$hide_r
=
get_hide_r_rev
(
$data
,
$edata
);
$enemy_dice
=
diceroll
(
99
);
//echo "hide_r = {$hide_r} | find_obbs = {$find_obbs} | dice = {$enemy_dice}";
$meetman_flag
=
$enemy_dice
<
(
$find
_obbs
-
$hide_r
)
?
1
:
-
1
;
# 把find_r杀了,现在技能都是用躲避率去判断的了,躲避率为负就等于发现率增幅了
$meetman_flag
=
$enemy_dice
<
(
$enemy
_obbs
-
$hide_r
)
?
1
:
-
1
;
break
;
}
}
...
...
include/news.func.php
View file @
0614f15d
...
...
@@ -276,6 +276,8 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
lime
\"
>
{
$a
}
使用了黑色碎片,让1名未知存在加入了战场!打倒她去获得ID卡来解除游戏吧!</span><br>
\n
"
;
}
elseif
(
$news
==
'dfsecphase'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
lime
\"
>
{
$a
}
闯了大祸,打破了Dark Force的封印!</span><br>
\n
"
;
}
elseif
(
$news
==
'key0'
){
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
lime
\"
>
{
$a
}
释放了少量被封印的NPC存在!</span><br>
\n
"
;
}
elseif
(
$news
==
'key1'
){
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
lime
\"
>
{
$a
}
释放了第一批被封印的NPC存在!</span><br>
\n
"
;
}
elseif
(
$news
==
'key2'
){
...
...
@@ -317,6 +319,10 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
grey
\"
>
{
$a
}
将
{
$b
}
生前存放在安全箱里的东西转移到了自己的名下。哇……真是世风日下,道德沦丧啊!</span><br>
\n
"
;
}
elseif
(
$news
==
'cdestroy'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
red
\"
>
{
$a
}
把
{
$b
}
的尸体销毁了</span><br>
\n
"
;
}
elseif
(
$news
==
'cesplit'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
red
\"
>
{
$a
}
把
{
$b
}
的尸体提炼成了元素</span><br>
\n
"
;
}
elseif
(
$news
==
'ctozombie'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
mtgblack
\"
>
{
$a
}
把
{
$b
}
的尸体转化成了灵俑...</span><br>
\n
"
;
}
elseif
(
$news
==
'csl_wthchange'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
orange
\"
>
{
$a
}
发送了控制指令,战场的天气变成了
{
$wthinfo
[
$b
]
}
!</span><br>
\n
"
;
}
elseif
(
$news
==
'csl_hack'
)
{
...
...
@@ -348,6 +354,10 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
yellow
\"
>
{
$a
}
指挥佣兵
{
$b
}
移动到了
{
$plsinfo
[
$c
]
}
!</span><br>
\n
"
;
}
elseif
(
strpos
(
$news
,
'mercleave'
)
===
0
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
yellow
\"
>
{
$a
}
的佣兵
{
$b
}
离开了战场!</span><br>
\n
"
;
}
elseif
(
$news
==
'sparklemove'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
mtgred
\"
>
{
$a
}
点燃火花将
{
$b
}
传送到了
{
$c
}
!</span><br>
\n
"
;
}
elseif
(
$news
==
'sparklerevival'
)
{
$newsinfo
.=
"<li>
{
$hour
}
时
{
$min
}
分
{
$sec
}
秒,<span class=
\"
mtggreen
\"
>
{
$a
}
在危急时刻点燃火花传送到了
{
$c
}
!</span><br>
\n
"
;
}
else
{
$newsinfo
.=
"<li>
$time
,
$news
,
$a
,
$b
,
$c
,
$d
<br>
\n
"
;
}
...
...
templates/default/corpse.htm
View file @
0614f15d
想要从尸体上拾取什么?
<br><br>
<input
type=
"hidden"
name=
"mode"
value=
"corpse"
>
<!--{if $club==20}-->
<input
type=
"radio"
name=
"command"
id=
"element_split"
value=
"element_split"
<!
--
{
if
!$
w_money
}
--
>
checked
<!--{/if}-->
>
<a
onclick=
sl('element_split');
href=
"javascript:void(0);"
>
提炼元素
</a><br>
<input
type=
"radio"
name=
"command"
id=
"element_split"
value=
"element_split"
<!
--
{
if
!$
w_money
}
--
>
checked
<!--{/if}-->
>
<a
onclick=
sl('element_split');
href=
"javascript:void(0);"
>
提炼元素
</a>
<!--{if !check_skill_unlock('c20_zombie',$pdata)}-->
<input
type=
"radio"
name=
"command"
id=
"c20_zombie"
value=
"c20_zombie"
style=
"margin-left:5px;"
><a
onclick=
sl('c20_zombie');
href=
"javascript:void(0);"
><span
class=
"mtgblack"
>
转化灵俑
</span></a>
<!--{/if}-->
<br>
<!--{elseif $allow_destory_corpse && !in_array($w_type,$no_destory_corpse_type)}-->
<input
type=
"radio"
name=
"command"
id=
"destory"
value=
"destory"
<!
--
{
if
!$
w_money
}
--
>
checked
<!--{/if}-->
>
<a
onclick=
sl('destory');
href=
"javascript:void(0);"
>
销毁尸体
</a><br>
<!--{/if}-->
...
...
templates/default/help.htm
View file @
0614f15d
...
...
@@ -1858,9 +1858,7 @@ NPC也会发出重击和必杀技,请随时小心。</p>
</span>
</td>
<td
class=
"b3"
>
<span>
待实装
</span>
<span><input
type=
"button"
class=
"cmdbutton"
value=
"点击查看称号技能"
onclick=
"showModalDialog($('skillhelp-c20'));"
></span>
</tr>
</table>
<br>
...
...
templates/default/itemfind.htm
View file @
0614f15d
...
...
@@ -7,7 +7,7 @@
<input
type=
"hidden"
id=
"command"
name=
"command"
value=
"itemget"
>
<input
type=
"button"
class=
"cmdbutton"
id=
"zz"
name=
"itemget"
value=
"[Z]拾取"
onclick=
"postCmd('gamecmd','command.php');this.disabled=true;"
>
<!--{if $club==20}-->
<input
type=
"button"
id=
"
aa"
class=
"cmdbutton"
name=
"split_itm"
value=
"[A
]提炼"
onclick=
"$('command').value='split_itm0';postCmd('gamecmd','command.php');this.disabled=true;"
>
<input
type=
"button"
id=
"
cc"
class=
"cmdbutton"
name=
"split_itm"
value=
"[C
]提炼"
onclick=
"$('command').value='split_itm0';postCmd('gamecmd','command.php');this.disabled=true;"
>
<!--{/if}-->
<br><br>
<input
type=
"button"
class=
"cmdbutton"
id=
"xx"
name=
"dropitm0"
value=
"[X]丢弃"
onclick=
"$('command').value='dropitm0';postCmd('gamecmd','command.php');this.disabled=true;"
>
\ No newline at end of file
templates/default/itemmix_tips.htm
View file @
0614f15d
...
...
@@ -42,7 +42,7 @@
border
:
1px
solid
rgba
(
225
,
124
,
226
,
0.4
);
}
</style>
<div
style=
"width:740px"
>
<div
style=
"width:7
20px max-width:7
40px"
>
<div
class=
"b1"
style=
"height:20px"
><span>
元素笔记
</span></div>
<div
class=
"b3"
style=
"min-height:380px;display: flex;position:relative;justify-content: center;"
>
<div
style=
"min-width: 500px;max-width:720px;max-height:400px;text-align:left;word-break:break-all;overflow:auto;"
>
...
...
@@ -91,9 +91,8 @@
</tr>
</table>
<!--{/loop}-->
<br>
<hr
style=
"clear:both; border: 1px solid rgba(225, 124, 226, 0.25);"
>
<div
style=
"display: block;word-break:break-all;overflow:auto;"
>
<div
style=
"clear:both; display: block;word-break:break-all;overflow:auto;"
>
<br>
{$smhint}
</div>
</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment