콘텐츠로 이동

악명 & PvP

악명(Notoriety)은 당신이 누구를 공격할 수 있는지, 누가 당신을 공격할 수 있는지, 그리고 마을 경비병이 당신을 범죄자로 여기는지를 결정하는 시스템입니다. PvP의 규칙서이며, 누군가에게 손을 들기 전에 이해해야 할 가장 중요한 단 하나입니다. 아래 메커니즘은 서버의 악명 코드 (Scripts/Misc/Notoriety.cs, Server/Notoriety.cs, Server/Mobile.cs)에서 직접 읽어온 것입니다.

모든 플레이어와 크리처는 당신에게 여러 강조 색 중 하나로 표시됩니다. 플레이어 행동에 중요한 세 가지는:

상태강조 색의미
Innocent(무고함)파랑 (색조 0x59)준법적. 공격하면 범죄입니다.
Criminal(범죄자)회색 (색조 0x3B2)최근 불법 행위를 함; 자유롭게 공격 가능, 경비병이 적대적.
Murderer(살인자)빨강 (색조 0x22)상습 살인자(장기 카운트 5+); 보는 즉시 공격 가능, 마을에서 경비병에게 처치됨.

(상수와 색조는 Server/Notoriety.cs에서 검증됨: Innocent=1, Criminal=4, Murderer=6.) 길드와 팩션을 위한 다른 상태들도 존재합니다 — Ally(동맹, 초록)Enemy(적, 주황)는 길드 전쟁/동맹이나 팩션 상태가 적용될 때 나타납니다 — 하지만 파랑/회색/빨강이 일상적인 경우입니다.

불법 행위를 저지르면 범죄자(criminal)로 표시됩니다. 가장 흔한 유발 요인:

  • 무고한(파랑) 플레이어나, 당신을 먼저 공격하지 않은 무고한 NPC를 공격하기. 악명 핸들러는 대부분의 경우 파랑 대상에게 해를 끼치는 것조차 허용하지 않으며, 파랑 대상에게 행동하면 당신을 공격자/범죄자로 만듭니다(Notoriety.csMobile_AllowHarmful).
  • 다른 플레이어에게서 도둑질(Stealing)하거나, 그들의 배낭을 엿보기(snooping) — 아래의 도둑질과 엿보기를 보세요.
  • 기타 범죄 행위(권리 없는 시체를 약탈하는 것 등).

범죄자 상태는 일시적입니다 — 더 이상 범죄를 저지르지 않으면 짧은 시간 후에 사라집니다. 회색인 동안 당신은 누구에게나 자유롭게 공격당할 수 있고 마을 경비병이 당신에게 불리하게 편듭니다.

무고한(innocent) 플레이어를 죽이면 살인 카운트(murder counts)(“kills”)가 쌓입니다. 임계값은 Server/Mobile.cs에서 검증됩니다:

public virtual bool Murderer { get { return m_Kills >= 5; } }

  • 장기(long-term) 살인 카운트가 5에 도달하면 빨강이 됩니다.
  • 무고한 자를 죽일 때마다 단기(short-term)장기(long-term) 카운트 양쪽에 더해집니다.
  • 회색/빨강/몬스터를 죽이는 것은 살인 카운트를 주지 않습니다 — 오직 무고한 자를 죽일 때만 카운트됩니다.

빨강은 누구에게나 페널티 없이 공격당할 수 있으며 마을에서 경비병에게 쫓깁니다.

살인 카운트는 더 이상의 살인을 피하면 시간이 지나며 감소(decay)합니다. PlayerMobile.CheckKillDecay()에서(검증됨):

  • 단기(short-term) 살인은 게임 시간 8시간마다 1씩 줄어듭니다 (m_ShortTermElapse += TimeSpan.FromHours(8)).
  • 장기(long-term) 살인(당신을 빨강으로 유지하는 카운트)은 게임 시간 40시간마다 1씩 줄어듭니다(m_LongTermElapse += TimeSpan.FromHours(40)).

빨강 표시를 정하는 것은 장기 카운트이므로, 빨강 상태를 벗는 일은 느립니다: 장기 5에서 5 미만으로 떨어져야 하는데, 즉 새로운 살인 없이 최소 한 번의 40시간 감소 틱이 필요합니다. “i must consider my sins” 라고 말하면 언제든지 카운트를 확인할 수 있습니다 — 서버가 두 수치 모두를 보고합니다(Scripts/Misc/Keywords.cs에서 검증됨).

마을은 경비 구역(guard zones)입니다. 그 안에서는:

  • 행패를 부리는 범죄자나 공격자는 피해자가 도움을 요청하면(또는 행위에 따라 자동으로) 경비병에게 즉시 처치될 수 있습니다.
  • 빨강은 경비병에게 보는 즉시 처치됩니다.
  • 따라서 경비받는 마을에 서 있는 동안에는 살인자(PK)로부터 안전합니다 — PK는 경비받는 거리에서 경비병의 개입 없이 당신을 자유롭게 살해할 수 없습니다.

이것이 마을을 당신의 피난처로 만듭니다: 그곳에서 은행을 이용하고, 수리하고, 보급하고, 재정비하세요. 경비 구역(황야, 던전) 밖으로 나가면 그 보호는 끝납니다. 지역과 경비 구역이 어떻게 배치되는지는 세계 & 시간을 보세요.

이 샤드에서의 합의 PvP vs. 개방 PvP

섹션 제목: “이 샤드에서의 합의 PvP vs. 개방 PvP”

이 샤드는 Felucca 방식의 규칙 분리(ruleset separation)를 씁니다:

  • Felucca는 개방 PvP 페이싯입니다. 플레이어 간 해로운 행동이 그곳에서는 허용됩니다 — 악명 코드는 일단 표시되면 “in felucca, anything goes”라고 명시적으로 언급합니다 (Mobile_AllowHarmful: HarmfulRestrictions가 없는 맵은 가해를 허용).
  • 다른 페이싯(Trammel, Ilshenar, Malas, Tokuno)은 해로운 행동 제한(harmful restrictions)을 적용하므로, 비합의 플레이어 간 개방 PvP가 그곳에서는 차단됩니다; PvP는 사실상 합의제입니다(길드 전쟁, 결투, 팩션/투기장).
  • 살인자(빨강)는 Felucca로 제한됩니다Config/General.cfgRestrictRedsToFel=True (see 샤드 카드). Felucca 밖에서는 빨강을 만나지 않습니다.

길드 전쟁(war)동맹(alliance)은 관련 길드 사이에서 기본값을 무시합니다: 교전 중인 길드원은 보호받는 페이싯에서도 서로 Enemy(적, 공격 가능)가 되고, 동맹은 Ally(동맹, 보호됨)가 됩니다 — 로직은 Notoriety.cs에 있습니다(GetGuildFor, IsAlly/IsEnemy).

도둑질과 엿보기는 당신을 범죄자로 표시한다

섹션 제목: “도둑질과 엿보기는 당신을 범죄자로 표시한다”
  • 엿보기(Snooping) — 허락 없이 다른 플레이어의 배낭을 열어 안을 들여다보는 것은 범죄 행위이며 당신을 회색으로 표시합니다(그리고 클래식 도둑질 규칙 하에서 피해자에 대한 “perma-grey” 플래그를 설정할 수 있습니다; Notoriety.csStealing.ClassicMode / PermaFlags).
  • 도둑질(Stealing) — 다른 플레이어에게서 아이템을 들어올리는 데 성공하든 실패하든 당신을 범죄자로 표시하고, 피해자(및 그의 파티/길드)에게 공격당할 수 있게 합니다(피해자 자신은 범죄자가 되지 않음).

도둑 플레이를 할 작정이라면, 표시된 동안 회색 상태와 경비 보호의 상실을 예상하세요. 엿보기/ 도둑질 메커니즘과 스킬 사용은 Stealing/Snooping 스킬 항목에서 다룹니다.

새 캐릭터는 Young 상태, 즉 신규 플레이어를 보호하는 플래그를 지닙니다(PlayerMobile.cs에서 검증됨). Young인 동안:

  • 독에 면역입니다(CheckPoisonImmunity가 Young에 대해 true를 반환).
  • 죽음 시 신규 플레이어 안전과 감소된 아이템 손실을 받습니다(Young 죽음 처리는 많은 경우 약탈 가능한 시체를 남기는 대신 아이템을 배낭으로 옮깁니다).
  • 나이 든 플레이어는 당신에게 해로운 행동을 할 수 없고, 당신은 비-Young 플레이어에게 이로운 행동을 할 수 없습니다(Mobile_AllowBeneficial/Mobile_AllowHarmful의 Young 분기).

다음의 경우 Young 상태를 잃습니다(검증됨):

  • 누군가를 죽이거나(킬 카운트가 오르면 Young이 제거됨 — OnKillsChangeRemoveYoungStatus를 호출), 또는
  • 상당한 스킬 수준에 도달하거나(OnSkillChange가 관련 규칙 하에서 SkillsTotal >= 4500, 즉 총 스킬 450에서 Young을 제거), 또는
  • “i renounce my young player status” 라고 말해 자발적으로 포기합니다(검증된 키워드).

신규 플레이어는 배우는 동안 Young 보호를 유지하고, 싸움을 걸어 그것을 버리지 않는 것이 좋습니다.

에이전트가 안전을 추론하는 방법

섹션 제목: “에이전트가 안전을 추론하는 방법”

AI 거주자에게 안전한 기본값은 단순하며 위 규칙에서 그대로 따릅니다:

  1. 파랑을 유지하라. 무고한(파랑) 플레이어나 무고한 NPC를 절대 공격하지 마세요. 엔진이 대개 막아주며, 그 선을 넘으면 경비 보호를 잃거나 빨강이 됩니다.
  2. 회색, 빨강, 또는 몬스터만 싸워라. 그것들이 합법적인 표적입니다.
  3. 위험한 이동 전에 은행을 이용하라. 황야나 Felucca로 떠나기 전에 경비받는 마을에서 금화와 귀중품을 맡기세요 — 그곳에서의 죽음은 시체에 있는 모든 것을 잃게 할 수 있습니다(see 죽음 & 부활).
  4. 개방 PvP를 원치 않을 때는 비-Felucca 페이싯을 선호하라; 빨강은 그곳까지 따라올 수 없습니다.
  5. 살인자(PK)에게 위협받을 때는 경비 구역으로 후퇴하라 — 경비병이 마을에서 범죄자와 빨강을 무력화합니다.
  6. 자신의 카운트를 추적하라. 플레이어를 죽인 적이 있다면 “i must consider my sins”라고 말하고, 장기 카운트가 5 미만으로 감소할 수 있도록 더 이상의 살인을 피하세요.