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

天行健 君子當自強而不息

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 閱讀(248) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧洲在线看| 欧美高清在线一区| 亚洲网站在线播放| 国产一区二区三区日韩| 国产精品日韩一区| 欧美精品成人91久久久久久久| 久久综合九色综合久99| 久久久.com| 久久久青草婷婷精品综合日韩| 亚洲欧美影院| 久久精品99国产精品| 欧美在线视频观看免费网站| 亚洲欧美自拍偷拍| 久久riav二区三区| 老色鬼精品视频在线观看播放| 蜜臀av国产精品久久久久| 久久国产天堂福利天堂| 久久精品综合| 欧美成人一区二区| 欧美日韩国产91| 欧美亚洲日本网站| 韩国久久久久| 精品成人一区二区| 在线电影一区| 亚洲国产欧美在线人成| 亚洲人午夜精品| 亚洲视频精选在线| 先锋资源久久| 蜜桃久久精品乱码一区二区| 亚洲国产天堂网精品网站| 一区二区毛片| 欧美亚洲综合另类| 久久久综合网站| 欧美日韩精品是欧美日韩精品| 国产精品国产精品| 在线观看欧美视频| 99精品热视频| 久久精品国产第一区二区三区最新章节 | 欧美一区二区网站| 久久精品日韩| 亚洲每日更新| 久久精品国产精品亚洲精品| 欧美波霸影院| 国产日韩精品一区| 亚洲精品久久久久久下一站 | 国产精品高清免费在线观看| 伊人久久久大香线蕉综合直播| 一本色道久久99精品综合| 欧美一区二区三区四区夜夜大片| 欧美国产一区视频在线观看| 亚洲免费在线看| 欧美欧美全黄| 激情欧美一区二区| 亚洲欧美日韩精品久久奇米色影视| 久久亚洲图片| 亚洲欧美日韩第一区| 欧美连裤袜在线视频| 在线免费观看日本一区| 午夜一区二区三视频在线观看| 亚洲国产福利在线| 久久亚洲捆绑美女| 国内精品久久久久久| 亚洲一区二区三区777| 欧美激情在线有限公司| 久久精品国内一区二区三区| 国产精品久久久久久久久果冻传媒| 亚洲国产日韩在线一区模特| 久久精品一区二区三区中文字幕| 一区二区免费在线观看| 欧美大片免费观看| 激情成人中文字幕| 久久国产毛片| 欧美日韩国产在线播放| 亚洲全黄一级网站| 免费观看成人网| 久久精品免视看| 在线成人h网| 狂野欧美一区| 久久亚洲综合| 91久久国产精品91久久性色| 老司机精品导航| 久久久xxx| 国产亚洲一区二区三区| 久久久久欧美| 久久久午夜电影| 亚洲激情av| 亚洲激情视频网站| 欧美.www| 久久午夜电影| 亚洲精品久久久久久久久久久久 | 国产一区在线播放| 久久精品99国产精品酒店日本| 欧美伊人久久| 亚洲福利视频一区| 亚洲国产精品va在线观看黑人| 欧美激情综合色| 国产精品99久久久久久有的能看 | 中文日韩欧美| 国产综合婷婷| 亚洲国产网站| 国产精品ⅴa在线观看h| 欧美在线一二三区| 久久蜜桃香蕉精品一区二区三区| 亚洲激情午夜| 在线亚洲一区观看| 韩日欧美一区二区三区| 欧美成人官网二区| 欧美日韩精品免费观看视频| 欧美影片第一页| 欧美成人精品激情在线观看| 亚洲专区欧美专区| 久久久久成人网| 一区二区三区欧美在线| 欧美一区视频在线| 亚洲精品日韩在线观看| 亚洲免费网站| 亚洲蜜桃精久久久久久久| 国产精品99久久99久久久二8| 激情国产一区二区| 一区二区高清视频在线观看| 亚洲国产另类久久精品| 亚洲一区二区三区在线视频| 1769国产精品| 亚洲综合色视频| 亚洲午夜在线观看| 久久精品国产精品亚洲| 在线视频免费在线观看一区二区| 国产亚洲综合性久久久影院| 欧美高清视频在线播放| 国产精品主播| 一区二区日韩伦理片| 亚洲国产成人av| 欧美在线观看www| 亚洲欧美日韩精品| 欧美日韩国产大片| 蜜桃av噜噜一区二区三区| 国产精品外国| 一区二区三区.www| 一本到12不卡视频在线dvd| 久久精品在线免费观看| 欧美一二三视频| 欧美手机在线| 日韩午夜电影| 亚洲视频一区二区| 欧美欧美午夜aⅴ在线观看| 免费在线视频一区| 狠狠色2019综合网| 欧美一区二区视频在线观看| 国产精品久久久久久影视| 亚洲理论在线| 一本不卡影院| 欧美视频在线观看免费网址| 日韩视频在线一区二区三区| 亚洲日韩第九十九页| 久久亚洲私人国产精品va| 久久久久亚洲综合| 国语自产精品视频在线看| 午夜精品久久久久久久99樱桃 | 久久精品在线观看| 巨乳诱惑日韩免费av| 国产亚洲欧美一区在线观看| 亚洲伊人观看| 久久精品一区二区三区不卡| 国产在线不卡精品| 欧美一区二区三区男人的天堂| 国外成人在线视频| 久久精品成人一区二区三区| 久久婷婷色综合| 亚洲欧洲日夜超级视频| 欧美精品成人| 亚洲一区二区三区视频| 欧美在线免费观看视频| 国产日本欧洲亚洲| 卡通动漫国产精品| 日韩一级精品| 欧美在线视频观看免费网站| 国产亚洲女人久久久久毛片| 欧美在线你懂的| 亚洲成色最大综合在线| 亚洲一区二区三区在线看| 国产一区深夜福利| 欧美jizz19hd性欧美| 亚洲一区二区高清视频| 免费一级欧美在线大片| 中文精品在线| 在线观看成人一级片| 欧美午夜片在线观看| 久久久久www| 亚洲深夜福利| 欧美国产日韩在线| 另类激情亚洲| 欧美国产日韩亚洲一区| 亚洲黄色在线观看| 欧美日韩亚洲高清一区二区| 欧美在线网站| 一区二区激情小说| 欧美韩日精品| 久久久亚洲成人| 亚洲免费中文字幕| 一本一道久久综合狠狠老精东影业|