
药物(/std/medicine)
-------------------
所谓药物泛指一切可以用来治疗或是恢复(造成)状态的物品。

目前基本上可分为药水(potion)和药丸(pill)和药草(herb)。

    - 药水是液态, 用喝(drink) 的, 在战斗中喝药水有溅出的可能。
    
    - 药丸是固态, 用吃(eat) 的, 没有溅出的可能。
    
      前二者使用过量均可能产生副作用(default have)。
      
    - 药草则是用来涂(apply) 在伤口或是特定部位的, 并未设计副作用。
      你也可以做成有副作用, 但请自行在apply() 做检查。

继承物件: OBJECT == "/std/object.c"

一、药物的额外性质(except object's Properties)说明:

    1.reaction          : 0 or 1. 内定值 = 1。
                          决定此药物是否有副作用。

    2.medication        : A integer. ( -100 <-> 100 ) 内定值 = 0。
                          设定物品的药性。当使用者用完此药物後, 身体对药物
                          所增加(减少)的排斥力。
    
    3.reaction_cirtical : A integer. ( 0 <-> 300 ) 内定值 = 100。
                          定义此药物能不产生副作用的「身体能忍受之排斥力」
                          (critical_med_res)的百分比。

    4.can_eat           : 0 or 1. 内定值 = 0。
                          定义此药物是否能吃。

    5.can_drink         : 0 or 1. 内定值 = 0。
                          定义此药物是否能吃。

    6.can_apply         : 0 or 1. 内定值 = 0。
                          定义此药物是否能涂。

二、药物除了OBJECT外, 有定义的函数:

    1.int reaction(object user) - 决定副作用的效果。未定义或传回 0
                                  则会执行内定的副作用。

    2.void eat(object user) - 决定药物吃下去的结果。

    3.void drink(object user) - 决定药物喝下去的结果。

    4.int apply(object user) - 决定药物涂上去的结果, 传回 1代表
                               成功地敷上了药, 0则否。

    基本上, 副作用的发生条件是: 人体对药物的抵抗力 > 他所能抵抗的最大程度。
    每个人对药物的抵抗能力依: 种族, 等级和属性而有所不同。
    若药物有定义 reaction_critical  则公式将被修正成
      人体对药物的抵抗力 > 他所能抵抗的最大程度 * reaction_critical / 100
    若你还想做更复杂的检查, 请自行在 2, 3, 4.的函数内自行设计。
    但是前者的公式仍会被执行, 若你不想用, 请设定较大的 reaction_critical。
    内定的副作用是生病, 至於病情严重的程度则视其超过的值而定。

三、若你想做基本的药物, 以下是已定义的物件, 可供继承(inherit):

    1. HERB == "/std/herb", 一般药草。可慢慢的恢复生物的 HP。
       内定值: "can_apply" = 1, "reaction" = 0,
               "heal_frequency" = 10, "heal_apply" = 1, "duration" = 1;
       额外性质:
       "heal_frequency" : 1 <-> 50 定义每几个 hb 恢复一次。*hb=heart bit.
       "heal_apply" : integer. 定义每次所恢复的量(最好不是负值)。
       "duration" : integer. 定义恢复的次数(最好不要过大)。

    2. POTION == "/std/potion", 一般药水及 PILL == "/std/pill" 一般药丸。
       可一次恢复定量的 HP。
       内定值: "reaction" = 1, "can_drink"(POTION) = 1, "can_eat"(PILL) = 1,
               set_heal(0), "effect_critical" = 100.
       额外性质:
       set_heal(int heal) : 用来定义恢复的 HP 量。
       "effect_critical" : 如同 "reaction_rcitical" 不过乃是定义
                           药水(丸)正常发挥其效果的上限, 未定视 100%。
       当 人体对药物的抵抗力 > 他所能抵抗的最大程度 * effect_critical / 100 时
       药水(丸)的效果将会降低, 公式为:
           100% / 2^(1+超过的值/药物的药性)。

                                                        -Kyoko 09/28/94
