这些线索并不是单独出现的 pet 字符串,而是分散在地图实体、客户端结构、服务端结构、库存 UI、物品预览和文本提示等多个位置。 把它们放在一起看,未来CS2 的小鸡,似乎并不只是普通的地图环境动物,而是曾经可能被 Valve 纳入过一套更完整的“宠物 / 跟随 / 交易”框架之中。

这些说明:CS2 继承并重做了小鸡实体。 但可疑的不是这些,而是另一些更像“玩家宠物系统”的东西: petpopulation cs_pet_placement C_CSPetPlacement CCSPetPlacement Inventory item definition name: pet models/pets/egg_pristine.vmdl
普通小鸡只需要模型、AI、死亡特效。 但“宠物系统”会需要更多东西,比如: - 地图希望生成多少宠物 - 宠物和玩家有没有关系 - 宠物是不是一个库存物品 - 宠物是不是能被命名、装备、展示 - 宠物能不能预览 而以下这批文件,恰恰出现了很多这种迹象。

意思是:地图可以设置多少宠物数量。(当前是0) 这里命名不是chicken,而是pet population,这就很微妙。 V社如果只是想让地图里随机刷几只鸡,用 chicken 命名就够了。 但它用了 pet,就说明在代码层面,鸡可能被放进了一个更泛化的“宠物框架”里。

意思是:Hammer / 地图编辑器里存在一个 cs_pet_placement 实体,用来指定宠物放置位置。 这非常可疑。如果只是地图里这种普通环境鸡,V社完全可以只用 chicken 实体,或者直接用小鸡生成系统,不需要单独搞一个 cs_pet_placement。

所以第一层可以这样理解: CS2 并不只是有“小鸡实体”,而是额外保留了“宠物数量”和“宠物放置点”的概念。
在反编译 schema 里,有两个文件: DumpSource2/schemas/client/C_CSPetPlacement.h DumpSource2/schemas/server/CCSPetPlacement.h


虽然没有复杂字段,但还是暗藏玄机。 这说明 cs_pet_placement 不是 第一层 CSGO.FGD 里随便写的假东西。它在客户端和服务端 schema 里都有对应实体类。
我们换句话来说: - 地图编辑器有 cs_pet_placement - 客户端知道 C_CSPetPlacement - 服务端也知道 CCSPetPlacement
这就是一条互相对应的证据链。
证据等级:强。 但注意,它只证明“宠物放置实体存在”,不证明“宠物系统已经能完整运行”。
在客户端和服务端的 cmapInfo.h 里,都有这个字段:

这说明 petpopulation 不是单纯给 Hammer 看的描述,而是会进入地图信息结构里。
你可以把它理解成: - 地图作者可以告诉游戏:这张图希望有多少宠物。 - 游戏客户端和服务端的数据结构里,也确实预留了这个字段来接收它。
证据等级:强。 这比普通字符串强很多。
在 Protobufs/cstrike15_gcmessages.proto有一条很关键的线索

optional uint32 petindex = 19 这个很关键,因为它不是地图实体文件,而是 经济物品预览数据。
同一个数据块里通常会放物品预览的相关信息,比如贴纸、音乐、升级等级、实体索引等。这里出现 petindex,说明经济系统层面也认识某种“宠物索引”
但是这里要谨慎。petindex 只是一个字段,还不能说明宠物已经有完整道具系统。
证据等级:中 如果未来还能看到 petindex 继续变化,那这个证据会升级。
panorama/scripts/common/iteminfo.js 里有一句非常重要:

这段逻辑的意思是:有些东西不是武器,但仍然是可装备的物品。
这里列了: flair0 徽章/装饰类 musickit 音乐盒 spray0 喷漆 customplayer 探员 pet 宠物
如果 pet 只是地图里的小鸡,那它不应该和音乐盒、喷漆、探员这种库存装备物品放在一起。
同一个文件里还有:

意思是:UI 会判断某个库存物品是不是 pet 类型。
这说明 UI 层曾经认真考虑过: 宠物 = 一种库存物品定义 宠物 = 可以像喷漆、音乐盒、探员一样被识别 宠物 = 可能有自己的物品图标或预览图
证据等级:中强。 但目前我没有在 items_game.txt 里看到完整的正式 pet 物品定义。这就是为什么我们不能说它一定会上线。
items/inventory_image_data.vdata 里有一个条目:

并且注意,下面配置了可用于库存物品预览的摄像机、灯光、物品位置等参数:

这说明 UI 资源里曾经为 pet(宠物) 这种物品类别准备过库存预览方式
可以这样理解: 如果宠物只是地图上的环境动物,那它根本就不需要库存预览参数。
但如果宠物是一个玩家可以拥有、可以查看、可以装备的物品,那就需要类似这样的库存渲染配置。
这个证据 和 第五层iteminfo.js 的 subslot === "pet" 是有关联的: iteminfo.js:识别宠物是可装备物品 inventory_image_data.vdata:给宠物准备库存预览参数 protobuf:经济预览数据里有 petindex
这三者放在一起,就很有意思。 证据等级:中强
有两个地方提到了: models/pets/egg_pristine.vmdl
一个在第一层csgo.fdg

另一个在:scripts/tools/anim_preview_archetypes.vdata

这个非常像一套“蛋”的世界模型和第一人称预览模型配置。 但是我这里只见到配置文件引用,并没找到完整模型资源
包括在我最新一期b站视频,片段末有提到捏鸡蛋动画:

所有这一层证据,也是一套完整的链。 证据等级:中强
这里再补充几张,有关抚摸小鸡、抱小鸡的检视动画:



我觉得有二种可能,从保守到大胆
地图设置 petpopulation 地图放置 cs_pet_placement 游戏按地图配置生成小鸡/宠物
这不一定是玩家可拥有的宠物,可能只是更灵活地控制地图动物。
目前证据还不够完整。 以上证据看起来像是玩家可以拥有一个宠物,并在某些 UI 场景展示。
但反证是: 没有完整 pet item definition 没有宠物商城 没有明确宠物模型列表 没有完整 models 资源进入索引