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
62247b43
Commit
62247b43
authored
Apr 16, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FEAT: Fireseed Skills + Set
parent
f343178a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
592 additions
and
204 deletions
+592
-204
doc/etc/20250416_224140_fireseed_skills_implementation.txt
doc/etc/20250416_224140_fireseed_skills_implementation.txt
+24
-0
doc/etc/20250416_225057_fireseed4_skill_implementation.txt
doc/etc/20250416_225057_fireseed4_skill_implementation.txt
+24
-0
doc/etc/20250416_225854_setitems_fireseed_implementation.txt
doc/etc/20250416_225854_setitems_fireseed_implementation.txt
+40
-0
doc/etc/20250416_234006_setitems_fireseed_fix.txt
doc/etc/20250416_234006_setitems_fireseed_fix.txt
+23
-0
doc/etc/20250416_234852_fireseed4_trap_fix.txt
doc/etc/20250416_234852_fireseed4_trap_fix.txt
+57
-0
gamedata/cache/addnpc_1.php
gamedata/cache/addnpc_1.php
+4
-1
gamedata/cache/clubskills_1.php
gamedata/cache/clubskills_1.php
+114
-78
gamedata/cache/npc_1.php
gamedata/cache/npc_1.php
+4
-1
include/game/item.poison.php
include/game/item.poison.php
+9
-2
include/game/itemmain.func.php
include/game/itemmain.func.php
+19
-5
include/game/revattr.func.php
include/game/revattr.func.php
+161
-117
include/game/setitems.func.php
include/game/setitems.func.php
+113
-0
No files found.
doc/etc/20250416_224140_fireseed_skills_implementation.txt
0 → 100644
View file @
62247b43
# 种火系列技能实装
## 实装内容
实装了三个减伤技能:
1. 种火I(fireseed1)——使角色因为战斗受到的全部最终伤害都降低为75%
2. 种火II(fireseed2)——使角色因为战斗受到的全部最终伤害都降低为50%
3. 种火III(fireseed3)——使角色因为战斗受到的全部最终伤害都变为1
## 实装位置
1. 在 `gamedata/cache/clubskills_1.php` 文件中添加了三个技能的定义
2. 在 `include/game/revattr.func.php` 文件中的 `get_final_dmg_p` 函数中添加了种火I和种火II的伤害减免逻辑
3. 在 `include/game/revattr.func.php` 文件中的 `get_final_dmg_fix` 函数中添加了种火III的伤害固定为1的逻辑
## 实装逻辑
1. 种火I和种火II通过在 `get_final_dmg_p` 函数中添加伤害系数修正来实现伤害减免
2. 种火III通过在 `get_final_dmg_p` 函数中设置标记,然后在 `get_final_dmg_fix` 函数中检测标记并将伤害固定为1来实现
## 技能效果
这三个技能都是被动技能,玩家学习后会自动生效,不需要主动触发。技能效果会在战斗中显示在战斗日志中,告知玩家伤害减免情况。
## 注意事项
1. 这三个技能是互斥的,如果玩家同时拥有多个种火技能,会按照优先级从高到低生效(种火III > 种火II > 种火I)
2. 种火技能只对战斗中受到的伤害有效,不影响其他来源的伤害(如陷阱、毒素等)
3. 种火技能的伤害减免是在所有其他伤害计算完成后最后应用的
doc/etc/20250416_225057_fireseed4_skill_implementation.txt
0 → 100644
View file @
62247b43
# 种火IV技能实装
## 实装内容
实装了种火IV(fireseed4)技能,该技能的效果是将持有该技能的玩家受到的所有伤害(包括战斗,事件,陷阱,食用毒物等)全部变为0。
## 实装位置
1. 在 `gamedata/cache/clubskills_1.php` 文件中添加了种火IV技能的定义
2. 在 `include/game/revattr.func.php` 文件中的 `get_final_dmg_p` 函数中添加了种火IV的伤害免疫逻辑
3. 在 `include/game/revattr.func.php` 文件中的 `get_final_dmg_fix` 函数中添加了种火IV的伤害固定为0的逻辑
4. 在 `include/game/item.poison.php` 文件中添加了种火IV对毒物伤害的免疫逻辑
5. 在 `include/game/itemmain.func.php` 文件中添加了种火IV对陷阱伤害的免疫逻辑
## 实装逻辑
1. 种火IV通过在 `get_final_dmg_p` 函数中设置标记,然后在 `get_final_dmg_fix` 函数中检测标记并将伤害固定为0来实现战斗伤害免疫
2. 种火IV通过在 `item.poison.php` 中检查技能并将毒物伤害设为0来实现毒物伤害免疫
3. 种火IV通过在 `itemmain.func.php` 中检查技能并将陷阱伤害设为0来实现陷阱伤害免疫
## 技能效果
这个技能是被动技能,玩家学习后会自动生效,不需要主动触发。技能效果会在受到伤害时显示在战斗日志或游戏日志中,告知玩家伤害免疫情况。
## 注意事项
1. 种火IV是种火系列技能中最强大的,它可以免疫所有类型的伤害,包括战斗伤害、陷阱伤害、毒物伤害等
2. 种火IV的技能点消耗设置为50点,比种火III(30点)更高,反映了其强大的效果
3. 种火IV的实现方式是在各个伤害计算的关键位置添加检查,确保所有类型的伤害都能被免疫
doc/etc/20250416_225854_setitems_fireseed_implementation.txt
0 → 100644
View file @
62247b43
# 种火套装与技能关联实装
## 实装内容
实现了种火系列套装(fs2, fs3, fs4, fs5)与种火系列技能(fireseed1, fireseed2, fireseed3, fireseed4)的关联,使得玩家穿戴对应套装时自动获得相应的种火技能。
## 实装位置
1. 创建了新文件 `include/game/setitems.func.php` 用于处理套装效果
2. 修改了 `include/game/itemmain.func.php` 中的 `reload_set_items` 函数,调用新的套装效果处理函数
3. 修改了 `include/game/itemmain.func.php` 中的 `reload_single_set_item` 函数,在装备和卸下套装部件时调用套装效果处理函数
## 实装逻辑
1. 创建了 `process_set_item_effects` 函数,用于处理套装效果:
- 检查玩家是否拥有套装效果
- 对于每个套装,检查套装件数是否达到激活条件
- 如果达到激活条件,根据套装ID授予对应的种火技能
- 如果未达到激活条件,移除对应的种火技能(如果该技能是通过套装获得的)
2. 套装与技能的对应关系:
- fs2(种火Ⅰ套装)→ fireseed1(种火I技能)
- fs3(种火Ⅱ套装)→ fireseed2(种火II技能)
- fs4(种火Ⅲ套装)→ fireseed3(种火III技能)
- fs5(种火Ⅳ套装)→ fireseed4(种火IV技能)
3. 在以下情况下会触发套装效果处理:
- 玩家数据初始化时(通过 `reload_set_items` 函数)
- 玩家装备套装部件时(通过 `reload_single_set_item` 函数)
- 玩家卸下套装部件时(通过 `reload_single_set_item` 函数)
## 技能效果
当玩家穿戴完整的套装时,会自动获得对应的种火技能,享受相应的伤害减免效果:
- 种火I:战斗伤害降低为75%
- 种火II:战斗伤害降低为50%
- 种火III:战斗伤害变为1
- 种火IV:所有伤害(包括战斗、陷阱、毒物等)变为0
## 注意事项
1. 如果玩家通过学习获得了种火技能,即使卸下对应套装,该技能也不会消失
2. 只有通过套装获得的种火技能才会在卸下套装时消失
3. 套装效果会在游戏日志中显示,告知玩家获得或失去了哪些技能
4. 该实现方式可以扩展到其他套装效果,只需在 `process_set_item_effects` 函数中添加对应的处理逻辑
doc/etc/20250416_234006_setitems_fireseed_fix.txt
0 → 100644
View file @
62247b43
# 种火套装与技能关联修复
## 问题描述
在玩家装备或移除物品时,未出现获得或失去技能的提示,也并没有获得或失去技能。
## 问题原因
问题出在 `setitems.func.php` 文件中使用 `check_skill_unlock` 函数的方式上。这个函数不仅检查玩家是否拥有技能,还会检查技能是否可用(是否解锁),这导致了即使玩家没有技能,函数也可能返回非零值(表示技能未解锁),从而导致条件判断失败。
## 修复内容
1. 修改了 `setitems.func.php` 文件中的条件判断逻辑,不再使用 `check_skill_unlock` 函数,而是直接检查玩家的 `clbpara['skill']` 数组中是否包含对应的技能
2. 对于获得技能的条件,改为检查 `empty($pa['clbpara']['skill']) || !in_array('fireseed1', $pa['clbpara']['skill'])`
3. 对于失去技能的条件,改为检查 `!empty($pa['clbpara']['skill']) && in_array('fireseed1', $pa['clbpara']['skill'])`
4. 移除了检查技能是否通过学习获得的逻辑,因为这个逻辑在当前实现中不需要
## 修复效果
1. 现在当玩家装备完整的套装时,会正确获得对应的种火技能,并显示获得技能的提示
2. 当玩家卸下套装部件导致套装不再完整时,会正确失去对应的种火技能,并显示失去技能的提示
3. 套装效果与技能的关联关系正常工作
## 注意事项
1. 这个修复不会影响玩家通过学习获得的种火技能,只会影响通过套装获得的技能
2. 如果玩家同时通过学习和套装获得了同一个技能,卸下套装后技能会被移除,但这是预期行为,因为 `lostclubskill` 函数会直接从 `clbpara['skill']` 数组中移除技能
3. 如果需要区分通过学习获得的技能和通过套装获得的技能,需要在 `clbpara` 中添加额外的标记
doc/etc/20250416_234852_fireseed4_trap_fix.txt
0 → 100644
View file @
62247b43
# 种火IV陷阱伤害免疫修复
## 问题描述
在种火IV技能生效时,玩家踩到陷阱仍然正常受到了伤害,而该伤害应该下降为0。
## 问题原因
问题出在 `itemmain.func.php` 文件中的陷阱伤害计算逻辑。原来的代码先计算陷阱伤害,然后再检查种火IV技能,这导致在某些情况下(可能是由于代码执行顺序或其他因素),种火IV的效果没有正确应用。
## 修复内容
1. 修改了 `itemmain.func.php` 文件中的陷阱伤害计算逻辑,将种火IV的检查移到了伤害计算之前
2. 使用了 `if-else` 结构,确保当种火IV技能存在时,直接将伤害设为0,不再进行后续的伤害计算
3. 改进了检查种火IV技能的方式,不再使用 `check_skill_unlock` 函数,而是直接检查玩家的 `clbpara['skill']` 数组中是否包含 'fireseed4'
## 修复前代码
```php
# 计算陷阱伤害
$damage = calc_trap_damage($data,NULL,$playerflag,$selflag);
# 检查陷阱是否被迎击
$damage = check_trap_def_event($data,$damage,$playerflag,$selflag);
# 「种火IV」效果判定:
if(check_skill_unlock('fireseed4', $data)) {
$log .= "<span class='yellow'>「种火IV」使{$name}受到的所有伤害变为0!</span><br>";
$damage = 0;
}
if($damage)
```
## 修复后代码
```php
# 「种火IV」效果判定:
if(!empty($data['clbpara']['skill']) && in_array('fireseed4', $data['clbpara']['skill']))
{
$log .= "<span class='yellow'>「种火IV」使{$name}受到的所有伤害变为0!</span><br>";
$damage = 0;
}
else
{
# 计算陷阱伤害
$damage = calc_trap_damage($data,NULL,$playerflag,$selflag);
# 检查陷阱是否被迎击
$damage = check_trap_def_event($data,$damage,$playerflag,$selflag);
}
if($damage)
```
## 修复效果
1. 现在当玩家拥有种火IV技能时,踩到陷阱会正确地将伤害降为0
2. 玩家会看到提示消息,告知种火IV技能使伤害变为0
3. 由于伤害为0,玩家不会受到任何陷阱伤害,也不会触发陷阱击杀事件
## 注意事项
1. 这个修复只影响陷阱伤害,不影响其他类型的伤害(战斗、毒物等)
2. 修复使用了直接检查技能数组的方式,而不是使用 `check_skill_unlock` 函数,这与之前修复套装效果时的方法一致
3. IDE报告了一些未使用的变量警告,但这些不影响功能,是原代码中就存在的问题
gamedata/cache/addnpc_1.php
View file @
62247b43
...
...
@@ -2487,8 +2487,11 @@ $anpcinfo = array(
'pls'
=>
99
,
'mhp'
=>
17
,
'msp'
=>
200
,
'clubskill'
=>
Array
(
'fireseed3'
,
),
'att'
=>
27
,
'def'
=>
99
999
,
'def'
=>
99
,
'lvl'
=>
13
,
'skill'
=>
1
,
'money'
=>
250
,
...
...
gamedata/cache/clubskills_1.php
View file @
62247b43
...
...
@@ -74,9 +74,45 @@ $sktpemsdmg = "<span class=\"gold\" tooltip2=\"【亮晶晶】:造成纯粹伤
# 技能登记:
$cskills
=
Array
(
'fireseed1'
=>
Array
(
'name'
=>
'种火I'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'被动技能,使你因为战斗受到的所有最终伤害都降低为75%。'
,
'cost'
=>
10
,
'input'
=>
'学习'
,
'log'
=>
'消耗了<span class="lime">[:cost:]</span>点技能点,学会了技能「种火I」。<br>'
,
),
'fireseed2'
=>
Array
(
'name'
=>
'种火II'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'被动技能,使你因为战斗受到的所有最终伤害都降低为50%。'
,
'cost'
=>
20
,
'input'
=>
'学习'
,
'log'
=>
'消耗了<span class="lime">[:cost:]</span>点技能点,学会了技能「种火II」。<br>'
,
),
'fireseed3'
=>
Array
(
'name'
=>
'种火III'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'被动技能,使你因为战斗受到的所有最终伤害都变为1。'
,
'cost'
=>
30
,
'input'
=>
'学习'
,
'log'
=>
'消耗了<span class="lime">[:cost:]</span>点技能点,学会了技能「种火III」。<br>'
,
),
'fireseed4'
=>
Array
(
'name'
=>
'种火IV'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'被动技能,使你受到的所有伤害(包括战斗、事件、陷阱、食用毒物等)都变为0。'
,
'cost'
=>
50
,
'input'
=>
'学习'
,
'log'
=>
'消耗了<span class="lime">[:cost:]</span>点技能点,学会了技能「种火IV」。<br>'
,
),
// 可以通过在此文件中填写配置项来创建一个新技能,系统会自动生成模板。如果配置文件不能满足需求,可以自己创建一个模板文件
/*'技能编号' => Array
(
(
'name' => '技能名', //(必填)技能名
'tags' => Array(), //(非必填)定义一个技能带有的标签
'desc' => '', //(非必填)技能介绍,显示在技能面板上,可以使用[: :]设置一些静态参数,会在生成时自动替换对应参数。
...
...
@@ -122,9 +158,9 @@ $cskills = Array
'log'
=>
'消耗了<span class="lime">[:cost:]</span>点技能点,你的生命上限增加了<span class="yellow">[:hp:]</span>点。<br>'
,
'status'
=>
Array
(
'hp'
,
'mhp'
),
'effect'
=>
Array
(
0
=>
Array
(
'hp'
=>
'+=::3'
,
'mhp'
=>
'+=::3'
,),
12
=>
Array
(
'hp'
=>
'+=::6'
,
'mhp'
=>
'+=::6'
,),
20
=>
Array
(
'hp'
=>
'+=::4'
,
'mhp'
=>
'+=::4'
,),
0
=>
Array
(
'hp'
=>
'+=::3'
,
'mhp'
=>
'+=::3'
,),
12
=>
Array
(
'hp'
=>
'+=::6'
,
'mhp'
=>
'+=::6'
,),
20
=>
Array
(
'hp'
=>
'+=::4'
,
'mhp'
=>
'+=::4'
,),
),
),
's_ad'
=>
Array
...
...
@@ -284,7 +320,7 @@ $cskills = Array
持斩系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气'
,
'bdesc'
=>
'本次攻击附加<span class="yellow">[:fixdmg:]+[^lvl^]</span>点伤害,且武器损耗率减半,消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
5
,
'ragecost'
=>
5
,
'fixdmg'
=>
30
,
//基础固定伤害
'wepimpr'
=>
0.5
,
//武器损耗率
),
...
...
@@ -336,7 +372,7 @@ $cskills = Array
'desc'
=>
'本次攻击无视减半类防御属性,最终伤害<span class="yellow">+[:findmgr:]%</span>'
,
'bdesc'
=>
'本次攻击攻击最终伤害<span class="yellow">+[:findmgr:]%</span>,无视敌方减半类防御属性;消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
70
,
'ragecost'
=>
70
,
'findmgr'
=>
40
,
//最终伤害加成
),
'lockdesc'
=>
Array
(
...
...
@@ -383,7 +419,7 @@ $cskills = Array
'cd'
=>
900
,
//冷却时间
),
'svars'
=>
Array
(
'active'
=>
0
,
'active'
=>
0
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'21级时解锁'
,
...
...
@@ -437,7 +473,7 @@ $cskills = Array
'lvl'
=>
0
,
//初次获得时等级为0
),
'vars'
=>
Array
(
'countergain'
=>
Array
(
0
,
20
,
40
,
60
,
80
,
100
,
125
),
'countergain'
=>
Array
(
0
,
20
,
40
,
60
,
80
,
100
,
125
),
),
'lockdesc'
=>
Array
(
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">投系武器</span>时生效'
,
...
...
@@ -458,7 +494,7 @@ $cskills = Array
'bdesc'
=>
'<span tooltip="主动发动时,若角色身上不存在伤害类属性,则会为其临时附加一项随机属性。"><span class="grey">[附加提示]</span>
发动后将使某一随机属性伤害永久<span class="yellow">+[:exdmggain:]%</span>;消耗<span class="red">[:ragecost:]</span>怒气</span>'
,
'vars'
=>
Array
(
'ragecost'
=>
8
,
'ragecost'
=>
8
,
'exdmggain'
=>
3
,
//单项属性伤害加成
'exdmgmax'
=>
150
,
//单项属性伤害加成上限
'exdmgarr'
=>
Array
(
//单项属性与加成的对应关系
...
...
@@ -470,8 +506,8 @@ $cskills = Array
'd'
=>
'dr'
,
),
'exdmgdesc'
=>
Array
(
//介绍该附魔对应的加成关系
'u'
=>
'火焰/灼焰'
,
'i'
=>
'冻气/冰华'
,
'u'
=>
'火焰/灼焰'
,
'i'
=>
'冻气/冰华'
,
'p'
=>
'毒性'
,
'w'
=>
'音波'
,
'e'
=>
'电气'
,
...
...
@@ -479,12 +515,12 @@ $cskills = Array
),
),
'svars'
=>
Array
(
'ur'
=>
0
,
'ir'
=>
0
,
'pr'
=>
0
,
'er'
=>
0
,
'wr'
=>
0
,
'dr'
=>
0
,
'ur'
=>
0
,
'ir'
=>
0
,
'pr'
=>
0
,
'er'
=>
0
,
'wr'
=>
0
,
'dr'
=>
0
,
'active_t'
=>
0
,
//技能发动次数
),
'lockdesc'
=>
Array
(
...
...
@@ -505,8 +541,8 @@ $cskills = Array
持投系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气'
,
'bdesc'
=>
'攻击必中且物理伤害<span class="yellow">+[:phydmgr:]%</span><br>消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
70
,
'phydmgr'
=>
20
,
'ragecost'
=>
70
,
'phydmgr'
=>
20
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'7级时解锁'
,
...
...
@@ -524,8 +560,8 @@ $cskills = Array
'desc'
=>
'如果你的武器射程不小于敌人,你对其先制攻击率<span class="yellow">+[:actgain:]%</span>,<br>
其攻击你时命中率<span class="yellow">-[:accloss:]%</span>,连击命中率惩罚<span class="yellow">+[:rbloss:]%</span>'
,
'vars'
=>
Array
(
'actgain'
=>
10
,
'accloss'
=>
12
,
'actgain'
=>
10
,
'accloss'
=>
12
,
'rbloss'
=>
8
,
),
'lockdesc'
=>
Array
(
...
...
@@ -558,7 +594,7 @@ $cskills = Array
'chancegainr'
=>
0.1
,
),
'svars'
=>
Array
(
'active'
=>
1
,
'active'
=>
1
,
),
'pvars'
=>
Array
(
'wc'
,
'skill-active'
),
'lockdesc'
=>
Array
(
...
...
@@ -668,7 +704,7 @@ $cskills = Array
'bdesc'
=>
'本次攻击物理伤害<span class="yellow">+[:phydmgr:]%</span>,<br>命中率<span class="yellow">+[:accgain:]%</span><br>
消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
20
,
'ragecost'
=>
20
,
'accgain'
=>
15
,
//命中增益
'phydmgr'
=>
20
,
//物理伤害加成
),
...
...
@@ -689,7 +725,7 @@ $cskills = Array
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'当你在战斗中击杀敌人时,你立即获得<span class="yellow">(<span tooltip="基于你目前的等级">[^lvl^]</span>×[:goldr:])</span>点金钱。'
,
'vars'
=>
Array
(
'goldr'
=>
2
,
'goldr'
=>
2
,
),
'pvars'
=>
Array
(
'lvl'
),
'lockdesc'
=>
Array
(
...
...
@@ -709,8 +745,8 @@ $cskills = Array
'bdesc'
=>
'物理伤害<span class="yellow">+[:phydmgr:]%</span>,属性伤害<span class="yellow">+[:exdmgr:]%</span>,
防具损坏效果<span class="yellow">+[:inftfix:]</span>。消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
75
,
'inftfix'
=>
2
,
'ragecost'
=>
75
,
'inftfix'
=>
2
,
'phydmgr'
=>
20
,
//物理伤害加成
'exdmgr'
=>
80
,
//属性伤害加成
'disableskill'
=>
'c4_sniper'
,
...
...
@@ -740,7 +776,7 @@ $cskills = Array
'bdesc'
=>
'物理伤害<span class="yellow">+[:phydmgr:]%</span>,命中率<span class="yellow">+[:accgain:]%</span>,射程<span class="yellow">+[:rangegain:]</span>,<span class="yellow">连击</span>无效,
但<span class="yellow">[:prfix:]%概率贯穿</span>。消耗<span class="yellow">[:ragecost:]</span>点怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
95
,
'ragecost'
=>
95
,
'rangegain'
=>
1
,
'phydmgr'
=>
80
,
//物理伤害加成
'accgain'
=>
20
,
//命中率加成
...
...
@@ -768,7 +804,7 @@ $cskills = Array
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'使用射系武器造成超过<span class="yellow">[:killline:]%</span>目标当前生命值的伤害时,自动将其秒杀'
,
'vars'
=>
Array
(
'killline'
=>
85
,
'killline'
=>
85
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'15级时解锁'
,
...
...
@@ -798,8 +834,8 @@ $cskills = Array
),
'svars'
=>
Array
(
'lvl'
=>
0
),
'vars'
=>
Array
(
'hidegain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
'actgain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
'hidegain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
'actgain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
),
),
'c5_caution'
=>
Array
...
...
@@ -817,8 +853,8 @@ $cskills = Array
),
'svars'
=>
Array
(
'lvl'
=>
0
),
'vars'
=>
Array
(
'evgain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
'reugain'
=>
Array
(
0
,
4
,
8
,
12
,
16
,
20
),
'evgain'
=>
Array
(
0
,
2
,
4
,
6
,
8
,
10
),
'reugain'
=>
Array
(
0
,
4
,
8
,
12
,
16
,
20
),
),
),
'c5_review'
=>
Array
...
...
@@ -827,7 +863,7 @@ $cskills = Array
'tags'
=>
Array
(
'passive'
),
'desc'
=>
"使用爆系武器时,<br>即使攻击没有命中,也可以获得[:expgain:]点固定经验值"
,
'vars'
=>
Array
(
'expgain'
=>
1
,
'expgain'
=>
1
,
),
'lockdesc'
=>
Array
(
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">爆系武器</span>时生效'
,
...
...
@@ -844,7 +880,7 @@ $cskills = Array
'clog'
=>
"切换了「专注」的状态。"
,
'choice'
=>
Array
(
0
,
1
,
2
),
//无效果/重视遇敌/重视探物
'svars'
=>
Array
(
'choice'
=>
1
,
'choice'
=>
1
,
),
'vars'
=>
Array
(
'meetgain'
=>
15
,
...
...
@@ -866,7 +902,7 @@ $cskills = Array
使用爆系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气。'
,
'bdesc'
=>
'本次攻击中爆炸属性伤害无视一切增益减益效果;消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
40
,
'ragecost'
=>
40
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'6级时解锁'
,
...
...
@@ -888,7 +924,7 @@ $cskills = Array
'active_t'
=>
0
,
),
'vars'
=>
Array
(
'ragecost'
=>
0
,
'ragecost'
=>
0
,
'chase_t'
=>
2
,
'maxactive_t'
=>
2
,
),
...
...
@@ -921,7 +957,7 @@ $cskills = Array
0
=>
Array
(
'skillpara|c9_kotodama-lvl'
=>
'+=::1'
),
),
'svars'
=>
Array
(
'lvl'
=>
0
,
'lvl'
=>
0
,
),
'vars'
=>
Array
(
),
...
...
@@ -944,7 +980,7 @@ $cskills = Array
'lvl'
=>
0
,
//初次获得时等级为0
),
'vars'
=>
Array
(
'accloss'
=>
Array
(
0
,
4
,
8
,
12
),
'accloss'
=>
Array
(
0
,
4
,
8
,
12
),
'rbloss'
=>
Array
(
0
,
2
,
3
,
4
),
'spcloss'
=>
Array
(
40
,
50
,
60
,
70
),
),
...
...
@@ -959,7 +995,7 @@ $cskills = Array
'vars'
=>
Array
(
'ragecost'
=>
40
,
'rageback'
=>
6
,
'phydmgr'
=>
2
,
'phydmgr'
=>
2
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'3级时解锁'
,
...
...
@@ -977,8 +1013,8 @@ $cskills = Array
每通过技能解除1个异常/受伤状态,你的怒气提升<span class="yellow">[:ragegain:]</span>点'
,
'vars'
=>
Array
(
'hpshloss'
=>
80
,
'purify'
=>
1
,
'ragegain'
=>
40
,
'purify'
=>
1
,
'ragegain'
=>
40
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'7级时解锁'
,
...
...
@@ -1007,7 +1043,7 @@ $cskills = Array
'active_t'
=>
0
,
),
'vars'
=>
Array
(
'rageadd'
=>
100
,
'rageadd'
=>
100
,
'freet'
=>
2
,
'cd'
=>
600
,
//冷却时间
),
...
...
@@ -1031,7 +1067,7 @@ $cskills = Array
'bdesc'
=>
'本次攻击最终伤害<span class="yellow">×[:findmgr:]</span>,消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
60
,
'findmgr'
=>
2
,
'findmgr'
=>
2
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'19级时解锁'
,
...
...
@@ -1061,8 +1097,8 @@ $cskills = Array
'accgain'
=>
0
,
'rbgain'
=>
0
,
'accloss'
=>
0
,
'rbloss'
=>
0
,
),
'vars'
=>
Array
(
'flucmin'
=>
1
,
'flucmax'
=>
3
,
'flucmin'
=>
1
,
'flucmax'
=>
3
,
),
'pvars'
=>
Array
(
'skillpara|c6_godluck-accgain'
,
'skillpara|c6_godluck-rbgain'
,
'skillpara|c6_godluck-accloss'
,
'skillpara|c6_godluck-rbloss'
),
),
...
...
@@ -1087,8 +1123,8 @@ $cskills = Array
'actgain'
=>
0
,
'countergain'
=>
0
,
'hidegain'
=>
0
,
),
'vars'
=>
Array
(
'flucmin'
=>
1
,
'flucmax'
=>
3
,
'flucmin'
=>
1
,
'flucmax'
=>
3
,
),
'pvars'
=>
Array
(
'skillpara|c6_godsend-actgain'
,
'skillpara|c6_godsend-countergain'
,
'skillpara|c6_godsend-hidegain'
),
),
...
...
@@ -1129,7 +1165,7 @@ $cskills = Array
'bdesc'
=>
'计算熟练度时增加<span class="yellow">([^rage^]×[^lvl^]/6)</span>点(最高220点),消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
25
,
'rageback'
=>
25
,
'rageback'
=>
25
,
'skmax'
=>
220
,
'mhpr'
=>
1.5
,
),
...
...
@@ -1199,7 +1235,7 @@ $cskills = Array
'accgain'
=>
0
,
'rbgain'
=>
0
,
'accloss'
=>
0
,
'rbloss'
=>
0
,
),
'vars'
=>
Array
(
'svar'
=>
Array
(
110
,
155
,
185
,
225
,
265
,
355
),
'svar'
=>
Array
(
110
,
155
,
185
,
225
,
265
,
355
),
'cd'
=>
Array
(
150
,
120
,
120
,
90
,
60
,
45
),
'hpalert'
=>
Array
(
35
,
40
,
45
,
50
,
60
,
70
),
),
...
...
@@ -1222,7 +1258,7 @@ $cskills = Array
'bdesc'
=>
'本次攻击<span class="yellow">带电</span>,电击属性伤害<span class="yellow">+[:exdmgfix:]</span>,有<span class="yellow">[:infr:]%</span>概率<span class="yellow">麻痹</span>敌人,或使已麻痹敌人眩晕<span class="yellow">[:lasttimes:]</span>秒;消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
25
,
'exdmgfix'
=>
60
,
'exdmgfix'
=>
60
,
'infr'
=>
40
,
'lasttimes'
=>
2
,
),
...
...
@@ -1286,7 +1322,7 @@ $cskills = Array
消耗<span class="red">[:ragecost:]</span>怒气<br>本局已发动<span class="redseed"> [^skillpara|c7_emp-active_t^]/[:maxactive_t:] </span>次'
,
'vars'
=>
Array
(
'ragecost'
=>
60
,
'maxactive_t'
=>
2
,
'maxactive_t'
=>
2
,
'lasttimes'
=>
3
,
),
'svars'
=>
Array
(
'active_t'
=>
0
),
...
...
@@ -1315,7 +1351,7 @@ $cskills = Array
),
'svars'
=>
Array
(
'lvl'
=>
0
),
'vars'
=>
Array
(
'exdmgr'
=>
Array
(
10
,
20
,
30
,
40
,
50
),
'exdmgr'
=>
Array
(
10
,
20
,
30
,
40
,
50
),
),
),
'c8_infilt'
=>
Array
...
...
@@ -1353,7 +1389,7 @@ $cskills = Array
'bdesc'
=>
'本次攻击每造成1次<span class="purple">毒</span>属性伤害,最终属性伤害<span class="yellow">+[:exdmgr:]%</span>;消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
50
,
'exdmgr'
=>
25
,
'exdmgr'
=>
25
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'7级时解锁'
,
...
...
@@ -1368,7 +1404,7 @@ $cskills = Array
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'不再受到<span class="purple">毒性</span>伤害,并将原本伤害的<span class="yellow">[:exdmgr:]%</span>转化为治疗效果'
,
'vars'
=>
Array
(
'exdmgr'
=>
75
,
'exdmgr'
=>
75
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'12级时解锁'
,
...
...
@@ -1397,7 +1433,7 @@ $cskills = Array
'events'
=>
Array
(
'getskill_buff_assassin'
,
'active_news'
),
'link'
=>
Array
(
'buff_assassin'
),
'vars'
=>
Array
(
'maxactive_t'
=>
2
,
'maxactive_t'
=>
2
,
),
'svars'
=>
Array
(
'active'
=>
0
,
'active_t'
=>
0
,),
'pvars'
=>
Array
(
'skillpara|c8_assassin-active_t'
),
...
...
@@ -1419,8 +1455,8 @@ $cskills = Array
'desc'
=>
'<span class="lime">「暗杀」生效中!<br>
增益效果剩余时间:<span class="yellow">[^lasttimes^]</span> 秒</span>'
,
'vars'
=>
Array
(
'hidegain'
=>
90
,
'actgain'
=>
100
,
'hidegain'
=>
90
,
'actgain'
=>
100
,
'pdefbkr'
=>
25
,
),
'slast'
=>
Array
(
...
...
@@ -1448,7 +1484,7 @@ $cskills = Array
),
'svars'
=>
Array
(
'lvl'
=>
0
,
'choice'
=>
1
,
'choice'
=>
1
,
),
),
'c10_insight'
=>
Array
...
...
@@ -1483,7 +1519,7 @@ $cskills = Array
'bdesc'
=>
'物理伤害<span class="yellow">+[:phydmgr:]%</span>,击杀时额外获得<span class="lime">敌人等级-(0.15×<span tooltip2="等同于你当前等级">[^lvl^]</span>)</span>点经验;消耗<span class="red">[:ragecost:]</span>怒气'
,
'vars'
=>
Array
(
'ragecost'
=>
18
,
'phydmgr'
=>
20
,
'phydmgr'
=>
20
,
),
'pvars'
=>
Array
(
'lvl'
),
'lockdesc'
=>
Array
(
...
...
@@ -1511,7 +1547,7 @@ $cskills = Array
),
'c11_merc'
=>
Array
(
'name'
=>
'佣兵'
,
'name'
=>
'佣兵'
,
'tags'
=>
Array
(
'active'
,
'limit'
),
'desc'
=>
"本局已发动<span class=
\"
redseed
\"
> [^skillpara|c11_merc-active_t^]/[:maxactive_t:] </span>次<br>
消耗<span class='yellow'>[:mcost:]</span>元,在当前地点随机召唤一名佣兵;<br>
...
...
@@ -1552,7 +1588,7 @@ $cskills = Array
),
'c11_stock'
=>
Array
(
'name'
=>
'理财'
,
'name'
=>
'理财'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
"每探索/移动<span class='yellow'>[:mst:]</span>次,你所持金钱增加<span class='yellow'>[:earn:]%</span>;<br>
所加金钱数最低不会低于<span class='yellow'>[:minmoney:]</span>元,最高不会超过<span class='yellow'>[:maxmoney:]</span>元<br>
...
...
@@ -1562,7 +1598,7 @@ $cskills = Array
'mst'
=>
50
,
'earn'
=>
20
,
'minmoney'
=>
100
,
'maxmoney'
=>
2500
,
'maxmoney'
=>
2500
,
),
'pvars'
=>
Array
(
'lvl'
,
'skillpara|c11_stock-ms'
),
'lockdesc'
=>
Array
(
...
...
@@ -1574,7 +1610,7 @@ $cskills = Array
),
'c11_renjie'
=>
Array
(
'name'
=>
'人杰'
,
'name'
=>
'人杰'
,
'tags'
=>
Array
(
'passive'
),
'desc'
=>
"战斗中,你的熟练度始终取用最高熟练值。"
,
'lockdesc'
=>
Array
(
...
...
@@ -1590,7 +1626,7 @@ $cskills = Array
'tags'
=>
Array
(
'passive'
),
'desc'
=>
'你对敌人的隐蔽率<span class="yellow">-[:hidegain:]%</span>;敌人对你的隐蔽率<span class="yellow">-[:hideloss:]%</span>'
,
'vars'
=>
Array
(
'hidegain'
=>
100
,
'hidegain'
=>
100
,
'hideloss'
=>
75
,
),
),
...
...
@@ -1642,7 +1678,7 @@ $cskills = Array
'bdesc'
=>
"消耗<span class=
\"
red
\"
>[:hpcost:]%</span>生命值,附加等于消耗值且受<span class=
\"
yellow
\"
>「底力」</span>加成的
{
$sktpwhitedmg
}
;发动需消耗<span class=
\"
red
\"
>[:ragecost:]</span>怒气"
,
'vars'
=>
Array
(
'ragecost'
=>
50
,
'hpcost'
=>
25
,
'hpcost'
=>
25
,
),
'lockdesc'
=>
Array
(
'lvl'
=>
'7级时解锁'
,
...
...
@@ -1713,7 +1749,7 @@ $cskills = Array
你不能再埋设陷阱,且从陷阱处受到的伤害减少<span class="yellow">[:trapdmgloss:]%</span><br>'
,
'vars'
=>
Array
(
'phydmgloss'
=>
90
,
'phydmgloss'
=>
90
,
'phydmgloss_2'
=>
50
,
'trapdmgloss'
=>
60
,
),
...
...
@@ -1842,7 +1878,7 @@ $cskills = Array
),
'c19_nirvana'
=>
Array
(
'name'
=>
'涅槃'
,
'name'
=>
'涅槃'
,
'tags'
=>
Array
(
'passive'
,
'limit'
),
'desc'
=>
"本局已生效<span class=
\"
redseed
\"
> [^skillpara|c19_nirvana-active_t^]/[:maxactive_t:] </span>次<br>
因陷阱/战斗死亡时,转化所有的
{
$sktprp
}
并立刻复活<br>
...
...
@@ -1971,7 +2007,7 @@ $cskills = Array
'log'
=>
'<span class="yellow">切换了「量心」的状态。</span>'
,
'events'
=>
Array
(
'active|c19_dispel'
),
'svars'
=>
Array
(
'active'
=>
0
,
'active'
=>
0
,
),
'pvars'
=>
Array
(
'skill-active'
),
'lockdesc'
=>
Array
(
...
...
@@ -2005,7 +2041,7 @@ $cskills = Array
'vars'
=>
Array
(
'sscost'
=>
100
,
'wtht'
=>
600
,
'maxactive_t'
=>
1
,
'maxactive_t'
=>
1
,
),
'svars'
=>
Array
(
'active_t'
=>
0
,),
'pvars'
=>
Array
(
'skillpara|c19_woesea-active_t'
),
...
...
@@ -2073,7 +2109,7 @@ $cskills = Array
<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
,
'ragecost'
=>
15
,
'emcost'
=>
30
,
'emextype'
=>
Array
(
// 各类元素能造成的伤害类型
0
=>
'white'
,
...
...
@@ -2105,7 +2141,7 @@ $cskills = Array
复活后的
{
$sktpzombie
}
有<span class=
\"
yellow
\"
>50%</span>概率为你<span class='gold' tooltip2='当你攻击敌人且敌人未死亡时,与你在同一地点的灵俑有概率主动为你助战。'>协战</span>,并在你受到攻击时,<br>
为你抵挡最多不超过<span class=
\"
yellow
\"
>[:maxdefhp:]%</span>灵俑当前生命的伤害"
,
'vars'
=>
Array
(
'maxdefhp'
=>
50
,
'maxdefhp'
=>
50
,
'notype'
=>
Array
(
1
,
9
,
19
,
88
,
92
),
//不能复活为灵俑的NPC
),
'lockdesc'
=>
Array
(
...
...
@@ -2129,7 +2165,7 @@ $cskills = Array
'log'
=>
'<span class="yellow">切换了「火花」的状态。</span>'
,
'events'
=>
Array
(
'active|c20_sparkle'
),
'svars'
=>
Array
(
'active'
=>
0
,
'active'
=>
0
,
'active_t'
=>
0
,
),
'vars'
=>
Array
(
...
...
@@ -2166,7 +2202,7 @@ $cskills = Array
'events'
=>
Array
(
'lotus'
,
'active_news'
),
'vars'
=>
Array
(
'emsgain'
=>
3
,
'maxactive_t'
=>
3
,
'maxactive_t'
=>
3
,
),
'svars'
=>
Array
(
'active_t'
=>
0
,),
'pvars'
=>
Array
(
'skillpara|c20_lotus-active_t'
),
...
...
@@ -2261,11 +2297,11 @@ $cskills = Array
'input'
=>
'切换'
,
'log'
=>
'<span class="yellow">切换了「燃血」的状态。</span>'
,
'events'
=>
Array
(
'active|c21_sacrifice'
),
'vars'
=>
Array
(
'vars'
=>
Array
(
'death_obbs'
=>
50
//入乡随俗
),
'svars'
=>
Array
(
'active'
=>
0
,
'active'
=>
0
,
),
'pvars'
=>
Array
(
'skill-active'
),
'lockdesc'
=>
Array
(
...
...
@@ -2285,7 +2321,7 @@ $cskills = Array
你每因此受到<span class="yellow">[:dmgrate:]</span>点伤害,就随机造成敌人一处受伤。'
,
'bdesc'
=>
"引爆身上的全部代码片段,根据片段的属性对双方造成额外伤害和效果;消耗<span class='red'>[:ragecost:]</span>怒气</span>"
,
'vars'
=>
Array
(
'ragecost'
=>
100
,
'ragecost'
=>
100
,
'dmgrate'
=>
100
,
//造成一处部位受伤需要的伤害量
),
'lockdesc'
=>
Array
(
...
...
@@ -2302,7 +2338,7 @@ $cskills = Array
'desc'
=>
'你不会受到反噬伤害,但不能造成除了毒性、冻气以外的属性伤害<br>
你造成的最终伤害降低<span class="yellow">[:findmgloss:]%</span>,从敌人处受到的伤害降低<span class="yellow">[:findmgr:]%</span>'
,
'vars'
=>
Array
(
'findmgloss'
=>
50
,
'findmgloss'
=>
50
,
'findmgr'
=>
25
,
),
),
...
...
@@ -2314,7 +2350,7 @@ $cskills = Array
武器的<span class="yellow">效耐</span>取决于尸体的<span class="yellow">最大生命</span>与<span class="yellow">体力</span>,上限为<span class="red">[:limit:]</span>点。<br>
优秀的尸源有概率为武器附加<span class="yellow">冲击</span>与<span class="yellow">精英</span>属性'
,
'vars'
=>
Array
(
'ragecost'
=>
100
,
'ragecost'
=>
100
,
'limit'
=>
117007
,
'notype'
=>
Array
(
88
,
92
),
//不能用来抡的NPC
),
...
...
gamedata/cache/npc_1.php
View file @
62247b43
...
...
@@ -2086,11 +2086,14 @@
'teamID'
=>
''
,
'teamPass'
=>
''
,
'gd'
=>
'f'
,
'clubskill'
=>
Array
(
'fireseed3'
,
),
//'pls' => 99,
'mhp'
=>
17
,
'msp'
=>
200
,
'att'
=>
27
,
'def'
=>
99
999
,
'def'
=>
99
,
'lvl'
=>
13
,
'skill'
=>
1
,
'money'
=>
250
,
...
...
include/game/item.poison.php
View file @
62247b43
...
...
@@ -8,13 +8,13 @@ if (! defined ( 'IN_GAME' )) {
function
item_poison
(
$itmn
,
&
$data
)
{
global
$log
,
$nosta
,
$db
,
$tablepre
,
$now
;
extract
(
$data
,
EXTR_REFS
);
$itm
=
&
$
{
'itm'
.
$itmn
};
$itmk
=
&
$
{
'itmk'
.
$itmn
};
$itme
=
&
$
{
'itme'
.
$itmn
};
$itms
=
&
$
{
'itms'
.
$itmn
};
$itmsk
=
&
$
{
'itmsk'
.
$itmn
};
if
(
strpos
(
$itmk
,
'2'
)
===
2
)
{
$damage
=
round
(
$itme
*
2
);
}
elseif
(
strpos
(
$itmk
,
'1'
)
===
2
)
{
...
...
@@ -25,6 +25,13 @@ function item_poison($itmn, &$data) {
if
(
strpos
(
$inf
,
'p'
)
===
false
)
{
$inf
.=
'p'
;
}
# 「种火IV」效果判定:
if
(
check_skill_unlock
(
'fireseed4'
,
$data
))
{
$log
.=
"<span class='yellow'>「种火IV」使
{
$name
}
受到的所有伤害变为0!</span><br>"
;
$damage
=
0
;
}
$hp
-=
$damage
;
if
(
$itmsk
&&
is_numeric
(
$itmsk
))
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
players WHERE pid='
$itmsk
'"
);
...
...
include/game/itemmain.func.php
View file @
62247b43
...
...
@@ -243,10 +243,19 @@ function trap(&$data=NULL){
{
$bid
=
$itmsk0
;
# 计算陷阱伤害
$damage
=
calc_trap_damage
(
$data
,
NULL
,
$playerflag
,
$selflag
);
# 检查陷阱是否被迎击
$damage
=
check_trap_def_event
(
$data
,
$damage
,
$playerflag
,
$selflag
);
# 「种火IV」效果判定:
if
(
!
empty
(
$data
[
'clbpara'
][
'skill'
])
&&
in_array
(
'fireseed4'
,
$data
[
'clbpara'
][
'skill'
]))
{
$log
.=
"<span class='yellow'>「种火IV」使
{
$name
}
受到的所有伤害变为0!</span><br>"
;
$damage
=
0
;
}
else
{
# 计算陷阱伤害
$damage
=
calc_trap_damage
(
$data
,
NULL
,
$playerflag
,
$selflag
);
# 检查陷阱是否被迎击
$damage
=
check_trap_def_event
(
$data
,
$damage
,
$playerflag
,
$selflag
);
}
if
(
$damage
)
{
...
...
@@ -1701,7 +1710,8 @@ function reload_set_items(&$pa)
if
(
!
empty
(
$pa
[
'clbpara'
][
'setitems'
]))
{
//获得对应的套装效果
include_once
GAME_ROOT
.
'./include/game/setitems.func.php'
;
process_set_item_effects
(
$pa
);
}
return
;
}
...
...
@@ -1722,6 +1732,8 @@ function reload_single_set_item(&$pa,$eqp,$enm,$active=0)
$pa
[
'clbpara'
][
'setitems'
][
$sid
]
+=
1
;
$nownums
=
$pa
[
'clbpara'
][
'setitems'
][
$sid
];
//获得对应的套装效果
include_once
GAME_ROOT
.
'./include/game/setitems.func.php'
;
process_set_item_effects
(
$pa
);
//$log .= "激活了套装{$set_items_info[$sid]['name']}{$nownums}件套的效果。<br>";
//检查是否解锁对应套装成就
}
...
...
@@ -1730,6 +1742,8 @@ function reload_single_set_item(&$pa,$eqp,$enm,$active=0)
$pa
[
'clbpara'
][
'setitems'
][
$sid
]
-=
1
;
$nownums
=
$pa
[
'clbpara'
][
'setitems'
][
$sid
];
//失去对应的套装效果
include_once
GAME_ROOT
.
'./include/game/setitems.func.php'
;
process_set_item_effects
(
$pa
);
//$log .= "套装{$set_items_info[$sid]['name']}组件数-1,重新激活{$nownums}件套的效果。<br>";
}
}
...
...
include/game/revattr.func.php
View file @
62247b43
...
...
@@ -24,32 +24,32 @@ namespace revattr
$w2
=
!
empty
(
$w2
)
&&
isset
(
$attinfo
[
$w2
])
?
$w2
:
''
;
# 输入了预设的攻击方式,检查是否合法
if
(
!
empty
(
$wep_kind
))
if
(
!
empty
(
$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
{
if
(
empty
(
$w2
))
{
$pa
[
'wep_kind'
]
=
$w1
;
}
else
else
{
# 射系武器没有子弹的情况下,自动选用第二攻击模式
if
((
$w1
==
'G'
||
$w1
==
'J'
)
&&
$pa
[
'weps'
]
==
$nosta
)
{
$pa
[
'wep_kind'
]
=
$w2
;
}
elseif
((
$w2
==
'G'
||
$w2
==
'J'
)
&&
$pa
[
'weps'
]
==
$nosta
)
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射程,且当前两种攻击方式在射程判定上没有区别,则熟练优先
...
...
@@ -57,7 +57,7 @@ namespace revattr
{
$pa
[
'wep_kind'
]
=
$w1_skill
>
$w2_skill
?
$w1
:
$w2
;
}
else
else
{
# 两把武器熟练都大于250的情况下,射程优先
if
(
$w1_skill
>
250
&&
$w2_skill
>
250
)
$pa
[
'wep_kind'
]
=
$w1_range
>
$w2_range
?
$w1
:
$w2
;
...
...
@@ -90,7 +90,7 @@ namespace revattr
if
(
empty
(
$pa
[
'wep_kind'
]))
get_wep_kind
(
$pa
);
$range
=
isset
(
$rangeinfo
[
$pa
[
'wep_kind'
]])
?
$rangeinfo
[
$pa
[
'wep_kind'
]]
:
NULL
;
//弓系射程随熟练增加,每200点加1,最多加3
if
(
$pa
[
'wep_kind'
]
==
'B'
)
{
$r_add
=
floor
(
$pa
[
$skillinfo
[
$pa
[
'wep_kind'
]]]
/
200
);
...
...
@@ -181,7 +181,7 @@ namespace revattr
if
(
!
$pd
[
'type'
]
&&
$pd
[
'nm'
]
!=
'你'
)
$pd
[
'logsave'
]
.=
"<span class=
\"
yellow
\"
>
{
$pa
[
'name'
]
}
</span>对你发动了技能<span class=
\"
red
\"
>「
{
$bsk_name
}
」</span>!"
;
elseif
(
!
$pa
[
'type'
]
&&
$pa
[
'nm'
]
!=
'你'
)
$pa
[
'logsave'
]
.=
"你对<span class=
\"
yellow
\"
>
{
$pd
[
'name'
]
}
</span>发动了技能<span class=
\"
red
\"
>「
{
$bsk_name
}
」</span>!"
;
}
else
else
{
# 主动技不满足使用条件或来源非法,直接注销标记
unset
(
$pa
[
'bskill'
]);
...
...
@@ -257,7 +257,7 @@ namespace revattr
}
}
# 其他非特判技能,默认给一个触发标记
else
else
{
$pa
[
'skill_'
.
$sk
]
=
1
;
//$pa['skill_'.$sk.'_log'] = "";
...
...
@@ -429,10 +429,10 @@ namespace revattr
}
else
{
$log
.=
"<span class=
\"
yellow
\"
>
{
$pa
[
'nm'
]
}
成功地复制了对手的武器!</span><br>"
;
$log
.=
"<span class=
\"
yellow
\"
>临摹装置化作了<span class=
\"
red
\"
>
{
$pd
[
'wep'
]
}
</span>!</span><br><br>"
;
//从原属性数组中剔除当前武器属性
//从原属性数组中剔除当前武器属性
if
(
!
empty
(
$pa
[
'wepsk'
]))
unset_ex_from_array
(
$pa
,
get_itmsk_array
(
$pa
[
'wepsk'
]));
$pa
[
'wep'
]
=
$pd
[
'wep'
];
$pa
[
'wepk'
]
=
$pd
[
'wepk'
];
$pa
[
'wepsk'
]
=
$pd
[
'wepsk'
];
$pa
[
'wepe'
]
=
$pd
[
'wepe'
];
$pa
[
'weps'
]
=
$pd
[
'weps'
];
$pa
[
'wepe'
]
=
$pd
[
'wepe'
];
$pa
[
'weps'
]
=
$pd
[
'weps'
];
//没有灵抽的情况下,向属性数组中打入复制后武器的属性
if
(
!
isset
(
$pa
[
'sldr_flag'
]))
$pa
[
'ex_keys'
]
=
array_merge
(
$pa
[
'ex_keys'
],
get_itmsk_array
(
$pa
[
'wepsk'
]));
get_wep_kind
(
$pa
);
...
...
@@ -441,16 +441,16 @@ namespace revattr
}
else
{
$log
.=
"<span class=
\"
red
\"
>但是似乎失败了!</span><br>"
;
$log
.=
"<span class=
\"
red
\"
>但是似乎失败了!</span><br>"
;
}
}
# 存在其他方式提供的暴毙死法,也中止后续战斗动作。
if
(
isset
(
$pa
[
'gg_flag'
]))
{
return
-
1
;
}
return
0
;
}
...
...
@@ -461,7 +461,7 @@ namespace revattr
//基础命中率
$hitrate
=
$hitrate_obbs
[
$pa
[
'wep_kind'
]];
//熟练度修正
$hitrate
+=
round
(
$pa
[
'wep_skill'
]
*
$hitrate_r
[
$pa
[
'wep_kind'
]]);
$hitrate
+=
round
(
$pa
[
'wep_skill'
]
*
$hitrate_r
[
$pa
[
'wep_kind'
]]);
//武器基础命中率上限
$hitrate
=
min
(
$hitrate_max_obbs
[
$pa
[
'wep_kind'
]],
$hitrate
);
//获取社团技能对基础命中率的修正(旧)
...
...
@@ -469,7 +469,7 @@ namespace revattr
//获取社团技能对基础命中率的修正(新)
$hitrate
=
get_clbskill_hitrate
(
$pa
,
$pd
,
$active
,
$hitrate
);
//异常状态状态修正
foreach
(
$inf_htr_p
as
$inf_ky
=>
$value
)
foreach
(
$inf_htr_p
as
$inf_ky
=>
$value
)
{
if
(
strpos
(
$pa
[
'inf'
],
$inf_ky
)
!==
false
)
$hitrate
*=
$value
;
}
...
...
@@ -480,7 +480,7 @@ namespace revattr
}
//获取命中次数
function
get_hit_time_rev
(
&
$pa
,
&
$pd
,
$active
)
function
get_hit_time_rev
(
&
$pa
,
&
$pd
,
$active
)
{
global
$nosta
,
$wepimprate
,
$infobbs
;
...
...
@@ -521,7 +521,7 @@ namespace revattr
$wep_imp_obbs
*=
get_skillvars
(
'c2_butcher'
,
'wepimpr'
);
}
}
else
else
{
//消耗型武器 每次连击必定消耗1
$wep_imp_obbs
=
100
;
...
...
@@ -538,15 +538,15 @@ namespace revattr
{
$atk_t
=
$pa
[
'weps'
]
==
$nosta
?
$atk_t
:
min
(
$atk_t
,
$pa
[
'weps'
]);
}
//计算实际命中次数
$pa
[
'hitrate_times'
]
=
$pa
[
'inf_times'
]
=
$pa
[
'wep_imp_times'
]
=
0
;
for
(
$i
=
1
;
$i
<=
$atk_t
;
$i
++
)
for
(
$i
=
1
;
$i
<=
$atk_t
;
$i
++
)
{
$dice
=
diceroll
(
99
);
$dice2
=
diceroll
(
99
);
$dice3
=
diceroll
(
99
);
if
(
$dice
<
$pa
[
'hitrate'
])
if
(
$dice
<
$pa
[
'hitrate'
])
{
//增加命中次数
$pa
[
'hitrate_times'
]
+=
1
;
...
...
@@ -591,7 +591,7 @@ namespace revattr
# 真红暮防御事件:
if
(
$pd
[
'type'
]
==
19
&&
$pd
[
'name'
]
==
'红暮'
)
{
{
$p
=
attr_extra_19_crimson
(
$pa
,
$pd
,
$active
,
'defend'
);
if
(
isset
(
$p
))
return
$p
;
}
...
...
@@ -604,7 +604,7 @@ namespace revattr
{
$log
.=
"<span class=
\"
yellow
\"
>
{
$pa
[
'nm'
]
}
的攻击不受「天佑」影响!</span><br>"
;
}
else
else
{
$log
.=
"<span class=
\"
yellow
\"
>「天佑」使
{
$pa
[
'nm'
]
}
的攻击没能造成任何伤害!</span><br>"
;
return
0
;
...
...
@@ -623,7 +623,7 @@ namespace revattr
return
0
;
}
}
else
else
{
if
(
$pd
[
'arte'
]
>
1
)
{
...
...
@@ -702,11 +702,11 @@ namespace revattr
# 计算武器面板攻击:
//空手 武器伤害=2/3熟练度
if
(
$pa
[
'wep_kind'
]
==
'N'
)
if
(
$pa
[
'wep_kind'
]
==
'N'
)
{
if
(
!
isset
(
$pa
[
'wep_skill'
]))
$pa
[
'wep_skill'
]
=
get_wep_skill
(
$pa
);
$pa
[
'wepe_t'
]
=
round
(
$pa
[
'wep_skill'
]
*
2
/
3
);
#「拳法」效果判定,在空手基础上再额外增加
if
(
isset
(
$pa
[
'skill_c13_kungfu'
]))
{
...
...
@@ -714,13 +714,13 @@ namespace revattr
}
}
//射系 武器伤害=面板数值
elseif
(
$pa
[
'wep_kind'
]
==
'G'
||
$pa
[
'wep_kind'
]
==
'J'
)
elseif
(
$pa
[
'wep_kind'
]
==
'G'
||
$pa
[
'wep_kind'
]
==
'J'
)
{
$pa
[
'wepe_t'
]
=
$pa
[
'wepe'
];
}
//枪托打人 武器伤害=面板数值/5
//弓当斩系武器也用同一个数值好了,懒得多想
elseif
(
isset
(
$pa
[
'is_wpg'
]))
elseif
(
isset
(
$pa
[
'is_wpg'
]))
{
$pa
[
'wepe_t'
]
=
round
(
$pa
[
'wepe'
]
/
5
);
}
...
...
@@ -744,7 +744,7 @@ namespace revattr
$base_att
=
get_base_att_modifier
(
$pa
,
$pd
,
$active
,
$base_att
,
$tooltip
);
return
$base_att
;
}
//获取pa的攻击力修正
function
get_base_att_modifier
(
&
$pa
,
&
$pd
,
$active
,
$base_att
,
$tooltip
=
0
)
{
...
...
@@ -773,10 +773,10 @@ namespace revattr
if
(
!
empty
(
$pa
[
'inf'
]))
{
global
$inf_att_p
;
foreach
(
$inf_att_p
as
$inf_ky
=>
$value
)
foreach
(
$inf_att_p
as
$inf_ky
=>
$value
)
{
if
(
strpos
(
$pa
[
'inf'
],
$inf_ky
)
!==
false
)
$inf_atk_per
*=
$value
;
}
}
}
# 计算社团技能对pa攻击力的修正(旧)
...
...
@@ -799,7 +799,7 @@ namespace revattr
$tooltip
.=
"
\"
>"
.
$base_att
.
"</span>"
;
return
$tooltip
;
}
else
else
{
return
$base_att
;
}
...
...
@@ -868,8 +868,8 @@ namespace revattr
$base_def_per
=
100
;
//天气修正
$wth_def_per
=
isset
(
$weather_defend_modifier
[
$weather
])
?
$weather_defend_modifier
[
$weather
]
:
0
;
//地点修正
$pls_def_per
=
isset
(
$pls_defend_modifier
[
$pd
[
'pls'
]])
?
$pls_defend_modifier
[
$pd
[
'pls'
]]
:
0
;
//地点修正
$pls_def_per
=
isset
(
$pls_defend_modifier
[
$pd
[
'pls'
]])
?
$pls_defend_modifier
[
$pd
[
'pls'
]]
:
0
;
//姿态修正只在受到先制攻击时生效? //pa身上没有反击标记 代表这是一次先制攻击
if
(
!
isset
(
$pa
[
'is_counter'
])
&&
$pose_defend_active
)
$pose_def_per
=
isset
(
$pose_defend_modifier
[
$pd
[
'pose'
]])
?
$pose_defend_modifier
[
$pd
[
'pose'
]]
:
0
;
//姿态修正始终生效
...
...
@@ -881,19 +881,19 @@ namespace revattr
//上述各项系数修正最低不低于1%
$base_def_per
+=
$wth_def_per
+
$pls_def_per
+
$pose_def_per
+
$tac_def_per
;
$base_def_per
=
$base_def_per
>
0
?
$base_def_per
:
1
;
# 计算受伤状态对pd防御力的修正
$inf_def_per
=
100
;
if
(
!
empty
(
$pd
[
'inf'
]))
{
global
$inf_def_p
;
foreach
(
$inf_def_p
as
$inf_ky
=>
$value
)
foreach
(
$inf_def_p
as
$inf_ky
=>
$value
)
{
if
(
strpos
(
$pd
[
'inf'
],
$inf_ky
)
!==
false
)
$inf_def_per
*=
$value
;
}
}
# 计算社团技能对pd防御力的修正(新)
# 计算社团技能对pd防御力的修正(新)
#「根性」技能加成
if
(
!
check_skill_unlock
(
'c12_garrison'
,
$pd
))
{
...
...
@@ -921,7 +921,7 @@ namespace revattr
}
//计算原始伤害
function
get_original_dmg_rev
(
&
$pa
,
&
$pd
,
$active
)
function
get_original_dmg_rev
(
&
$pa
,
&
$pd
,
$active
)
{
global
$skill_dmg
,
$dmg_fluc
,
$weather
,
$pls
,
$log
;
...
...
@@ -955,16 +955,16 @@ namespace revattr
$damage
=
0
;
# 重枪
if
(
$pa
[
'wep_kind'
]
==
'J'
)
if
(
$pa
[
'wep_kind'
]
==
'J'
)
{
$adddamage
=
$pd
[
'mhp'
]
/
3
;
if
(
$adddamage
>
20000
)
$adddamage
=
10000
;
$damage
+=
round
(
$pa
[
'wepe'
]
*
2
/
3
+
$adddamage
);
}
# 灵力武器
if
(
$pa
[
'wep_kind'
]
==
'F'
)
if
(
$pa
[
'wep_kind'
]
==
'F'
)
{
if
(
isset
(
$pa
[
'sldr_flag'
])
||
isset
(
$pd
[
'sldr_flag'
]))
if
(
isset
(
$pa
[
'sldr_flag'
])
||
isset
(
$pd
[
'sldr_flag'
]))
{
$log
.=
"<span class=
\"
red
\"
>由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>"
;
}
...
...
@@ -986,7 +986,7 @@ namespace revattr
}
//计算伤害倍率变化(攻击方)
function
get_damage_p_rev
(
&
$pa
,
&
$pd
,
$active
)
function
get_damage_p_rev
(
&
$pa
,
&
$pd
,
$active
)
{
global
$log
,
$cskills
;
...
...
@@ -1019,14 +1019,14 @@ namespace revattr
$log_sp_cost
=
ceil
(
$sp_cost
);
$log
.=
"消耗
{
$log_sp_cost
}
点体力,"
;
}
else
else
{
$sp_cost
=
0
;
}
//获取威力系数:NPC固定为50%
$factor
=
$pa
[
'type'
]
?
0.5
:
0.5
+
round
((
$sp_cost
/
$sp_cost_max
)
/
2
,
1
);
//获取伤害变化倍率并扣除体力
$dmg_p
[]
=
round
(
$factor
,
2
);
$dmg_p
[]
=
round
(
$factor
,
2
);
if
(
isset
(
$log_sp_cost
))
$pa
[
'sp'
]
-=
$log_sp_cost
;
//输出log
$f
=
round
(
100
*
$factor
);
...
...
@@ -1038,7 +1038,7 @@ namespace revattr
{
//获取伤害变化倍率
$sk_r
=
get_skillvars
(
'c9_lb'
,
'phydmgr'
);
$dmg_p
[]
=
$sk_r
;
$dmg_p
[]
=
$sk_r
;
//输出log
if
(
$pa
[
'type'
])
$log
.=
npc_chat_rev
(
$pa
,
$pd
,
'critical'
);
$log
.=
"<span class=
\"
red
\"
>发动必杀技!</span><br>"
;
...
...
@@ -1047,11 +1047,11 @@ namespace revattr
# 连击判定:
# 只要命中次数上限大于1就进入连击判定,不需要再检查武器有没有连击属性。方便一些技能强制附加连击
if
(
$pa
[
'hitrate_max_times'
]
>
1
)
{
{
//获取连击次数伤害倍率:2次2倍,3次2.8倍,之后=2.8+(次数-3)*0.6
$r_dmg_p
=
Array
(
2
=>
2
,
3
=>
2.8
);
$p
=
isset
(
$r_dmg_p
[
$pa
[
'hitrate_times'
]])
?
$r_dmg_p
[
$pa
[
'hitrate_times'
]]
:
2.8
+
(
$pa
[
'hitrate_times'
]
-
3
)
*
0.6
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
//输出log
$log
.=
"
{
$pa
[
'hitrate_max_times'
]
}
次连续攻击命中<span class=
\"
yellow
\"
>
{
$pa
[
'hitrate_times'
]
}
</span>次!"
;
}
...
...
@@ -1063,7 +1063,7 @@ namespace revattr
$sk_lvl
=
get_skilllvl
(
'c1_crit'
,
$pa
);
// 获取猛击倍率
$sk_p
=
1
+
(
get_skillvars
(
'c1_crit'
,
'attgain'
,
$sk_lvl
)
/
100
);
$dmg_p
[]
=
$sk_p
;
$dmg_p
[]
=
$sk_p
;
//输出log
$log
.=
"<span class=
\"
yellow
\"
>
{
$pa
[
'nm'
]
}
朝着
{
$pd
[
'nm'
]
}
打出了凶猛的一击!<span class=
\"
clan
\"
>
{
$pd
[
'nm'
]
}
被打晕了过去!</span></span><br>"
;
}
...
...
@@ -1072,7 +1072,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c3_potential'
,
'phydmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>
{
$pa
[
'nm'
]
}
爆发潜能打出了致命一击!</span><br>"
;
}
#「百出」判定:
...
...
@@ -1080,7 +1080,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c3_numerous'
,
'dmgr'
)
*
get_skillpara
(
'c3_enchant'
,
'active_t'
,
$pa
[
'clbpara'
]);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>
{
$pa
[
'nm'
]
}
打得
{
$pd
[
'nm'
]
}
落花流水,物理伤害增加了
{
$sk_p
}
%!</span><br>"
;
}
#「瞄准」判定:
...
...
@@ -1088,7 +1088,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c4_aiming'
,
'phydmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>「瞄准」使
{
$pa
[
'nm'
]
}
造成的物理伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
#「咆哮」判定:
...
...
@@ -1096,7 +1096,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c4_roar'
,
'phydmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>「咆哮」使
{
$pa
[
'nm'
]
}
造成的物理伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
#「穿杨」判定:
...
...
@@ -1104,7 +1104,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c4_sniper'
,
'phydmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>「穿杨」使
{
$pa
[
'nm'
]
}
造成的物理伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
#「解构」判定:
...
...
@@ -1112,13 +1112,13 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c10_decons'
,
'phydmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>「解构」使
{
$pa
[
'nm'
]
}
造成的物理伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
#「妙手」判定:
if
(
isset
(
$pa
[
'bskill_tl_pickpocket'
]))
{
$dmg_p
[]
=
0
;
$dmg_p
[]
=
0
;
$log
.=
"<span class='yellow'>「妙手」使
{
$pa
[
'nm'
]
}
的本次攻击几乎没有造成任何伤害!</span><br>"
;
}
#「宗师」判定:
...
...
@@ -1126,7 +1126,7 @@ namespace revattr
{
$sk_p
=
(
strpos
(
$pa
[
'wep_name'
],
'拳'
)
!==
false
&&
$pa
[
'wep_kind'
]
==
'P'
)
?
get_skillvars
(
'c13_master'
,
'phydmgloss_2'
)
:
get_skillvars
(
'c13_master'
,
'phydmgloss'
);
$p
=
1
-
(
$sk_p
/
100
);
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>
{
$pa
[
'nm'
]
}
耻于使用武器战斗!造成的物理伤害降低了
{
$sk_p
}
%!</span><br>"
;
}
...
...
@@ -1180,7 +1180,7 @@ namespace revattr
unset
(
$pd
[
'phy_def_flag'
]);
}
}
else
else
{
$log
.=
"纳尼?
{
$pd
[
'nm'
]
}
的装备使攻击无效化的属性竟然失效了!<br>"
;
}
...
...
@@ -1201,7 +1201,7 @@ namespace revattr
{
$pd
[
'phy_def_flag'
]
=
1
;
}
else
else
{
$log
.=
"
{
$pd
[
'nm'
]
}
的装备没能发挥减半伤害的效果!<br>"
;
}
...
...
@@ -1221,14 +1221,14 @@ namespace revattr
{
$pd
[
'phy_def_flag'
]
=
$def_kind
[
$pa
[
'wep_kind'
]];
}
else
else
{
$log
.=
"
{
$pd
[
'nm'
]
}
的
{
$itemspkinfo
[
$def_kind
[
$pa
[
'wep_kind'
]]]
}
没能发挥减半伤害的效果!<br>"
;
}
}
# 贯穿效果判定:
if
(
in_array
(
'n'
,
$pa
[
'ex_keys'
]))
if
(
in_array
(
'n'
,
$pa
[
'ex_keys'
]))
{
$dice
=
diceroll
(
99
);
# 未贯穿率
...
...
@@ -1283,7 +1283,7 @@ namespace revattr
{
//获取伤害变化倍率并扣除体力
$p
=
1.5
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
//输出log
$log
.=
"<span class=
\"
red
\"
>由于
{
$pd
[
'nm'
]
}
手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>"
;
}
...
...
@@ -1291,20 +1291,20 @@ namespace revattr
# 热恋、同志判定:
if
(
in_array
(
'l'
,
$pd
[
'ex_keys'
]))
{
$dice
=
diceroll
(
100
);
if
(
$dice
<=
25
)
{
if
(
$pa
[
'gd'
]
!=
$pd
[
'gd'
])
{
{
$p
=
0
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'nm'
]
}
被
{
$pd
[
'nm'
]
}
迷惑,无法全力攻击!</span>"
;
}
else
else
{
$p
=
2
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'nm'
]
}
被
{
$pd
[
'nm'
]
}
激怒,伤害加倍!</span>"
;
}
}
...
...
@@ -1315,15 +1315,15 @@ namespace revattr
if
(
$dice
<=
25
)
{
if
(
$pa
[
'gd'
]
==
$pd
[
'gd'
])
{
{
$p
=
0
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'nm'
]
}
被
{
$pd
[
'nm'
]
}
迷惑,无法全力攻击!</span>"
;
}
else
else
{
$p
=
2
;
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'nm'
]
}
被
{
$pd
[
'nm'
]
}
激怒,伤害加倍!</span>"
;
}
}
...
...
@@ -1338,12 +1338,12 @@ namespace revattr
$p
=
0
;
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'nm'
]
}
的攻击完全被
{
$pd
[
'nm'
]
}
的装备吸收了!</span><br>"
;
}
else
else
{
$p
=
0.5
;
$log
.=
"<span class=
\"
yellow
\"
>
{
$pd
[
'nm'
]
}
的装备使
{
$pa
[
'nm'
]
}
的攻击伤害减半了!</span><br>"
;
}
$dmg_p
[]
=
$p
;
$dmg_p
[]
=
$p
;
}
return
$dmg_p
;
...
...
@@ -1408,7 +1408,7 @@ namespace revattr
if
(
in_array
(
$ex
,
$ex_attack
))
{
//把$ex_attack和$pa['ex_keys']位置调换可过滤重复属性,现在不会过滤
$ex_keys
[]
=
$ex
;
$ex_keys
[]
=
$ex
;
}
}
...
...
@@ -1535,7 +1535,7 @@ namespace revattr
unset
(
$pd
[
'ex_def_flag'
]
);
}
}
else
else
{
$log
.=
"纳尼?
{
$pd
[
'nm'
]
}
装备上使属性攻击无效化的属性竟然失效了!<br>"
;
//无效化属性攻击的属性无效化了 怎么会这样
}
...
...
@@ -1553,7 +1553,7 @@ namespace revattr
{
$pd
[
'ex_def_flag'
]
=
1
;
}
else
else
{
$log
.=
"属性防御装备没能发挥应有的作用!<br>"
;
}
...
...
@@ -1578,7 +1578,7 @@ namespace revattr
if
(
isset
(
$invaild_ex
))
{
$ivlog
=
''
;
foreach
(
$invaild_ex
as
$ivex
)
foreach
(
$invaild_ex
as
$ivex
)
{
if
(
!
empty
(
$ivlog
))
$ivlog
.=
"、"
.
$itemspkinfo
[
$ex_def_kind
[
$ivex
]];
else
$ivlog
=
$itemspkinfo
[
$ex_def_kind
[
$ivex
]];
...
...
@@ -1588,14 +1588,14 @@ namespace revattr
}
# 破格(属穿)效果判断:
if
(
in_array
(
'y'
,
$pa
[
'ex_keys'
]))
if
(
in_array
(
'y'
,
$pa
[
'ex_keys'
]))
{
$dice
=
diceroll
(
99
);
# 未破格率
$obbs
=
100
-
$specialrate
[
'y'
];
# 「暗杀」效果判定:
if
(
isset
(
$pa
[
'skill_buff_assassin'
]))
$obbs
+=
get_skillvars
(
'buff_assassin'
,
'pdefbkr'
);
if
(
$dice
>
$obbs
)
if
(
$dice
>
$obbs
)
{
if
(
!
empty
(
$pd
[
'ex_def_flag'
]))
{
...
...
@@ -1620,7 +1620,7 @@ namespace revattr
{
global
$log
,
$now
;
//触发了属抹效果,直接返回固定伤害值
if
(
isset
(
$pd
[
'ex_def_flag'
])
&&
$pd
[
'ex_def_flag'
]
==
2
)
if
(
isset
(
$pd
[
'ex_def_flag'
])
&&
$pd
[
'ex_def_flag'
]
==
2
)
{
$total_ex_dmg
=
count
(
$pa
[
'ex_attack_keys'
]);
$log
.=
"<span class=
\"
red
\"
>属性攻击的力量完全被防具吸收了!</span>仅造成了<span class=
\"
red
\"
>
{
$total_ex_dmg
}
</span>点伤害!<br>"
;
...
...
@@ -1660,7 +1660,7 @@ namespace revattr
lostclubskill
(
'buff_shield'
,
$pd
[
'clbpara'
]);
$pa
[
'ex_breakshield_log'
]
=
1
;
}
else
else
{
$shield
-=
$ex_dmg
;
$ex_dmg
=
0
;
...
...
@@ -1679,14 +1679,14 @@ namespace revattr
//获取属性施加异常概率的社团修正
if
(
isset
(
$ex_good_club
[
$ex
])
&&
$ex_good_club
[
$ex
]
==
$pd
[
'club'
])
$e_htr
+=
20
;
//施加异常
if
(
$dice
<
$e_htr
)
if
(
$dice
<
$e_htr
)
{
$pa
[
'ex_dmginf_log'
]
=
$ex_inf
[
$ex
];
$pd
[
'inf'
]
.=
$pa
[
'ex_dmginf_log'
];
addnews
(
$now
,
'inf'
,
$pa
[
'name'
],
$pd
[
'name'
],
$pa
[
'ex_dmginf_log'
]);
}
}
//整理后统一输出文本
//整理后统一输出文本
if
(
!
empty
(
$pa
[
'ex_dmgpsh_log'
]))
$log
.=
$pa
[
'ex_dmgpsh_log'
];
//由于对方已经xx xx伤害提升/降低
$log
.=
$exdmgname
[
$ex
];
//xx
if
(
$ex_dmg
)
...
...
@@ -1699,7 +1699,7 @@ namespace revattr
if
(
!
empty
(
$pa
[
'ex_breakshield_log'
]))
$log
.=
"<span class='red'>
{
$pd
[
'nm'
]
}
的「护盾」被打破了!</span><br>"
;
$total_ex_dmg
[]
=
$ex_dmg
;
}
else
else
{
if
(
!
empty
(
$pa
[
'ex_shield_log'
]))
$log
.=
"被「护盾」抵消了!"
;
$log
.=
"没能造成伤害!<br>"
;
...
...
@@ -1720,7 +1720,7 @@ namespace revattr
//获取倍率
$sk_p
=
get_skillvars
(
'c4_roar'
,
'exdmgr'
);
$p
=
1
+
(
$sk_p
/
100
);
$ex_dmg_p
[]
=
$p
;
$ex_dmg_p
[]
=
$p
;
//输出log
$log
.=
"<span class='yellow'>「咆哮」使
{
$pa
[
'nm'
]
}
造成的属性伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
...
...
@@ -1732,7 +1732,7 @@ namespace revattr
if
(
!
empty
(
$sk_p
))
{
$p
=
1
+
(
$sk_p
/
100
);
$ex_dmg_p
[]
=
$p
;
$ex_dmg_p
[]
=
$p
;
}
}
# 「催化」判定:
...
...
@@ -1743,7 +1743,7 @@ namespace revattr
{
$sk_p
=
get_skillvars
(
'c8_catalyst'
,
'exdmgr'
)
*
$sk_nums
;
$p
=
1
+
(
$sk_p
/
100
);
$ex_dmg_p
[]
=
$p
;
$ex_dmg_p
[]
=
$p
;
$log
.=
"<span class='yellow'>「催化」使
{
$pa
[
'nm'
]
}
造成的属性伤害提高了
{
$sk_p
}
%!</span><br>"
;
}
}
...
...
@@ -1756,6 +1756,37 @@ namespace revattr
global
$log
;
$fin_dmg_p
=
Array
();
# 「种火I」效果判定:
if
(
isset
(
$pd
[
'skill_fireseed1'
]))
{
$p
=
0.75
;
$log
.=
"<span class='yellow'>「种火I」使
{
$pd
[
'nm'
]
}
受到的最终伤害降低为75%!</span><br>"
;
$fin_dmg_p
[]
=
$p
;
}
# 「种火II」效果判定:
if
(
isset
(
$pd
[
'skill_fireseed2'
]))
{
$p
=
0.5
;
$log
.=
"<span class='yellow'>「种火II」使
{
$pd
[
'nm'
]
}
受到的最终伤害降低为50%!</span><br>"
;
$fin_dmg_p
[]
=
$p
;
}
# 「种火IV」效果判定:
if
(
isset
(
$pd
[
'skill_fireseed4'
]))
{
// 将伤害设为0的特殊处理
$pd
[
'fireseed4_flag'
]
=
1
;
$log
.=
"<span class='yellow'>「种火IV」使
{
$pd
[
'nm'
]
}
受到的所有伤害变为0!</span><br>"
;
}
# 「种火III」效果判定:
elseif
(
isset
(
$pd
[
'skill_fireseed3'
]))
{
// 将伤害设为1的特殊处理
$pd
[
'fireseed3_flag'
]
=
1
;
$log
.=
"<span class='yellow'>「种火III」使
{
$pd
[
'nm'
]
}
受到的最终伤害变为1!</span><br>"
;
}
# 「强袭」效果判定:
if
(
isset
(
$pa
[
'bskill_c2_raiding'
]))
{
...
...
@@ -1827,7 +1858,7 @@ namespace revattr
if
(
$pd
[
'type'
]
==
89
&&
(
$pd
[
'name'
]
==
'高中生·白神'
||
$pd
[
'name'
]
==
'白神·讨价还价'
))
{
$p
=
attr_extra_89_bookworm
(
$pa
,
$pd
,
$active
,
'defend'
);
if
(
$p
>
0
)
$fin_dmg_p
[]
=
$p
;
if
(
$p
>
0
)
$fin_dmg_p
[]
=
$p
;
}
# 「莹心」pa效果判定:
...
...
@@ -1892,6 +1923,19 @@ namespace revattr
{
global
$log
,
$plsinfo
,
$now
;
# 「种火IV」效果判定:
if
(
isset
(
$pd
[
'fireseed4_flag'
]))
{
$fin_dmg
=
0
;
return
$fin_dmg
;
}
# 「种火III」效果判定:
if
(
isset
(
$pd
[
'fireseed3_flag'
]))
{
$fin_dmg
=
1
;
return
$fin_dmg
;
}
# 「量心」效果判定 手加减:
if
(
isset
(
$pa
[
'askill_c19_dispel'
])
&&
$fin_dmg
>=
$pd
[
'hp'
])
{
...
...
@@ -1910,7 +1954,7 @@ namespace revattr
$log
.=
"闷棍对体力不支的
{
$pd
[
'nm'
]
}
造成了<span class=
\"
yellow
\"
>
{
$sk_dmg
}
</span>点额外伤害!<br>"
;
$fin_dmg
+=
$sk_dmg
;
}
else
else
{
$log
.=
"闷棍没有造成额外伤害!<br>"
;
}
...
...
@@ -1948,14 +1992,14 @@ namespace revattr
$esum
=
0
;
$ssum
=
0
;
$sk_tot
=
''
;
if
(
!
isset
(
$data
))
{
global
$pdata
;
$data
=
&
$pdata
;
}
extract
(
$data
,
EXTR_REFS
);
//引爆身上的全部代码片段,并记录效耐和与属性
$log
.=
"
{
$pa
[
'nm'
]
}
引爆了身上所有的代码片段!<br>"
;
foreach
(
array
(
1
,
2
,
3
,
4
,
5
,
6
)
as
$item_position
)
...
...
@@ -1973,7 +2017,7 @@ namespace revattr
}
}
//对双方造成等同于这些片段上的异常状态
global
$ex_inf
,
$exdmginf
;
global
$ex_inf
,
$exdmginf
;
$ex_inf_arr
=
''
;
for
(
$i
=
0
;
$i
<
mb_strlen
(
$sk_tot
);
$i
++
)
{
...
...
@@ -1983,8 +2027,8 @@ namespace revattr
get_inf_rev
(
$pd
,
$ex_inf
[
$sk_tot
[
$i
]]);
$log
.=
"<span class='yellow'>爆炸的代码片段使双方
{
$exdmginf
[
$ex_inf
[
$sk_tot
[
$i
]]]
}
了!</span><br>"
;
}
}
}
//特定系数:耐久和100以下是0.2,500以上是0.4,2500以上是0.6,10000以上是1.0,30000以上是2.0
if
(
$ssum
<
100
)
$s_factor
=
0.2
;
elseif
(
$ssum
<
500
)
$s_factor
=
0.3
;
...
...
@@ -1992,18 +2036,18 @@ namespace revattr
elseif
(
$ssum
<
10000
)
$s_factor
=
0.6
;
elseif
(
$ssum
<
30000
)
$s_factor
=
1.0
;
else
$s_factor
=
2.0
;
//对双方造成等同于这些片段上的效果和除以特定系数的额外伤害
if
(
$esum
==
0
)
$blaster_dmg
=
1
;
else
$blaster_dmg
=
(
int
)(
$esum
/
$s_factor
);
$pa
[
'hp'
]
-=
$blaster_dmg
;
if
(
$pa
[
'hp'
]
<=
0
)
{
$pa
[
'hp'
]
=
0
;
$pa
[
'hp'
]
=
0
;
include_once
GAME_ROOT
.
'./include/state.func.php'
;
death
(
'club21_blaster'
);
}
//每受到100点伤害就随机炸伤对手身上一个部位
$hurt_times
=
min
(
floor
(
$blaster_dmg
/
$dmgrate
),
4
);
$hurts
=
array
(
'b'
,
'h'
,
'a'
,
'f'
);
...
...
@@ -2021,7 +2065,7 @@ namespace revattr
$log
.=
"<span class=
\"
yellow
\"
>爆炸的代码片段使
{
$pd
[
'nm'
]
}{
$exdmginf
[
$hurts
[
$key
]]
}
了!</span><br>"
;
}
}
$log
.=
"<span class=
\"
yellow
\"
>爆炸的代码片段对双方造成了<span class=
\"
red
\"
>
$blaster_dmg
</span>点额外伤害!</span><br>"
;
$fin_dmg
+=
$blaster_dmg
;
}
...
...
@@ -2035,14 +2079,14 @@ namespace revattr
# 「暗杀」效果判定
if
(
isset
(
$pa
[
'skill_buff_assassin'
]))
$obbs
+=
get_skillvars
(
'buff_assassin'
,
'pdefbkr'
);
if
(
$dice
>
$obbs
)
if
(
$dice
>
$obbs
)
{
//贯穿与破格同时生效时 穿透伤害制御
if
(
isset
(
$pa
[
'ex_pierce_flag'
])
&&
isset
(
$pa
[
'pierce_flag'
]))
{
$log
.=
"<span class='gold'>
{
$pa
[
'nm'
]
}
凌厉的攻势直接突破了
{
$pd
[
'nm'
]
}
的伤害限制!</span><br>"
;
}
else
else
{
#「脉冲」效果判定:
if
(
isset
(
$pa
[
'bskill_c7_emp'
])
||
isset
(
$pd
[
'bskill_c7_emp'
]))
...
...
@@ -2073,7 +2117,7 @@ namespace revattr
$fin_dmg
+=
$rp_dmg
;
$log
.=
"<span class=
\"
yellow
\"
>在「祛障」的作用下,
{
$pd
[
'nm'
]
}
受到了<span class=
\"
red
\"
>
$rp_dmg
</span>点额外伤害。</span><br>"
;
}
else
else
{
$min_rp
=
get_skillvars
(
'c19_redeem'
,
'rpmin'
);
$move_rp
=
max
(
$min_rp
,
$pd
[
'rp'
]);
...
...
@@ -2085,7 +2129,7 @@ namespace revattr
# 「狂怒」效果判定:
if
(
isset
(
$pa
[
'bskill_c12_rage'
]))
{
$sk_dmg
=
round
(
$pa
[
'mhp'
]
*
0.25
);
$sk_dmg
=
round
(
$pa
[
'mhp'
]
*
0.25
);
$pa
[
'hp'
]
-=
$sk_dmg
;
$sk_vars
=
get_skillvars
(
'c12_enmity'
,
'findmgr'
,
get_skilllvl
(
'c12_enmity'
,
$pa
))
*
calc_enmity_losshpr
(
$pa
,
$pd
);
if
(
$sk_vars
>
1
)
$sk_dmg
=
round
(
$sk_dmg
*
(
1
+
(
$sk_vars
/
100
)));
...
...
@@ -2103,7 +2147,7 @@ namespace revattr
$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'
]))
...
...
@@ -2137,7 +2181,7 @@ namespace revattr
# 「灵俑」抵挡伤害判定
if
(
!
empty
(
$pd
[
'clbpara'
][
'zombieid'
]))
{
$mate_list
=
$pd
[
'clbpara'
][
'zombieid'
];
$mate_list
=
$pd
[
'clbpara'
][
'zombieid'
];
shuffle
(
$mate_list
);
foreach
(
$mate_list
as
$mid
)
{
...
...
@@ -2162,13 +2206,13 @@ namespace revattr
{
$sk
=
'c20_sparkle'
;
unset
(
$pa
[
'askill_c20_sparkle'
]);
$plslist
=
get_safe_plslist
();
$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
[
'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'
]
}
在千钧一发之际点燃了火花,传送到不知道哪去了!"
;
...
...
@@ -2230,7 +2274,7 @@ namespace revattr
global
$log
;
#计算反噬伤害:
if
(
$pa
[
'final_damage'
]
>=
1000
)
if
(
$pa
[
'final_damage'
]
>=
1000
)
{
if
(
$pa
[
'final_damage'
]
<
2000
)
{
$hp_d
=
floor
(
$pa
[
'hp'
]
/
2
);
...
...
@@ -2239,7 +2283,7 @@ namespace revattr
}
else
{
$hp_d
=
floor
(
$pa
[
'hp'
]
*
4
/
5
);
}
if
(
in_array
(
'H'
,
$pa
[
'ex_keys'
]))
if
(
in_array
(
'H'
,
$pa
[
'ex_keys'
]))
{
#「脉冲」效果判定:
if
(
isset
(
$pa
[
'bskill_c7_emp'
])
||
isset
(
$pd
[
'bskill_c7_emp'
]))
...
...
@@ -2279,10 +2323,10 @@ namespace revattr
}
//防守方(pd)在受到伤害后触发的事件
function
get_hurt_events
(
&
$pa
,
&
$pd
,
$active
)
function
get_hurt_events
(
&
$pa
,
&
$pd
,
$active
)
{
global
$log
,
$infinfo
,
$exdmginf
;
# pd存在防具受损况,在这里应用
if
(
!
empty
(
$pd
[
'armor_hurt'
]))
{
...
...
@@ -2301,7 +2345,7 @@ namespace revattr
# 将pa造成的伤害记录在pd的成就里
if
(
!
$pd
[
'type'
]
&&
$pa
[
'final_damage'
]
>=
1000000
)
$pd
[
'clbpara'
][
'achvars'
][
'takedmg'
]
=
$pa
[
'final_damage'
];
return
;
}
...
...
@@ -2313,8 +2357,8 @@ namespace revattr
if
(
strpos
(
$pa
[
'inf'
],
$infnm
)
===
false
)
{
$pa
[
'inf'
]
.=
$infnm
;
//$pa['combat_inf'] .= $infnm;
return
1
;
//$pa['combat_inf'] .= $infnm;
return
1
;
}
return
0
;
}
...
...
@@ -2335,8 +2379,8 @@ namespace revattr
if
(
strpos
(
$pa
[
'inf'
],
$infnm
)
!==
false
)
{
$pa
[
'inf'
]
=
str_replace
(
$infnm
,
""
,
$pa
[
'inf'
]);
//$pa['combat_inf'] .= $infnm;
return
1
;
//$pa['combat_inf'] .= $infnm;
return
1
;
}
return
0
;
}
...
...
@@ -2373,7 +2417,7 @@ namespace revattr
{
$pa
[
'clbpara'
][
'battle_turns'
]
=
0
;
}
else
else
{
$pa
[
'clbpara'
][
'battle_turns'
]
++
;
}
...
...
@@ -2381,7 +2425,7 @@ namespace revattr
{
$pd
[
'clbpara'
][
'battle_turns'
]
=
0
;
}
else
else
{
$pd
[
'clbpara'
][
'battle_turns'
]
++
;
}
...
...
include/game/setitems.func.php
0 → 100644
View file @
62247b43
<?php
if
(
!
defined
(
'IN_GAME'
))
exit
(
'Access Denied'
);
# 套装效果处理函数
# 处理套装效果
function
process_set_item_effects
(
&
$pa
)
{
global
$log
;
# 检查玩家是否有套装效果
if
(
empty
(
$pa
[
'clbpara'
][
'setitems'
]))
return
;
# 获取套装信息
$set_items_info
=
get_set_items_info
();
# 处理每个套装效果
foreach
(
$pa
[
'clbpara'
][
'setitems'
]
as
$sid
=>
$snums
)
{
# 检查套装件数是否达到激活条件
if
(
$snums
>=
$set_items_info
[
$sid
][
'active'
][
1
])
{
# 根据套装ID应用不同效果
switch
(
$sid
)
{
case
'fs2'
:
# 种火I套装
if
(
empty
(
$pa
[
'clbpara'
][
'skill'
])
||
!
in_array
(
'fireseed1'
,
$pa
[
'clbpara'
][
'skill'
]))
{
getclubskill
(
'fireseed1'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:获得技能「种火I」!</span><br>"
;
}
break
;
case
'fs3'
:
# 种火II套装
if
(
empty
(
$pa
[
'clbpara'
][
'skill'
])
||
!
in_array
(
'fireseed2'
,
$pa
[
'clbpara'
][
'skill'
]))
{
getclubskill
(
'fireseed2'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:获得技能「种火II」!</span><br>"
;
}
break
;
case
'fs4'
:
# 种火III套装
if
(
empty
(
$pa
[
'clbpara'
][
'skill'
])
||
!
in_array
(
'fireseed3'
,
$pa
[
'clbpara'
][
'skill'
]))
{
getclubskill
(
'fireseed3'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:获得技能「种火III」!</span><br>"
;
}
break
;
case
'fs5'
:
# 种火IV套装
if
(
empty
(
$pa
[
'clbpara'
][
'skill'
])
||
!
in_array
(
'fireseed4'
,
$pa
[
'clbpara'
][
'skill'
]))
{
getclubskill
(
'fireseed4'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:获得技能「种火IV」!</span><br>"
;
}
break
;
# 其他套装效果可以在这里添加
default
:
# 默认不做任何处理
break
;
}
}
else
{
# 套装件数不足,移除对应效果
switch
(
$sid
)
{
case
'fs2'
:
# 种火I套装
# 检查玩家是否有该技能,且该技能不是通过学习获得的
if
(
!
empty
(
$pa
[
'clbpara'
][
'skill'
])
&&
in_array
(
'fireseed1'
,
$pa
[
'clbpara'
][
'skill'
]))
{
# 移除技能
lostclubskill
(
'fireseed1'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>失去套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:技能「种火I」消失了!</span><br>"
;
}
break
;
case
'fs3'
:
# 种火II套装
if
(
!
empty
(
$pa
[
'clbpara'
][
'skill'
])
&&
in_array
(
'fireseed2'
,
$pa
[
'clbpara'
][
'skill'
]))
{
lostclubskill
(
'fireseed2'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>失去套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:技能「种火II」消失了!</span><br>"
;
}
break
;
case
'fs4'
:
# 种火III套装
if
(
!
empty
(
$pa
[
'clbpara'
][
'skill'
])
&&
in_array
(
'fireseed3'
,
$pa
[
'clbpara'
][
'skill'
]))
{
lostclubskill
(
'fireseed3'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>失去套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:技能「种火III」消失了!</span><br>"
;
}
break
;
case
'fs5'
:
# 种火IV套装
if
(
!
empty
(
$pa
[
'clbpara'
][
'skill'
])
&&
in_array
(
'fireseed4'
,
$pa
[
'clbpara'
][
'skill'
]))
{
lostclubskill
(
'fireseed4'
,
$pa
[
'clbpara'
]);
$log
.=
"<span class='yellow'>失去套装「
{
$set_items_info
[
$sid
][
'name'
]
}
」效果:技能「种火IV」消失了!</span><br>"
;
}
break
;
# 其他套装效果可以在这里添加
default
:
# 默认不做任何处理
break
;
}
}
}
}
?>
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