From b1d86c28f595d31f5d658578ce4a349d06100fe9 Mon Sep 17 00:00:00 2001 From: maikmerten Date: Mon, 15 Aug 2005 09:46:23 +0000 Subject: [PATCH] more changes from Wazat git-svn-id: svn://svn.icculus.org/nexuiz/trunk@500 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- qcsrc/gamec/ctf.c | 34 +++++++++-- qcsrc/gamec/domination.c | 118 ++++++++++++++++++++++++++------------- qcsrc/gamec/g_hook.c | 6 +- qcsrc/gamec/runematch.c | 4 +- qcsrc/gamec/sv_main.c | 39 +++++++------ qcsrc/gamec/teamplay.c | 2 +- 6 files changed, 136 insertions(+), 67 deletions(-) diff --git a/qcsrc/gamec/ctf.c b/qcsrc/gamec/ctf.c index cce87b434..3ba15f011 100644 --- a/qcsrc/gamec/ctf.c +++ b/qcsrc/gamec/ctf.c @@ -16,6 +16,11 @@ void() FlagTouch; void() place_flag = { + if(!self.t_width) + self.t_width = 0.1; // frame animation rate + if(!self.t_length) + self.t_length = 119; // maximum frame + self.mdl = self.model; self.flags = FL_ITEM; self.solid = SOLID_TRIGGER; @@ -27,7 +32,7 @@ void() place_flag = self.nextthink = time + 0.1; self.cnt = FLAG_BASE; self.mangle = self.angles; - self.effects = self.effects | EF_DIMLIGHT | EF_LOWPRECISION; + //self.effects = self.effects | EF_DIMLIGHT; if (!droptofloor(0, 0)) { dprint("Flag fell out of level at ", vtos(self.origin), "\n"); @@ -93,6 +98,19 @@ void(entity e) DropFlag = e.pain_finished = time + cvar("g_ctf_flag_returntime");//30; }; +void AnimateFlag() +{ + if(self.delay > time) + return; + self.delay = time + self.t_width; + if(self.nextthink > self.delay) + self.nextthink = self.delay; + + self.frame = self.frame + 1; + if(self.frame > self.t_length) + self.frame = 0; +} + void() FlagThink = { local entity e; @@ -100,6 +118,8 @@ void() FlagThink = local float f; self.nextthink = time + 0.1; + + AnimateFlag(); if (self.cnt == FLAG_BASE) return; @@ -400,8 +420,10 @@ void() item_flag_team1 = if(!self.scale) self.scale = 0.6; - if(!self.glow_size) - self.glow_size = 50; + //if(!self.glow_size) + // self.glow_size = 50; + + self.effects = self.effects | EF_FULLBRIGHT | EF_LOWPRECISION; }; /*QUAKED item_flag_team2 (0 0.5 0.8) (-48 -48 -24) (48 48 64) @@ -448,8 +470,10 @@ void() item_flag_team2 = if(!self.scale) self.scale = 0.6; - if(!self.glow_size) - self.glow_size = 50; + //if(!self.glow_size) + // self.glow_size = 50; + + self.effects = self.effects | EF_FULLBRIGHT | EF_LOWPRECISION; }; diff --git a/qcsrc/gamec/domination.c b/qcsrc/gamec/domination.c index b03d09c0b..979388403 100644 --- a/qcsrc/gamec/domination.c +++ b/qcsrc/gamec/domination.c @@ -18,37 +18,6 @@ Note: The only teams who can use dom control points are identified by dom_team e void() dom_spawnteams; -void() dompointthink = -{ - local entity head; - float waittime; - float fragamt; - if (gameover) // game has ended, don't keep giving points - return; - - waittime = cvar("g_domination_point_rate"); - if(!waittime) - waittime = self.wait; - self.nextthink = time + waittime; - - if (!self.goalentity.netname) - return; - - - fragamt = cvar("g_domination_point_amt"); - if(!fragamt) - fragamt = self.frags; - - head = find(head, classname, "player"); - while (head) - { - if (head.team == self.goalentity.team) - head.frags = head.frags + fragamt; - head = find(head, classname, "player"); - } - self.goalentity.frags = self.goalentity.frags + fragamt; -}; - void dompoint_captured () { local entity head; @@ -77,8 +46,73 @@ void dompoint_captured () if (head.noise1 != "") sound(self, CHAN_VOICE, head.noise1, 1, ATTN_NONE); - self.nextthink = time + cvar("g_domination_point_rate"); - self.think = dompointthink; + //self.nextthink = time + cvar("g_domination_point_rate"); + //self.think = dompointthink; + self.delay = time + cvar("g_domination_point_rate"); +}; + +void AnimateDomPoint() +{ + if(self.pain_finished > time) + return; + self.pain_finished = time + self.t_width; + if(self.nextthink > self.pain_finished) + self.nextthink = self.pain_finished; + + self.frame = self.frame + 1; + if(self.frame > self.t_length) + self.frame = 0; +} + +void() dompointthink = +{ + local entity head; + float waittime; + float fragamt; + + self.nextthink = time + 0.1; + + //self.frame = self.frame + 1; + //if(self.frame > 119) + // self.frame = 0; + AnimateDomPoint(); + + // give points + + if (gameover) // game has ended, don't keep giving points + return; + + if(self.delay > time) + return; + + if(self.state == 1) + { + self.state = 0; + dompoint_captured(); + return; + } + + waittime = cvar("g_domination_point_rate"); + if(!waittime) + waittime = self.wait; + self.delay = time + waittime; + + if (!self.goalentity.netname) + return; + + + fragamt = cvar("g_domination_point_amt"); + if(!fragamt) + fragamt = self.frags; + + head = find(head, classname, "player"); + while (head) + { + if (head.team == self.goalentity.team) + head.frags = head.frags + fragamt; + head = find(head, classname, "player"); + } + self.goalentity.frags = self.goalentity.frags + fragamt; }; void() dompointtouch = @@ -102,9 +136,11 @@ void() dompointtouch = self.cnt = other.team; self.enemy = head; - self.nextthink = time + cvar("g_domination_point_capturetime"); - self.think = dompoint_captured; + self.state = 1; + self.delay = time + cvar("g_domination_point_capturetime"); + //self.nextthink = time + cvar("g_domination_point_capturetime"); + //self.think = dompoint_captured; // go to neutral team in the mean time head = find(world, classname, "dom_team"); @@ -187,12 +223,17 @@ void() dom_controlpoint_setup = if(!self.wait) self.wait = 5; + if(!self.t_width) + self.t_width = 0.1; // frame animation rate + if(!self.t_length) + self.t_length = 119; // maximum frame + self.think = dompointthink; self.nextthink = time; self.touch = dompointtouch; self.solid = SOLID_TRIGGER; setsize(self, '-32 -32 -24', '32 32 32'); - setorigin(self, self.origin); + setorigin(self, self.origin + '0 0 20'); droptofloor(0, 0); }; @@ -404,8 +445,9 @@ void() dom_controlpoint = if(!self.scale) self.scale = 0.6; - if(!self.glow_size) - self.glow_size = cvar("g_domination_point_glow"); + //if(!self.glow_size) + // self.glow_size = cvar("g_domination_point_glow"); + self.effects = self.effects | EF_FULLBRIGHT; }; // code from here on is just to support maps that don't have control point and team entities diff --git a/qcsrc/gamec/g_hook.c b/qcsrc/gamec/g_hook.c index 675b386d7..fd7d5f31b 100644 --- a/qcsrc/gamec/g_hook.c +++ b/qcsrc/gamec/g_hook.c @@ -56,7 +56,7 @@ void RemoveGrapplingHook(entity pl) if(pl.movetype == MOVETYPE_FLY) pl.movetype = MOVETYPE_WALK; - pl.hook_time = time + 0.5; + pl.hook_time = time + 0.0; } void GrapplingHookThink() @@ -76,7 +76,7 @@ void GrapplingHookThink() if(self.state == 1) { - pullspeed = 1000; + pullspeed = cvar("g_balance_grapplehook_speed_pull");//1000; minlength = 50; dir = self.origin - org; dist = vlen(dir); @@ -157,7 +157,7 @@ void FireGrapplingHook (void) missile.state = 0; // not latched onto anything - missile.velocity = v_forward * 1200;//cvar("g_balance_grapplehook_speed"); + missile.velocity = v_forward * cvar("g_balance_grapplehook_speed_fly"); missile.angles = vectoangles (missile.velocity); //missile.glow_color = 250; // 244, 250 //missile.glow_size = 120; diff --git a/qcsrc/gamec/runematch.c b/qcsrc/gamec/runematch.c index faacaf634..5ea070cda 100644 --- a/qcsrc/gamec/runematch.c +++ b/qcsrc/gamec/runematch.c @@ -599,8 +599,8 @@ void spawn_runes() // Savage: Save some bandwidth self.effects |= EF_LOWPRECISION; - e.glow_size = e.enemy.glow_size = cvar("g_runematch_rune_glow_size"); - e.glow_color = e.enemy.glow_color = cvar("g_runematch_rune_glow_color"); + //e.glow_size = e.enemy.glow_size = cvar("g_runematch_rune_glow_size"); + //e.glow_color = e.enemy.glow_color = cvar("g_runematch_rune_glow_color"); // this spot is taken spot.owner = e; diff --git a/qcsrc/gamec/sv_main.c b/qcsrc/gamec/sv_main.c index 6b9fcb757..0aac2a1b7 100644 --- a/qcsrc/gamec/sv_main.c +++ b/qcsrc/gamec/sv_main.c @@ -71,28 +71,31 @@ void CreatureFrame (void) self.dmg = 2; } // check for falling damage - dm = vlen(self.velocity - self.oldvelocity); - if (self.deadflag) - dm = (dm - cvar("g_balance_falldamage_deadminspeed")) * cvar("g_balance_falldamage_factor"); - else + if(!self.hook.state) { - if (self.oldvelocity_z < self.velocity_z - 100) + dm = vlen(self.velocity - self.oldvelocity); + if (self.deadflag) + dm = (dm - cvar("g_balance_falldamage_deadminspeed")) * cvar("g_balance_falldamage_factor"); + else { - local float soundrandom; - soundrandom = random() * 4; - if (soundrandom < 1) - sound (self, CHAN_BODY, "misc/hitground1.wav", 1, ATTN_NORM); - else if (soundrandom < 2) - sound (self, CHAN_BODY, "misc/hitground2.wav", 1, ATTN_NORM); - else if (soundrandom < 3) - sound (self, CHAN_BODY, "misc/hitground3.wav", 1, ATTN_NORM); - else if (soundrandom < 4) - sound (self, CHAN_BODY, "misc/hitground4.wav", 1, ATTN_NORM); + if (self.oldvelocity_z < self.velocity_z - 100) + { + local float soundrandom; + soundrandom = random() * 4; + if (soundrandom < 1) + sound (self, CHAN_BODY, "misc/hitground1.wav", 1, ATTN_NORM); + else if (soundrandom < 2) + sound (self, CHAN_BODY, "misc/hitground2.wav", 1, ATTN_NORM); + else if (soundrandom < 3) + sound (self, CHAN_BODY, "misc/hitground3.wav", 1, ATTN_NORM); + else if (soundrandom < 4) + sound (self, CHAN_BODY, "misc/hitground4.wav", 1, ATTN_NORM); + } + dm = min((dm - cvar("g_balance_falldamage_minspeed")) * cvar("g_balance_falldamage_factor"), cvar("g_balance_falldamage_maxdamage")); } - dm = min((dm - cvar("g_balance_falldamage_minspeed")) * cvar("g_balance_falldamage_factor"), cvar("g_balance_falldamage_maxdamage")); + if (dm > 0) + Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0'); } - if (dm > 0) - Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0'); self.oldvelocity = self.velocity; } self = findfloat(self, iscreature, TRUE); diff --git a/qcsrc/gamec/teamplay.c b/qcsrc/gamec/teamplay.c index e14e61d86..6d3e2c0f0 100644 --- a/qcsrc/gamec/teamplay.c +++ b/qcsrc/gamec/teamplay.c @@ -213,7 +213,7 @@ void PrintWelcomeMessage(entity pl) return; self.welcomemessage_time2 = time + 0.8; - colored = 0; + colored = 1; if(colored) { if(cvar("g_grappling_hook")) -- 2.39.2