青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

Controlling Players and Characters(37)

Whenever a character needs updating, rendering, or what have you, a pointer to
the linked list of characters is needed in order to iterate the list. Either that or
maybe your application needs access to the character data. Either way, the following
functions will help you out:

    sCharacter* get_root_char()
    {
        
return m_root_char;
    }

    sCharacter* get_char(
long id)
    {
        
for(sCharacter* character = m_root_char; character != NULL; character = character->next)
        {
            
if(id == character->id)
                
return character;
        }

        
return NULL;
    }

During specific functions, it becomes necessary for characters (such as monsters)
to make sure that they can see another character before attacking or casting a spell.
A function of your design is required to verify that such a line of sight is clear.
Returning a value of true states that a character is in sight of another one:


    virtual bool line_of_sight(sCharacter* source, sCharacter* target,
                               
float source_x, float source_y, float source_z,
                               
float target_x, float target_y, float target_z)
    {
        
// make sure there is a line of sight between characters.

        
return true;
    }

When the character controller (or outside code) needs one of the character’s abilities,
it needs to retrieve it with the following group of functions. These functions
take into account the various modifiers such as status ailments and equipped items:


    long get_to_hit(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long to_hit = character->char_def.to_hit;

        
if(character->ailments & AILMENT_BLIND)
            to_hit *= 0.75f;

        
if(character->ailments & AILMENT_HAWKEYE)
            to_hit *= 1.5f;

        
return to_hit;
    }

    
long get_agility(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long agility = character->char_def.agility;

        
if(character->ailments & AILMENT_CLUMSY)
            agility *= 0.75f;

        
if(character->ailments & AILMENT_SUREFOOTED)
            agility *= 1.5f;

        
return agility;
    }

    
long get_attack(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long attack = character->char_def.attack;

        
// adjust attack based on item value
        if(character->char_def.weapon != -1 && m_mil)
            attack *= (m_mil[character->char_def.weapon].value / 100.0f + 1.0f);

        
if(character->ailments & AILMENT_WEAK)
            attack *= 0.5f;

        
if(character->ailments & AILMENT_STRONG)
            attack *= 1.5f;

        
return attack;
    }
    
    
long get_defense(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long defense = character->char_def.defense;

        
if(character->char_def.armor != -1 && m_mil)
            defense *= (m_mil[character->char_def.armor].value / 100.0f + 1.0f);

        
if(character->char_def.shield != -1 && m_mil)
            defense *= (m_mil[character->char_def.shield].value / 100.0f + 1.0f);

        
if(character->ailments & AILMENT_WEAK)
            defense *= 0.5f;

        
if(character->ailments & AILMENT_STRONG)
            defense *= 1.5f;

        
if(defense < 0)     // boudns check
            defense = 0;

        
return defense;
    }

    
long get_resistance(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long resistance = character->char_def.resistance;

        
if(character->ailments & AILMENT_ENCHANTED)
            resistance *= 0.5f;

        
if(character->ailments & AILMENT_BARRIER)
            resistance *= 1.5f;

        
return resistance;
    }

    
long get_mental(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
long mental = character->char_def.mental;

        
if(character->ailments & AILMENT_DUMBFOUNDED)
            mental *= 0.5f;

        
return mental;
    }

    
float get_speed(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0.0f;

        
float speed = character->char_def.speed;

        
if(character->ailments & AILMENT_SLOW)
            speed *= 0.5f;

        
if(character->ailments & AILMENT_FAST)
            speed *= 1.5f;

        
if(speed < 1.0f)    // bounds check
            speed = 1.0f;

        
return speed;
    }

    
float get_charge_rate(const sCharacter* character)
    {
        
if(character == NULL)
            
return 0;

        
float charge_rate = character->char_def.charge_rate;

        
if(character->ailments & AILMENT_SLOW)
            charge_rate *= 0.75f;

        
if(character->ailments & AILMENT_FAST)
            charge_rate *= 1.5f;

        
return charge_rate;
    }

posted on 2007-12-04 19:05 lovedday 閱讀(251) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(lèi)(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产一区| 男同欧美伦乱| 亚洲人成艺术| 亚洲女女女同性video| 久久久国产91| 欧美一区二区三区日韩| 欧美激情视频在线播放| 久久欧美中文字幕| 国产精品毛片一区二区三区 | 亚洲欧美影院| 欧美精品粉嫩高潮一区二区| 久久精品视频免费观看| 国产精品一区二区久久久| 亚洲精品国产欧美| 亚洲国产日韩美| 久久成人人人人精品欧| 性欧美xxxx大乳国产app| 欧美日韩亚洲一区二区三区四区| 欧美激情在线有限公司| 亚洲国产精品激情在线观看| 欧美一二三视频| 欧美亚洲色图校园春色| 国产精品色在线| 亚洲免费在线观看视频| 亚洲欧美精品中文字幕在线| 欧美色综合网| 亚洲四色影视在线观看| 亚洲天堂第二页| 国产精品成人午夜| 亚洲一区久久久| 欧美一级网站| 国产丝袜一区二区| 欧美在线播放一区| 久久青草久久| 在线免费精品视频| 欧美成人一区二区三区| 亚洲日本va午夜在线影院| 日韩一级成人av| 欧美三级不卡| 亚洲欧美日韩精品久久奇米色影视 | 麻豆精品精华液| 伊人色综合久久天天| 久久综合精品一区| 亚洲国产视频一区| 正在播放欧美视频| 国产精品推荐精品| 久久精品中文字幕一区| 亚洲高清视频在线| 亚洲欧美久久| 精品动漫3d一区二区三区免费版| 久久亚洲欧洲| 一本色道久久88综合亚洲精品ⅰ| 亚洲欧美日韩国产一区二区三区| 国产亚洲精品bv在线观看| 久久免费99精品久久久久久| 最新国产の精品合集bt伙计| 亚洲桃花岛网站| 国产亚洲人成a一在线v站| 久久免费国产| 99这里有精品| 老色批av在线精品| 亚洲视频香蕉人妖| 精品动漫一区| 国产精品成人一区二区艾草| 欧美在线免费观看视频| 亚洲人成毛片在线播放| 久久福利精品| 99在线精品视频在线观看| 国产伦理一区| 欧美经典一区二区| 羞羞色国产精品| 亚洲精品久久在线| 久久露脸国产精品| 亚洲字幕一区二区| 亚洲欧洲视频| 国内久久精品视频| 国产精品久久久久9999高清| 免费在线成人| 欧美一区二区三区久久精品| 亚洲精品四区| 欧美高清视频| 久久久国产精品亚洲一区| 亚洲一区二区三区国产| 亚洲国产日韩一区| 韩国福利一区| 国产精自产拍久久久久久| 欧美精品 日韩| 久久久久久穴| 欧美专区18| 先锋资源久久| 亚洲尤物视频在线| 一区二区免费在线播放| 91久久久在线| 欧美激情2020午夜免费观看| 久久久噜噜噜久久中文字幕色伊伊 | 久久久久久久999精品视频| 亚洲一区中文字幕在线观看| 一本久道久久综合婷婷鲸鱼| 最新日韩精品| 亚洲国产精品久久人人爱蜜臀| 久热精品视频在线观看一区| 欧美在线啊v| 久久av资源网站| 久久99在线观看| 久久成人免费日本黄色| 香蕉久久一区二区不卡无毒影院| 国产偷国产偷精品高清尤物| 久久夜精品va视频免费观看| 欧美精品一区二区蜜臀亚洲| 亚洲激情精品| 韩日在线一区| 影音先锋亚洲精品| 亚洲大片在线观看| 亚洲国产精品久久久久秋霞不卡 | 亚洲欧美视频在线观看视频| 亚洲一区二区3| 亚洲五月六月| 亚洲欧美在线磁力| 欧美在线免费| 久久久久久久波多野高潮日日| 久久久久久有精品国产| 免费观看30秒视频久久| 麻豆精品网站| 欧美色图首页| 国产日韩精品一区二区三区| 国产永久精品大片wwwapp| 国语自产精品视频在线看一大j8| 影音先锋在线一区| 日韩一区二区精品视频| 亚洲尤物在线视频观看| 久久aⅴ国产紧身牛仔裤| 麻豆久久婷婷| 亚洲精品欧美精品| 亚洲欧美大片| 久久一区亚洲| 欧美视频二区36p| 国产亚洲午夜高清国产拍精品| 亚洲高清自拍| 亚洲永久在线观看| 久久久久久黄| 亚洲三级网站| 欧美伊人久久久久久午夜久久久久| 久久在线视频在线| 欧美午夜国产| 怡红院精品视频| 亚洲视频免费在线| 久久综合导航| 一区二区三区国产精华| 欧美一站二站| 欧美午夜宅男影院在线观看| 国产综合久久| 亚洲一区二区三区四区视频| 久久伊人一区二区| 亚洲少妇在线| 欧美大胆成人| 狠狠色综合色综合网络| 在线视频中文亚洲| 免费日韩视频| 亚洲欧美另类在线| 欧美日本一区二区三区| 国产午夜一区二区三区| 99精品国产在热久久下载| 久久永久免费| 亚洲欧美成人一区二区三区| 欧美激情久久久久| 黄色一区二区三区四区| 午夜久久久久久久久久一区二区| 欧美国产精品久久| 久久成人羞羞网站| 国产精品网站在线播放| 这里只有精品在线播放| 欧美激情视频一区二区三区免费| 午夜精品久久久99热福利| 欧美日韩激情网| 亚洲欧洲一区| 欧美福利精品| 久久精品视频一| 国产日韩精品在线播放| 午夜激情一区| 亚洲色图在线视频| 欧美日韩少妇| 在线视频日韩精品| 91久久精品国产91久久性色tv | 欧美日韩一区免费| 亚洲成人在线视频网站| 麻豆视频一区二区| 欧美综合国产| 国外成人性视频| 久久青草久久| 久久精品最新地址| 国产一区二区在线观看免费播放| 欧美一区二区黄色| 亚洲一区激情| 国产女人精品视频| 久久国产精彩视频| 香蕉久久精品日日躁夜夜躁| 国产视频在线一区二区| 久久久久综合网| 久久久亚洲国产天美传媒修理工| 国产在线麻豆精品观看|