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

天行健 君子當自強而不息

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) 評論(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>
            亚洲精品黄色| 亚洲精品之草原avav久久| 亚洲伊人网站| 国产精品美女久久久免费| 亚洲视频观看| 亚洲一区图片| 狠狠色伊人亚洲综合网站色| 久久三级视频| 美日韩免费视频| 亚洲免费久久| 亚洲一区二区三区视频播放| 国产精品视频久久| 久久只精品国产| 欧美成人xxx| 亚洲——在线| 久久久99免费视频| 亚洲精品国产视频| 亚洲一区二区三区四区视频| 国内精品视频在线播放| 亚洲国产一二三| 欧美视频精品一区| 久久米奇亚洲| 欧美日韩午夜| 久久天天躁狠狠躁夜夜爽蜜月| 久久亚洲综合网| 亚洲一本视频| 久久久久久尹人网香蕉| 亚洲桃色在线一区| 久久国产黑丝| 亚洲视频导航| 久久久久国产一区二区| 亚洲婷婷在线| 麻豆国产精品777777在线| 亚洲影院在线观看| 欧美成人dvd在线视频| 欧美在线播放一区二区| 欧美福利影院| 久热国产精品视频| 国产精品毛片在线看| 欧美激情一区二区久久久| 国产女人18毛片水18精品| 亚洲第一福利在线观看| 国产日本亚洲高清| 亚洲九九精品| 亚洲缚视频在线观看| 欧美一区2区视频在线观看| 亚洲美女网站| 蜜臀久久久99精品久久久久久| 午夜视频一区| 欧美日韩视频在线一区二区观看视频| 久久综合九色综合欧美狠狠| 国产精品一卡二| 一本色道婷婷久久欧美| a4yy欧美一区二区三区| 欧美 日韩 国产精品免费观看| 久久久中精品2020中文| 国产亚洲精品久久久久婷婷瑜伽| 一本色道久久综合亚洲精品不| 亚洲人成网站在线观看播放| 久久亚洲私人国产精品va| 久久精品二区| 国产日本欧美一区二区| 亚洲欧美日韩爽爽影院| 欧美伊人久久久久久久久影院| 欧美三级午夜理伦三级中文幕| 亚洲精品国产欧美| 一本色道久久综合亚洲精品婷婷| 免费欧美在线视频| 亚洲国产成人av| 日韩午夜精品视频| 欧美日韩伦理在线| 夜夜精品视频| 午夜精品一区二区三区在线播放| 国产精品激情偷乱一区二区∴| 亚洲一区二区三区四区五区午夜 | 欧美一区二区成人| 亚洲免费观看| 免费成人性网站| 欧美日本精品一区二区三区| 日韩亚洲精品在线| 欧美日韩免费观看一区三区| 在线亚洲美日韩| 香蕉久久夜色| 国语自产精品视频在线看| 久久久久久久波多野高潮日日 | 在线看片第一页欧美| 久久久777| 亚洲人成在线播放| 亚洲综合色视频| 国内精品99| 欧美大片在线观看一区| 一区二区久久久久| 久久精品论坛| 99re在线精品| 国产日韩欧美一区二区| 久久久久欧美| 在线视频欧美一区| 久久尤物视频| 一区二区三区国产精华| 国产欧美精品在线播放| 麻豆精品在线视频| 亚洲视频免费在线观看| 久久亚洲国产精品日日av夜夜| 亚洲精选中文字幕| 国产亚洲一级高清| 欧美日韩精品久久久| 久久精品一区蜜桃臀影院| 亚洲精品乱码久久久久久黑人 | 久久精品国产一区二区三| 亚洲日韩视频| 国产日韩欧美三区| 欧美日韩精品一区二区三区| 久久国产欧美| 中文一区字幕| 最新国产成人在线观看| 久久夜色精品一区| 亚洲欧美大片| 99视频有精品| 亚洲欧洲日本一区二区三区| 国产亚洲a∨片在线观看| 欧美精品1区2区3区| 久久久精彩视频| 亚洲一线二线三线久久久| 91久久综合亚洲鲁鲁五月天| 久久深夜福利| 小辣椒精品导航| 亚洲一区二区三区成人在线视频精品| 在线免费观看欧美| 国产日韩一区二区三区| 国产精品久久久久99| 欧美人与性动交a欧美精品| 噜噜噜91成人网| 久久久久久9| 久久久青草婷婷精品综合日韩| 午夜精品久久久久影视| 亚洲一区日韩在线| 亚洲一区二区三区在线| 日韩五码在线| av不卡在线观看| 亚洲精品久久久一区二区三区| 米奇777超碰欧美日韩亚洲| 老司机精品久久| 久久综合狠狠| 欧美aⅴ99久久黑人专区| 美女主播精品视频一二三四| 久久最新视频| 欧美丰满高潮xxxx喷水动漫| 欧美成人免费在线| 亚洲国产欧美一区| 亚洲国产精品传媒在线观看| 欧美激情一区二区三区四区| 欧美激情中文字幕一区二区| 欧美国产日韩a欧美在线观看| 欧美成人一区二区三区| 亚洲电影免费观看高清完整版| 亚洲福利电影| 99pao成人国产永久免费视频| 99视频在线观看一区三区| 99这里有精品| 亚洲免费视频一区二区| 午夜精品一区二区三区在线视| 欧美一级二区| 麻豆国产精品一区二区三区| 欧美精品激情blacked18| 欧美日韩99| 国产欧美日韩综合一区在线播放| 国产一区二区三区久久| 亚洲国产成人porn| 一本久久知道综合久久| 午夜精彩视频在线观看不卡 | 久久综合网hezyo| 欧美黄色一级视频| 亚洲精品美女在线观看| 亚洲午夜精品福利| 久久免费黄色| 国产精品wwwwww| 在线观看精品视频| 亚洲一区免费看| 欧美99在线视频观看| 一区二区精品国产| 久久香蕉国产线看观看网| 欧美日韩亚洲高清| 精品av久久久久电影| 亚洲一区二区日本| 欧美第十八页| 亚洲女人天堂av| 欧美精品三级| 尤物99国产成人精品视频| 亚洲一区在线视频| 亚洲电影专区| 久久精品麻豆| 国产精品分类| 亚洲人成亚洲人成在线观看| 久久精品男女| 夜夜爽www精品| 免费日韩视频| 韩国自拍一区| 久久大逼视频| 亚洲婷婷综合久久一本伊一区| 两个人的视频www国产精品|