784 lines
16 KiB
C++
784 lines
16 KiB
C++
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Logfile:: /Quake 2 Engine/Sin/code/game/keys.cpp $
|
|
// $Revision:: 24 $
|
|
// $Author:: Markd $
|
|
// $Date:: 11/15/98 4:30p $
|
|
//
|
|
// Copyright (C) 1998 by Ritual Entertainment, Inc.
|
|
// All rights reserved.
|
|
//
|
|
// This source is may not be distributed and/or modified without
|
|
// expressly written permission by Ritual Entertainment, Inc.
|
|
//
|
|
// $Log:: /Quake 2 Engine/Sin/code/game/keys.cpp $
|
|
//
|
|
// 24 11/15/98 4:30p Markd
|
|
// don't play pulse part dialog if jc not present
|
|
//
|
|
// 23 10/26/98 2:17p Aldie
|
|
// Updated evidence.def
|
|
//
|
|
// 22 10/25/98 1:51a Aldie
|
|
// Added passcode2
|
|
//
|
|
// 21 10/25/98 12:23a Markd
|
|
// Put in pulse parts
|
|
//
|
|
// 20 10/23/98 10:15p Aldie
|
|
// Changed class name of identity card
|
|
//
|
|
// 19 10/22/98 6:27p Aldie
|
|
// Fixed typo with identity card
|
|
//
|
|
// 18 10/20/98 3:00a Aldie
|
|
// Set oldorigin of pulseparts
|
|
//
|
|
// 17 10/19/98 12:05a Jimdose
|
|
// made all code use fast checks for inheritance (no text lookups when
|
|
// possible)
|
|
// isSubclassOf no longer requires ::_classinfo()
|
|
// moved ScubaGear to powerups.cpp
|
|
//
|
|
// 16 10/17/98 6:58p Aldie
|
|
// Made pulseparts work
|
|
//
|
|
// 15 10/16/98 11:01p Aldie
|
|
// Added Hand
|
|
//
|
|
// 14 10/12/98 3:49p Aldie
|
|
// More items
|
|
//
|
|
// 13 10/07/98 9:06p Aldie
|
|
// Added a bunch of inventory items
|
|
//
|
|
// 12 9/07/98 6:20p Markd
|
|
// added inventory_dollar
|
|
//
|
|
// 11 8/08/98 8:04p Markd
|
|
// Added money bag
|
|
//
|
|
// 10 7/20/98 3:52p Aldie
|
|
// Fixed the icons
|
|
//
|
|
// 9 7/19/98 5:40p Markd
|
|
// Added keyring
|
|
//
|
|
// 8 7/19/98 5:32p Markd
|
|
// Added KeyRing
|
|
//
|
|
// 7 7/19/98 3:43p Markd
|
|
// Added a setIcon for keys
|
|
//
|
|
// 6 6/27/98 8:13p Markd
|
|
// Added additional inventory items
|
|
//
|
|
// 5 6/25/98 8:47p Markd
|
|
// Added keyed items for Triggers, Rewrote Item class, rewrote every pickup
|
|
// method
|
|
//
|
|
// DESCRIPTION:
|
|
// Access cards and keys
|
|
|
|
#include "inventoryitem.h"
|
|
#include "player.h"
|
|
|
|
class EXPORT_FROM_DLL BlueCard : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( BlueCard );
|
|
BlueCard();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, BlueCard, "inventory_bluecard" )
|
|
|
|
ResponseDef BlueCard::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
BlueCard::BlueCard
|
|
(
|
|
)
|
|
{
|
|
setModel( "card_blu.def" );
|
|
}
|
|
|
|
|
|
class EXPORT_FROM_DLL OrangeCard : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( OrangeCard );
|
|
OrangeCard();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, OrangeCard, "inventory_orangecard" )
|
|
|
|
ResponseDef OrangeCard::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
OrangeCard::OrangeCard
|
|
(
|
|
)
|
|
{
|
|
setModel( "card_orng.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL YellowCard : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( YellowCard );
|
|
YellowCard();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, YellowCard, "inventory_yellowcard" )
|
|
|
|
ResponseDef YellowCard::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
YellowCard::YellowCard
|
|
(
|
|
)
|
|
{
|
|
setModel( "card_yel.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL GreenCard : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( GreenCard );
|
|
GreenCard();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, GreenCard, "inventory_greencard" )
|
|
|
|
ResponseDef GreenCard::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
GreenCard::GreenCard
|
|
(
|
|
)
|
|
{
|
|
setModel( "card_grn.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL IdentCard : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( IdentCard );
|
|
IdentCard();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, IdentCard, "inventory_identcard" )
|
|
|
|
ResponseDef IdentCard::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
IdentCard::IdentCard
|
|
(
|
|
)
|
|
{
|
|
setModel( "identcard.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Cookies : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Cookies );
|
|
Cookies();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Cookies, "inventory_cookies" )
|
|
|
|
ResponseDef Cookies::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Cookies::Cookies
|
|
(
|
|
)
|
|
{
|
|
setModel( "cookies.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL ComLink : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( ComLink );
|
|
ComLink();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, ComLink, "inventory_comlink" )
|
|
|
|
ResponseDef ComLink::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
ComLink::ComLink
|
|
(
|
|
)
|
|
{
|
|
setModel( "comlink.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Coin : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Coin );
|
|
Coin();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Coin, "inventory_coin" )
|
|
|
|
ResponseDef Coin::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Coin::Coin
|
|
(
|
|
)
|
|
{
|
|
setModel( "coin.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Code : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Code );
|
|
Code();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Code, "inventory_code" )
|
|
|
|
ResponseDef Code::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Code::Code
|
|
(
|
|
)
|
|
{
|
|
setModel( "code.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL KeyRing : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( KeyRing );
|
|
KeyRing();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, KeyRing, "inventory_keyring" )
|
|
|
|
ResponseDef KeyRing::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
KeyRing::KeyRing
|
|
(
|
|
)
|
|
{
|
|
setModel( "keys.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL MoneyBag : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( MoneyBag );
|
|
MoneyBag();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, MoneyBag, "inventory_moneybag" )
|
|
|
|
ResponseDef MoneyBag::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
MoneyBag::MoneyBag
|
|
(
|
|
)
|
|
{
|
|
setModel( "moneybag_inv.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Dollar : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Dollar );
|
|
Dollar();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Dollar, "inventory_dollar" )
|
|
|
|
ResponseDef Dollar::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Dollar::Dollar
|
|
(
|
|
)
|
|
{
|
|
setModel( "dollar.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Evidence : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Evidence );
|
|
Evidence();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Evidence, "inventory_evidence" )
|
|
|
|
ResponseDef Evidence::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Evidence::Evidence
|
|
(
|
|
)
|
|
{
|
|
setModel( "evidence.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Decoder : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Decoder );
|
|
Decoder();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Decoder, "inventory_decoder" )
|
|
|
|
ResponseDef Decoder::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Decoder::Decoder
|
|
(
|
|
)
|
|
{
|
|
setModel( "code.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL PulsePart1 : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( PulsePart1 );
|
|
PulsePart1();
|
|
virtual Item *ItemPickup( Entity *other );
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, PulsePart1, "inventory_pulsepart1" )
|
|
|
|
ResponseDef PulsePart1::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
PulsePart1::PulsePart1
|
|
(
|
|
)
|
|
{
|
|
ExecuteThread( "global/pulse_parts.scr::precache", true );
|
|
setModel( "pulsepart1.def" );
|
|
}
|
|
|
|
Item *PulsePart1::ItemPickup
|
|
(
|
|
Entity *other
|
|
)
|
|
|
|
{
|
|
if ( !level.no_jc )
|
|
ExecuteThread( "global/pulse_parts.scr::blade_finds_piece1", true );
|
|
gameVars.CreateVariable( "pulse1", 1 );
|
|
if ( other->isClient() )
|
|
{
|
|
Player *player;
|
|
ScriptVariable *var1,*var2,*var3;
|
|
|
|
var1 = gameVars.GetVariable( "pulse1" );
|
|
var2 = gameVars.GetVariable( "pulse2" );
|
|
var3 = gameVars.GetVariable( "pulse3" );
|
|
|
|
if ( var1 && var2 && var3 )
|
|
{
|
|
player = ( Player * )other;
|
|
player->giveWeapon( "PulseRifle" );
|
|
player->FreeInventoryOfType( "PulsePart2" );
|
|
player->FreeInventoryOfType( "PulsePart3" );
|
|
CancelEventsOfType( EV_Item_DropToFloor );
|
|
CancelEventsOfType( EV_Item_Respawn );
|
|
CancelEventsOfType( EV_FadeOut );
|
|
PostEvent( EV_Remove, 0 );
|
|
return NULL;
|
|
}
|
|
}
|
|
return Item::ItemPickup( other );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL PulsePart2 : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( PulsePart2 );
|
|
PulsePart2();
|
|
virtual Item *ItemPickup( Entity *other );
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, PulsePart2, "inventory_pulsepart2" )
|
|
|
|
ResponseDef PulsePart2::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
PulsePart2::PulsePart2
|
|
(
|
|
)
|
|
{
|
|
ExecuteThread( "global/pulse_parts.scr::precache", true );
|
|
setModel( "pulsepart2.def" );
|
|
}
|
|
|
|
Item *PulsePart2::ItemPickup
|
|
(
|
|
Entity *other
|
|
)
|
|
|
|
{
|
|
if ( !level.no_jc )
|
|
ExecuteThread( "global/pulse_parts.scr::blade_finds_piece2", true );
|
|
gameVars.CreateVariable( "pulse2", 1 );
|
|
if ( other->isClient() )
|
|
{
|
|
Player *player;
|
|
ScriptVariable *var1,*var2,*var3;
|
|
|
|
var1 = gameVars.GetVariable( "pulse1" );
|
|
var2 = gameVars.GetVariable( "pulse2" );
|
|
var3 = gameVars.GetVariable( "pulse3" );
|
|
|
|
if ( var1 && var2 && var3 )
|
|
{
|
|
player = ( Player * )other;
|
|
player->giveWeapon( "PulseRifle" );
|
|
player->FreeInventoryOfType( "PulsePart1" );
|
|
player->FreeInventoryOfType( "PulsePart3" );
|
|
CancelEventsOfType( EV_Item_DropToFloor );
|
|
CancelEventsOfType( EV_Item_Respawn );
|
|
CancelEventsOfType( EV_FadeOut );
|
|
PostEvent( EV_Remove, 0 );
|
|
return NULL;
|
|
}
|
|
}
|
|
return Item::ItemPickup( other );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL PulsePart3 : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( PulsePart3 );
|
|
PulsePart3();
|
|
virtual Item *ItemPickup( Entity *other );
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, PulsePart3, "inventory_pulsepart3" )
|
|
|
|
ResponseDef PulsePart3::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
PulsePart3::PulsePart3
|
|
(
|
|
)
|
|
{
|
|
ExecuteThread( "global/pulse_parts.scr::precache", true );
|
|
setModel( "pulsepart3.def" );
|
|
}
|
|
|
|
Item *PulsePart3::ItemPickup
|
|
(
|
|
Entity *other
|
|
)
|
|
|
|
{
|
|
if ( !level.no_jc )
|
|
ExecuteThread( "global/pulse_parts.scr::blade_finds_piece3", true );
|
|
gameVars.CreateVariable( "pulse3", 1 );
|
|
if ( other->isClient() )
|
|
{
|
|
Player *player;
|
|
ScriptVariable *var1,*var2,*var3;
|
|
|
|
var1 = gameVars.GetVariable( "pulse1" );
|
|
var2 = gameVars.GetVariable( "pulse2" );
|
|
var3 = gameVars.GetVariable( "pulse3" );
|
|
|
|
if ( var1 && var2 && var3 )
|
|
{
|
|
player = ( Player * )other;
|
|
player->giveWeapon( "PulseRifle" );
|
|
player->FreeInventoryOfType( "PulsePart1" );
|
|
player->FreeInventoryOfType( "PulsePart2" );
|
|
CancelEventsOfType( EV_Item_DropToFloor );
|
|
CancelEventsOfType( EV_Item_Respawn );
|
|
CancelEventsOfType( EV_FadeOut );
|
|
PostEvent( EV_Remove, 0 );
|
|
return NULL;
|
|
}
|
|
}
|
|
return Item::ItemPickup( other );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Chemsuit : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Chemsuit );
|
|
Chemsuit();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Chemsuit, "inventory_chembiosuit" )
|
|
|
|
ResponseDef Chemsuit::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Chemsuit::Chemsuit
|
|
(
|
|
)
|
|
{
|
|
setModel( "chemsuit.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Blueprints : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Blueprints );
|
|
Blueprints();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Blueprints, "inventory_blueprints" )
|
|
|
|
ResponseDef Blueprints::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Blueprints::Blueprints
|
|
(
|
|
)
|
|
{
|
|
setModel( "blueprints.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL U4Sample : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( U4Sample );
|
|
U4Sample();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, U4Sample, "inventory_u4sample" )
|
|
|
|
ResponseDef U4Sample::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
U4Sample::U4Sample
|
|
(
|
|
)
|
|
{
|
|
setModel( "u4_sample.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Envelope : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Envelope );
|
|
Envelope();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Envelope, "inventory_envelope" )
|
|
|
|
ResponseDef Envelope::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Envelope::Envelope
|
|
(
|
|
)
|
|
{
|
|
setModel( "envelope.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL CandyBar : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( CandyBar );
|
|
CandyBar();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, CandyBar, "inventory_candybar" )
|
|
|
|
ResponseDef CandyBar::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
CandyBar::CandyBar
|
|
(
|
|
)
|
|
{
|
|
setModel( "CandyBar.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL PassCode : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( PassCode );
|
|
PassCode();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, PassCode, "inventory_passcode" )
|
|
|
|
ResponseDef PassCode::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
PassCode::PassCode
|
|
(
|
|
)
|
|
{
|
|
setModel( "password.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL PassCode2 : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( PassCode2 );
|
|
PassCode2();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, PassCode2, "inventory_passcode2" )
|
|
|
|
ResponseDef PassCode2::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
PassCode2::PassCode2
|
|
(
|
|
)
|
|
{
|
|
setModel( "password2.def" );
|
|
}
|
|
|
|
class EXPORT_FROM_DLL Hand : public InventoryItem
|
|
{
|
|
public:
|
|
CLASS_PROTOTYPE( Hand );
|
|
Hand();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, Hand, "inventory_hand" )
|
|
|
|
ResponseDef Hand::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
Hand::Hand
|
|
(
|
|
)
|
|
{
|
|
setModel( "hand.def" );
|
|
}
|
|
|
|
|
|
|
|
/*SINED inventory_genericpulsepart (.3 1 .3) (-8 -8 0) (8 8 16) NOT_SOLID NOT_DAMAGABLE
|
|
Pulse Weapon Part - Will always spawn as the next piece that the user needs
|
|
to complete the weapon. When the user picks up 3 of these, they will get the PulseRifle
|
|
*/
|
|
|
|
class EXPORT_FROM_DLL GenericPulsePart : public InventoryItem
|
|
{
|
|
|
|
public:
|
|
CLASS_PROTOTYPE( GenericPulsePart );
|
|
GenericPulsePart();
|
|
};
|
|
|
|
CLASS_DECLARATION( InventoryItem, GenericPulsePart, "inventory_genericpulsepart" )
|
|
|
|
ResponseDef GenericPulsePart::Responses[] =
|
|
{
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
GenericPulsePart::GenericPulsePart
|
|
(
|
|
)
|
|
{
|
|
ScriptVariable *var1,*var2,*var3;
|
|
|
|
var1 = gameVars.GetVariable( "pulse1" );
|
|
var2 = gameVars.GetVariable( "pulse2" );
|
|
var3 = gameVars.GetVariable( "pulse3" );
|
|
|
|
// Based on what pulserifle pieces that have already been found,
|
|
// spawn the correct model in the game.
|
|
|
|
if ( !var1 )
|
|
{
|
|
PulsePart1 *part1;
|
|
|
|
part1 = new PulsePart1;
|
|
part1->setModel( "pulsepart1.def" );
|
|
part1->setOrigin( origin );
|
|
part1->worldorigin.copyTo(part1->edict->s.old_origin);
|
|
}
|
|
else if ( !var2 )
|
|
{
|
|
PulsePart2 *part2;
|
|
|
|
part2 = new PulsePart2;
|
|
part2->setModel( "pulsepart2.def" );
|
|
part2->setOrigin( origin );
|
|
part2->worldorigin.copyTo(part2->edict->s.old_origin);
|
|
}
|
|
else if ( !var3 )
|
|
{
|
|
PulsePart3 *part3;
|
|
|
|
part3 = new PulsePart3;
|
|
part3->setModel( "pulsepart3.def" );
|
|
part3->setOrigin( origin );
|
|
part3->worldorigin.copyTo(part3->edict->s.old_origin);
|
|
}
|
|
|
|
PostEvent( EV_Remove, 0 );
|
|
}
|