当前位置: 首页 > news >正文

不可见系统(Invisibility)

工作原理

Invisibility系统基于两种类型实现:

  1. InvisibilityType:定义不同类型的隐身效果
  2. StealthType:定义不同类型的潜行效果

系统通过Unit类中的m_invisibility和m_invisibilityDetect成员变量跟踪隐身和侦测状态。

实现逻辑

  1. 隐身类型(InvisibilityType)包括:

    • 通用隐身(INVISIBILITY_GENERAL)
    • 陷阱隐身(INVISIBILITY_TRAP)
    • 醉酒隐身(INVISIBILITY_DRUNK)
    • 任务特定隐身(INVISIBILITY_QUEST_ZONE_SPECIFIC_1-29)
  2. 潜行类型(StealthType)包括:

    • 通用潜行(STEALTH_GENERAL)
    • 陷阱潜行(STEALTH_TRAP)
  3. 核心处理函数:

    • HandleModInvisibility():处理隐身效果的添加和移除
    • HandleModInvisibilityDetect():处理隐身侦测效果的添加和移除
    • HandleModStealth():处理潜行效果的添加和移除
    • HandleModStealthDetect():处理潜行侦测效果的添加和移除
  4. 隐身状态管理:

    • 使用标志位跟踪当前激活的隐身类型
    • 使用数值跟踪隐身强度
    • 通过UNIT_VIS_FLAGS_INVISIBLE和UNIT_VIS_FLAGS_STEALTHED标志控制可见性

使用场景

  1. 潜行技能:盗贼、德鲁伊等职业的潜行能力
  2. 隐身法术:法师的隐形术等
  3. 任务机制:需要隐身或潜行完成的任务目标
  4. 怪物技能:某些怪物的隐身或潜行能力
  5. 物品效果:提供隐身或侦测能力的装备

各种隐身类型与Creature的交互效果

1. 通用隐身 (INVISIBILITY_GENERAL)

这是最常见的隐身类型,法师的"隐形术"就属于此类。

交互效果:

  • 玩家/生物在通用隐身状态下,无法被未具备侦测能力的单位看见
  • 需要具备相应侦测能力才能发现隐身单位
  • 侦测能力不足时,无法攻击、施法或进行任何交互
  • 可以通过范围攻击击中(如AOE技能),但无法精确选择为目标
2. 陷阱隐身 (INVISIBILITY_TRAP)

主要用于陷阱类物体。

交互效果:

  • 通常只有特定单位(如猎人)可以侦测
  • 普通玩家和生物无法看见,除非靠近触发
  • 无法直接攻击或交互,但可能被范围攻击波及
3. 醉酒隐身 (INVISIBILITY_DRUNK)

用于醉酒状态相关效果。

交互效果:

  • 特殊类型的隐身,通常与玩家状态相关
  • 可能影响玩家的可见性,但不是完全隐身
4. 任务区域特定隐身 (INVISIBILITY_QUEST_ZONE_SPECIFIC_1-29)

这些隐身类型通常用于特定任务或区域效果。

交互效果:

  • 通常需要特定任务状态或区域条件才能侦测
  • 用于实现任务相关的隐藏机制
  • 无法被普通侦测手段发现

实际交互效果总结

对于每种隐身类型,玩家与Creature的交互效果:

  1. 看不见但可以被范围攻击击中

    • 当玩家或Creature处于隐身状态且未被侦测时,它们对其他单位是不可见的
    • 但是范围攻击(如AOE技能)仍可能影响到它们
    • 这是因为范围攻击不依赖视觉目标选择
  2. 无法直接攻击或交互

    • 无法通过常规方式选中隐身单位为目标
    • 无法进行右键点击交互
    • 无法进行普通攻击
  3. 需要相应侦测能力

    • 要能看见并攻击隐身单位,必须具备相应类型的侦测能力
    • 侦测能力值必须大于或等于隐身值
    • 有些NPC天生具备侦测特定类型隐身的能力
  4. 潜行单位的特殊性

    • 潜行单位在背后无法被看见
    • 距离过近可以直接被看见
    • 等级差会影响侦测能力

注意事项

  1. 隐身和侦测是相互对抗的系统,侦测值需要高于隐身值才能发现目标
  2. 不同类型的隐身需要对应的侦测类型才能发现
  3. 隐身状态下仍然可以通过特定机制被发现,如范围攻击、特定法术等
  4. 玩家进入隐身状态时会中断多数施法和攻击动作
  5. 隐身状态下的玩家不能进行大多数交互操作
http://www.dtcms.com/a/435546.html

相关文章:

  • 建设读书网站的意义黄冈网站推广平台
  • SpringAI-Alibaba 快速开始
  • 网站制作费用一览表自己怎么设计公主房
  • 西安网站建设缑阳建中文搜索引擎排名
  • 五种IO模型,同步IO和异步IO
  • 网站开发环境安装程序nodejs wordpress
  • wordpress跨站脚本攻击漏洞网站风格的表现形式
  • html个人网站怎么做搜狗推广管家
  • 【读书笔记】《Linux内核设计与实现》(第1章-第5章)
  • C++中继承的理解与应用
  • 深圳有哪些网站是做餐饮沙龙的如何进行网站制作
  • Linux基本使用(Ubuntu)
  • 张家港网站制作公司专业建网站 成都
  • 线性代数 · SVD | 几何本质、求解方法与应用
  • 网站建设 phpwordpress 文章参数
  • 网站建设ppt答辩安徽六安有哪些区县
  • 《操作系统真象还原》 第九章 第二部分
  • 网站开发服务器的选择wordpress自动添加视频
  • 外贸网站源码自己建站模板
  • 网站开发制作公司宁波商城网站开发设计
  • 做网站的主要内容公司图标设计logo
  • 郑州七彩网站建设公司网络架构设计方案
  • 408之二叉树(一)
  • 阳泉市住房保障和城乡建设管理局网站建设协会网站的公司
  • 【密码学实战】openHiTLS CRL命令行:证书吊销列表
  • 烟台网站建设方案报价国开行网站毕业申请怎么做
  • js中异步回调函数的执行机制与事件循环
  • 创造与魔法官方网站做自己喜欢的事购物商城起名
  • 自己搞网站建设企业网站更新什么内容
  • 解决一个C# 在Framework 4.5反序列化的问题