void spawn_item_flag() { if ( k_ctf_custom_models ) setmodel( self, "progs/flag.mdl" ); self->s.v.noise = "misc/flagtk.wav"; self->s.v.noise1 = "doors/runetry.wav"; setsize( self, -16, -16, 0, 16, 16, 74); self->mdl = self->s.v.model; self->s.v.flags = FL_ITEM; self->s.v.solid = SOLID_TRIGGER; self->s.v.movetype = MOVETYPE_TOSS; SetVector( self->s.v.velocity, 0, 0, 0 ); self->s.v.origin[2] += 6; self->s.v.think = (func_t) FlagThink; self->s.v.touch = (func_t) FlagTouch; self->s.v.nextthink = g_globalvars.time + 0.1; self->cnt = FLAG_AT_BASE; self->cnt2 = 0.0; VectorCopy( self->s.v.angles, self->mangle ); self->s.v.effects = (int) self->s.v.effects | EF_DIMLIGHT; if ( !droptofloor( self ) ) ent_remove( self ); else VectorCopy( self->s.v.origin, self->s.v.oldorigin ); if ( !isCTF() ) { setmodel( self, "" ); self->s.v.touch = (func_t) SUB_Null; } }
void SP_misc_explobox2( ) { float oldz; if ( !CheckExistence( ) ) { dremove( self ); return; } self->s.v.solid = SOLID_BBOX; self->s.v.movetype = MOVETYPE_NONE; trap_precache_model( "maps/b_exbox2.bsp" ); setmodel( self, "maps/b_exbox2.bsp" ); setsize( self, 0, 0, 0, 32, 32, 32 ); trap_precache_sound( "weapons/r_exp3.wav" ); self->s.v.health = 20; self->th_die = barrel_explode; self->s.v.takedamage = DAMAGE_AIM; self->s.v.origin[2] += 2; oldz = self->s.v.origin[2]; droptofloor( self ); if ( oldz - self->s.v.origin[2] > 250 ) { G_dprintf( "item fell out of level at '%f %f %f'\n", PASSVEC3( self->s.v.origin ) ); ent_remove( self ); } }
void ControlNPC::connect(DynamicEntity* de) { if(!de) fatal("Controler::Character : no valid Dynamic Entity. Exit!"); dynent = de; ///TODO: set name ActionInstance defformatstring(s)("%p", this); copystring(dynent->name, s); ///TODO: set and send basic infos like name, model ... // filtertext(dynent->name, lib.librarydescr, false, MAXNAMELEN); game::addmsg(SV_SWITCHNAME, "rs", dynent->name); dynent->controltype = CONTROL_NPC; dynent->lastupdate = lastmillis; ///TODO: spawn behaviour in edit and normal mode //first spawn, no actions defined in Actionlib // if(editmode) // { dynent->o = vec(game::player1->o); droptofloor(dynent->o, 0, 0); vec sp = vec(0,0,0); vecfromyawpitch(game::player1->yaw, 0, 50, 0, sp); dynent->o.add(sp); dynent->o.z += dynent->eyeheight; game::addmsg(SV_TRYSPAWN, "rc", dynent); // } Instance::init(); isinit = true; }
void SpawnItem4 (edict_t *ent, gitem_t *item) { // PrecacheItem (item); ent->item = item; ent->nextthink = level.time ; // items start after other solids ent->think = droptofloor; ent->s.effects = 0; ent->s.renderfx = RF_GLOW; // if (ent->model) // gi.modelindex (ent->model); droptofloor (ent); ent->s.modelindex = 0; ent->nextthink = level.time + 100 * FRAMETIME; // items start after other solids ent->think = G_FreeEdict; }
/* ============ DropToFloor plants the object on the floor ============ */ void Item::DropToFloor( Event * ) { str fullname; Vector save; PlaceItem(); addOrigin( Vector(0, 0, 1) ); save = origin; if ( gravity > 0.0f ) { if ( !droptofloor( 8192.0f ) ) { gi.WDPrintf( "%s (%d) stuck in world at '%5.1f %5.1f %5.1f'\n", getClassID(), entnum, origin.x, origin.y, origin.z ); setOrigin( save ); setMoveType( MOVETYPE_NONE ); } else { setMoveType( MOVETYPE_NONE ); } } // // if the our global variable doesn't exist, lets zero it out // fullname = str( "playeritem_" ) + getName(); if ( !gameVars.VariableExists( fullname.c_str() ) ) { gameVars.SetVariable( fullname.c_str(), 0 ); } if ( !levelVars.VariableExists( fullname.c_str() ) ) { levelVars.SetVariable( fullname.c_str(), 0 ); } if ( multiplayerManager.inMultiplayer() && gi.Anim_NumForName( edict->s.modelindex, "idle_onground" ) >= 0 ) { animate->RandomAnimate( "idle_onground" ); edict->s.eType = ET_MODELANIM; } }
void PlaceItem() { self->s.v.solid = SOLID_TRIGGER; self->s.v.movetype = MOVETYPE_TOSS; self->s.v.flags = FL_ITEM; self->mdl = self->s.v.model; SetVector( self->s.v.velocity, 0, 0, 0 ); self->s.v.origin[2] += 6; if ( !droptofloor( self ) ) { G_Printf( "Bonus item fell out of level at '%f %f %f'\n", self->s.v.origin[0], self->s.v.origin[1], self->s.v.origin[2] ); ent_remove( self ); } }
void ControlCharacter::init(DynamicEntity* de) { if(!de) fatal("Controler::Character : no valid Dynamic Entity. Exit!"); dynent = de; copystring(dynent->name, lib.librarydescr); // TODO (offtools#1#): set and send basic infos like name, model ... // filtertext(dynent->name, lib.librarydescr, false, MAXNAMELEN); // addmsg(SV_SWITCHNAME, "rs", dynent->name); dynent->controltype = CONTROL_CHARACTER; dynent->lastupdate = lastmillis; plastaction = &(dynent->lastaction); //added by Protagoras //first spawn, no actions defined in Actionlib if(editmode && !lib.states[0]->steps.length()) { // TODO (offtools#1#): fix if author under floor dynent->o = vec(game::player1->o); droptofloor(dynent->o, 0, 0); vec sp = vec(0,0,0); vecfromyawpitch(game::player1->yaw, 0, 50, 0, sp); dynent->o.add(sp); dynent->o.z += dynent->eyeheight; game::addmsg(SV_TRYSPAWN, "rc", dynent); event(ACTIONINSTANCE_EVENT_INIT); } else { event(ACTIONINSTANCE_EVENT_INIT); } isinit = true; }