// messages and sounds
sound(player, CH_TRIGGER, flag.snd_flag_pass, VOL_BASE, ATTN_NORM);
- ctf_EventLog("recieve", flag.team, player);
+ ctf_EventLog("receive", flag.team, player);
FOR_EACH_REALPLAYER(tmp_player)
{
if(tmp_player == sender)
centerprint(tmp_player, strcat("You passed the ", flag.netname, " to ", player.netname));
else if(tmp_player == player)
- centerprint(tmp_player, strcat("You recieved the ", flag.netname, " from ", sender.netname));
+ centerprint(tmp_player, strcat("You received the ", flag.netname, " from ", sender.netname));
else if(!IsDifferentTeam(tmp_player, sender))
centerprint(tmp_player, strcat(sender.netname, " passed the ", flag.netname, " to ", player.netname));
}
PlayerScore_Add(player, SP_CTF_CAPTIME, new_time - old_time);
// effects
- if(autocvar_g_ctf_flag_capture_effects)
- {
- pointparticles(particleeffectnum((player.team == COLOR_TEAM1) ? "red_ground_quake" : "blue_ground_quake"), flag.origin, '0 0 0', 1);
- shockwave_spawn("models/ctf/shockwavetransring.md3", flag.origin - '0 0 15', -0.8, 0, 1);
- }
+ pointparticles(particleeffectnum(flag.capeffect), flag.origin, '0 0 0', 1);
+ //shockwave_spawn("models/ctf/shockwavetransring.md3", flag.origin - '0 0 15', -0.8, 0, 1);
// other
if(capturetype == CAPTURE_NORMAL)
{
pickup_dropped_score = (autocvar_g_ctf_flag_return_time ? bound(0, ((flag.ctf_droptime + autocvar_g_ctf_flag_return_time) - time) / autocvar_g_ctf_flag_return_time, 1) : 1);
pickup_dropped_score = floor((autocvar_g_ctf_score_pickup_dropped_late * (1 - pickup_dropped_score) + autocvar_g_ctf_score_pickup_dropped_early * pickup_dropped_score) + 0.5);
- print("pickup_dropped_score is ", ftos(pickup_dropped_score), "\n");
+ dprint("pickup_dropped_score is ", ftos(pickup_dropped_score), "\n");
PlayerTeamScore_AddScore(player, pickup_dropped_score);
break;
}
}
// effects
- if(autocvar_g_ctf_flag_pickup_effects)
- pointparticles(particleeffectnum("smoke_ring"), 0.5 * (flag.absmin + flag.absmax), '0 0 0', 1);
+ pointparticles(particleeffectnum(flag.toucheffect), player.origin, '0 0 0', 1);
// waypoints
if(pickuptype == PICKUP_DROPPED) { WaypointSprite_Kill(flag.wps_flagdropped); }
if(!flag.scale) { flag.scale = FLAG_SCALE; }
if(!flag.skin) { flag.skin = ((teamnumber) ? autocvar_g_ctf_flag_red_skin : autocvar_g_ctf_flag_blue_skin); }
if(!flag.toucheffect) { flag.toucheffect = ((teamnumber) ? "redflag_touch" : "blueflag_touch"); }
- if(!flag.passeffect) { flag.passeffect = ((!teamnumber) ? "red_pass" : "blue_pass"); } // invert the team number of the flag to pass as enemy team color
+ if(!flag.passeffect) { flag.passeffect = ((teamnumber) ? "red_pass" : "blue_pass"); }
+ if(!flag.capeffect) { flag.capeffect = ((teamnumber) ? "red_cap" : "blue_cap"); }
// sound
if(!flag.snd_flag_taken) { flag.snd_flag_taken = ((teamnumber) ? "ctf/red_taken.wav" : "ctf/blue_taken.wav"); }
if(self.wps_flagcarrier)
WaypointSprite_UpdateHealth(self.wps_flagcarrier, '1 0 0' * healtharmor_maxdamage(self.health, self.armorvalue, autocvar_g_balance_armor_blockpercent));
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_PlayerDamage) // for changing damage and force values that are applied to players in g_damage.qc
if(autocvar_g_ctf_flagcarrier_auto_helpme_when_damaged > ('1 0 0' * healtharmor_maxdamage(frag_target.health, frag_target.armorvalue, autocvar_g_balance_armor_blockpercent)))
WaypointSprite_HelpMePing(frag_target.wps_flagcarrier); // TODO: only do this if there is a significant loss of health?
}
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_PlayerDies)
if(frag_target.flagcarried)
{ ctf_Handle_Throw(frag_target, world, DROP_NORMAL); }
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_GiveFragsForKill)
if(self.flagcarried)
{ ctf_Handle_Throw(self, world, DROP_NORMAL); }
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_PortalTeleport)
if(!autocvar_g_ctf_portalteleport)
{ ctf_Handle_Throw(self, world, DROP_NORMAL); }
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_PlayerUseKey)
{
+ if(gameover) { return FALSE; }
+
entity player = self;
if((time > player.throw_antispam) && (player.deadflag == DEAD_NO) && !player.speedrunning && (!player.vehicle || autocvar_g_ctf_allow_vehicle_touch))
centerprint(player, strcat("Requesting ", head.netname, " to pass you the ", head.flagcarried.netname));
}
player.throw_antispam = time + autocvar_g_ctf_pass_wait;
- return 0;
+ return TRUE;
}
else if(player.flagcarried)
{
head = head.chain;
}
- if(closest_target) { ctf_Handle_Throw(player, closest_target, DROP_PASS); return 0; }
+ if(closest_target) { ctf_Handle_Throw(player, closest_target, DROP_PASS); return TRUE; }
}
// throw the flag in front of you
if(autocvar_g_ctf_drop && player.flagcarried)
- { ctf_Handle_Throw(player, world, DROP_THROW); }
+ { ctf_Handle_Throw(player, world, DROP_THROW); return TRUE; }
}
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_HelpMePing)
WaypointSprite_Ping(self.wps_helpme);
}
- return 1;
+ return TRUE;
}
MUTATOR_HOOKFUNCTION(ctf_VehicleEnter)
vh_player.flagcarried.scale = VEHICLE_FLAG_SCALE;
//vh_player.flagcarried.angles = '0 0 0';
}
+ return TRUE;
}
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_VehicleExit)
setattachment(vh_player.flagcarried, vh_player, "");
setorigin(vh_player.flagcarried, FLAG_CARRY_OFFSET);
vh_player.flagcarried.scale = FLAG_SCALE;
- vh_player.flagcarried.angles = '0 0 0';
+ vh_player.flagcarried.angles = '0 0 0';
+ return TRUE;
}
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_AbortSpeedrun)
{
bprint("The ", self.flagcarried.netname, " was returned to base by its carrier\n");
ctf_RespawnFlag(self);
+ return TRUE;
}
- return 0;
+ return FALSE;
}
MUTATOR_HOOKFUNCTION(ctf_MatchEnd)
flag.movetype = MOVETYPE_NONE;
flag.takedamage = DAMAGE_NO;
flag.solid = SOLID_NOT;
- flag.nextthink = 0; // stop thinking
+ flag.nextthink = FALSE; // stop thinking
print("stopping the ", flag.netname, " from moving.\n");
break;
}
}
- return 0;
+ return FALSE;
}