📄 creatureutil.cpp
字号:
if (pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH)) { if (SkillType != SKILL_UN_TRANSFORM) return false; } // 葛磐荤捞努阑 藕 惑抛俊辑绰 扁贱阑 荤侩且 荐 绝促. if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); if (pSlayer->hasRideMotorcycle()) { return false; } } return true;}bool isAbleToUseObjectSkill(Creature* pCreature, SkillType_t SkillType){ Assert(pCreature != NULL); // 窍捞靛 吧赴 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 磷篮 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 泅犁 捧疙拳登绊 乐绰 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 付厚 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 冠零 惑抛局辑绰 扁贱阑 荤侩且 荐 绝促. // Cause Critical Wounds俊 吧妨乐促搁 扁贱阑 荤侩且 荐 绝促 if (pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_CASKET) || pCreature->isFlag(Effect::EFFECT_CLASS_COMA) || pCreature->isDead() || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_PARALYZE) || pCreature->isFlag(Effect::EFFECT_CLASS_ETERNITY_PAUSE) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_CAUSE_CRITICAL_WOUNDS) || pCreature->isFlag(Effect::EFFECT_CLASS_SOUL_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_LOVE_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_GUN_SHOT_GUIDANCE_AIM) || pCreature->isFlag(Effect::EFFECT_CLASS_SLEEP) || pCreature->isFlag(Effect::EFFECT_CLASS_ARMAGEDDON) || pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) || pCreature->isFlag(Effect::EFFECT_CLASS_TENDRIL) || pCreature->isFlag(Effect::EFFECT_CLASS_BLOCK_HEAD) || pCreature->isFlag(Effect::EFFECT_CLASS_REFINIUM_TICKET) || pCreature->isFlag(Effect::EFFECT_CLASS_TRAPPED) || pCreature->isFlag(Effect::EFFECT_CLASS_EXPLOSION_WATER) ) return false; // 戳措 惑抛局辑绰 匡扁唱 矫眉 冈扁 寇俊绰 胶懦阑 荤侩且 荐 绝促. if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF)) { if (SkillType != SKILL_HOWL && SkillType != SKILL_EAT_CORPSE && SkillType != SKILL_ATTACK_MELEE) { return false; } } if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WERWOLF)) { if (SkillType != SKILL_BITE_OF_DEATH && SkillType != SKILL_UN_TRANSFORM && SkillType != SKILL_ATTACK_MELEE && SkillType != SKILL_RAPID_GLIDING) { return false; } } // 葛磐荤捞努阑 藕 惑抛俊辑绰 扁贱阑 荤侩且 荐 绝促. if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); if (pSlayer->hasRideMotorcycle()) return false; } return true;}bool isAbleToUseTileSkill(Creature* pCreature, SkillType_t SkillType){ Assert(pCreature != NULL); // 窍捞靛 吧赴 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 磷篮 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 泅犁 捧疙拳登绊 乐绰 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 付厚 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 冠零 惑抛局辑绰 扁贱阑 荤侩且 荐 绝促. // Cause Critical Wounds俊 吧妨乐促搁 扁贱阑 荤侩且 荐 绝促 if (pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_CASKET) || pCreature->isFlag(Effect::EFFECT_CLASS_COMA) || pCreature->isDead() || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_PARALYZE) || pCreature->isFlag(Effect::EFFECT_CLASS_ETERNITY_PAUSE) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_CAUSE_CRITICAL_WOUNDS) || pCreature->isFlag(Effect::EFFECT_CLASS_SOUL_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_LOVE_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_GUN_SHOT_GUIDANCE_AIM) || pCreature->isFlag(Effect::EFFECT_CLASS_SLEEP) || pCreature->isFlag(Effect::EFFECT_CLASS_ARMAGEDDON) || pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) || pCreature->isFlag(Effect::EFFECT_CLASS_TENDRIL) || pCreature->isFlag(Effect::EFFECT_CLASS_BLOCK_HEAD) || pCreature->isFlag(Effect::EFFECT_CLASS_REFINIUM_TICKET) || pCreature->isFlag(Effect::EFFECT_CLASS_TRAPPED) || pCreature->isFlag(Effect::EFFECT_CLASS_EXPLOSION_WATER) ) return false; // 戳措 惑抛局辑绰 匡扁唱 矫眉 冈扁 寇俊绰 胶懦阑 荤侩且 荐 绝促. if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF)) { if (SkillType != SKILL_HOWL && SkillType != SKILL_EAT_CORPSE) { return false; } } if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WERWOLF)) { if (SkillType != SKILL_BITE_OF_DEATH && SkillType != SKILL_UN_TRANSFORM && SkillType != SKILL_ATTACK_MELEE && SkillType != SKILL_RAPID_GLIDING) { return false; } } // 葛磐荤捞努阑 藕 惑抛俊辑绰 扁贱阑 荤侩且 荐 绝促. if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); if (pSlayer->hasRideMotorcycle()) return false; } return true;}bool isAbleToUseInventorySkill(Creature* pCreature, BYTE X, BYTE Y, BYTE TX, BYTE TY, SkillType_t SkillType){ Assert(pCreature != NULL); // 牢亥配府 谅钎啊 逞绢啊绰 版快俊绰 荤侩且 荐 绝促. // 窍捞靛 吧赴 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 磷篮 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 泅犁 捧疙拳登绊 乐绰 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 付厚 惑怕俊辑绰 扁贱阑 荤侩且 荐 绝促. // 冠零 惑抛局辑绰 扁贱阑 荤侩且 荐 绝促. // Cause Critical Wounds俊 吧啡促搁 扁贱阑 荤侩且 荐 绝促 //if (X >= 10 || Y >= 6 || TX >= 10 || TY >= 6) return false; if (X >= 10 || Y >= 6) return false; if (pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_CASKET) || pCreature->isFlag(Effect::EFFECT_CLASS_COMA) || pCreature->isDead() || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_PARALYZE) || pCreature->isFlag(Effect::EFFECT_CLASS_ETERNITY_PAUSE) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_CAUSE_CRITICAL_WOUNDS) || pCreature->isFlag(Effect::EFFECT_CLASS_SOUL_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_LOVE_CHAIN) || pCreature->isFlag(Effect::EFFECT_CLASS_GUN_SHOT_GUIDANCE_AIM) || pCreature->isFlag(Effect::EFFECT_CLASS_SLEEP) || pCreature->isFlag(Effect::EFFECT_CLASS_ARMAGEDDON) || pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) || pCreature->isFlag(Effect::EFFECT_CLASS_TENDRIL) || pCreature->isFlag(Effect::EFFECT_CLASS_BLOCK_HEAD) || pCreature->isFlag(Effect::EFFECT_CLASS_REFINIUM_TICKET) || pCreature->isFlag(Effect::EFFECT_CLASS_TRAPPED) || pCreature->isFlag(Effect::EFFECT_CLASS_EXPLOSION_WATER) ) return false; // 戳措 惑抛局辑绰 匡扁唱 矫眉 冈扁 寇俊绰 胶懦阑 荤侩且 荐 绝促. if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF)) { if (SkillType != SKILL_HOWL && SkillType != SKILL_EAT_CORPSE) { return false; } } if (pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WERWOLF)) { if (SkillType != SKILL_BITE_OF_DEATH && SkillType != SKILL_UN_TRANSFORM && SkillType != SKILL_ATTACK_MELEE && SkillType != SKILL_RAPID_GLIDING) { return false; } } // 葛磐荤捞努阑 藕 惑抛俊辑绰 扁贱阑 荤侩且 荐 绝促. if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); if (pSlayer->hasRideMotorcycle()) return false; } return true;}////////////////////////////////////////////////////////////////////////////////// 烙狼狼 农府媚啊 酒捞袍阑 林阑 荐 乐绰 惑怕牢啊甫 八荤窍绰 窃荐////////////////////////////////////////////////////////////////////////////////bool isAbleToPickupItem(Creature* pCreature, Item* pItem){ Assert(pCreature != NULL); // 磷篮 惑怕俊辑绰 酒捞袍阑 林阑 荐 绝促. // 冠零 惑怕俊辑绰 酒捞袍阑 林阑 荐 绝促. if (pCreature->isFlag(Effect::EFFECT_CLASS_COMA) // 泅犁 付厚俊 吧妨乐促搁.... by sigi. 2002.12.10 || pCreature->isFlag(Effect::EFFECT_CLASS_PARALYZE) || pCreature->isFlag(Effect::EFFECT_CLASS_ETERNITY_PAUSE)// || pCreature->isFlag(Effect::EFFECT_CLASS_SANCTUARY) || pCreature->isFlag(Effect::EFFECT_CLASS_CASKET) || pCreature->isDead() || pCreature->isFlag(Effect::EFFECT_CLASS_ARMAGEDDON) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) || pCreature->isFlag(Effect::EFFECT_CLASS_TENDRIL) || pCreature->isFlag(Effect::EFFECT_CLASS_BLOCK_HEAD) || pCreature->isFlag(Effect::EFFECT_CLASS_TRAPPED) ) return false; // 积眠绢府 救俊 乐栏搁 给 笼绰促. Zone* pZone = pCreature->getZone(); if ( pZone != NULL ) { Tile& rTile = pZone->getTile( pCreature->getX(), pCreature->getY() ); if ( rTile.getEffect( Effect::EFFECT_CLASS_SANCTUARY ) != NULL ) { return false; } } // 葛磐荤捞努阑 藕 惑怕俊辑绰 酒捞袍阑 林阑 荐 绝促. if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); if (pSlayer->hasRideMotorcycle()) return false; } // QuestItem牢 版快绰 窍唱观俊 林匡 荐 绝促. // 唱吝俊 肚 官差摆瘤. 栏褥. - -; by sigi. 2002.9.4 Item::ItemClass itemClass = pItem->getItemClass(); ItemType_t itemtype = pItem->getItemType(); if (itemClass==Item::ITEM_CLASS_QUEST_ITEM && pCreature->isPC() && pItem->getItemType() < 4) { PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); // 付快胶俊 爱绊 乐芭唱 Item* pMouseItem = pPC->getExtraInventorySlotItem(); if (pMouseItem!=NULL && pMouseItem->getItemClass()==Item::ITEM_CLASS_QUEST_ITEM && pMouseItem->getItemType() < 4) return false; // 牢亥配府俊 乐绰 版快 Item* pInvenItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM); if (pInvenItem!=NULL && pInvenItem->getItemClass()==Item::ITEM_CLASS_QUEST_ITEM && pInvenItem->getItemType() < 4) return false; } // 涅胶飘 酒捞袍 (矫埃力茄 酒捞袍) 篮 林匡 荐 绝促. if ( pItem->isTimeLimitItem() ) return false; // 己拱, 乔狼 己辑, 己狼 惑隆..殿狼 酒捞袍牢 版快 if (isRelicItem( itemClass )) { // Relic阑 林匡 荐 绝促绰 Effect啊 吧妨乐绰 版快捞芭唱 // 漂沥 扁贱 荤侩吝俊绰 Relic阑 林匡 荐 绝促. if (pItem->isFlag(Effect::EFFECT_CLASS_RELIC_LOCK) || pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_INVISIBILITY) || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_CASTLE_SYMBOL) ) { return false; } switch (itemClass) { // 酒流 绝绰 Relic父 林匡 荐 乐促. case Item::ITEM_CLASS_RELIC : { const RelicInfo* pRelicInfo = dynamic_cast<RelicInfo*>(g_pRelicInfoManager->getItemInfo(itemtype)); if (pRelicInfo->relicType==RELIC_TYPE_SLAYER && !pCreature->isFlag(Effect::EFFECT_CLASS_HAS_SLAYER_RELIC) || pRelicInfo->relicType==RELIC_TYPE_VAMPIRE && !pCreature->isFlag(Effect::EFFECT_CLASS_HAS_VAMPIRE_RELIC) ) { return true; } } break; case Item::ITEM_CLASS_BLOOD_BIBLE : { if (pCreature->isFlag(Effect::EFFECT_CLASS_HAS_VAMPIRE_RELIC) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_SLAYER_RELIC)) { return false; } BloodBible* pBloodBible = dynamic_cast<BloodBible*>(pItem); Assert( pBloodBible != NULL ); if ( !g_pShrineInfoManager->canPickupBloodBible( pCreature->getRace(), pBloodBible ) ) { return false; } // 赁绰 逞捞 救傈瘤措俊 乐栏搁 林匡 荐 绝促. ZoneLevel_t zoneLevel = pCreature->getZone()->getZoneLevel( pCreature->getX(), pCreature->getY() ); if ( zoneLevel & SAFE_ZONE ) { return false; } } break; case Item::ITEM_CLASS_CASTLE_SYMBOL : { if (pCreature->isFlag(Effect::EFFECT_CLASS_HAS_VAMPIRE_RELIC) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_SLAYER_RELIC)) { return false; } ZoneID_t castleZoneID = 0; if ( g_pCastleInfoManager->getCastleZoneID( pCreature->getZone()->getZoneID(), castleZoneID ) ) { CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( castleZoneID ); if ( pCreature->getRace() != pCastleInfo->getRace() ) return false; } else { return false; } } break; default : return false; } } if ( pItem->getItemClass() == Item::ITEM_CLASS_SWEEPER ) { if ( pCreature->isFlag( Effect::EFFECT_CLASS_HAS_SWEEPER ) ) return false; LevelWarManager* pLevelWarManager = NULL; if ( pZone != NULL ) pLevelWarManager = pZone->getLevelWarManager(); if ( pLevelWarManager == NULL || !pLevelWarManager->hasWar() ) return false; if ( pItem->isFlag(Effect::EFFECT_CLASS_RELIC_LOCK) || pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_INVISIBILITY) || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_CASTLE_SYMBOL) ) return false; } // 标惯爱绊 乐栏搁 标惯 给 笼绰促. if ( pItem->isFlagItem() ) { if ( !g_pFlagManager->hasFlagWar() ) return false; if ( pCreature->isFlag( Effect::EFFECT_CLASS_HAS_FLAG ) ) return false; if ( pItem->isFlag(Effect::EFFECT_CLASS_RELIC_LOCK) || pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pCreature->isFlag(Effect::EFFECT_CLASS_INVISIBILITY) || pCreature->isFlag(Effect::EFFECT_CLASS_FADE_OUT) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF) || pCreature->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) || pCreature->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE) || pCreature->isFlag(Effect::EFFECT_CLASS_HAS_CASTLE_SYMBOL) ) return false; } ///* if (pCreature->isSlayer()) { if ( pItem->isFlag( Effect::EFFECT_CLASS_VAMPIRE_ONLY ) ) return false; if ( pItem->isFlag( Effect::EFFECT_CLASS_OUSTERS_ONLY ) ) return false; // Slayer牢 版快绰 vampire 酒捞袍父 给 凛绰促. // Ousters 酒捞袍档 给 凛绰促 switch (itemClass) { case Item::ITEM_CLASS_VAMPIRE_RING : case Item::ITEM_CLASS_VAMPIRE_BRACELET : case Item::ITEM_CLASS_VAMPIRE_NECKLACE : case Item::ITEM_CLASS_VAMPIRE_COAT : case Item::ITEM_CLASS_VAMPIRE_ETC : case Item::ITEM_CLASS_VAMPIRE_PORTAL_ITEM : case Item::ITEM_CLASS_VAMPIRE_EARRING : case Item::ITEM_CLASS_VAMPIRE_WEAPON : case Item::ITEM_CLASS_VAMPIRE_AMULET : case Item::ITEM_CLASS_SERUM : case Item::ITEM_CLASS_OUSTERS_ARMSBAND : case Item::ITEM_CLASS_OUSTERS_BOOTS : case Item::ITEM_CLASS_OUSTERS_CHAKRAM : case Item::ITEM_CLASS_OUSTERS_CIRCLET : case Item::ITEM_CLASS_OUSTERS_COAT : case Item::ITEM_CLASS_OUSTERS_PENDENT : case Item::ITEM_CLASS_OUSTERS_RING : case Item::ITEM_CLASS_OUSTERS_STONE : case Item::ITEM_CLASS_OUSTERS_WRISTLET : case Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM : case Item::ITEM_CLASS_CODE_SHEET : return false; case Item::ITEM_CLASS_MONEY : // vampire 捣捞搁 给 凛绰促. if (pItem->getItemType()==1) return false; break; default : return true; } return true; } else if (pCreature->isVampire()) { if ( pItem->isFlag( Effect::EFFECT_CLASS_SLAYER_ONLY ) ) return false; if ( pItem->isFlag( Effect::EFFECT_CLASS_OUSTERS_ONLY ) ) return false; // Vampire牢 版快绰 Vampire 酒捞袍苞 // event 酒捞袍父 林匡 荐 乐促. switch (pItem->getItemClass()) { case Item::ITEM_CLASS_VAMPIRE_RING : case Item::ITEM_CLASS_VAMPIRE_BRACELET : case Item::ITEM_CLASS_VAMPIRE_NECKLACE : case Item::ITEM_CLASS_VAMPIRE_COAT :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -