- float BOT_PICKUP_RATING_LOW = 2500;
- float BOT_PICKUP_RATING_MID = 5000;
- float BOT_PICKUP_RATING_HIGH = 10000;
-
- float WEP_TYPE_OTHER = 0x00; // not for damaging people
- float WEP_TYPE_SPLASH = 0x01; // splash damage
- float WEP_TYPE_HITSCAN = 0x02; // hitscan
- float WEP_TYPEMASK = 0x0F;
- float WEP_FLAG_CANCLIMB = 0x10; // can be used for movement
- float WEP_FLAG_NORMAL = 0x20; // in "most weapons" set
- float WEP_FLAG_HIDDEN = 0x40; // hides from menu
- float WEP_FLAG_RELOADABLE = 0x80; // can has reload
- float WEP_FLAG_SUPERWEAPON = 0x100; // powerup timer
- float WEP_FLAG_MUTATORBLOCKED = 0x200; // hides from impulse 99 etc. (mutators are allowed to clear this flag)
-
- float IT_UNLIMITED_WEAPON_AMMO = 1;
+ const float BOT_PICKUP_RATING_LOW = 2500;
+ const float BOT_PICKUP_RATING_MID = 5000;
+ const float BOT_PICKUP_RATING_HIGH = 10000;
+
+ const float WEP_TYPE_OTHER = 0x00; // not for damaging people
+ const float WEP_TYPE_SPLASH = 0x01; // splash damage
+ const float WEP_TYPE_HITSCAN = 0x02; // hitscan
+ const float WEP_TYPEMASK = 0x0F;
+ const float WEP_FLAG_CANCLIMB = 0x10; // can be used for movement
+ const float WEP_FLAG_NORMAL = 0x20; // in "most weapons" set
+ const float WEP_FLAG_HIDDEN = 0x40; // hides from menu
+ const float WEP_FLAG_RELOADABLE = 0x80; // can has reload
+ const float WEP_FLAG_SUPERWEAPON = 0x100; // powerup timer
+ const float WEP_FLAG_MUTATORBLOCKED = 0x200; // hides from impulse 99 etc. (mutators are allowed to clear this flag)
+
+ const float IT_UNLIMITED_WEAPON_AMMO = 1;
// when this bit is set, using a weapon does not reduce ammo. Checkpoints can give this powerup.
- float IT_UNLIMITED_SUPERWEAPONS = 2;
+ const float IT_UNLIMITED_SUPERWEAPONS = 2;
// when this bit is set, superweapons don't expire. Checkpoints can give this powerup.
- float IT_CTF_SHIELDED = 4; // set for the flag shield
- float IT_USING_JETPACK = 8; // confirmation that button is pressed
- float IT_JETPACK = 16; // actual item
- float IT_FUEL_REGEN = 32; // fuel regeneration trigger
- float IT_SHELLS = 256;
- float IT_NAILS = 512;
- float IT_ROCKETS = 1024;
- float IT_CELLS = 2048;
- float IT_SUPERWEAPON = 4096;
- float IT_FUEL = 128;
- float IT_STRENGTH = 8192;
- float IT_INVINCIBLE = 16384;
- float IT_HEALTH = 32768;
+ const float IT_CTF_SHIELDED = 4; // set for the flag shield
+ const float IT_USING_JETPACK = 8; // confirmation that button is pressed
+ const float IT_JETPACK = 16; // actual item
+ const float IT_FUEL_REGEN = 32; // fuel regeneration trigger
+ WANT_CONST float IT_SHELLS = 256;
+ WANT_CONST float IT_NAILS = 512;
+ WANT_CONST float IT_ROCKETS = 1024;
+ WANT_CONST float IT_CELLS = 2048;
+ const float IT_SUPERWEAPON = 4096;
+ const float IT_FUEL = 128;
+ const float IT_STRENGTH = 8192;
+ const float IT_INVINCIBLE = 16384;
+ const float IT_HEALTH = 32768;
// union:
// for items:
- float IT_KEY1 = 131072;
- float IT_KEY2 = 262144;
+ WANT_CONST float IT_KEY1 = 131072;
+ WANT_CONST float IT_KEY2 = 262144;
// for players:
- float IT_RED_FLAG_TAKEN = 32768;
- float IT_RED_FLAG_LOST = 65536;
- float IT_RED_FLAG_CARRYING = 98304;
- float IT_BLUE_FLAG_TAKEN = 131072;
- float IT_BLUE_FLAG_LOST = 262144;
- float IT_BLUE_FLAG_CARRYING = 393216;
- float IT_YELLOW_FLAG_TAKEN = 524288;
- float IT_YELLOW_FLAG_LOST = 1048576;
- float IT_YELLOW_FLAG_CARRYING = 1572864;
- float IT_PINK_FLAG_TAKEN = 2097152;
- float IT_PINK_FLAG_LOST = 4194304;
- float IT_PINK_FLAG_CARRYING = 6291456;
+ const float IT_RED_FLAG_TAKEN = 32768;
+ const float IT_RED_FLAG_LOST = 65536;
- const float IT_RED_FLAG_CARRYING = 98304;
++ const float IT_RED_FLAG_CARRYING = 98304;
+ const float IT_BLUE_FLAG_TAKEN = 131072;
+ const float IT_BLUE_FLAG_LOST = 262144;
+ const float IT_BLUE_FLAG_CARRYING = 393216;
++ const float IT_YELLOW_FLAG_TAKEN = 524288;
++ const float IT_YELLOW_FLAG_LOST = 1048576;
++ const float IT_YELLOW_FLAG_CARRYING = 1572864;
++ const float IT_PINK_FLAG_TAKEN = 2097152;
++ const float IT_PINK_FLAG_LOST = 4194304;
++ const float IT_PINK_FLAG_CARRYING = 6291456;
// end
- float IT_5HP = 524288;
- float IT_25HP = 1048576;
- float IT_ARMOR_SHARD = 2097152;
- float IT_ARMOR = 4194304;
+ const float IT_5HP = 524288;
+ const float IT_25HP = 1048576;
+ const float IT_ARMOR_SHARD = 2097152;
+ const float IT_ARMOR = 4194304;
- float IT_AMMO = 3968; // IT_SHELLS | IT_NAILS | IT_ROCKETS | IT_CELLS | IT_FUEL;
- float IT_PICKUPMASK = 51; // IT_FUEL_REGEN | IT_JETPACK | IT_UNLIMITED_AMMO; // strength and invincible are handled separately
- float IT_UNLIMITED_AMMO = 3; // IT_UNLIMITED_SUPERWEAPONS | IT_UNLIMITED_WEAPON_AMMO;
+ const float IT_AMMO = 3968; // IT_SHELLS | IT_NAILS | IT_ROCKETS | IT_CELLS | IT_FUEL;
+ const float IT_PICKUPMASK = 51; // IT_FUEL_REGEN | IT_JETPACK | IT_UNLIMITED_AMMO; // strength and invincible are handled separately
+ const float IT_UNLIMITED_AMMO = 3; // IT_UNLIMITED_SUPERWEAPONS | IT_UNLIMITED_WEAPON_AMMO;
- float AMMO_COUNT = 4; // amount of ammo types to show in the inventory panel
+ const float AMMO_COUNT = 4; // amount of ammo types to show in the inventory panel
// variables:
string weaponorder_byid;
flag.ctf_status = FLAG_DROPPED;
// messages and sounds
- Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_2(flag, INFO_CTF_LOST_), player.netname);
+ Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_4(flag, INFO_CTF_LOST_), player.netname);
- sound(flag, CH_TRIGGER, flag.snd_flag_dropped, VOL_BASE, ATTN_NONE);
+ sound(flag, CH_TRIGGER, flag.snd_flag_dropped, VOL_BASE, ATTEN_NONE);
ctf_EventLog("dropped", player.team, player);
// scoring
float old_time, new_time;
if not(player) { return; } // without someone to give the reward to, we can't possibly cap
+ if(ctf_IsDifferentTeam(player, flag)) { return; }
// messages and sounds
- Send_Notification(NOTIF_ONE, player, MSG_CENTER, APP_TEAM_ENT_2(enemy_flag, CENTER_CTF_CAPTURE_));
+ Send_Notification(NOTIF_ONE, player, MSG_CENTER, APP_TEAM_ENT_4(enemy_flag, CENTER_CTF_CAPTURE_));
ctf_CaptureRecord(enemy_flag, player);
- sound(player, CH_TRIGGER, ((IsDifferentTeam(player, flag)) ? enemy_flag.snd_flag_capture : flag.snd_flag_capture), VOL_BASE, ATTN_NONE);
- sound(player, CH_TRIGGER, flag.snd_flag_capture, VOL_BASE, ATTEN_NONE);
++ sound(player, CH_TRIGGER, ((IsDifferentTeam(player, flag)) ? enemy_flag.snd_flag_capture : flag.snd_flag_capture), VOL_BASE, ATTEN_NONE);
switch(capturetype)
{
void ctf_Handle_Return(entity flag, entity player)
{
// messages and sounds
- Send_Notification(NOTIF_ONE, player, MSG_CENTER, APP_TEAM_ENT_2(flag, CENTER_CTF_RETURN_));
- Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_2(flag, INFO_CTF_RETURN_), player.netname);
+ Send_Notification(NOTIF_ONE, player, MSG_CENTER, APP_TEAM_ENT_4(flag, CENTER_CTF_RETURN_));
+ Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_4(flag, INFO_CTF_RETURN_), player.netname);
- sound(player, CH_TRIGGER, flag.snd_flag_returned, VOL_BASE, ATTN_NONE);
+ sound(player, CH_TRIGGER, flag.snd_flag_returned, VOL_BASE, ATTEN_NONE);
ctf_EventLog("return", flag.team, player);
// scoring
}
// messages and sounds
- Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_2(flag, INFO_CTF_PICKUP_), player.netname);
+ Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_4(flag, INFO_CTF_PICKUP_), player.netname);
- sound(player, CH_TRIGGER, flag.snd_flag_taken, VOL_BASE, ATTN_NONE);
+ sound(player, CH_TRIGGER, flag.snd_flag_taken, VOL_BASE, ATTEN_NONE);
FOR_EACH_REALPLAYER(tmp_player)
{
default:
case RETURN_TIMEOUT:
- { Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_2(flag, INFO_CTF_FLAGRETURN_TIMEOUT_)); break; }
+ { Send_Notification(NOTIF_ALL, world, MSG_INFO, APP_TEAM_ENT_4(flag, INFO_CTF_FLAGRETURN_TIMEOUT_)); break; }
}
- sound(flag, CH_TRIGGER, flag.snd_flag_respawn, VOL_BASE, ATTN_NONE);
+ sound(flag, CH_TRIGGER, flag.snd_flag_respawn, VOL_BASE, ATTEN_NONE);
ctf_EventLog("returned", flag.team, world);
ctf_RespawnFlag(flag);
}
{
entity flag;
+ float t = 0, t2 = 0, t3 = 0;
+
// initially clear items so they can be set as necessary later.
- self.items &~= (IT_RED_FLAG_CARRYING | IT_RED_FLAG_TAKEN | IT_RED_FLAG_LOST
- | IT_BLUE_FLAG_CARRYING | IT_BLUE_FLAG_TAKEN | IT_BLUE_FLAG_LOST
- | IT_YELLOW_FLAG_CARRYING | IT_YELLOW_FLAG_TAKEN | IT_YELLOW_FLAG_LOST
- | IT_PINK_FLAG_CARRYING | IT_PINK_FLAG_TAKEN | IT_PINK_FLAG_LOST
- self.items &= ~(IT_RED_FLAG_CARRYING | IT_RED_FLAG_TAKEN | IT_RED_FLAG_LOST
- | IT_BLUE_FLAG_CARRYING | IT_BLUE_FLAG_TAKEN | IT_BLUE_FLAG_LOST | IT_CTF_SHIELDED);
++ self.items &= ~(IT_RED_FLAG_CARRYING | IT_RED_FLAG_TAKEN | IT_RED_FLAG_LOST
++ | IT_BLUE_FLAG_CARRYING | IT_BLUE_FLAG_TAKEN | IT_BLUE_FLAG_LOST
++ | IT_YELLOW_FLAG_CARRYING | IT_YELLOW_FLAG_TAKEN | IT_YELLOW_FLAG_LOST
++ | IT_PINK_FLAG_CARRYING | IT_PINK_FLAG_TAKEN | IT_PINK_FLAG_LOST
+ | IT_CTF_SHIELDED);
// scan through all the flags and notify the client about them
for(flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext)