⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 creatureutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -