gamecode
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Hexen II: Hammer of Thyrion (uHexen2) - GAMECODE ------------------------------------------------ Changes ------- 2022-06-12 (1.29c): =================== - object.hc(ballista_think): break early from loop if find() returns world also change the while(){} into a loop{} . - cache the pointcontents() result in a local var. - portals: fix possible 'sticky fingers' issue (99999999999....): replaced those two with 99999999: trigger_stop_use is used by the wheel of time in tibet5.bsp: it used to set its nextthink to (time + -727379968.0), it's now (time + 100000000). HomeThink() used to set the t_width field of Succubus' lightning ball to time + 276447232.0, it now sets it to time + 100000000.0. - break if constructs checking SFL_CROSS_TRIGGER_x into small parts. also use SFL_CROSS_TRIGGERS instead of OR'ing the individual constants at runtime. - items.hc, triggers.hc: break the if contruct in client_has_piece() into smaller parts and use SFL_CROSS_TRIGGERS in hub_intermission_use() - impulse.hc (ImpulseCommands): early return if self.impulse == 0. also remove the 'else' cases where the parent 'if' does return. - commented out a lot of unused constants, also the unused attck_cnt. - objects.hc: bitset / bitclear clean-ups for FL_ONGROUND, DRF_TRANSLUCENT, MLS_ABSLIGHT and SCALE_ORIGIN_BOTTOM. - check_monsterspawn_ok(): changed FL_SUMMONED bitset from += to (+) - client.hc (ClientObituary): return from every attacker.classname match. - multiple removal of 'else' cases where the parent 'if' does return. 2018-02-20 (1.29b): =================== - soul.hc (necro_soul_touch): Necromancer soul devour no longer prints a stray number (bug #65.) Thanks to Raymond Martineau for reporting the issue. 2016-05-30 (1.29a): =================== - rider_death(), rider_pestilence(), rider_war(): set max_health along with health. these bosses rely on the multiplayer_health() function to set health, and without max_health set, it used to set health to 0 - multiplayer_health(): made sure that torncount doesn't go negative. 2015-10-31 (1.29): =================== - change lots of statements like x=x|y; into x(+)y; so that it's simply done with the BITSET op. also changed a few statements like x=x-(x&y); into x(-)y; so that it's simply done with the BITCLR op. other minor tidy-ups. - meteor.hc (tornato_spin): fixed typo in pain_finished equality check: if(self.pain_finished==-1), not if(self.pain_finished=-1). issue was present since at least v0.42. - stats.hc (AwardExperience): eliminated the duplicated IsPlayer check. Crusader partial healing at certain experience thresholds now starts at level 3 to be consistent with the manual. - specials.hc (CheckAbilities): fixed missing parens around two OR'ed constants in the drawflags bittest. (issue was present since at least v1.03.) - ravenai.hc: commented out all functions except for LocateTarget() and CheckMonsterAttack(). all of them are unused. - fangel.hc (fangel_deathframes): removed an unused local. - fablacde.hc: commented out unused frame_BLADE - client.hc (changelevel_touch): fixed parens around noxit cvar checks (typo was introduced in v1.15.) in siege version, remove the start map check (no such map in hexen2/hexen2world.) - allplay.hc (DeathBubbles,DeathSound), mummy.hc (mummy_die), rat.hc (rat_touch), triggers.hc (hurt_touch): removed the useless return statements from the end of the functions. - MG_AI.hc (CheckJump): changed several else if statements to simple ifs whose parent if already always return. - triggers.hc (quake_shake_next): remove useless initialization of local entity variable to world. - portals/damage.hc (T_Damage): make sure target is a player (FL_CLIENT) before checking its camera_time and return: spider.spiderActiveCount and player.camera_time overlap in entity union and can make spiders invincible, otherwise. issue has been there since Raven's v1.12. - siege/client.hc: in Climb(), changed a bitwise and to logical and to better match the code to v0.15 (was a typo from KS's changes.) in PlayerPostThink(), fixed a misplaced else case for the landing sound code to better match the code to v0.15 (was a typo from KS's changes.) in ClientObituary(), changed targ.deathtype check from falling to fall to match the v0.15.x code elsewhere in client.hc. - siege: removed again raven, snake, spider, scorpion, skullwiz, medusa, archer, hydra, faspell, fablade and fangel hc files from build. they were added to build along with KS's siege changes back in 2005, but they aren't really used, and they weren't in siege-v0.15 either... - combat.hc (FireMelee): broke the long if condition for the assassin's backstab into smaller 3 nested ifs ordered in the likelihood of truth. in siege version, changed some of the if conditions into else if (the player class checks.) - ravenstf.hc (create_raven_shot2, hw and siege versions): removed the DAMAGE_YES assignment to missile.solid, just like we did for the h2 and portals versions years ago. (must have been there by mistake as noticed by Pa3PyX; used to cause missiles to be of SOLID_TRIGGER type and collide with each other.) - ravenstf.hc (missle_straight, hw and siege versions): removed useless return statement from the end of the function. 2013-03-08 (1.28): =================== - Map cycling: abandoned the old community-invented (Kor Skarn) method of abusing strings.txt: it was intrusive and unsafe and ugly. The hw and siege hcode now use the standart quakeworld method of localinfo variables: see client.hc:NextLevel() for details. docs/README.hwsv is updated for brief user instructions on setting up a map cycling. 2012-10-01 (1.27): =================== - client.hc, invntory.hc: artifact_active/artifact_low setting/clearing of ART_TOMEOFPOWER, ART_INVINCIBILITY, ART_INVISIBILITY and ART_HASTE are now done simply by using BITSET and BITCLR ops. - h2/cube.hc (cube_find_target): fixed parens in the if construct. don't choose a monster whose controller is the same as the cube's controller i.e. the player's summoned imp. assign self as the cube's controller in UseCubeOfForce(). fixes backported from the mission pack version. - breakabl.hc,client.hc,doors.hc,subs.hc,weapons.hc,world.hc: replaced several while(1){} and do{}while(1) loops by loop{} which is shorter. - weapons.hc (CycleWeaponCommand, CycleWeaponReverseCommand): removed an unnecessary local variable and changed the loop into a while(1) loop and simplified a bit. made them to return in in an impossible case of weapon not being one of IT_WEAPON1..4. changed the portals version to use switch statements. - h2/items.hc, portals/items.hc (weapon_touch): IT_WEAPON4 must be OR'ed to new items, not added to. fix copied over from hexenworld version. - h2/items.hc (weapon_touch) : commented out other.oldweapon assignment to other.weapon. was causing weapon switching to get stuck if several weapons were picked up too fast. see: http://sourceforge.net/projects/uhexen2/forums/forum/425206/topic/5635367 - h2/weapons.hc (W_DeselectWeapon): added else cases for the necromancer for self.oldweapon == IT_WEAPON2 && self.oldweapon != IT_WEAPON3, and for self.oldweapon == IT_WEAPON3 && self.oldweapon != IT_WEAPON2, simply calling W_SetCurrentAmmo() same as the portals and hw versions do. - setstaff.hc (scarab_die): fixed a typo in chain removal code. the bug was at least as old as v0.42 of hexen2. noticed the fix in hexenworld. - commented out several dprints, several whitespace adjustments. - Bumped version number to 1.27. 2012-05-22 (1.26): =================== - fish.hc (fish_follow): Proceed only if the goalentity is a valid one. Also made it to return if the function puts the fish into bored state. - Bumped version number to 1.26. 2012-01-15 (1.25): =================== - h2/axe.hc (axetail_run): if no owner, remove self and return (just in case. merged from the mission pack.) - h2/weapons.hc: Fixed occasional crashes with Paladin's axe (H2MP 1.12a patch to the rescue...) - some minor clean up - Bumped version number to 1.25. 2011-07-03 (1.20): =================== - Bumped version number to 1.20. - Commented out unreferenced create_swarm() from h2 version of pstboar.hc (already disabled or removed in all other versions.) - Reset skull wizard's .enemy and .goalentity fields to world. Fixes bug #3314808 where, if there were a summoned imp around, a blinked away wizard wouldn't reappear even after imp went away. From Thomas Freundt. - Fixed bug where the summoned imp didn't pick the Egypt snake boss as an enemy. (Set the snake's ALIVE flag. From Thomas Freundt.) - Soul spheres: Made the soul sphere in sync with the skull or the cross. Changed the model lighting style to fullbright so now the skull and the cross are well discernible in dark places. The soul sphere can now gain momentum during spawning and fly around instead of hovering over the dead body and sometimes got stuck. Scaled down the soul at the end of its lifetime. Added the demoness among the list of bad people in the portals version in parallel to the hw version. Corrected minor errors and some inconsistencies. From Thomas Freundt. Also, in case of rider bosses, don't spawn a soul sphere because it won't be accessible anyway and may confuse the player. - Now that we added a modified ent file for the Cathedral level, removed the ugly hack of reducing the teleport push speed to 225 for this level from triggers.hc::teleport_touch. - Made sure that gaze attack sound doesn't persist when medusa is dead. - When an imp lord dies, clear the ALIVE flag before removing, otherwise eidolon might get confused and rendered idle. From Thomas Freundt. - Fixed mezzoman.hc bug which would prevent yakman from appearing during the 'Trial of Strength' in the Temple of Phurbu (tibet7) level of the mission pack, rendering the level not completable (bug #1112533). From Thomas Freundt. - Fixed a mission pack T_Damage() bug where a pentacle monster in tibet1 became invulnerable when it got crushed by a door. The design flaw in the union in entity.hc is documented. - Fixed a bug where werepanthers became "undead" when an assassin killed them by her bombs. From Thomas Freundt. - Fixed a bug which might prevent Eidolon to land. From Thomas Freundt. - Fixed Eidolon bugs which might prevent the finale screen to trigger. From Thomas Freundt. - Fixed a bug which used to prevent the finale screen to trigger if Praevus were killed too quickly in buddha_die() and buddha_run(). From Thomas Freundt. - Fixed trigger_crosslevel() with spawnflag 8, i.e. the clash with SPAWNFLAG_ACTIVATED, which used to prevent one of the prizes in Temple of Mars to appear. We now just set inactive property back to FALSE after calling InitTrigger(). From Keith Rozett. - Added a "mapfixes" section. Added entity fixes for cath, demo2, egypt4, egypt5, romeric5 and tower maps of the original game and tibet2 and tibet9 maps of the expansion pack among the mapfixes. - strings.txt: Fixed egypt2 wheel of ages message to report 360 degrees instead of 30 when it "points to a jackal". From Sander van Dijk. 2008-01-01 (1.19a): =================== - Updated the patch shell scripts for much better compatibility with BSD and other systems. No other source code or binary data change. 2006-03-18 (1.19): =================== - Origin fixes for tomed fires of vorpal sword and purifier: paladin used to fire them always from the non-crouched eye position, and it was even the worst when he was looking up (and down). You won't be shooting your back when standing just in front of a wall and fire your tomed purifier to the sky, from now on ;) 2006-12-01 (1.16a): =================== - Fixed an obscure bug where the assasin with her 4th weapon uses the tome of power and can't fire it. The bug was reported by Mathias Schlueter to Jacques 'Korax' Krige who forwarded the report to us. (The bug seems to have been introduced in gamecode-1.12g when a patch from Pa3PyX's sources was merged. Pa3PyX's own progs as part of his 1.15 package also has the same bug.) 2006-10-30 (1.16) : =================== - Fixed the dreaded mezzoman bug causing the following error: SV_StartSound: fangel/deflect.wav not precached ADDRESS -14227(?) 537(last_attack).last_attack -14226(?) mezzoman.hc : mezzo_reflect_trig_touch <NO FUNCTION> assignment to world entity Host_Error: Program error - Merged a probably better fix for the above bug. (from Steven). - Disabled impulse 11 (ServerflagsCommand): it is a dev command, can be issued from any client and may screw up the server pretty bad.. - Made the hexen2 progs to work with demo version 1.11: the original demo version excluded the necromancer and crusader classes, but the later one didn't care and included them. changing some precache_model3 and precache_sound3 to precache_model and precache_sound solves it. the pak file of 1.11 demo version already contains the necessary stuff. - Made the hexenworld progs to work with demo version 1.11: Raven actually did all of the changes, but they seem to have missed changing the precache_model2 calls to precache_model in wp_art.hc which prevented crusader and necromancer classes to be played with. - Ported the demo-1.11 precache compatibility changes from hexen2 to the mission pack. the mission pack actually has nothing to do with the demo version, but this is for the sake of the two trees being in sync as much as possible. - Ported the demo-1.11 precache compatibility changes from hexenworld to siege. siege actually doesn't have much to do with the demo, but this is for the sake of the two trees being in sync as much as possible. - Cleaned up and tweaked hexenworld and siege map cycling. - Fixed hexen2 and hexenworld server crashes upon deathmatch level change in cases of a custom map being run and there is no map cycling. mission pack actually didn't used to crash but it always failed changing into a new level. it is now fixed, as well. - Since version 1.11 of hexen2 demo already contains the demo3 level and it also has necessary stuff for running the hexenworld dm maps, added demo3 and the hw dm maps to FindDMLevel(). Similarly changed the hexen2 and the mission pack versions. 2006-03-20 (1.15) : =================== - hw: fixed the server crash when the server is spawned with dmmode 1. solution found in the ghost mod. - hw: properly notify users when dmmode is changed. also remove the brightfield from the icon holder when dmmode 1 is abandoned. code found in the the ghost mode. - hw / siege: broadcast the names of the current map and the next map in cycle to all clients - noexit is supposed to matter only for deathmatch, not for coop and singleplayer - CheckRules (timelimit and fraglimit) is supposed to matter only for deathmatch, not for coop and singleplayer - fixed those double semicolons. - hw: killed the irritating Poisong_die dprint - fixed those famous spelling errors. 2005-08-09 (1.14) : =================== - Disallowed cycling to a weapon without proper mana (S.A) - Enabled impulse 34, (puzzle piece inventory list) (S.A) - Map cycling: minor cleanups - Bumped the teleport-push speed to a highest safe value of 225 (250 is still safe, but just in case) and restricted that to the Cathedral map when not in deathmatch. Otherwise, Raven's original value (300) is used. - added Pa3PyX' fire delay bits for paladin's staff 2005-03-17 (1.12h): =================== Merged the actual H2MP 1.12-1.12a patch and it has been missing here in the CVS for ages. That no one told me about it is a bit embarassing.... 2005-02-23 (1.12g): =================== Merged a bunch of fixes/adjustments from Pa3PyX' sources: - fixed ravenstaff bug where splitting missiles would collide with each other - setstaff tomed and untomed fire rates now fps independent - crossbow fire rate fps now independent (also makes fire rate slightly faster, but I liked it ;) - no more 20 tornadoes per second from meteor staff at 200 fps - framerate independent Flame Orb fire procedure - fix demoness abilities according to the manual - assasin backstab starts at level 6 - crusader holy strength starts at level 6 - necromancer sickle steal adjustments to make it really useful - assasin cloak ability re-write - start crusader full-mana ability at level3 2005-02-15 (1.12f): =================== - added an optional patch file which allows compiling boss maps into hwprogs.dat. this is not of much use, because coop seems broken.. - updated the hexenworld boss files according to H2MP. although coop is broken as of now, maybe someone messes with these one day... - added stubs for the hexenworld missing boss-map functions. hwsv no longer crashes on maps rider1a, rider2c, romeric6, meso9 and eidolon. - Applied Kor Skarn's further changes to the Siege hcode: this is the code to the hwprogs.dat in "sgcycle.zip" (seems to be first intended for the Rival Kingdoms mod?) - Applied map cycling patch for Siege (similar to the one below) - Added the hcode for Siege. - Applied map cycling for HexenWorld (by Kor Skarn). 1.12d Reduce the speed of the teleporting process' pushing you forward. Fixes the unreachable Cathedral balcony issue for me (for both Hexen2 and H2MP) (2005-01-06). 1.12c fixed eidolon losing his hostility upon destruction of the orb. (2005-01-05, adaptation of eidolon.hc from H2MP) 1.12b fixed eidolon not jumping off the ledge (hc/h2/triggers.hc) (2004-12-09) 1.12a Raven's original 1.12a hcode for the mission pack (initial) 1.11 Raven's original 1.11 hcode for original Hexen2 (initial)