Files
2019-12-30 17:23:05 +01:00

202 lines
4.4 KiB
Plaintext

/*========================================
it_keys.qc
========================================*/
/*==========
key_touch
==========*/
void() key_touch =
{
if (other.classname != "player")
return;
if (other.health <= 0)
return;
if (other.items & self.items)
return;
sprint (other, "You got the ");
sprint (other, self.netname);
sprint (other,"\n");
sound (other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
stuffcmd (other, "bf\n");
other.items = other.items | self.items;
self.solid = SOLID_NOT;
self.model = string_null;
// fire targets
activator = other;
UseTargets();
};
/*==========
key_setmodel
==========*/
void() key_setmodel =
{
if (world.worldtype == 0)
{
precache_model ("progs/key_med.mdl");
setmodel (self, "progs/key_med.mdl");
}
else if (world.worldtype == 1)
{
precache_model ("progs/key_rune.mdl");
setmodel (self, "progs/key_rune.mdl");
}
else if (world.worldtype == 2)
{
precache_model2 ("progs/key_base.mdl");
setmodel (self, "progs/key_base.mdl");
}
};
/*==========
key_setsounds
==========*/
void() key_setsounds =
{
if (world.worldtype == 0)
self.noise = "misc/medkey.wav";
if (world.worldtype == 1)
self.noise = "misc/runekey.wav";
if (world.worldtype == 2)
self.noise = "misc/basekey.wav";
precache_sound(self.noise);
};
/*QUAKED item_key1 (0 0 1) (-16 -16 -24) (16 16 32) X X X X X X X X NOT_IN_EASY NOT_IN_NORMAL NOT_IN_HARD NOT_IN_DM
{ model("progs/key_med.mdl"); }
SILVER key
In order for keys to work
you MUST set your maps
worldtype to one of the
following:
0: medieval
1: metal
2: base
*/
void() item_key1 =
{
if (world.worldtype == 0)
self.netname = "silver key";
else if (world.worldtype == 1)
self.netname = "silver runekey";
else if (world.worldtype == 2)
self.netname = "silver keycard";
key_setmodel();
key_setsounds();
self.touch = key_touch;
self.items = IT_KEY1;
setsize (self, '-16 -16 -24', '16 16 32');
StartItem ();
};
/*QUAKED item_key2 (0 0 1) (-16 -16 -24) (16 16 32) X X X X X X X X NOT_IN_EASY NOT_IN_NORMAL NOT_IN_HARD NOT_IN_DM
{
model ({"path" : "progs/key_med.mdl", "skin" : 1});
}
GOLD key
In order for keys to work
you MUST set your maps
worldtype to one of the
following:
0: medieval
1: metal
2: base
*/
void() item_key2 =
{
if (world.worldtype == 0)
self.netname = "gold key";
else if (world.worldtype == 1)
self.netname = "gold runekey";
else if (world.worldtype == 2)
self.netname = "gold keycard";
key_setmodel();
key_setsounds();
self.skin = 1;
self.touch = key_touch;
self.items = IT_KEY2;
setsize (self, '-16 -16 -24', '16 16 32');
StartItem ();
};
/*==========
sigil_touch
==========*/
void() sigil_touch =
{
if (other.classname != "player")
return;
if (other.health <= 0)
return;
serverflags = serverflags | (self.spawnflags & 15);
centerprint (other, "You got the Rune of ", self.netname, " Magic!");
sound (other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
stuffcmd (other, "bf\n");
self.solid = SOLID_NOT;
self.model = string_null;
// fire targets
activator = other;
UseTargets();
};
/*QUAKED item_sigil (0 0 1) (-16 -16 -24) (16 16 32) E1 E2 E3 E4 X X X X NOT_IN_EASY NOT_IN_NORMAL NOT_IN_HARD NOT_IN_DM
{
model ( {{ spawnflags & 1 -> { "path" : "progs/end1.mdl" }, spawnflags & 2 -> { "path" : "progs/end2.mdl" },
spawnflags & 4 -> { "path" : "progs/end3.mdl" }, spawnflags & 8 -> { "path" : "progs/end4.mdl" },
"progs/end1.mdl" }} );
}
End of episode rune. Use in conjuction with func_bossgate and func_episodegate.
Spawnflag must be set to the appropriate episode.
Episode 1 - Dimension of the Doomed - Rune of Earth Magic
Episode 2 - The Realm of Black Magic - Rune of Black Magic
Episode 3 - The Netherworld - Rune of Hell Magic
Episode 4 - The Elder World - Run of Elder Magic
*/
void() item_sigil =
{
self.noise = "misc/runekey.wav";
precache_sound(self.noise);
if (self.spawnflags & 1)
{
self.netname = "Earth";
precache_model ("progs/end1.mdl");
setmodel (self, "progs/end1.mdl");
}
else if (self.spawnflags & 2)
{
self.netname = "Black";
precache_model2 ("progs/end2.mdl");
setmodel (self, "progs/end2.mdl");
}
else if (self.spawnflags & 4)
{
self.netname = "Hell";
precache_model2 ("progs/end3.mdl");
setmodel (self, "progs/end3.mdl");
}
else if (self.spawnflags & 8)
{
self.netname = "Elder";
precache_model2 ("progs/end4.mdl");
setmodel (self, "progs/end4.mdl");
}
else
{
objerror("invalid spawnflags\n");
remove(self);
return;
}
self.touch = sigil_touch;
setsize (self, '-16 -16 -24', '16 16 32');
StartItem ();
};