铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 1806|回复: 4

[其他] 贴一份pascal写的dnd人物定义源码

[复制链接]
发表于 2009-10-14 15:18 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
记住永远不是一个人在战斗

贴一段中AD&D2定义部分,注释是我当年苦心研究的结果(大概是四年前吧),是看了E文AD&D2版规则翻译的,还有些地方理解的不准确,现在已经没有这个激情了,放出来供大家参考下,我觉得还是有价值的。

unit HandBook2;

interface

// Step 1: Roll Ability Scores (chapter 1) 属性值
type

{ADND中每个角色拥有6项属性:力量,敏捷,体质,智力,感知和魅力。前三项反映角色的身体能力,后三项反映角
色的思维能力和个性(哎呀,这句不好) 这是六项属性的缩写,依次为STR,DEX,CON,INT,WIS,CHA}
  TAbility = (abStrength, abDexterity, abConstitution, abIntelligence, abWisdom, abCharisma);
  //属性值:力量STRENGTH  敏捷DEXTERITY  体质CONSTITUTION 智力INTELLIGENCE  感知WISDOM 魅力CHARISMA
  TAbilities = array[TAbility] of byte;

type
{力量衡量角色的肌肉力量,耐久力和精力。这是武士的主要属性因为武士们的身体必须足够强壮来穿戴盔甲和挥舞
重武器。一个力量在16以上的战士拥有10%的经验奖励。拥有18点力量的武士可以再投1D100来决定额外的力量。
这能增强他的命中和伤害能力、不受负重惩罚的允许背负重量、破门或类似行为的成功率}
  TStrengthAdj = record
    Score: byte; //属性值
    HitProb: shortint; // Hit Probability  攻击修正 理解为命中
//攻击修正可以对1D20的攻击骰进行加减值。加值使得敌人更容易被击中,减值则使敌人难以被打中

    DmgAdj: shortint; // Damage Adjustment 伤害修正
{伤害修正也在战斗中被使用,根据列表查看攻击伤害值(无论如何一次成功的攻击至少造成1伤害)。举例说,一把
短剑一般造成1D6点伤害。一个具有17的力量的人打出的伤害值为2到7。伤害修正也对远程武器起作用,不过弓使用
特殊的修正,而力量对弩的使用无修正。}

    Weight: word; // Weight Allowance 允许负重
//允许负重是一个角色可以在无负重惩罚下最多能背负的物品重量,这些重量以磅计算

    Press: word; // Maximum Press 最大负重
{最大负重是一个角色最多能举起的物品重量,一个角色在这种情况下寸步难移。非类人且非人类生物(没有额外力量)
可以举起它身体两倍重量的重物。1987年的世界举重挺举纪录为465磅。一个具有18/00力量的人类英雄可以举起480磅
物体而且可以支撑很长一段时间}

    Doors: byte; // Open Doors (heavy or stuck door)  破门能力
{破门能力反映一个角色强行开门的能力,当一个角色试图破门时,投1D20,如果结果不高于列表中数字,门会开。
一个角色可以一直试图破门,直到它被打开 ,但每次都需要时间而且会制造大量噪音。}

    Locked: byte; // Open Doors (locked, barred, or magically held door)  开锁检定
{括号中的是投(1D20)的打开锁着的,阻塞的或者被法术封闭的门的几率。但每个门只能被同一角色尝试一次,
如果失败的话以后也无法成功。}

    Bend: byte; { % } // Bend Bars/Lift Gates  弯曲铁棒和举门能力
{弯曲铁棒和举门能力是角色折断普通铁棒,举起门或类似需要力量的行动的成功百分比几率。当角色做尝试时,
投1D100。如果点数不高于列表1中数字,那么角色的行为可以成功。如果失败那么继续尝试也徒劳无益}

  end;

const
  StrengthAdjs: array[0..18] of TStrengthAdj = (
    (Score: 1; HitProb: - 5; DmgAdj: - 4; Weight: 1; Press: 3; Doors: 1; Locked: 0; Bend: 0),
    (Score: 2; HitProb: - 3; DmgAdj: - 2; Weight: 1; Press: 5; Doors: 1; Locked: 0; Bend: 0),
    (Score: 3; HitProb: - 3; DmgAdj: - 1; Weight: 5; Press: 10; Doors: 2; Locked: 0; Bend: 0),
    (Score: 4; HitProb: - 2; DmgAdj: - 1; Weight: 10; Press: 25; Doors: 3; Locked: 0; Bend: 0),
    (Score: 6; HitProb: - 1; DmgAdj: 0; Weight: 20; Press: 55; Doors: 4; Locked: 0; Bend: 0),
    (Score: 8; HitProb: 0; DmgAdj: 0; Weight: 35; Press: 90; Doors: 5; Locked: 0; Bend: 1),
    (Score: 10; HitProb: 0; DmgAdj: 0; Weight: 40; Press: 115; Doors: 6; Locked: 0; Bend: 2),
    (Score: 12; HitProb: 0; DmgAdj: 0; Weight: 45; Press: 140; Doors: 7; Locked: 0; Bend: 4),
    (Score: 14; HitProb: 0; DmgAdj: 0; Weight: 55; Press: 170; Doors: 8; Locked: 0; Bend: 7),
    (Score: 16; HitProb: 0; DmgAdj: + 1; Weight: 70; Press: 195; Doors: 9; Locked: 0; Bend: 10),
    (Score: 17; HitProb: + 1; DmgAdj: + 1; Weight: 85; Press: 220; Doors: 10; Locked: 0; Bend: 13),
    (Score: 18; HitProb: + 1; DmgAdj: + 2; Weight: 110; Press: 255; Doors: 11; Locked: 0; Bend: 16),
// Hill Giant   山丘巨人 怪物
    (Score: 19; HitProb: + 3; DmgAdj: + 7; Weight: 485; Press: 640; Doors: 16; Locked: 8; Bend: 50),
// Stone Giant  石巨人
    (Score: 20; HitProb: + 3; DmgAdj: + 8; Weight: 535; Press: 700; Doors: 17; Locked: 10; Bend: 60),
// Frost Giant  霜巨人
    (Score: 21; HitProb: + 4; DmgAdj: + 9; Weight: 635; Press: 810; Doors: 17; Locked: 12; Bend: 70),
// Fire Giant   火巨人
    (Score: 22; HitProb: + 4; DmgAdj: + 10; Weight: 785; Press: 970; Doors: 18; Locked: 14; Bend: 80),
// Cloud Giant  云巨人
    (Score: 23; HitProb: + 5; DmgAdj: + 11; Weight: 935; Press: 1130; Doors: 18; Locked: 16; Bend: 90),
// Storm Giant  风暴巨人
    (Score: 24; HitProb: + 6; DmgAdj: + 12; Weight: 1235; Press: 1440; Doors: 19; Locked: 17; Bend: 95),
// Titan        泰坦
    (Score: 25; HitProb: + 7; DmgAdj: + 14; Weight: 1535; Press: 1750; Doors: 19; Locked: 18; Bend: 99)
    );

  ExStrengthAdjs: array[0..4] of TStrengthAdj = (
    (Score: 01; HitProb: + 1; DmgAdj: + 3; Weight: 135; Press: 280; Doors: 12; Locked: 0; Bend: 20),
    (Score: 51; HitProb: + 2; DmgAdj: + 3; Weight: 160; Press: 305; Doors: 13; Locked: 0; Bend: 25),
    (Score: 76; HitProb: + 2; DmgAdj: + 4; Weight: 185; Press: 330; Doors: 14; Locked: 0; Bend: 30),
    (Score: 91; HitProb: + 2; DmgAdj: + 5; Weight: 235; Press: 380; Doors: 15; Locked: 3; Bend: 35),
    (Score: 100; HitProb: + 3; DmgAdj: + 6; Weight: 335; Press: 480; Doors: 16; Locked: 6; Bend: 40)
    );

{
Table 1:
Strength

Ability Hit Dmg. WeightMax. Open Bend Bars/
Score Prob. Adj. Allow. Press Doors Lift Gates Notes
1    -5   -4   1       3     1 0%
2 -3 -2 1 5 1 0%
3 -3 -1 5 10 2 0%
4-5 -2 -1 10 25 3 0%
6-7 -1 None 20 55 4 0%
8-9 Normal None 35 90 5 1%
10-11 Normal None 40 115 6 2%
12-13 Normal None 45 140 7 4%
14-15 Normal None 55 170 8 7%
16 Normal +1 70 195 9 10%
17 +1 +1 85 220 10 13%
18 +1 +2 110 255 11 16%
18/01-50 +1 +3 135 280 12 20%
18/51-75 +2 +3 160 305 13 25%
18/76-90 +2 +4 185 330 14 30%
18/91-99 +2 +5 235 380 15(3) 35%
18/00 +3 +6 335 480 16(6) 40%
19 +3 +7 485 640 16(8) 50% Hill Giant
20 +3 +8 535 700 17(10) 60% Stone Giant
21 +4 +9 635 810 17(12) 70% Frost Giant
22 +4 +10 785 970 18(14) 80% Fire Giant
23 +5 +11 935 1,130 18(16) 90% Cloud Giant
24 +6 +12 1,235 1,440 19(17) 95% Storm Giant
25 +7 +14 1,535 1,750 19(18) 99% Titan

}

type
{敏捷主要指手-眼配合能力,灵敏度,反应速度,反射和平衡能力,敏捷影响角色对危险或者突然状况的反应能力,远程
武器的命中率,以及他躲避敌人攻击的能力.这是浪人的主要属性并且影响他们的职业技能.一个具有16点以上敏捷的
浪人可以多获得10%经验}

  TDexterityAdj = record
    Score: byte;
    Reaction: ShortInt; // Reaction Adjustment  反应修正
//反应修正影响投骰决定一个角色在遭遇并未预料到的NPC时是否会大吃一惊的结果.数字越大越难被NPC吓到

    Missile: ShortInt; // Missile Attack Adjustment 远程攻击修正
//远程攻击修正是用来调整一个角色在使用远程武器时的投骰结果.数字越大角色对远程武器的使用更得心应手

    Defense: ShortInt; // Defensive Adjustment  防御修正
{防御修正影响角色对可被闪避的攻击(比如说闪电)的豁免,同时它也对角色的防御等级起作用,影响他闪避普通箭矢
和武器的能力.比如Rath穿着链甲,这时他的防御等级是5.如果他的敏捷是16,那他的防御等级就要-2,变成3,使他更
难被击中.如果敏捷是5,那么他的防御等级就要+2变为7,使他更容易挨揍.(在某些情况下,敏捷对防御等级的修正不
起作用,通常是在角色被从背后偷袭或者他的移动被限制,像是在攀爬绳子)}

  end;

const
  DesterityAdjs: array[0..15] of TDexterityAdj = (
    (Score: 1; Reaction: - 6; Missile: - 6; Defense: + 5),
    (Score: 2; Reaction: - 4; Missile: - 4; Defense: + 5),
    (Score: 3; Reaction: - 3; Missile: - 3; Defense: + 4),
    (Score: 4; Reaction: - 2; Missile: - 2; Defense: + 3),
    (Score: 5; Reaction: - 1; Missile: - 1; Defense: + 2),
    (Score: 6; Reaction: 0; Missile: 0; Defense: + 1),
    (Score: 7; Reaction: 0; Missile: 0; Defense: 0),
    (Score: 8; Reaction: 0; Missile: 0; Defense: 0),
    (Score: 15; Reaction: 0; Missile: 0; Defense: - 1),
    (Score: 16; Reaction: + 1; Missile: + 1; Defense: - 2),
    (Score: 17; Reaction: + 2; Missile: + 2; Defense: - 3),
    (Score: 18; Reaction: + 2; Missile: + 2; Defense: - 4),
    (Score: 19; Reaction: + 3; Missile: + 3; Defense: - 4),
    (Score: 20; Reaction: + 3; Missile: + 3; Defense: - 4),
    (Score: 21; Reaction: + 4; Missile: + 4; Defense: - 5),
    (Score: 24; Reaction: + 5; Missile: + 5; Defense: - 6)
    );

type

{一个角色的体质反映他的身体强壮度,适应性能力,健康状况和对伤害疾病的抵抗能力。这项属性影响角色的HP
和遭受可怕的打击后幸存的几率(比如说被法术改变外形或是复活)。它对所有属性都很重要。一些职业对体质
有最低要求。
一个角色的初始体质点数对角色被复活的次数起限制作用。每次复活都会造成角色的体质损失(一点)。法术可
以恢复体质点数,甚至使它比原来更高。但是折兑一个角色被复活的次数没有影响,一旦角色的初始属性点数耗光,
除了“神圣干涉”(汗,用的英雄无敌里的翻译方式)就没有方法让他复活。而且“神圣干涉”只为最勇敢和虔诚
的英雄准备。举例说,Rath的体质点数在冒险开始时是12,他可以被复活12次。如果他挂了13次,那么他再不能被
复活或者强力复活(就是CRPG里常见的了~前面的复活也包括这两个) }

  TConstitutionAdj = record

    HitPoint: ShortInt; // Hit Point Adjustment    HP  生命值修正
{生命值修正是对每个角色生命骰的加/减值。然而,生命骰无论如何是不可能低于1的。如果修正使得数字低于0,
那么最后结果取1。衡量时是使用角色的当前的体质 只有武士能具有3或4的体质加值。非武士类职业的体质即使
有17或18也只有+2的加值。当一个角色达到10级时(武士和祭司则是9)体质加值就不起作用了。无论是体质加值
还是生命骰都对生命值增长不起作用(见第三章的职业描述)如果角色的体质点数在冒险中改变了,他的生命值
将根据改变做调整。角色当前的生命奖惩值与新的值间的差将乘上角色的等级(10级为止)。然后来调整角色的
总生命值。如果Delsenora的体质由16变成17,她将获得每级1点生命值的奖励。到10级为止。}

    MinDice: byte;  //最小骰子
    Shock: byte; // System Shock
{决定角色对变形或使身体老化的法术的抵抗能力;比如石化(或者解除石化),变形,法术导致的衰老等等。它
也被用来决定角色在某些特定的艰难处境下能否保持清醒。举例说,一个邪恶的法师对他的雇工施展变形奶牛的
法术。这个被雇佣者有13点体质,具有85%的几率避免被变形。假定他没挂,他必须再次成功投骰来他变回原形,
否则他会死亡(这段怪怪的。。。) }   


    Resu: byte; // Resurrection Survival  复活的成功率
{复活成功率表列出了角色被复活术或强力复活术复活成功的几率。一个角色必须投出不高于表上对应数字的点数
才能复活。否则他将会死去,不考虑他曾被复活多少次。只有“神圣干涉”可以将这类角色复生。}

    Poison: ShortInt; // Poison Save 毒素豁免修正
{毒素豁免修正影响人类,精灵,侏儒,半精灵的对毒素的豁免。矮人和半身人不使用这个修正值,因为他们对毒素
攻击有特定的抵抗能力。DM具有关于特别的豁免修正的信息}

    Regener: byte; // Regeneration (turns for 1 bit point, 0=never) 再生能力
{再生能力使那些具有特别的体质加值的角色(许愿术或者魔法装备的影响)能用更快的速度自我康复。角色在列表
中的对应的轮数内可以恢复一点生命值。然而火或者酸伤害无法靠再生来恢复,这些伤害只有靠自然康复或法术来治疗}
  end;

const
  ConstitutionsAdjs: array[1..25] of TConstitutionAdj = (
  { 1}(HitPoint: - 3; MinDice: 1; Shock: 25; Resu: 30; Poison: - 2; Regener: 0),
  { 2}(HitPoint: - 2; MinDice: 1; Shock: 30; Resu: 40; Poison: - 1; Regener: 0),
  { 3}(HitPoint: - 2; MinDice: 1; Shock: 35; Resu: 40; Poison: 0; Regener: 0),
  { 4}(HitPoint: - 1; MinDice: 1; Shock: 40; Resu: 45; Poison: 0; Regener: 0),
  { 5}(HitPoint: - 1; MinDice: 1; Shock: 45; Resu: 50; Poison: 0; Regener: 0),
  { 6}(HitPoint: - 1; MinDice: 1; Shock: 50; Resu: 55; Poison: 0; Regener: 0),
  { 7}(HitPoint: 0; MinDice: 1; Shock: 55; Resu: 60; Poison: 0; Regener: 0),
  { 8}(HitPoint: 0; MinDice: 1; Shock: 60; Resu: 65; Poison: 0; Regener: 0),
  { 9}(HitPoint: 0; MinDice: 1; Shock: 65; Resu: 70; Poison: 0; Regener: 0),
  {10}(HitPoint: 0; MinDice: 1; Shock: 70; Resu: 75; Poison: 0; Regener: 0),
  {11}(HitPoint: 0; MinDice: 1; Shock: 75; Resu: 80; Poison: 0; Regener: 0),
  {12}(HitPoint: 0; MinDice: 1; Shock: 80; Resu: 85; Poison: 0; Regener: 0),
  {13}(HitPoint: 0; MinDice: 1; Shock: 85; Resu: 90; Poison: 0; Regener: 0),
  {14}(HitPoint: 0; MinDice: 1; Shock: 88; Resu: 92; Poison: 0; Regener: 0),
  {15}(HitPoint: + 1; MinDice: 1; Shock: 90; Resu: 94; Poison: 0; Regener: 0),
  {16}(HitPoint: + 2; MinDice: 1; Shock: 95; Resu: 96; Poison: 0; Regener: 0),
// HitPoint +2 for non-fighters
  {17}(HitPoint: + 3; MinDice: 1; Shock: 97; Resu: 98; Poison: 0; Regener: 0),
  {18}(HitPoint: + 4; MinDice: 1; Shock: 99; Resu: 100; Poison: 0; Regener: 0),
  {19}(HitPoint: + 5; MinDice: 1; Shock: 99; Resu: 100; Poison: 1; Regener: 0),
// All 1s rolled for Hit Dice are automatically considered 2s.
  {20}(HitPoint: + 5; MinDice: 2; Shock: 99; Resu: 100; Poison: 1; Regener: 6),
// All 1s and 2s rolled for Hit Dice are automatically considered 3s.
  {21}(HitPoint: + 6; MinDice: 3; Shock: 99; Resu: 100; Poison: 2; Regener: 5),
  {22}(HitPoint: + 6; MinDice: 3; Shock: 99; Resu: 100; Poison: 2; Regener: 4),
// All 1s, 2s, and 3s rolled for Hit Dice are automatically considered 4s.
  {23}(HitPoint: + 6; MinDice: 4; Shock: 99; Resu: 100; Poison: 3; Regener: 3),
  {24}(HitPoint: + 7; MinDice: 4; Shock: 99; Resu: 100; Poison: 3; Regener: 2),
  {25}(HitPoint: + 7; MinDice: 4; Shock: 99; Resu: 100; Poison: 4; Regener: 1)
    );

type
{智力反映角色的记忆,推理和学习能力,以及一些字面上不方便表达的东西。智力影响角色可以学习的语言种类。
智力对法师而言是最重要的属性,因为他们必须集中精神去理解并记忆奥术。具有16点以上记忆的法师有10%的经验
奖励。法师的智力决定他可以学习多少奥术以及他可以记忆多少奥术。只有智力超群的人才可以理解威力无比的9级
奥术。
这个能力对角色的思维敏锐程度的只有一个普遍的影响(呸,肯定翻译的不通)。一个猪头的角色(INT3~4)可以
交谈(有困难)而且反应迟钝不连贯(我。。。那个同学啊)他如果由一个PC来扮演的话不会有太多问题,但是如
何扮演好这么一个角色很困难。一个低智力(5~7)也可以被成为弱智或反应迟钝。一个聪明的角色(11~12)可以
轻松地学习,接受新事物。一个高智商的角色(13~14)可以毫无困难地解决许多难题。一个非常聪明的角色非常
引人注目。而一个天才就是非常杰出,聪明绝顶的了(17~18)。如果一个角色的智力超过天才级,那么他的潜力
无法想象。然而。实际的思维的力量并不等于IQ、智力属性或别的类似的东西。许多非常聪明,甚至可以说是天才
的人在真实世界中无法创造性和实用性地运用他的智商。而且这都是些错误。不要过于依赖你的角色的智力电水,
你应该给你的角色提供创造性的思维和动力。}

  TIntelligenceAdj = record
    Score: byte;
    Lang: byte; // Number of Languages  可学习语言列表
{可学习语言列表列举了角色在他的母语外可学习的语言。每个角色都可以讲他的母语而不考虑他的智力,但这仅仅
包括口语,而不包括阅读和书写能力。 DM必须决定你角色在开始冒险时是否通晓其它的语言以及你的角色可以学习
的外语的数量。第一个选择将会使交流更加轻松,而第二次选择将增加你“RP”的机会(找个私人教师或是别的什么
原因使你学会了某种外语)。更进一不,DM可以根据他的战役背景限制你可学习的语言种类。如果你的战士来自冰冻
的废土那么他不通晓南方语言是很正常的,因为他根本没见过什么南方人嘛!
如果DM允许角色拥有技能选择,智力也影响角色的额外技能空格数。一个角色不需要用任何技能空格来学习他的母语}


    Spell: byte; // Spell Level   奥术等级
{奥术等级列表列出了最高可施展的奥术等级与法师的智力的关系}

    Learn: byte; // Chance to Learn Spell  奥术学习成功率
{奥术学习成功率是一个法师学习特定的奥术的成功几率。当法师学习新的奥术时要做一个检定。法师必须拥有一本
魔法书来记载这个法术。如果角色投出不高于列表中的数字、他的角色将成功地学会奥术并切将它记录在书中。如果
他学习失败,那么只有等他升级只后才能再做对应那一个法术的检定(而且他必须还有学习的机会)  }

    SPL: byte; // Max # of Spells/Level       每个等级的最大法术数量(可选)
{这个数字决定法师每个等级的法术分别可以记忆多少。一个法师学习的奥术数量如果已达到上限,他将不能够再在
书中记录这个等级的其他法术(除非法术研究系统被选用)。一旦一个法术已学习过了,它将不能再被学习或者替
代比方说,法师Delsenora有14点智力,她现在学习了7个3级奥术。在冒险中,她在一个被遗忘的图书馆中找到一本
尘封的魔法书,从中发现了她从未见过的3级奥术。激动之余,她坐下来潜心研究那法术,她学会法术的几率是60%。
投骰的结果是37,她领悟了那怪异的文字并将它们记录在自己的树种。当她学完这法术时,她就只能再学习一个3级
奥术了。如果投骰结果是60或者她已经学习了9个3级奥术,或者那个奥术的等级高于7(她的智力不足以学习 7级奥
术)。她将无法学习那个奥术。}

    Illu: byte; // Illusion Immunity  幻术免疫
{那些具有极高(19+)智力的人拥有法术免疫能力。这些拥有法术免疫能力的人可以识破幻象,自动通过对幻术的
豁免。一个拥有20点智力的人能看破1、2级的幻术。}
  end;

const
  IntelligenceAdjs: array[0..18] of TIntelligenceAdj = (
    (Score: 1; Lang: 0; Spell: 0; Learn: 0; SPL: 0; Illu: 0),
    (Score: 2; Lang: 1; Spell: 0; Learn: 0; SPL: 0; Illu: 0),
    (Score: 9; Lang: 2; Spell: 4; Learn: 35; SPL: 6; Illu: 0),
    (Score: 10; Lang: 2; Spell: 5; Learn: 40; SPL: 7; Illu: 0),
    (Score: 11; Lang: 2; Spell: 5; Learn: 45; SPL: 7; Illu: 0),
    (Score: 12; Lang: 3; Spell: 6; Learn: 50; SPL: 7; Illu: 0),
    (Score: 13; Lang: 3; Spell: 6; Learn: 55; SPL: 9; Illu: 0),
    (Score: 14; Lang: 4; Spell: 7; Learn: 60; SPL: 9; Illu: 0),
    (Score: 15; Lang: 4; Spell: 7; Learn: 65; SPL: 11; Illu: 0),
    (Score: 16; Lang: 5; Spell: 8; Learn: 70; SPL: 11; Illu: 0),
    (Score: 17; Lang: 6; Spell: 8; Learn: 75; SPL: 14; Illu: 0),
    (Score: 18; Lang: 7; Spell: 9; Learn: 85; SPL: 18; Illu: 0),
    (Score: 19; Lang: 8; Spell: 9; Learn: 95; SPL: 255; Illu: 1),
    (Score: 20; Lang: 9; Spell: 9; Learn: 96; SPL: 255; Illu: 2),
    (Score: 21; Lang: 10; Spell: 9; Learn: 97; SPL: 255; Illu: 3),
    (Score: 22; Lang: 11; Spell: 9; Learn: 98; SPL: 255; Illu: 4),
    (Score: 23; Lang: 12; Spell: 9; Learn: 99; SPL: 255; Illu: 5),
    (Score: 24; Lang: 15; Spell: 9; Learn: 100; SPL: 255; Illu: 6),
    (Score: 25; Lang: 20; Spell: 9; Learn: 100; SPL: 255; Illu: 7)
    );

type
{感知反映角色的判断力,意志力,通常所说的感觉和直觉。它影响角色对法术攻击的抵抗力,是祭司的主要属性。
感知高于16点的祭司拥有10%经验奖励。牧师,德鲁伊或其他祭司类职业在感知超过13时拥有额外的记忆神术奖励。}

  TWisdomAdj = record
    MagicalDefense: ShortInt; //法术防御修正 Magical Defense Adjustment
{法术防御修正展示了对精神影响类法术(欺诈,魅惑,恐惧,催眠,幻象,附体等)的豁免。这些奖惩值将自动
被使用而无须考虑角色是否专注}

    SpellBonus: array[0..1] of byte;  //Bonus Spells 神术奖励
{神术奖励是祭司特有的因为高感知而获得的额外的神术记忆栏。只有祭司到达特定的级别时才会获得。神术奖励
是可计算的,一个有15点感知的祭司拥有2个1级神术和1个2级神术奖励}

    SpellFailure: byte; //法术失败率
{法术失败率是施放特定的法术时失败的百分比几率。低感知的祭司施放时失败几率很大。投骰结果不高于列表中
对应的数字时,法术施展后毫无效果。感知高于13的祭司不用担心这个}   
  end;

{注意:法术免疫Spell Immunity是那些具有极高(19+)的感知的角色拥有的对特定法术或类法术能力、魔法物品
的防护能力。这个值可计算,一个拥有23点感知的角色不受对列表中23点感知所对应免疫的法术的影响}

const
  WisdomAdjs: array[1..25] of TWisdomAdj = (
  { 1}(MagicalDefense: - 6; SpellBonus: (0, 0); SpellFailure: 80),
  { 2}(MagicalDefense: - 4; SpellBonus: (0, 0); SpellFailure: 60),
  { 3}(MagicalDefense: - 3; SpellBonus: (0, 0); SpellFailure: 50),
  { 4}(MagicalDefense: - 2; SpellBonus: (0, 0); SpellFailure: 45),
  { 5}(MagicalDefense: - 1; SpellBonus: (0, 0); SpellFailure: 40),
  { 6}(MagicalDefense: - 1; SpellBonus: (0, 0); SpellFailure: 35),
  { 7}(MagicalDefense: - 1; SpellBonus: (0, 0); SpellFailure: 30),
  { 8}(MagicalDefense: 0; SpellBonus: (0, 0); SpellFailure: 25),
  { 9}(MagicalDefense: 0; SpellBonus: (0, 0); SpellFailure: 20),
  {10}(MagicalDefense: 0; SpellBonus: (0, 0); SpellFailure: 15),
  {11}(MagicalDefense: 0; SpellBonus: (0, 0); SpellFailure: 10),
  {12}(MagicalDefense: 0; SpellBonus: (0, 0); SpellFailure: 5),
  {13}(MagicalDefense: 0; SpellBonus: (1, 0); SpellFailure: 0),
  {14}(MagicalDefense: 0; SpellBonus: (1, 0); SpellFailure: 0),
  {15}(MagicalDefense: + 1; SpellBonus: (2, 0); SpellFailure: 0),
  {16}(MagicalDefense: + 2; SpellBonus: (2, 0); SpellFailure: 0),
  {17}(MagicalDefense: + 3; SpellBonus: (3, 0); SpellFailure: 0),
  {18}(MagicalDefense: + 4; SpellBonus: (4, 0); SpellFailure: 0),


// Spell Immunity法术免疫: cause fear惊恐术, charm person魅惑人类, command命令术, friends, hypnotism催眠术
  {19}(MagicalDefense: + 4; SpellBonus: (1, 3); SpellFailure: 0),
// Spell Immunity: forget, hold person人类定身术, ray of enfeeblement衰弱光线, scare群体惊恐术
  {20}(MagicalDefense: + 4; SpellBonus: (2, 4); SpellFailure: 0),
// Spell Immunity: fear恐惧术
  {21}(MagicalDefense: + 4; SpellBonus: (3, 4); SpellFailure: 0),
// Spell Immunity: charm monster魅惑怪物, confusion困惑术, emotion情绪术, fumble, suggestion暗示
  {22}(MagicalDefense: + 4; SpellBonus: (4, 5); SpellFailure: 0),
// Spell Immunity: chaos混乱, feeblemind弱智术, hold monster怪物定身术, magic jar魔魂壶, quest指使术
  {23}(MagicalDefense: + 4; SpellBonus: (1, 6); SpellFailure: 0),
// Spell Immunity: geas指使术, mass suggestion集体暗示, rod of rulership
  {24}(MagicalDefense: + 4; SpellBonus: (5, 6); SpellFailure: 0),
// Spell Immunity: antipathy/sympathy嫌恶术/共鸣术, death spell死亡术, mass charm集体魅惑
  {25}(MagicalDefense: + 4; SpellBonus: (6, 7); SpellFailure: 0)
    );

{
Table 5:
Wisdom

Magical  Chance
Ability Defense Bonus of Spell Spell
Score Adjustment Spells Failure Immunity
1    -6  --  80%  --
2    -4  --  60%  --
3    -3  --  50%  --
4    -2  --  45%  --
5    -1  --  40%  --
6    -1  --  35%  --
7    -1  --  30%  --
8     0  --  25%  --
9     0   0  20%  --
10     0   0  15%  --
11    0   0  10%  --
12    0   0    5%  --
13    0  1st  0%  --
14    0  1st  0%  --
15  +1  2nd  0%  --
16  +2  2nd  0%  --
17  +3  3rd  0%  --
18  +4  4th  0%  --
19  +4  1st, 3rd 0%  cause fear, charm person,
         command, friends, hypnotism
20  +4  2nd, 4th 0%  forget, hold person, ray of
         enfeeblement, scare
21  +4  3rd, 5th 0%  fear
22  +4  4th, 5th 0%  charm monster, confusion,
         emotion, fumble, suggestion
23  +4  1st, 6th 0%  chaos, feeblemind, hold
         monster, magic jar, quest
24  +4  5th, 6th 0%  geas, mass suggestion, rod of
         rulership
25  +4  6th, 7th 0%  antipathy/sympathy, death
         spell, mass charm

}

type
{魅力反映角色的说服能力,个人吸引力和领导力。它不完全是具体的什么某人很帅之类的“吸引力”,虽然这个
也被包括在内。它对所有角色都很重要,特别是那些必须与NPC/雇佣兵/侍从/高智力怪物打交道的角色。魅力对
同伴,侍从,雇佣者的忠诚度也有影响}

  TCharismaAdj = record
    Henchmen: byte; // Maximum Number of Henchmen  最大同伴数
//Max/imum同伴数 是那些非玩家类队员的数目.它不会影响雇佣兵,格斗家,侍者,或其他被用钱雇来的人的数目

    Loyalty: shortint; // Loyalty Base 忠诚度
//忠诚度显示追随者们对你有多忠心(见DM手册)。如果士气变成了决定胜负的重要因素,那么忠诚度将会影响一场战斗的解决

    Reaction: shortint; // Reaction Adjustment  交流修正
{交流修正反映当角色与NPC或高智商生物交流时魅力造成的奖惩值。比如说Rath遇见一位半人马,一个高智力的生物。
Rath的魅力只有6,所以当他刚见到半人马时半人马是敌对的态度。他也许应该试图通过提供信息或礼物来克服这个
障碍}   
  end;

const
  CharismaAdjs: array[1..25] of TCharismaAdj = (
  { 1}(Henchmen: 0; Loyalty: - 8; Reaction: - 7),
  { 2}(Henchmen: 1; Loyalty: - 7; Reaction: - 6),
  { 3}(Henchmen: 1; Loyalty: - 6; Reaction: - 5),
  { 4}(Henchmen: 1; Loyalty: - 5; Reaction: - 4),
  { 5}(Henchmen: 2; Loyalty: - 4; Reaction: - 3),
  { 6}(Henchmen: 2; Loyalty: - 3; Reaction: - 2),
  { 7}(Henchmen: 3; Loyalty: - 2; Reaction: - 1),
  { 8}(Henchmen: 3; Loyalty: - 1; Reaction: 0),
  { 9}(Henchmen: 4; Loyalty: 0; Reaction: 0),
  {10}(Henchmen: 4; Loyalty: 0; Reaction: 0),
  {11}(Henchmen: 4; Loyalty: 0; Reaction: 0),
  {12}(Henchmen: 5; Loyalty: 0; Reaction: 0),
  {13}(Henchmen: 5; Loyalty: 0; Reaction: + 1),
  {14}(Henchmen: 6; Loyalty: + 1; Reaction: + 2),
  {15}(Henchmen: 7; Loyalty: + 3; Reaction: + 3),
  {16}(Henchmen: 8; Loyalty: + 4; Reaction: + 5),
  {17}(Henchmen: 10; Loyalty: + 6; Reaction: + 6),
  {18}(Henchmen: 15; Loyalty: + 8; Reaction: + 7),
  {19}(Henchmen: 20; Loyalty: + 10; Reaction: + 8),
  {20}(Henchmen: 25; Loyalty: + 12; Reaction: + 9),
  {21}(Henchmen: 30; Loyalty: + 14; Reaction: + 10),
  {22}(Henchmen: 35; Loyalty: + 16; Reaction: + 11),
  {23}(Henchmen: 40; Loyalty: + 18; Reaction: + 12),
  {24}(Henchmen: 45; Loyalty: + 20; Reaction: + 13),
  {25}(Henchmen: 50; Loyalty: + 20; Reaction: + 14)
    );

[发帖际遇]: soastao在码头遇到武氏兄弟与神龙教众群殴,闪避不及,中“一阳指”,体力迅速流失,花费银两16购买包子补充体力。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-10-14 15:18 | 显示全部楼层
// Step 2: Choose a Race (chapter 2)
type
  TRace = (Human, Elf, HalfElf, Gnome, Halfling, Dwarf); //人类、精灵、半精灵、侏儒、半身人、矮人
  TRaces = set of TRace;

  TAbilityRange = record min, max: byte end;

  TSex = (Male, Female);

  TDice = record    //骰子
    count, faces: byte;
  end;

  THeightAndWeight = record
    Base: array[TSex] of byte;
    Dice: TDice;
  end;

  TAge = record
    Base: byte;
    Dice: TDice;
    Ages: array[1..3] of word;
    Max: TDice;
  end;


const
  RacialAbilityRequirements: array[TRace, TAbility] of TAbilityRange = (
              { Strength       Dexterity      Constitution    Intelligence   Wisdom         Charisma     }
{ Human    }((min: 3; max: 18), (min: 3; max: 18), (min: 3; max: 18), (min: 3; max: 18), (min: 3; max: 18), (min: 3; max: 18)),
{ Elf      }((min: 3; max: 18), (min: 6; max: 18), (min: 7; max: 18), (min: 8; max: 18), (min: 3; max: 18), (min: 8; max: 18)),
{ Half-Elf }((min: 3; max: 18), (min: 6; max: 18), (min: 6; max: 18), (min: 4; max: 18), (min: 3; max: 18), (min: 3; max: 18)),
{ Gnome    }((min: 6; max: 18), (min: 3; max: 18), (min: 8; max: 18), (min: 6; max: 18), (min: 3; max: 18), (min: 3; max: 18)),
{ Halfling }((min: 7; max: 18), (min: 7; max: 18), (min: 10; max: 18), (min: 6; max: 18), (min: 3; max: 17), (min: 3; max: 18)),
{ Dwarf    }((min: 8; max: 18), (min: 3; max: 17), (min: 11; max: 18), (min: 3; max: 18), (min: 3; max: 18), (min: 3; max: 17))
    );

  RacialAbilityAdjustements: array[TRace, TAbility] of ShortInt = (  //種族屬性調整值
                { STR DEX CON INT WIS CHA }
  { Human     }(0, 0, 0, 0, 0, 0),
  { Elf       }(0, +1, -1, 0, 0, 0),
  { HalfElf   }(0, 0, 0, 0, 0, 0),
  { Gnome     }(0, 0, 0, +1, -1, 0),
  { Halfling  }(-1, +1, 0, 0, 0, 0),
  { Dwarf     }(0, 0, +1, 0, 0, -1)
    );

  AverageHeight: array[TRace] of THeightAndWeight = (//  Inches
  { Human    }(Base: (60, 59); dice: (count: 2; faces: 10)),
  { Elf      }(Base: (55, 50); dice: (count: 1; faces: 10)),
  { HalfElf  }(Base: (60, 58); dice: (count: 2; faces: 6)),
  { Gnome    }(Base: (38, 36); dice: (count: 1; faces: 6)),
  { Halfling }(Base: (32, 30); dice: (count: 2; faces: 8)),
  { Dwarf    }(Base: (43, 41); dice: (count: 1; faces: 10))
    );

  AverageWeight: array[TRace] of THeightAndWeight = (// Pounds
  { Human    }(Base: (140, 100); dice: (count: 6; faces: 10)),
  { Elf      }(Base: (90, 70); dice: (count: 3; faces: 10)),
  { HalfElf  }(Base: (110, 85); dice: (count: 3; faces: 12)),
  { Gnome    }(Base: (72, 68); dice: (count: 5; faces: 4)),
  { Halfling }(Base: (52, 48); dice: (count: 5; faces: 4)),
  { Dwarf    }(Base: (130, 105); dice: (count: 4; faces: 10))
    );

  Ages: array[TRace] of TAge = (
  { Human    }(base: (15); dice: (count: 1; faces: 4); ages: (45, 60, 90); max: (count: 2; faces: 20)),
  { Elf      }(base: (100); dice: (count: 5; faces: 6); ages: (175, 233, 350); max: (count: 4; faces: 100)),
  { HalfElf  }(base: (15); dice: (count: 1; faces: 6); ages: (62, 83, 125); max: (count: 3; faces: 20)),
  { Gnome    }(base: (60); dice: (count: 3; faces: 12); ages: (100, 133, 200); max: (count: 3; faces: 100)),
  { Hlafling }(base: (20); dice: (count: 3; faces: 4); ages: (50, 67, 100); max: (count: 1; faces: 100)),
  { Dwarf    }(base: (40); dice: (count: 5; faces: 6); ages: (125, 167, 250); max: (count: 2; faces: 100))
    );

  AgingEffects: array[TAbility, 1..3] of shortint = (
  { Strength     }(-1, -2, -1),
  { Dexterity    }(0, -2, -1),
  { Constitution }(-1, -1, -1),
  { Intelligence }(+1, 0, +1),
  { Wisdom       }(+1, +1, +1),
  { Charisma     }(0, 0, 0)
    );

// Step 3: Select a Class (chapter 3)
type
  TClass = (Fighter, Ranger, Paladin, Mage, Cleric, Druid, Thief, Bard);//战士、游侠、圣武士、法师、牧师、德鲁伊、盗贼、呤游诗人
  TClasses = set of TClass;

  TSchoolOfMagic = ( //魔法学派
    generic,
    Abjuration, //防护系
    Alteration, //改变系
    Conjuration,//咒法系
    Enchantment,//附魔系
    Divination, //预言系
    Illusion,   //幻术系
    Invocation, //塑能系
    Necromancy  //死灵系
    );

  TWizardRequirements = record
    Races: TRaces;
    Ability: TAbility;
    Score: byte;
  end;

  TThievingSkill = (  //盗贼技能
    tsPickPockets,  //扒竊
    tsOpenLocks,   //开锁
    tsFindRemoveTraps, //找到并移除陷阱
    tsMoveSilently,  //潛行
    tsHideInShadows,
    tsDetectNoise,
    tsClimbWalls,
    tsReadLanguages
    );
  TThievingSkills = array[TThievingSkill] of byte;

  TThievingSkillDexterityAdjustement = record  //盗贼技能敏捷修正
    score: byte;
    bonus: array[tsPickPockets..tsMoveSilently] of shortint;
  end;

  IsBard = boolean;

const
  Warrior = [Fighter, Ranger, Paladin]; //武士:有3个不同的分支职业:战士,圣武士,游侠。全都接受过良好的武器训练
  Wizard = [Mage];
  Priest = [Cleric, Druid];
  Rogue = [Thief, Bard];

  RaceClasses: array[TRace] of TClasses = (
  { Human           }[Fighter, Paladin, Ranger, Mage, Cleric, Druid, Thief, Bard],
  { Elf             }[Fighter, Ranger, Mage, Cleric, Thief],
  { HalfElf         }[Fighter, Ranger, Mage, Cleric, Druid, Thief, Bard],
  { Gnome           }[Fighter, Mage, Cleric, Thief],
  { Halfling        }[Fighter, Cleric, Thief],
  { Dwarf           }[Fighter, Cleric, Thief]
    );

  DualClasses: array[TRace, TClass] of TClasses = (
              {Fighter,Ranger,Paladin,Mage,Cleric, Druid, Thief, Bard }
  { Human    }([], [], [], [], [], [], [], []),
  { Elf      }([Thief, Mage], [], [], [{Fighter,}Thief], [], [], [{Fighter,Mage}], []),
  { HalfElf  }(// de plus, il peut 阾re tri-class?MAGE !
    {Fighter }[Thief, Cleric, Druid, Mage],
    {Ranger  }[Cleric],
    {Paladin }[],
    {Mage    }[{Fighter,}Thief, Cleric],
    {Cleric  }[{Fighter,Ranger,Mage}],
    {Druid   }[{Fighter}],
    {Thief   }[{Fighter,Mage}],
    {Bard    }[]
    ),
  { Gnome    }([Thief, Cleric, Mage], [], [], [{Fighter,Cleric}], [{Fighter,Mage,}Thief], [], [{Fighter,Mage,Cleric}], []),
  { Halfling }([Thief], [], [], [], [], [], [{Fighter}], []),
  { Dward    }([Thief, Cleric], [], [], [], [{Fighter}], [], [{Fighter}], [])
    );

  ClassAbilityMinimums: array[TClass, TAbility] of byte = (
              { STR DEX CON INT WIS CHA }
  { Fighter  }(9, 0, 0, 0, 0, 0),
  { Ranger   }(13, 13, 14, 0, 14, 0),
  { Paladin  }(12, 0, 9, 0, 13, 17),
  { Mage     }(0, 0, 0, 9, 0, 0),
  { Cleric   }(0, 0, 0, 0, 9, 0),
  { Druid    }(0, 0, 0, 0, 12, 15),
  { Thief    }(0, 9, 0, 0, 0, 0),
  { Bard     }(0, 0, 0, 13, 0, 15)
    );

  WizardRequirements: array[TSchoolOfMagic] of TWizardRequirements = (
  { generic     }(Races: [Human, Elf, HalfElf]; Ability: abIntelligence; score: 9), // same as above
  { Abjuration  }(Races: [Human]; Ability: abWisdom; score: 15),
  { Alteration  }(Races: [Human]; Ability: abDexterity; score: 15),
  { Conjuration }(Races: [Human, HalfElf]; Ability: abConstitution; score: 15),
  { Enchantment }(Races: [Human, Elf, HalfElf]; Ability: abCharisma; score: 16),
  { Divination  }(Races: [Human, Elf, HalfElf]; Ability: abWisdom; score: 16),
  { Illusion    }(Races: [Human, Gnome]; Ability: abDexterity; score: 16),
  { Invocation  }(Races: [Human]; Ability: abConstitution; score: 16),
  { Necromancy  }(Races: [Human]; Ability: abWisdom; score: 16)
    );

  ThievingSkillBaseScores: array[TThievingSkill, IsBard] of ShortInt = (
  { Pick Pockets      *}(15, 10),
  { Open Locks         }(10, -1),
  { Find/Remove Traps  }(5, -1),
  { Move Silently      }(10, -1),
  { Hide in Shadows    }(5, -1),
  { Detect Noise      *}(15, 20),
  { Climb Walls       *}(60, 50),
  { Read Languages    *}(0, 5)
    );

  ThievingSkillRacialAdjustements: array[TRace, TThievingSkill] of shortint = (
  { Human    }(0, 0, 0, 0, 0, 0, 0, 0),
  { Elf      }(+5, -5, 0, +5, +10, +15, 0, 0),
  { HalfElf  }(+10, 0, 0, 0, +5, 0, 0, 0),
  { Gnome    }(0, +5, +10, +5, +5, +10, -15, 0),
  { Halfling }(+5, +5, +5, +10, +15, +5, -15, -5),
  { Dward    }(0, +10, +15, 0, 0, 0, -10, -5)
    );

  ThievingSkillDexterityAdjustements: array[0..8] of TThievingSkillDexterityAdjustement = (
    (score: 9; bonus: (-15, -10, -10, -20)),
    (score: 10; bonus: (-10, -5, -10, -15)),
    (score: 11; bonus: (-5, 0, -5, -10)),
    (score: 12; bonus: (0, 0, 0, -5)),
    (score: 13; bonus: (0, 0, 0, 0)),
    (score: 16; bonus: (0, +5, 0, 0)),
    (score: 17; bonus: (+5, +10, 0, +5)),
    (score: 18; bonus: (+10, +15, +5, +10)),
    (score: 19; bonus: (+15, +20, +10, +15))
    );

// Step 4: Choose an Alignment (chapter 4)
type
  TAlignment = (  //陣營
    LG, NG, CG, //守序善良 中立善良 混乱善良
    LN, NN, CN, //守序中立 绝对中立 混乱中立
    LE, NE, CE  //守序邪恶 中立邪恶 混乱邪恶
    );
  TAlignments = set of TAlignment;

const
  ClassAlignments: array[TClass] of TAlignments = ( //职业阵营
  { Fighter  }[LG, NG, CG, LN, NN, CN, LE, NE, CE],
  { Ranger   }[LG, NG, CG],
  { Paladin  }[LG],
  { Mage     }[LG, NG, CG, LN, NN, CN, LE, NE, CE],
  { Cleric   }[LG, NG, CG, LN, NN, CN, LE, NE, CE],
  { Druid    }[NN],
  { Thief    }[LG, NG, CG, LN, NN, CN, LE, NE, CE],
  { Bard     }[NG, LN, NN, CN, NE]
    );

// Step 5: Record Saving Throws and THAC0 (chapter 9)
// Step 6: Roll Hit Points (chapter 3)
// Step 7: Record Base Movement (chapter 14)
// Step 8: Select Proficiencies (optional, chapter 5)
type
  TProficiencies = record
    Initial: byte;
    PerLevel: byte;
  end;

  TProficiencySlot = record
    Classes: TClasses;
    Weapon: TProficiencies;
    Penality: ShortInt;
    NonWeapon: TProficiencies;
  end;

const
  ProficiencySlots: array[0..3] of TProficiencySlot = (
    (Classes: Warrior; Weapon: (Initial: 4; PerLevel: 3); Penality: - 2; NonWeapon: (Initial: 3; PerLevel: 3)),
    (Classes: Wizard; Weapon: (Initial: 1; PerLevel: 6); Penality: - 5; NonWeapon: (Initial: 4; PerLevel: 3)),
    (Classes: Priest; Weapon: (Initial: 2; PerLevel: 4); Penality: - 3; NonWeapon: (Initial: 4; PerLevel: 3)),
    (Classes: Rogue; Weapon: (Initial: 2; PerLevel: 4); Penality: - 3; NonWeapon: (Initial: 3; PerLevel: 4))
    );

// Step 9: Equip Your Character (chapter 6)
type
  TPiece = (Copper, Silver, Electrum, Gold, Platinium);
  TFunds = record
    Classes: TClasses;
    base: byte;
    dice: TDice;
  end;

const
  InitialFunds: array[0..3] of TFunds = (// *10 GP
    (Classes: Warrior; base: 0; Dice: (count: 5; faces: 4)),
    (Classes: Wizard; base: 1; Dice: (count: 1; faces: 4)),
    (Classes: Priest; base: 0; Dice: (count: 2; faces: 6)),
    (Classes: Rogue; base: 0; Dice: (count: 3; faces: 6))
    );

// Weapons
type
  TWeapon = (
    HandCrossbow, HeavyCrossbow,
    ShortBow, CompositeShortBow, LongBow, CompositeLongBow,
    Staff, Knife, Dagger, Scimitar,
    BastardSword, ShortSword, TwoHandSword,
    MorningStar, FootmansFlail, Club, BattleAxe, Warhammer,
    LanceLegere, LanceLourde,
    StaffSling, Dart, Sling,
    ThrowingAxe, ThrowingKnife
    );
  TWeapons = set of TWeapon;

const
  ClassWeapons: array[TClass] of TWeapons = (
  { Fighter  }[HandCrossbow..ThrowingKnife],
  { Ranger   }[HandCrossbow..ThrowingKnife],
  { Paladin  }[HandCrossbow..ThrowingKnife],
  { Mage     }[Staff..Dagger, Dart..Sling, ThrowingKnife],
  { Cleric   }[Staff, MorningStar, FootmansFlail..Club, Warhammer, Sling],
  { Druid    }[Staff, Dagger, Scimitar, Dart, Sling, Club, ThrowingKnife],
  { Thief    }[HandCrossbow, ShortBow, CompositeShortBow, Staff, Knife, Dagger, ShortSword, Dart, Sling, Club, ThrowingKnife],
  { Bard     }[HandCrossbow..ThrowingKnife]
    );
  ClassWeaponCount: array[TClass] of byte = (4, 4, 4, 1, 2, 2, 2, 2);

implementation

end.

[发帖际遇]: soastao流浪江湖,在悦来客栈施展“妙手空空”,被便衣捕快当场抓住,损失银两3。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-10-14 17:59 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-10-14 21:23 | 显示全部楼层
楼主有心了

但……

硬套是没用的

或许,说说你的具体想法?没搞懂dnd的这个东西有什么参考价值

[发帖际遇]: winson7891参加60周年华诞国庆大阅兵观礼活动,无意中捡到一枚老旧的勋章,经鉴定为开国元勋所佩戴的勋章,被举报私藏文物,损失银两27。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-10-15 08:01 | 显示全部楼层
不是想硬套,只是展现一下dnd如何用pascal来定义的

没有具体想法,在我看来dnd的价值是完整和平衡

[发帖际遇]: soastao冒充青木堂主向反清份子征收活动经费,结果:骗得银两17.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-6-9 06:41

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表