示例#1
0
void Player::onInit()
{
	const ItemManager& items = ItemManager::getInstance();

	// Reset score
	m_score = 0;
	m_panel.setScore(0);

	// Equip Shield item
	items.getItem(Item::SHIELD, UserSettings::getItemLevel(Item::SHIELD)).equip(*this);
	setShield(m_shield); // Keep previous shield value

	// Equip Hull item and repair spaceship
	items.getItem(Item::HULL, UserSettings::getItemLevel(Item::HULL)).equip(*this);
	setHP(m_max_hp);
	m_panel.setHP(m_max_hp);

	// Equip Engine item
	items.getItem(Item::ENGINE, UserSettings::getItemLevel(Item::ENGINE)).equip(*this);

	// Equip Heatsink item and for cooldown
	items.getItem(Item::HEATSINK, UserSettings::getItemLevel(Item::HEATSINK)).equip(*this);
	m_heat = 0;
	m_panel.setHeat(m_heat);
	m_overheat = false;
	m_panel.setOverheat(false);

	// Equip Weapon item
	items.getItem(Item::WEAPON, UserSettings::getItemLevel(Item::WEAPON)).equip(*this);
}
示例#2
0
void Player::applyKonamiCode()
{
	m_konami_code_activated = true;

	// Set max hp
	setMaxHP(10);
	setHP(m_max_hp);
	m_panel.setHP(m_max_hp);

	// Set max shield
	setMaxShield(10);
	setShield(m_max_shield);

	m_icecubes = 42;
	m_panel.setIcecubes(42);
	m_missiles = 42;
	m_panel.setMissiles(42);

	m_weapon.setMultiply(3);
	m_missile_launcher.setMultiply(3);

	MessageSystem::write("KONAMI CODE ON", getPosition());
	m_powerup_emitter.setPosition(getCenter());
	m_powerup_emitter.createParticles(50);
}
示例#3
0
Monster::Monster(MonsterType* _mType):
	Creature()
{
	isIdle = true;
	nick = _mType->name;
	name = _mType->realName;
	
	isMasterInRange = false;
	teleportToMaster = false;
	
	mType = _mType;
	
	spawn = NULL;
	raid = NULL;
	defaultOutfit = mType->outfit;
	currentOutfit = mType->outfit;

	double multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_HEALTH);
	health = (int32_t)(mType->health * multiplier);
	healthMax = (int32_t)(mType->healthMax * multiplier);

	baseSpeed = mType->baseSpeed;
	internalLight.level = mType->lightLevel;
	internalLight.color = mType->lightColor;
	setSkull(mType->skull);
	setShield(mType->partyShield);

	hideName = mType->hideName, hideHealth = mType->hideHealth;

	minCombatValue = 0;
	maxCombatValue = 0;

	targetTicks = 0;
	targetChangeTicks = 0;
	targetChangeCooldown = 0;
	attackTicks = 0;
	defenseTicks = 0;
	yellTicks = 0;
	extraMeleeAttack = false;
	//setStorage(510, mType->name);
	

	// register creature events
	for(StringVec::iterator it = mType->scriptList.begin(); it != mType->scriptList.end(); ++it)
	{
		if(!registerCreatureEvent(*it))
			std::cout << "[Warning - Monster::Monster] Unknown event name - " << *it << std::endl;
	}

#ifdef __ENABLE_SERVER_DIAGNOSTIC__
	monsterCount++;
#endif
}
示例#4
0
Monster::Monster(MonsterType* __type, Raid* raid, Spawn* spawn)
	: Creature(),
	  _raid(raid),
	  _spawn(spawn)
{
	_type = __type;
	defaultOutfit = _type->outfit;
	currentOutfit = _type->outfit;

	double multiplier = server.configManager().getDouble(ConfigManager::RATE_MONSTER_HEALTH);
	health = (int32_t)(_type->health * multiplier);
	healthMax = (int32_t)(_type->healthMax * multiplier);

	baseSpeed = _type->baseSpeed;
	internalLight.level = _type->lightLevel;
	internalLight.color = _type->lightColor;
	setSkull(_type->skull);
	setShield(_type->partyShield);

	hideName = _type->hideName, hideHealth = _type->hideHealth;

	minCombatValue = 0;
	maxCombatValue = 0;

	targetTicks = 0;
	attackTicks = 0;
	defenseTicks = 0;
	yellTicks = 0;
	extraMeleeAttack = false;
	resetTicks = false;

	// register creature events
	for(StringVector::iterator it = _type->scriptList.begin(); it != _type->scriptList.end(); ++it)
	{
		if(!registerCreatureEvent(*it))
			LOGe("[Monster::Monster] Unknown event name - " << *it);
	}
}
示例#5
0
void Player::onCollision(PowerUp& powerup)
{
	switch (powerup.getType())
	{
		// timed bonus
		case PowerUp::DOUBLE_SHOT:
			if (bonus_[T_DOUBLESHOT] == 0)
				m_weapon.setMultiply(2);

			bonus_[T_TRISHOT] = 0;
			bonus_[T_DOUBLESHOT] += TIMED_BONUS_DURATION;
			m_panel.activeAttackPowerUp(bonus_[T_DOUBLESHOT], powerup.getType());
			break;

		case PowerUp::TRIPLE_SHOT:
			if (bonus_[T_TRISHOT] == 0)
				m_weapon.setMultiply(3);

			bonus_[T_DOUBLESHOT] = 0;
			bonus_[T_TRISHOT] += TIMED_BONUS_DURATION;
			m_panel.activeAttackPowerUp(bonus_[T_TRISHOT], powerup.getType());
			break;

		case PowerUp::SPEED:
			if (bonus_[T_SPEED] == 0)
			{
				m_speed *= BONUS_SPEED_FACTOR;
				m_smoke_emitter.createParticles(120);
			}
			bonus_[T_SPEED] += TIMED_BONUS_DURATION;
			m_panel.activeSpeedPowerUp(bonus_[T_SPEED]);
			break;

		// immediate bonus
		case PowerUp::REPAIR:
			if (getHP() < m_max_hp)
				m_panel.setHP(updateHP(1));
			break;

		case PowerUp::FULL_REPAIR:
			setHP(m_max_hp);
			m_panel.setHP(m_max_hp);
			m_powerup_emitter.setPosition(getCenter());
			m_powerup_emitter.createParticles(50);
			break;

		case PowerUp::SHIELD:
			if (m_shield < m_max_shield)
				setShield(m_shield + 1);
			break;

		case PowerUp::FULL_SHIELD:
			setShield(m_max_shield);
			m_panel.setShield(m_max_shield);
			m_powerup_emitter.setPosition(getCenter());
			m_powerup_emitter.createParticles(50);
			break;

		case PowerUp::ICECUBE:
			if (m_icecubes < MAX_ICECUBES)
				m_panel.setIcecubes(++m_icecubes);
			break;

		case PowerUp::MISSILE:
			if (m_missiles < MAX_MISSILES)
				m_panel.setMissiles(++m_missiles);
			break;

		default:
			break;
	}

	powerup.kill();
	MessageSystem::write(powerup.getDescription(), powerup.getPosition());
	SoundSystem::playSound("power-up.ogg");
}
示例#6
0
void Hero::useItem(Item* i)
{
	if (i->getAttack() > 0) setWeapon(i);
	if (i->getDefense() > 0) setShield(i);
	if (health > 0) usePotion(i);
}
示例#7
0
文件: Charac.cpp 项目: traxys/Leyser
void Charac::checkShield(){
    int elapsedTime = shieldClock.getElapsedTime().asSeconds();
    if(elapsedTime == 10){
        setShield();
    }
}