Exemple #1
0
/*QUAKED monster_parasite (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
*/
void CParasite::Spawn ()
{
	Sounds[SOUND_PAIN1] = SoundIndex ("parasite/parpain1.wav");	
	Sounds[SOUND_PAIN2] = SoundIndex ("parasite/parpain2.wav");	
	Sounds[SOUND_DIE] = SoundIndex ("parasite/pardeth1.wav");	
	Sounds[SOUND_LAUNCH] = SoundIndex("parasite/paratck1.wav");
	Sounds[SOUND_IMPACT] = SoundIndex("parasite/paratck2.wav");
	Sounds[SOUND_SUCK] = SoundIndex("parasite/paratck3.wav");
	Sounds[SOUND_REELIN] = SoundIndex("parasite/paratck4.wav");
	Sounds[SOUND_SIGHT] = SoundIndex("parasite/parsght1.wav");
	Sounds[SOUND_TAP] = SoundIndex("parasite/paridle1.wav");
	Sounds[SOUND_SCRATCH] = SoundIndex("parasite/paridle2.wav");
	Sounds[SOUND_SEARCH] = SoundIndex("parasite/parsrch1.wav");

	Entity->State.GetModelIndex() = ModelIndex ("models/monsters/parasite/tris.md2");
	Entity->GetMins().Set (-16, -16, -24);
	Entity->GetMaxs().Set (16, 16, 24);

	Entity->GetSolid() = SOLID_BBOX;

	Entity->Health = 175;
	Entity->GibHealth = -50;
	Entity->Mass = 250;

	MonsterFlags |= (MF_HAS_ATTACK | MF_HAS_IDLE | MF_HAS_SIGHT);

	Entity->Link ();

	CurrentMove = &ParasiteMoveStand;	
	WalkMonsterStart ();

	Entity->ViewHeight = 12;
}
Exemple #2
0
Protocol::ModelIndex fromQModelIndex(const QModelIndex& index)
{
  if (!index.isValid())
    return ModelIndex();
  ModelIndex result = fromQModelIndex(index.parent());
  result.push_back(qMakePair(index.row(), index.column()));
  return result;
}
//----------------------------------------------------------------------------//
ModelIndex TreeView::indexAtWithAction(const glm::vec2& position,
    TreeViewItemAction action)
{
    if (d_itemModel == 0)
        return ModelIndex();

    //TODO: add prepareForLayout() as a cheaper operation alternative?
    prepareForRender();

    glm::vec2 window_position = CoordConverter::screenToWindow(*this, position);
    Rectf render_area(getViewRenderer()->getViewRenderArea());
    if (!render_area.isPointInRect(window_position))
        return ModelIndex();

    float cur_height = render_area.d_min.d_y - getVertScrollbar()->getScrollPosition();
    bool handled = false;
    return indexAtRecursive(d_rootItemState, cur_height, window_position,
        handled, action);
}
	static void Spawn (CPlayerEntity *Player, vec3f Start, vec3f AimDir, int DamageMultiplier, int Speed)
	{
		vec3f	dir = AimDir.ToAngles();

		anglef angles = dir.ToVectors ();
		
		CProx	*Prox = QNewEntityOf CProx;
		Prox->State.GetOrigin() = Start;
		Prox->Velocity =	(AimDir * Speed)
							.MultiplyAngles (200 + crand() * 10.0f, angles.Up)
							.MultiplyAngles (crand() * 10.0f, angles.Right);
		Prox->State.GetAngles() = dir - vec3f(90, 0, 0);
		Prox->PhysicsType = PHYSICS_BOUNCE;
		Prox->GetSolid() = SOLID_BBOX; 
		Prox->State.GetEffects() |= FX_GRENADE;
		Prox->GetClipmask() = CONTENTS_MASK_SHOT|CONTENTS_LAVA|CONTENTS_SLIME;
		Prox->State.GetRenderEffects() |= RF_IR_VISIBLE;
		
		Prox->GetMins().Set (-6, -6, -6);
		Prox->GetMaxs().Set (6, 6, 6);

		Prox->State.GetModelIndex() = ModelIndex ("models/weapons/g_prox/tris.md2");
		Prox->SetOwner(Player);
		Prox->Firer = Player;
		Prox->Touchable = true;
		Prox->ThinkType = PROXTHINK_EXPLODE;
		Prox->Damage = PROX_DAMAGE * DamageMultiplier;
		Prox->ClassName = "prox";

		switch (DamageMultiplier)
		{
		case 1:
			Prox->NextThink = Level.Frame + PROX_TIME_TO_LIVE;
			break;
		case 2:
			Prox->NextThink = Level.Frame + 300;
			break;
		case 4:
			Prox->NextThink = Level.Frame + 150;
			break;
		case 8:
			Prox->NextThink = Level.Frame + 100;
			break;
		default:
			Prox->NextThink = Level.Frame + PROX_TIME_TO_LIVE;
			break;
		}

		Prox->Link ();
	}
//----------------------------------------------------------------------------//
ModelIndex TreeView::indexAtRecursive(TreeViewItemRenderingState& item,
    float& cur_height, const glm::vec2& window_position, bool& handled,
    TreeViewItemAction action)
{
    float next_height = cur_height + item.d_size.d_height;

    if (window_position.y >= cur_height &&
        window_position.y <= next_height)
    {
        handled = true;

        float expander_width = getViewRenderer()->getSubtreeExpanderSize().d_width;
        float base_x = getViewRenderer()->getSubtreeExpanderXIndent(item.d_nestedLevel);
        base_x -= getHorzScrollbar()->getScrollPosition();
        if (window_position.x >= base_x &&
            window_position.x <= base_x + expander_width)
        {
            (this->*action)(item, true);
            return ModelIndex();
        }

        (this->*action)(item, false);
        return ModelIndex(d_itemModel->makeIndex(item.d_childId, item.d_parentIndex));
    }

    cur_height = next_height;

    for (size_t i = 0; i < item.d_renderedChildren.size(); ++i)
    {
        ModelIndex index = indexAtRecursive(*item.d_renderedChildren.at(i),
            cur_height, window_position, handled, action);
        if (handled)
            return index;
    }

    return ModelIndex();
}
Exemple #6
0
void CMaiden::Spawn ()
{
	Entity->GetSolid() = SOLID_BBOX;
	Entity->State.GetModelIndex() = ModelIndex("models/monsters/bitch/tris.md2");
	Entity->GetMins().Set (-16, -16, 0);
	Entity->GetMaxs().Set (16, 16, 56);

	Sounds[SOUND_MISSILE_PRELAUNCH]	= SoundIndex ("chick/chkatck1.wav");	
	Sounds[SOUND_MISSILE_LAUNCH]	= SoundIndex ("chick/chkatck2.wav");	
	Sounds[SOUND_MELEE_SWING]		= SoundIndex ("chick/chkatck3.wav");	
	Sounds[SOUND_MELEE_HIT]			= SoundIndex ("chick/chkatck4.wav");	
	Sounds[SOUND_MISSILE_RELOAD]	= SoundIndex ("chick/chkatck5.wav");	
	Sounds[SOUND_DEATH1]			= SoundIndex ("chick/chkdeth1.wav");	
	Sounds[SOUND_DEATH2]			= SoundIndex ("chick/chkdeth2.wav");	
	Sounds[SOUND_FALL_DOWN]			= SoundIndex ("chick/chkfall1.wav");	
	Sounds[SOUND_IDLE1]				= SoundIndex ("chick/chkidle1.wav");	
	Sounds[SOUND_IDLE2]				= SoundIndex ("chick/chkidle2.wav");	
	Sounds[SOUND_PAIN1]				= SoundIndex ("chick/chkpain1.wav");	
	Sounds[SOUND_PAIN2]				= SoundIndex ("chick/chkpain2.wav");	
	Sounds[SOUND_PAIN3]				= SoundIndex ("chick/chkpain3.wav");	
	Sounds[SOUND_SIGHT]				= SoundIndex ("chick/chksght1.wav");	
	Sounds[SOUND_SEARCH]			= SoundIndex ("chick/chksrch1.wav");	

	Entity->Health = 175;
	Entity->GibHealth = -70;
	Entity->Mass = 200;

	MonsterFlags = (MF_HAS_MELEE | MF_HAS_ATTACK | MF_HAS_IDLE | MF_HAS_SIGHT
#if ROGUE_FEATURES
		| MF_HAS_DODGE | MF_HAS_DUCK | MF_HAS_UNDUCK | MF_HAS_SIDESTEP
#endif
		);

#if ROGUE_FEATURES
	BlindFire = true;
#endif

	Entity->Link ();

	CurrentMove = &ChickMoveStand;
	WalkMonsterStart ();
}
Exemple #7
0
void CItemEntity::Think ()
{
	switch (ThinkState)
	{
	case ITS_DROPTOFLOOR:
		ThinkState = ITS_NONE;

		{
			GetMins().Set (-15);
			GetMaxs().Set (15);

			State.GetModelIndex() = ModelIndex((!Model.IsNullOrEmpty()) ? Model.CString() : LinkedItem->WorldModel);
			GetSolid() = SOLID_TRIGGER; 
			Touchable = true;
			PhysicsType = PHYSICS_TOSS;

			vec3f end = (State.GetOrigin() + vec3f(0,0,-128));
			CTrace tr (State.GetOrigin(), GetMins(), GetMaxs(), end, this, CONTENTS_MASK_SOLID);
			if (tr.StartSolid)
			{
				MapPrint (MAPPRINT_WARNING, this, State.GetOrigin(), "Entity origin is in solid\n");
				Free ();
				return;
			}

			State.GetOrigin() = tr.EndPosition;

			if (Team.HasTeam)
			{
				GetSvFlags() |= SVF_NOCLIENT;
				GetSolid() = SOLID_NOT;
				if (Team.Master == this)
				{
					NextThink = Level.Frame + ServerFramesPerSecond;
					ThinkState = ITS_RESPAWN;
				}
			}

			if (SpawnFlags & ITEM_NO_TOUCH)
			{
				GetSolid() = SOLID_BBOX;
				Touchable = false;
				State.GetEffects() &= ~FX_ROTATE;
				State.GetRenderEffects() &= ~RF_GLOW;
			}

			if (SpawnFlags & ITEM_TRIGGER_SPAWN)
			{
				GetSvFlags() |= SVF_NOCLIENT;
				GetSolid() = SOLID_NOT;
				Usable = true;
			}
			
			if (CvarList[CV_MAP_DEBUG].Boolean())
			{
				GetSolid() = SOLID_BBOX;
				GetSvFlags() = (SVF_MONSTER|SVF_DEADMONSTER);
			}

			Link ();
		}
		break;

	case ITS_RESPAWN:
		ThinkState = ITS_NONE;

		{
			IBaseEntity *RespawnedEntity = this;
			if (Team.HasTeam)
			{
				IBaseEntity *Master = Team.Master;

		#if CLEANCTF_ENABLED
		//ZOID
		//in ctf, when we are weapons stay, only the master of a team of weapons
		//is spawned
				if ((Game.GameMode & GAME_CTF) &&
					DeathmatchFlags.dfWeaponsStay.IsEnabled() &&
					entity_cast<CItemEntity>(Master)->LinkedItem && (entity_cast<CItemEntity>(Master)->LinkedItem->Flags & ITEMFLAG_WEAPON))
					RespawnedEntity = Master;
				else
		//ZOID
		#endif
				RespawnedEntity = GetRandomTeamMember(entity_cast<CItemEntity>(Master));
			}

			RespawnedEntity->GetSvFlags() &= ~SVF_NOCLIENT;
			RespawnedEntity->GetSolid() = SOLID_TRIGGER;
			RespawnedEntity->Link ();

			// send an effect
			RespawnedEntity->State.GetEvent() = EV_ITEM_RESPAWN;
		}
		break;
	case ITS_FREE:
		ThinkState = ITS_NONE;
		Free();
		break;
	};
}
/*QUAKED monster_carrier (1 .5 0) (-56 -56 -44) (56 56 44) Ambush Trigger_Spawn Sight
*/
void CCarrier::Spawn ()
{
	Sounds[SOUND_PAIN1] = SoundIndex ("carrier/pain_md.wav");
	Sounds[SOUND_PAIN2] = SoundIndex ("carrier/pain_lg.wav");
	Sounds[SOUND_PAIN3] = SoundIndex ("carrier/pain_sm.wav");
	Sounds[SOUND_DEATH] = SoundIndex ("carrier/death.wav");
	Sounds[SOUND_RAIL] = SoundIndex ("gladiator/railgun.wav");
	Sounds[SOUND_SIGHT] = SoundIndex ("carrier/sight.wav");
	Sounds[SOUND_SPAWN] = SoundIndex ("medic_commander/monsterspawn1.wav");

	Entity->State.GetSound() = SoundIndex ("bosshovr/bhvengn1.wav");

	Entity->PhysicsType = PHYSICS_STEP;
	Entity->GetSolid() = SOLID_BBOX;
	Entity->State.GetModelIndex() = ModelIndex ("models/monsters/carrier/tris.md2");
	Entity->GetMins().Set (-56, -56, -44);
	Entity->GetMaxs().Set (56, 56, 44);

	// 2000 - 4000 health
	Entity->Health = Max<> (2000, 2000 + 1000*((CvarList[CV_SKILL].Integer())-1));

	// add health in coop (500 * skill)
	if (Game.GameMode & GAME_COOPERATIVE)
		Entity->Health += 500*(CvarList[CV_SKILL].Integer());	

	Entity->GibHealth = -200;
	Entity->Mass = 1000;

	OriginalYawSpeed = YawSpeed = 15;
	
	AIFlags |= AI_IGNORE_SHOTS;
	MonsterFlags |= (MF_HAS_ATTACK | MF_HAS_SIGHT);
	Entity->Link ();

	CurrentMove = &CarrierMoveStand;	

	SoundIndex ("flyer/flysght1.wav");
	SoundIndex ("flyer/flysrch1.wav");
	SoundIndex ("flyer/flypain1.wav");
	SoundIndex ("flyer/flypain2.wav");
	SoundIndex ("flyer/flyatck2.wav");
	SoundIndex ("flyer/flyatck1.wav");
	SoundIndex ("flyer/flydeth1.wav");
	SoundIndex ("flyer/flyatck3.wav");
	SoundIndex ("flyer/flyidle1.wav");
	SoundIndex ("weapons/rockfly.wav");
	SoundIndex ("infantry/infatck1.wav");
	SoundIndex ("gunner/gunatck3.wav");
	SoundIndex ("weapons/grenlb1b.wav");
	SoundIndex ("tank/rocket.wav");

	ModelIndex ("models/monsters/flyer/tris.md2");
	ModelIndex ("models/objects/rocket/tris.md2");
	ModelIndex ("models/objects/debris2/tris.md2");
	ModelIndex ("models/objects/grenade/tris.md2");
	ModelIndex("models/items/spawngro/tris.md2");
	ModelIndex("models/items/spawngro2/tris.md2");
	ModelIndex ("models/objects/gibs/sm_metal/tris.md2");
	ModelIndex ("models/objects/gibs/gear/tris.md2");

	FlyMonsterStart ();

	AttackFinished = 0;
	switch (CvarList[CV_SKILL].Integer())
	{
	case 0:
		MonsterSlots = 3;
		break;
	case 1:
	case 2:
		MonsterSlots = 6;
		break;
	case 3:
		MonsterSlots = 9;
		break;
	default:
		MonsterSlots = 6;
		break;
	}
}