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

天行健 君子當自強而不息

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 閱讀(252) 評論(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>
            欧美激情精品久久久久久免费印度| 噜噜噜久久亚洲精品国产品小说| 欧美国产日韩一区| 亚洲福利视频一区| 欧美成人69av| 欧美激情亚洲精品| 99在线热播精品免费99热| 亚洲国产你懂的| 欧美理论在线播放| 中文日韩电影网站| 亚洲图色在线| 韩国精品主播一区二区在线观看| 久久久久久久尹人综合网亚洲| 性久久久久久久| 国产综合色产在线精品| 欧美1区2区| 欧美日韩国产片| 久久成人精品| 久久亚洲精品一区二区| 亚洲免费大片| 亚洲免费在线视频一区 二区| 国产真实乱偷精品视频免| 免费日韩成人| 国产精品r级在线| 久久久久久久久蜜桃| 免费成人黄色片| 亚洲一二三区精品| 久久精品国产久精国产一老狼| 亚洲经典在线| 亚洲综合精品四区| 在线欧美福利| 这里只有精品视频| 亚洲高清成人| 午夜精品久久99蜜桃的功能介绍| 亚洲成色www8888| 中文亚洲免费| 亚洲日本欧美天堂| 小黄鸭精品aⅴ导航网站入口| 亚洲人成精品久久久久| 亚洲欧美日韩网| 一区二区三区视频在线播放| 欧美在线视频日韩| 亚洲一区二区三区777| 老司机亚洲精品| 欧美专区在线| 欧美日韩在线精品| 亚洲春色另类小说| 国产亚洲欧美aaaa| 亚洲少妇中出一区| 日韩视频一区二区三区在线播放| 欧美一级在线亚洲天堂| 一区二区三区 在线观看视频| 久久久美女艺术照精彩视频福利播放| 亚洲欧美激情精品一区二区| 欧美韩日一区| 免费成人av在线| 国模叶桐国产精品一区| 亚洲一区二区三区在线看| 夜色激情一区二区| 欧美精品电影在线| 亚洲电影免费在线| 亚洲欧洲偷拍精品| 久久夜色精品国产欧美乱极品| 久久精品国产第一区二区三区最新章节 | 久久野战av| 国产亚洲欧美日韩美女| 亚洲视频高清| 亚洲欧美日韩国产一区二区三区| 欧美连裤袜在线视频| 亚洲国语精品自产拍在线观看| 在线成人av| 久久综合色播五月| 欧美激情亚洲| 亚洲精品网站在线播放gif| 美日韩丰满少妇在线观看| 欧美成人tv| 亚洲精品乱码久久久久久蜜桃91| 麻豆亚洲精品| 亚洲精品日本| 亚洲尤物在线视频观看| 国产精品美女久久久| 亚洲欧美国内爽妇网| 性久久久久久久久久久久| 国产精品日日摸夜夜摸av| 亚洲一区二区三区777| 久久精品91| 在线国产亚洲欧美| 欧美国产91| 在线视频日韩精品| 久久久久久亚洲精品中文字幕| 伊人一区二区三区久久精品| 麻豆精品精品国产自在97香蕉| 亚洲国产天堂久久综合网| 在线中文字幕日韩| 国产情侣一区| 免费看亚洲片| 亚洲最新视频在线| 久久免费视频在线| 亚洲欧洲偷拍精品| 国产精品免费区二区三区观看| 久久精品一区二区三区四区| 亚洲电影免费在线| 欧美一区二区三区精品电影| 亚洲第一精品在线| 国产精品扒开腿做爽爽爽视频| 欧美在线视频观看| 日韩视频一区二区| 久久久蜜桃精品| 在线午夜精品| 国内揄拍国内精品少妇国语| 欧美国产三级| 欧美影院成人| 中文成人激情娱乐网| 狼狼综合久久久久综合网 | 欧美视频一区| 久久精品国产一区二区三区| 亚洲人成网站色ww在线| 久久成人av少妇免费| 亚洲精品影视| 激情久久婷婷| 国产精品日韩欧美大师| 麻豆九一精品爱看视频在线观看免费| 中文在线资源观看网站视频免费不卡 | 在线综合亚洲欧美在线视频| 国产欧美日韩一区二区三区在线 | 在线综合欧美| 亚洲国产精品传媒在线观看 | 99在线热播精品免费| 国产一区视频在线观看免费| 欧美色图首页| 欧美高清不卡在线| 久久综合给合久久狠狠色| 亚洲资源在线观看| 99国产精品久久久久久久成人热| 蘑菇福利视频一区播放| 久久九九免费视频| 欧美一级午夜免费电影| 亚洲天堂av在线免费| 亚洲每日在线| 亚洲人成网站色ww在线| 揄拍成人国产精品视频| 国产一区亚洲一区| 国产亚洲精品美女| 国产日本亚洲高清| 国产日本欧美一区二区三区| 国产精品久久久久久久浪潮网站| 欧美日韩国产综合在线| 欧美日本韩国一区二区三区| 欧美国产亚洲另类动漫| 欧美高清视频在线| 欧美成人午夜| 久久视频在线看| 久久综合伊人77777尤物| 久久久久se| 久久久久久久久岛国免费| 久久久999| 久久在线免费观看| 免费欧美在线| 欧美日韩18| 国产精品高清在线观看| 国产精品亚洲人在线观看| 国产欧美日韩中文字幕在线| 国产视频精品免费播放| 韩日欧美一区二区| 亚洲国产日韩欧美在线动漫| 亚洲人成在线观看| 亚洲图片激情小说| 亚洲欧美日韩另类| 久久婷婷国产综合精品青草| 欧美成人综合在线| 日韩视频免费在线观看| 亚洲欧美国产三级| 久久午夜视频| 欧美日韩你懂的| 国产亚洲视频在线| 亚洲黄色影院| 亚洲一区二区三区在线看| 久久精品国产综合| 亚洲国产欧美一区二区三区久久 | 亚洲国产二区| 一本色道久久综合亚洲精品小说 | 一区二区三区久久精品| 香蕉免费一区二区三区在线观看| 久久精品论坛| 欧美日韩一区二区在线播放| 国产午夜精品一区理论片飘花 | 国产综合亚洲精品一区二| 亚洲国产欧美国产综合一区| 这里只有精品电影| 久久久之久亚州精品露出| 亚洲国产精品ⅴa在线观看| 亚洲图片你懂的| 久久永久免费| 国产精品视频久久| 亚洲全黄一级网站| 久久国产精品一区二区三区四区 | 一区二区不卡在线视频 午夜欧美不卡在 | 久久久99国产精品免费| 欧美欧美天天天天操| 狠狠干狠狠久久|