Changeset 81

Show
Ignore:
Timestamp:
11/19/08 13:32:32 (17 years ago)
Author:
yumileroy
Message:

[svn] Implement CREATURE_FLAG_EXTRA_TRIGGER. In GM mode, creatures flagged with this will be displayed with displayid_a, in non-gm mode with displayid_h.

Original author: w12x
Date: 2008-10-20 13:41:05-05:00

Location:
trunk/src/game
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/Creature.h

    r44 r81  
    125125    CREATURE_FLAG_EXTRA_NO_CRUSH        = 0x00000020,       // creature can't do crush attacks 
    126126    CREATURE_FLAG_EXTRA_NO_XP_AT_KILL   = 0x00000040,       // creature kill not provide XP 
     127    CREATURE_FLAG_EXTRA_TRIGGER         = 0x00000080,       // trigger creature 
    127128    CREATURE_FLAG_EXTRA_WORLDEVENT      = 0x00004000,       // custom flag for world event creatures (left room for merging) 
    128129}; 
  • trunk/src/game/CreatureAISelector.cpp

    r44 r81  
    6161            else if(creature->isTotem()) 
    6262                ai_factory = ai_registry.GetRegistryItem("TotemAI"); 
     63            else if(creature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER) 
     64                ai_factory = ai_registry.GetRegistryItem("NullCreatureAI"); 
    6365        } 
    6466 
  • trunk/src/game/Object.cpp

    r58 r81  
    595595                    *data << (m_uint32Values[ index ] & ~UNIT_FLAG_NOT_SELECTABLE); 
    596596                } 
     597                // use modelid_a if not gm, _h if gm for CREATURE_FLAG_EXTRA_TRIGGER creatures 
     598                else if(index == UNIT_FIELD_DISPLAYID && GetTypeId() == TYPEID_UNIT) 
     599                { 
     600                    const CreatureInfo* cinfo = ((Creature*)this)->GetCreatureInfo(); 
     601                    if(cinfo->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER) 
     602                    { 
     603                        if(target->isGameMaster()) 
     604                            *data << cinfo->DisplayID_A; 
     605                        else 
     606                            *data << cinfo->DisplayID_H; 
     607                    } 
     608                    else 
     609                        *data << m_uint32Values[ index ]; 
     610                } 
    597611                // hide lootable animation for unallowed players 
    598612                else if(index == UNIT_DYNAMIC_FLAGS && GetTypeId() == TYPEID_UNIT) 
  • trunk/src/game/Unit.cpp

    r74 r81  
    84588458        return false; 
    84598459 
     8460    if(GetTypeId()==TYPEID_UNIT && (((Creature *)this)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER)) 
     8461        return false; 
     8462 
    84608463    return isAlive() && !hasUnitState(UNIT_STAT_DIED)&& !isInFlight() /*&& !isStealth()*/; 
    84618464}