diff --git a/source/client.qc b/source/client.qc index e0b783c..5c52d9b 100644 --- a/source/client.qc +++ b/source/client.qc @@ -1080,10 +1080,10 @@ void() cheat = { return; } - self.ammo_rockets = 100; - self.ammo_nails = 200; - self.ammo_shells = 100; - self.ammo_cells = 200; + self.ammo_cells = AMMAX_CELLS; + self.ammo_nails = AMMAX_NAILS; + self.ammo_rockets = AMMAX_ROCKETS; + self.ammo_shells = AMMAX_SHELLS; self.items |= IT_AXE | IT_SHOTGUN | @@ -1394,7 +1394,7 @@ float(entity targ, entity attacker) obit_monster = { float(entity targ, entity attacker) obit_falling = { if(targ.deathtype == "falling") { - targ.deathtype = ""; + targ.deathtype = string_null; if(targ.pronoun == PRO_NONE) { bprint(" hit the ground too hard\n"); } else { diff --git a/source/defs.qc b/source/defs.qc index edf4244..f0bc3b8 100644 --- a/source/defs.qc +++ b/source/defs.qc @@ -275,6 +275,11 @@ const vector VEC_ORIGIN = '0 0 0'; const float BODYQUE_MAX = 16; +const float AMMAX_CELLS = 100; +const float AMMAX_NAILS = 200; +const float AMMAX_ROCKETS = 100; +const float AMMAX_SHELLS = 100; + const string WEPNAME_AXE = "Axe"; const string WEPNAME_SHOTGUN = "Shotgun"; const string WEPNAME_SUPER_SHOTGUN = "Double-barrelled Shotgun"; @@ -554,11 +559,25 @@ enum { }; enum { - SF_CHEATS = 1 << 0, + AMTYPE_SHELLS = 1, + AMTYPE_NAILS, + AMTYPE_ROCKETS, + AMTYPE_CELLS, +}; + +enum { + SIGIL_1 = 1, + SIGIL_2 = 2, + SIGIL_3 = 4, + SIGIL_4 = 8, +}; + +enum { + SF_CHEATS = 1, SF_LIVES_BEG = 1, SF_LIVES_END = 3, - SF_LIVES_MSK = 0x0E, - SF_DIST_AMMO = 1 << 4, + SF_LIVES_MSK = 14, + SF_DIST_AMMO = 16, }; #pragma noref 0 diff --git a/source/doors.qc b/source/doors.qc index d830f5d..2a43017 100644 --- a/source/doors.qc +++ b/source/doors.qc @@ -128,9 +128,9 @@ void() door_fire = { void() door_use = { entity oself; - self.message = ""; // door message are for touch only - self.owner.message = ""; - self.enemy.message = ""; + self.message = string_null; // door message are for touch only + self.owner.message = string_null; + self.enemy.message = string_null; oself = self; self = self.owner; door_fire(); @@ -181,7 +181,7 @@ void() door_touch = { self.owner.attack_finished = time + 2; - if(self.owner.message != "") { + if(self.owner.message != string_null) { centerprint(other, self.owner.message); sound(other, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM); } @@ -287,7 +287,7 @@ void() LinkDoors = { if(self.targetname) { starte.targetname = self.targetname; } - if(self.message != "") { + if(self.message != string_null) { starte.message = self.message; } t = find(t, classname, self.classname); diff --git a/source/items.qc b/source/items.qc index 3ba95f5..bf23253 100644 --- a/source/items.qc +++ b/source/items.qc @@ -97,16 +97,13 @@ HEALTH BOX // "ignore" will ignore max_health limit // float(entity e, float healamount, float ignore) T_Heal = { - if(e.health <= 0) { - return 0; - } - if((!ignore) && (e.health >= other.max_health)) { + if(e.health <= 0 || (!ignore && e.health >= other.max_health)) { return 0; } healamount = ceil(healamount); e.health = e.health + healamount; - if((!ignore) && (e.health >= other.max_health)) { + if(!ignore && e.health >= other.max_health) { e.health = other.max_health; } @@ -161,16 +158,11 @@ void() health_touch = { } if(self.healtype == 2) { // Megahealth? Ignore max_health... - if(other.health >= 250) { - return; - } - if(!T_Heal(other, self.healamount, 1)) { - return; - } - } else { - if(!T_Heal(other, self.healamount, 0)) { + if(other.health >= 250 || !T_Heal(other, self.healamount, TRUE)) { return; } + } else if(!T_Heal(other, self.healamount, FALSE)) { + return; } sprint(other, "You receive ", ftos(self.healamount), " health\n"); @@ -232,28 +224,28 @@ ARMOR void() armor_touch = { float type, value, bit; - if(other.health <= 0) { - return; - } - if(other.classname != "player") { + if(other.health <= 0 || other.classname != "player") { return; } - if(self.classname == "item_armor1") { - type = 0.3; - value = 100; - bit = IT_ARMOR1; - } - if(self.classname == "item_armor2") { - type = 0.6; - value = 150; - bit = IT_ARMOR2; - } - if(self.classname == "item_armorInv") { - type = 0.8; - value = 200; - bit = IT_ARMOR3; + switch(self.classname) { + case "item_armor1": + type = 0.3; + value = 100; + bit = IT_ARMOR1; + break; + case "item_armor2": + type = 0.6; + value = 150; + bit = IT_ARMOR2; + break; + case "item_armorInv": + type = 0.8; + value = 200; + bit = IT_ARMOR3; + break; } + if(other.armortype * other.armorvalue >= type * value) { return; } @@ -323,42 +315,32 @@ WEAPONS =============================================================================== */ -void() bound_other_ammo = { - if(other.ammo_shells > 100) { - other.ammo_shells = 100; +void(entity e) bound_ammo = { + if(e.ammo_shells > AMMAX_SHELLS) { + e.ammo_shells = AMMAX_SHELLS; } - if(other.ammo_nails > 200) { - other.ammo_nails = 200; + if(e.ammo_nails > AMMAX_NAILS) { + e.ammo_nails = AMMAX_NAILS; } - if(other.ammo_rockets > 100) { - other.ammo_rockets = 100; + if(e.ammo_rockets > AMMAX_ROCKETS) { + e.ammo_rockets = AMMAX_ROCKETS; } - if(other.ammo_cells > 100) { - other.ammo_cells = 100; + if(e.ammo_cells > AMMAX_CELLS) { + e.ammo_cells = AMMAX_CELLS; } }; float(float w) RankForWeapon = { - if(w == IT_LIGHTNING) { - return 1; + switch(w) { + case IT_LIGHTNING: return 1; + case IT_ROCKET_LAUNCHER: return 2; + case IT_SUPER_NAILGUN: return 3; + case IT_GRENADE_LAUNCHER: return 4; + case IT_SUPER_SHOTGUN: return 5; + case IT_NAILGUN: return 6; + default: return 7; } - if(w == IT_ROCKET_LAUNCHER) { - return 2; - } - if(w == IT_SUPER_NAILGUN) { - return 3; - } - if(w == IT_GRENADE_LAUNCHER) { - return 4; - } - if(w == IT_SUPER_SHOTGUN) { - return 5; - } - if(w == IT_NAILGUN) { - return 6; - } - return 7; }; /* @@ -393,62 +375,66 @@ void() weapon_touch = { return; } - // if the player was using their best weapon, change up to the new one if better + // if the player was using their best weapon, change up to the new one if + // better stemp = self; self = other; best = W_BestWeapon(); self = stemp; - if(deathmatch == 2 || coop) { - leave = 1; - } else { - leave = 0; - } + leave = (deathmatch == 2 || coop); - if(self.classname == "weapon_nailgun") { - if(leave && (other.items & IT_NAILGUN)) { - return; - } - hadammo = other.ammo_nails; - new = IT_NAILGUN; - other.ammo_nails = other.ammo_nails + 30; - } else if(self.classname == "weapon_supernailgun") { - if(leave && (other.items & IT_SUPER_NAILGUN)) { - return; - } - hadammo = other.ammo_rockets; - new = IT_SUPER_NAILGUN; - other.ammo_nails = other.ammo_nails + 30; - } else if(self.classname == "weapon_supershotgun") { - if(leave && (other.items & IT_SUPER_SHOTGUN)) { - return; - } - hadammo = other.ammo_rockets; - new = IT_SUPER_SHOTGUN; - other.ammo_shells = other.ammo_shells + 5; - } else if(self.classname == "weapon_rocketlauncher") { - if(leave && (other.items & IT_ROCKET_LAUNCHER)) { - return; - } - hadammo = other.ammo_rockets; - new = IT_ROCKET_LAUNCHER; - other.ammo_rockets = other.ammo_rockets + 5; - } else if(self.classname == "weapon_grenadelauncher") { - if(leave && (other.items & IT_GRENADE_LAUNCHER)) { - return; - } - hadammo = other.ammo_rockets; - new = IT_GRENADE_LAUNCHER; - other.ammo_rockets = other.ammo_rockets + 5; - } else if(self.classname == "weapon_lightning") { - if(leave && (other.items & IT_LIGHTNING)) { - return; - } - hadammo = other.ammo_rockets; - new = IT_LIGHTNING; - other.ammo_cells = other.ammo_cells + 15; - } else { - objerror("weapon_touch: unknown classname"); + switch(self.classname) { + case "weapon_nailgun": + if(leave && other.items & IT_NAILGUN) { + return; + } + hadammo = other.ammo_nails; + new = IT_NAILGUN; + other.ammo_nails = other.ammo_nails + 30; + break; + case "weapon_supernailgun": + if(leave && other.items & IT_SUPER_NAILGUN) { + return; + } + hadammo = other.ammo_rockets; + new = IT_SUPER_NAILGUN; + other.ammo_nails = other.ammo_nails + 30; + break; + case "weapon_supershotgun": + if(leave && other.items & IT_SUPER_SHOTGUN) { + return; + } + hadammo = other.ammo_rockets; + new = IT_SUPER_SHOTGUN; + other.ammo_shells = other.ammo_shells + 5; + break; + case "weapon_rocketlauncher": + if(leave && other.items & IT_ROCKET_LAUNCHER) { + return; + } + hadammo = other.ammo_rockets; + new = IT_ROCKET_LAUNCHER; + other.ammo_rockets = other.ammo_rockets + 5; + break; + case "weapon_grenadelauncher": + if(leave && other.items & IT_GRENADE_LAUNCHER) { + return; + } + hadammo = other.ammo_rockets; + new = IT_GRENADE_LAUNCHER; + other.ammo_rockets = other.ammo_rockets + 5; + break; + case "weapon_lightning": + if(leave && other.items & IT_LIGHTNING) { + return; + } + hadammo = other.ammo_rockets; + new = IT_LIGHTNING; + other.ammo_cells = other.ammo_cells + 15; + break; + default: + objerror("weapon_touch: unknown classname"); } sprint(other, "You got the ", self.netname, "\n"); @@ -759,13 +745,9 @@ void() key_touch = { entity stemp; float best; - if(other.classname != "player") { - return; - } - if(other.health <= 0) { - return; - } - if(other.items & self.items) { + if(other.classname != "player" || + other.health <= 0 || + other.items & self.items) { return; } @@ -884,10 +866,7 @@ void() sigil_touch = { entity stemp; float best; - if(other.classname != "player") { - return; - } - if(other.health <= 0) { + if(other.classname != "player" || other.health <= 0) { return; } @@ -898,7 +877,7 @@ void() sigil_touch = { self.solid = SOLID_NOT; self.model = string_null; serverflags = serverflags | (self.spawnflags & 15); - self.classname = ""; // so rune doors won't find it + self.classname = string_null; // so rune doors won't find it activator = other; SUB_UseTargets(); // fire all targets / killtargets @@ -917,19 +896,19 @@ void() item_sigil = { precache_sound("misc/runekey.wav"); self.noise = "misc/runekey.wav"; - if(self.spawnflags & 1) { + if(self.spawnflags & SIGIL_1) { precache_model("progs/end1.mdl"); setmodel(self, "progs/end1.mdl"); } - if(self.spawnflags & 2) { + if(self.spawnflags & SIGIL_2) { precache_model2("progs/end2.mdl"); setmodel(self, "progs/end2.mdl"); } - if(self.spawnflags & 4) { + if(self.spawnflags & SIGIL_3) { precache_model2("progs/end3.mdl"); setmodel(self, "progs/end3.mdl"); } - if(self.spawnflags & 8) { + if(self.spawnflags & SIGIL_4) { precache_model2("progs/end4.mdl"); setmodel(self, "progs/end4.mdl"); } @@ -951,10 +930,7 @@ void() powerup_touch = { entity stemp; float best; - if(other.classname != "player") { - return; - } - if(other.health <= 0) { + if(other.classname != "player" || other.health <= 0) { return; } @@ -962,8 +938,8 @@ void() powerup_touch = { if(deathmatch) { self.mdl = self.model; - if((self.classname == "item_artifact_invulnerability") || - (self.classname == "item_artifact_invisibility")) { + if(self.classname == "item_artifact_invulnerability" || + self.classname == "item_artifact_invisibility") { self.nextthink = time + 60 * 5; } else { self.nextthink = time + 60; @@ -1104,17 +1080,18 @@ void() BackpackTouch = { sprint(other, "the ", self.netname); } - // if the player was using their best weapon, change up to the new one if better + // if the player was using their best weapon, change up to the new one if + // better stemp = self; self = other; best = W_BestWeapon(); self = stemp; // change weapons - other.ammo_shells = other.ammo_shells + self.ammo_shells; - other.ammo_nails = other.ammo_nails + self.ammo_nails; + other.ammo_shells = other.ammo_shells + self.ammo_shells; + other.ammo_nails = other.ammo_nails + self.ammo_nails; other.ammo_rockets = other.ammo_rockets + self.ammo_rockets; - other.ammo_cells = other.ammo_cells + self.ammo_cells; + other.ammo_cells = other.ammo_cells + self.ammo_cells; new = self.items; if(!new) { @@ -1226,14 +1203,14 @@ entity() DropBackpack = { item.netname = WEPNAME_LIGHTNING; break; default: - item.netname = ""; + item.netname = string_null; break; } - item.ammo_shells = self.ammo_shells; - item.ammo_nails = self.ammo_nails; + item.ammo_shells = self.ammo_shells; + item.ammo_nails = self.ammo_nails; item.ammo_rockets = self.ammo_rockets; - item.ammo_cells = self.ammo_cells; + item.ammo_cells = self.ammo_cells; item.velocity_z = 300; item.velocity_x = -100 + (random() * 200); diff --git a/source/oldone.qc b/source/oldone.qc index 3c64aec..869657f 100644 --- a/source/oldone.qc +++ b/source/oldone.qc @@ -112,7 +112,7 @@ void() finale_1 = { remove(pl); WriteByte(MSG_ALL, SVC_FINALE); - WriteString(MSG_ALL, ""); + WriteString(MSG_ALL, string_null); pl = find(world, classname, "player"); while(pl != world) { diff --git a/source/player.qc b/source/player.qc index aaf407d..5e0d265 100644 --- a/source/player.qc +++ b/source/player.qc @@ -284,7 +284,7 @@ void() PainSound = { rs = rint((random() * 5) + 1); - self.noise = ""; + self.noise = string_null; if(rs == 1) { self.noise = "player/pain1.wav"; } else if(rs == 2) { @@ -504,7 +504,7 @@ void() PlayerDie = { DropBackpack(); } - self.weaponmodel = ""; + self.weaponmodel = string_null; self.view_ofs = '0 0 -8'; self.deadflag = DEAD_DYING; self.solid = SOLID_NOT; diff --git a/source/subs.qc b/source/subs.qc index 3ddf62c..f4c400a 100644 --- a/source/subs.qc +++ b/source/subs.qc @@ -36,7 +36,7 @@ void() InitTrigger = { setmodel(self, self.model); // set size and link into world self.movetype = MOVETYPE_NONE; self.modelindex = 0; - self.model = ""; + self.model = string_null; }; /* @@ -219,7 +219,7 @@ void() SUB_UseTargets = { // // print the message // - if(activator.classname == "player" && self.message != "") { + if(activator.classname == "player" && self.message != string_null) { centerprint(activator, self.message); if(!self.noise) { sound(activator, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM); diff --git a/source/triggers.qc b/source/triggers.qc index ff82c37..8b72373 100644 --- a/source/triggers.qc +++ b/source/triggers.qc @@ -384,7 +384,7 @@ void() info_teleport_destination = { // this does nothing, just serves as a target spot self.mangle = self.angles; self.angles = VEC_ORIGIN; - self.model = ""; + self.model = string_null; self.origin = self.origin + '0 0 27'; if(!self.targetname) { objerror("no targetname"); @@ -463,11 +463,11 @@ void() trigger_onlyregistered_touch = { self.attack_finished = time + 2; if(cvar("registered")) { - self.message = ""; + self.message = string_null; SUB_UseTargets(); remove(self); } else { - if(self.message != "") { + if(self.message != string_null) { centerprint(other, self.message); sound(other, CHAN_BODY, "misc/talk.wav", 1, ATTN_NORM); } diff --git a/source/weapons.qc b/source/weapons.qc index b985180..80ef174 100644 --- a/source/weapons.qc +++ b/source/weapons.qc @@ -731,7 +731,7 @@ void() W_SetCurrentAmmo = { break; default: self.currentammo = 0; - self.weaponmodel = ""; + self.weaponmodel = string_null; self.weaponframe = 0; break; } diff --git a/source/world.qc b/source/world.qc index 5d9036b..cdd6d66 100644 --- a/source/world.qc +++ b/source/world.qc @@ -186,9 +186,9 @@ void() StartFrame = { temp1flag = cvar("temp1"); framecount = framecount + 1; - sf_cheats = temp1flag & SF_CHEATS; + sf_cheats = (temp1flag & SF_CHEATS) != 0; sf_lives = bit_shift_right(temp1flag & SF_LIVES_MSK, SF_LIVES_BEG); - sf_dist_ammo = temp1flag & SF_DIST_AMMO; + sf_dist_ammo = (temp1flag & SF_DIST_AMMO) != 0; }; /*