Complete remaining client gap features

This commit is contained in:
shenlei
2026-09-04 13:25:05 +09:00
parent 13ccb8d02d
commit 9a4a044da5
47 changed files with 6667 additions and 140 deletions
+9 -3
View File
@@ -39,12 +39,15 @@ const DUEL_START := 2
const STATE_KILLER := 1 << 3
const STATE_PARTY := 1 << 4
# _entity_kind 语义(net_play._entity_kind):0 PC / 1 NPC / 2 MONSTER / 3 STONE / 4 WARP
# _entity_kind 语义(net_play._entity_kind):0 PC / 1 NPC / 2 MONSTER / 3 STONE /
# 4 WARP / 5 BUILDING / 6 WOODEN_DOOR。
const KIND_PC := 0
const KIND_NPC := 1
const KIND_MONSTER := 2
const KIND_STONE := 3
const KIND_WARP := 4
const KIND_BUILDING := 5
const KIND_WOODEN_DOOR := 6
# --- alignment(善恶)---------------------------------------------------------
@@ -97,13 +100,16 @@ static func _is_enemy(e: Dictionary) -> bool:
static func _is_wooden_door(e: Dictionary) -> bool:
# CInstanceBase::IsWoodenDoorInstanceBase.cpp:2390
if _kind(e) == KIND_WOODEN_DOOR:
return true
var vnum := int(e.get("race", e.get("vnum", 0)))
return vnum == 13000 or (vnum >= 30111 and vnum <= 30119)
static func _is_building(e: Dictionary) -> bool:
# CInstanceBase::IsBuilding() = m_GraphicThingInstance.IsBuilding()。
# 建筑 / 城墙的 thing type 在本 POC 未单独下发(IsWall 的 race 白名单未随源码发布)→ seam
return bool(e.get("building", false))
# classic 的 bType / POC fixture 可直接给 kind;旧包仍可用 building 布尔字段
return bool(e.get("building", false)) or _kind(e) == KIND_BUILDING \
or _kind(e) == KIND_WOODEN_DOOR
# --- killer / party / empire / duel / pvp -----------------------------------