Git Product home page Git Product logo

xatrix's Introduction

Yamagi Quake II

Yamagi Quake II is an enhanced client for id Software's Quake II with focus on offline and coop gameplay. Both the gameplay and the graphics are unchanged, but many bugs in the last official release were fixed and some nice to have features like widescreen support and a modern OpenGL 3.2 renderer were added. Unlike most other Quake II source ports Yamagi Quake II is fully 64-bit clean. It works perfectly on modern processors and operating systems. Yamagi Quake II runs on nearly all common platforms; including FreeBSD, Linux, NetBSD, OpenBSD, Windows and macOS (experimental).

This code is built upon Icculus Quake II, which itself is based on Quake II 3.21. Yamagi Quake II is released under the terms of the GPL version 2. See the LICENSE file for further information.

Documentation

Before asking any question, read through the documentation! The current version can be found here: doc/010_index.md

Releases

The official releases (including Windows binaries) can be found at our homepage: https://www.yamagi.org/quake2
Unsupported preview builds for Windows can be found at https://deponie.yamagi.org/quake2/misc/

xatrix's People

Contributors

0lvin avatar afreuden avatar bjossialfreds avatar danielgibson avatar de-seppe avatar devnexen avatar dremor8484 avatar dritanium avatar mjr4077au avatar neonknightoa avatar pickle avatar protocultor avatar skullernet avatar svdijk avatar yamagi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xatrix's Issues

Monster footsteps not working

I have footsteps.pkz downloaded and option set g_monsterfootsteps "1" enabled.
For base Quake 2 it works fine, but for xatrix and rogue I hear no footsteps of any monsters.

[Original bug] Gekks can get stuck walking after firing loogie

To reproduce:

  1. Open map xswamp
  2. Set notarget and godmode on (just for convenience)
  3. Follow the path to the first gekks
  4. Shoot the one closest to the lasers
  5. Wait until he fires his ranged attack
  6. If he decides to heal himself afterwards, he will cancel the heal move and start walking towards you forever without ever attacking (this may take a while to see so just keep avoiding him until this happens)

This bug has a number of nuances to it. First, notarget must be on because it causes FindTarget to return false even if the gekk is fighting its enemy. Second, this has to do with point_combat gekks specifically because it resets monsterinfo.pausetime in FoundTarget. Next, notice that the idle2 move (heal) that gekks some times perform right after firing a loogie has AI function ai_stand2. ai_stand2 will call regular ai_stand for non-chanting gekks. This is bad because ai_stand is not supposed to be used for angry monsters that are not set to stand ground. What is happening is that the point_combat gekk has a pausetime of 0 and so when ai_stand is called, it will switch to walking and does so forever because ai_walk has no checkattack ability and FindTarget will return quickly because of no new enemy to find.

I will provide a pull request with a fix.

[Original bug] Fixbot telefrag check does not kill entities properly

When a fixbot is healing a monster with its laser, if any monster-solid entity (including a player) is standing in the way its health will be set to -1000 but does not actually "kill" the entity. Due to the game's inconsistent checks for entity death, this causes it to get into a weird state of purgatory, for example players can run around but not open doors or pick up items.

I will provide a pull request that addresses this issue the way xatrix intended it to work - entity gets gibbed/telefragged until no entity is in the way any more and the dead monster can be resurrected.

Q2 Mission packs oryginal source code.

Hello.
I'm a real big fan of of Quake 2 game.
I have the following questions regarding Yours yquake2 project:

  1. Where can i get the official, the original Q2 mission packs (The Reckoning, Ground Zero, Zaero) source code? (without Yours modifications).
  2. Where did You get the original source code for that add-ons?

Thx for Help:-)

Incorrect blue laser sound in The Reckoning

Hello!! The sound of the soldier's blue lasers is dissorted or is wrong. If you play the original game (it's payable in Windows 10) the sound is diferent. You can hear that in the first demo sequence of the game.

Thanks!!

Swamps: can't get adrenaline (can't fit to it's location)

In the the Swamps there's a secret adrenaline in the small pool of water near the end (first visit) of the map. The problem is I can't reach it, there seem to be not enough space for player to fit, or the adrenaline is placed lower than it should be somehow.

Just a crash ....

Just happened.

Saving game...
Done.

=======================================================

Yamagi Quake II crashed! This should not happen...

Make sure that you're using the last version. It can
be found at http://www.yamagi.org/quake2. If you do,
send a bug report to [email protected] and include:

 - This output
 - The conditions that triggered the crash
 - How to reproduce the crash (if known)
 - The following files. None of them contains private
   data. They're necessary to analyze the backtrace:

    - quake2 (the executable / binary)

    - game.so (the game.so of the mod you were playing
      when the game crashed. baseq2/game.so for the
      main game)

 - Any other data which you think might be useful

Thank you very much for your help, making Yamagi Quake
II an even better source port. It's much appreciated.

=======================================================

Product:      Yamagi Quake II
Version:      7.44pre
Platform:     Linux
Architecture: x86_64
Compiler:     8.3.0
Signal:       11

Backtrace:
  /opt/quake2/quake2(+0x934c0) [0x56297ac3e4c0]
  /opt/quake2/quake2(+0x93682) [0x56297ac3e682]
  /lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7f118efcf840]
  /opt/quake2//xatrix/game.so(ai_run+0x22c) [0x7f117af480fc]
  /opt/quake2//xatrix/game.so(M_MoveFrame+0x18a) [0x7f117af5bcca]
  /opt/quake2//xatrix/game.so(monster_think+0xe) [0x7f117af5bd2e]
  /opt/quake2//xatrix/game.so(SV_RunThink+0x5c) [0x7f117af5c89c]
  /opt/quake2//xatrix/game.so(SV_Physics_Step+0x145) [0x7f117af5e635]
  /opt/quake2//xatrix/game.so(G_RunFrame+0x11c) [0x7f117af54b9c]
  /opt/quake2/quake2(+0x8c519) [0x56297ac37519]
  /opt/quake2/quake2(+0x8cd5c) [0x56297ac37d5c]
  /opt/quake2/quake2(+0x69e68) [0x56297ac14e68]
  /opt/quake2/quake2(+0x69f9c) [0x56297ac14f9c]
  /opt/quake2/quake2(+0x6a42e) [0x56297ac1542e]
  /opt/quake2/quake2(+0xaec1) [0x56297abb5ec1]


Parent is shutting down, bye...

[Original bug] Gekks often stop playing pain moves after jumping

To reproduce:

  1. Open map xswamp
  2. Anger a gekk
  3. Get him to jump a few times
  4. Notice that he is no longer playing pain moves

This bug has to do with improper cleanup after jumps finish. The gekk uses AI_DUCKED to stop pain moves while in the air, but this flag is not always cleared even when the jump is over, causing pain moves to stop playing altogether, and also causes his skin to no longer update since skin updates happen inside the pain callback function.

I will provide a pull request that fixes this bug.

Laser guard death animation

Hi again,
If the laser guard goes into the 'last stand' animation, he fires off a couple of empty shots before dying. This is probably because the laser beam is implemented differently in the code than the projectile/hitscan weapons that the other guard types have (though I can't say for sure).

The animation is controlled by the following if statement in the function soldierh_die:

if (n == 0)
{
self->monsterinfo.currentmove = &soldierh_move_death1;
}

My suggestion would be to add an extra condition to play a different death animation if it is a laser guard (self->s.skinnum >= 4).

A weird sound shuffling bug at the end of track(any map, any track)

Don't mind that i am not in the game(it's alt-tabed while this was recorded). Instead of playing on a infinite loop, the game begins to play different song for 1-3 seconds (from previous of current level).

Weird sound shuffle bug_.zip

P.S. Latest Patch of Yamagi is installed, and this occurs only in The Reckoning.
Shuffle option is set to OFF.

Edit: attaching additional archive with video proof of a bug
Weird sound shuffling bug 2.zip

R_DrawAliasModel "no such oldframe" messages on weapon switch while firing using DualFire Damage

When DualFire Damage is active, firing a weapon and then switching weapons will often result in R_DrawAliasModel producing messages about missing frames:

R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_handgr/tris.md2: no such oldframe 64 R_DrawAliasModel models/weapons/v_hyperb/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_hyperb/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_hyperb/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_hyperb/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_hyperb/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_shotg/tris.md2: no such oldframe 54 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53 R_DrawAliasModel models/weapons/v_boomer/tris.md2: no such oldframe 53

Relicense Yamagi Quake II Xatrix (The Reckoning) under GPL2

Hi,

until now the Quake II addons were licensed under the id Software SDK license, which isn't really an open source license. It causes problems with distributing the addons as part of the Yamagi Quake II project, both we and most downstream projects like Linux distributions are forced to keep the main project and the addons seperated. And it makes merging code from and to the GPL2 licensed Yamagi Quake II hard.

With the Quake II Enhanced Edition id Software generously relicensed the unaltered addons source code under GPL2: https://github.com/id-Software/quake2-rerelease-dll This allows us to relicense our bugfixed versions of the addons. To do
that we need the okay from all past contributors.

You receive this message / heads up / tag because you have contributed at least one commit to the Yamagi Quake II Xatrix project: https://github.com/yquake2/xatrix Please give us a short answer that you are okay with relicensing the project from the id Software SDK license to GPL2.

List of contributors:

Ion ripper and gunner ducking

I recently played through The Reckoning using the current release of yamagiq2 and I found that whenever I'm shooting with the ion ripper and a gunner ducks from my shots, the shots go through his ducked torso without damaging (no blood is shown). This seems to be a bug, though I have no idea how that worked in the base game. It seems only gunners are affected by this (the only sure way to hit them is by shooting the legs).

Use of non-portable system strcasecmp rather than portable version

This is not so much an issue for building on unix/cygwin, but I noticed this when compiling rogue/xatrix on win32 under visual studio.

The code compiles file except the linker obviously complains about Q_stricmp, because rather than delegating to the portable Q_strcasecmp it's using the libc strcasecmp.

https://github.com/yquake2/xatrix/blob/master/src/shared/shared.c#L1017

The 'fix' as such is to just replace strcasecmp with a call to Q_strcasecmp or to avoid any additional indirection, straight to Q_strncasecmp.

The same 'issue' exists in rogue.

Edit Just wanted to add my thanks to all of you for maintaining this codebase. I drop in and out of playing around with it for fun and it's fantastic to have this code just work for the most part and allow novices to tinker with it! Thank you all again!

Bug: msys.bat + missing lines in Makefile

The first part of the issue applies to all games, the second part applies to "xatrix" and "rogue".

I downloaded the build environment by the link provided in the compilation instructions (http://deponie.yamagi.org/quake2/windows/build/quake2_buildenv_20140508.zip). You recommended to start the 32-bit build environment, so I clicked on MSYS32.lnk, and a cmd.exe window opened. But there was no text or input prompt there, so I thought it prepares the environment (unpacks files maybe?) and then I started cloning the GitHub repositories of "yquake2", "xatrix" and "rogue". Well, when I finished doing that, I noticed that the CPU usage went up high. I opened Task Manager and... there were like 2000+ copies of cmd.exe running! It seemed that the .bat file linked to by MSYS32.lnk went into an inifinite recursion, each new copy starting and calling another copy of itself. Fortunately I was able to kill all the cmd.exe processes, and then I looked into the .bat file to find out why it happened. Seems that the problem was in these lines:

rem Hopefully a temporary workaround for getting MSYS shell to run on x64
rem (WoW64 cmd prompt sets PROCESSOR_ARCHITECTURE to x86)
if not "x%PROCESSOR_ARCHITECTURE%" == "xAMD64" goto _NotX64
set COMSPEC=%WINDIR%\SysWOW64\cmd.exe
%COMSPEC% /c %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto EOF

Looks like PROCESSOR_ARCHITECTURE is always reported the same, regardless of the command prompt opened (normal cmd.exe in System32 or the one in SysWOW64). I think this behavior is correct (why the hell should processor architecture depend on the command prompt?). Maybe it was fixed with some Windows updates. So this "temporary workaround" in the bat file is now failing, because Wow64 cmd propmpt does not set PROCESSOR_ARCHITECTURE to x86, at least on my PC (I have Windows 7 64-bit).

This problem was solved by commenting out these lines. The _NotX64 label was right after these lines, so after the "fix" the build environment started.

Now another issue: Makefiles for "xatrix" and "rogue" lack these lines, which are critical for building on Windows. They are present in "yquake2" makefile nevertheless:

# On Windows / MinGW $(CC) is
# undefined by default.
ifeq ($(OSTYPE),Windows)
CC := gcc
endif

Luckily for me, after adding them everything compiled flawlessly. You did a very good job preparing the environment so people don't have to download countless dependencies and configure everything manually. Well done, thanks :)

can't compile

~/.quake2/xatrixsrc/xatrix$ make
===> Building game.so
make release/game.so
make[1]: Entering directory '/home/biel/.quake2/xatrixsrc/xatrix'
===> CC src/g_ai.c
===> CC src/g_chase.c
===> CC src/g_cmds.c
===> CC src/g_combat.c
===> CC src/g_func.c
===> CC src/g_items.c
===> CC src/g_main.c
===> CC src/g_misc.c
===> CC src/g_monster.c
===> CC src/g_phys.c
===> CC src/g_spawn.c
===> CC src/g_svcmds.c
===> CC src/g_target.c
===> CC src/g_trigger.c
===> CC src/g_turret.c
===> CC src/g_utils.c
===> CC src/g_weapon.c
===> CC src/monster/berserker/berserker.c
===> CC src/monster/boss2/boss2.c
===> CC src/monster/boss3/boss3.c
===> CC src/monster/boss3/boss31.c
===> CC src/monster/boss3/boss32.c
===> CC src/monster/boss5/boss5.c
===> CC src/monster/brain/brain.c
===> CC src/monster/chick/chick.c
===> CC src/monster/fixbot/fixbot.c
===> CC src/monster/flipper/flipper.c
===> CC src/monster/float/float.c
===> CC src/monster/flyer/flyer.c
===> CC src/monster/gekk/gekk.c
===> CC src/monster/gladiator/gladb.c
===> CC src/monster/gladiator/gladiator.c
===> CC src/monster/gunner/gunner.c
===> CC src/monster/hover/hover.c
===> CC src/monster/infantry/infantry.c
===> CC src/monster/insane/insane.c
===> CC src/monster/medic/medic.c
===> CC src/monster/misc/move.c
===> CC src/monster/mutant/mutant.c
===> CC src/monster/parasite/parasite.c
===> CC src/monster/soldier/soldier.c
===> CC src/monster/supertank/supertank.c
===> CC src/monster/tank/tank.c
===> CC src/player/client.c
===> CC src/player/hud.c
===> CC src/player/trail.c
===> CC src/player/view.c
===> CC src/player/weapon.c
===> CC src/savegame/savegame.c
src/savegame/savegame.c: In function ‘ReadField’:
src/savegame/savegame.c:577:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread((char *)p, len, 1, f);
^
src/savegame/savegame.c:635:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread (funcStr, len, 1, f);
^
src/savegame/savegame.c:659:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread (funcStr, len, 1, f);
^
src/savegame/savegame.c: In function ‘ReadClient’:
src/savegame/savegame.c:711:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(client, sizeof(_client), 1, f);
^
src/savegame/savegame.c: In function ‘ReadGame’:
src/savegame/savegame.c:806:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(str_ver, sizeof(str_ver), 1, f);
^
src/savegame/savegame.c:807:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(str_game, sizeof(str_game), 1, f);
^
src/savegame/savegame.c:808:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(str_os, sizeof(str_os), 1, f);
^
src/savegame/savegame.c:809:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(str_arch, sizeof(str_arch), 1, f);
^
src/savegame/savegame.c:836:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(&game, sizeof(game), 1, f);
^
src/savegame/savegame.c: In function ‘ReadEdict’:
src/savegame/savegame.c:968:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(ent, sizeof(_ent), 1, f);
^
src/savegame/savegame.c: In function ‘ReadLevelLocals’:
src/savegame/savegame.c:987:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(&level, sizeof(level), 1, f);
^
src/savegame/savegame.c: In function ‘ReadLevel’:
src/savegame/savegame.c:1028:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
fread(&i, sizeof(i), 1, f);
^
===> CC src/shared/flash.c
===> CC src/shared/rand.c
===> CC src/shared/shared.c
===> LD release/game.so
collect2: error: ld returned 1 exit status
Makefile:218: recipe for target 'release/game.so' failed
make[1]: *** [release/game.so] Error 1
make[1]: Leaving directory '/home/biel/.quake2/xatrixsrc/xatrix'
Makefile:127: recipe for target 'xatrix' failed
make: *** [xatrix] Error 2

Gekks´ Gibs Getting Stuck on Walls and Spinning

Hello there! Big fan of your project.

I´ve recently started playing the Reckoning expansion and I´ve come across a strange looking phenomenon: when the Gekks explode, their gibs get stuck on walls and spin until they disappear.

I wonder if this is something related to the original game or if I´m doing something wrong (most likely).

I´m using the files found on the 8.20 version. I´m attaching a screenshot of the issue.

q2_0001 (1)

Thank you so much for your support.

Regards,
domyibby

Relicense under GPL?

Tangentially related to yquake2/yquake2remaster#3 and yquake2/rogue#113

With the Kex port of Quake II, Id has also relicensed the original game code for the two expansions under GPL 2.0, in addition to the modified rerelease game code (id-Software/quake2-rerelease-dll). I'm not sure how doable this would be for yq2's forks (given the multiple authors), but I figured I'd bring it up, since it could make cross-repo license shenanigans less convoluted.

Reckoning Crash on Start Up

Hi there! Fist and foremost thank you so much for Yagami, it was an amazing way to experience Quake 2. That being said when I went to play The Reckoning I found that it simply crashed on start up. I followed all instructions in the read me, and the game will allow me to go to the main menu, but as soon as I attempt to start a new game it simply crashes.

Tried a fresh install, that didn't work either. Normally I prefer to solve my own problems but I'm at a loss here. Any advice or further instruction would be great, thanks again for creating Yagami!

Unable to compile xatrix game.so on macOS 10.12.6

Compiled yquake2 from source on macOS 10.12.6 with all dependencies present. Attempting to compile game.so for xatrix and rogue from source yields the following message when executing make:

make[1]: *** No rule to make target `release/game.so'.  Stop.
make: *** [xatrix] Error 2

Brains does not use beam attack

I've never finished original Reckoning, so yquake2 version was the first for me. In some gameplay video I saw Brains are able to use laser beam attack, but I'd never seen this in the game by myself. I even made a separate map with monster_brain and they act like regular brains from Quake 2.
I took game resource from Steam version if it matters.

[Original bug] Fixbot does not free bot_goal when interrupted while moving forward

bot_goal are entities generated by fixbots while they roam around. Once they reach their bot_goal, they free it and generate another one somewhere else. However, if they are hurt or killed before they reach their current bot_goal, it will never be freed.

Originally I theorized this as a possible scenario, then I added debug code to see if it actually happens and sure enough - bot_goal was present in the entity list whose owner was gone. There are no exact steps to observe this bug happening in-game. You can perhaps do it using "listentities all" command but it would be tedious.

The Warehouse - platforms not moving

I'm playing through The Reckoning (using Yamagi 5.11 and Xatrix 2.01) and I think I have found a bug.

In the "The Warehouse" level the platforms that should be moving sideways and later up and down are not activated, so it's impossible to progress (without cheating), however sound effects for them moving are being played.

I have attached a screenshot of the area.
screenshot from 2013-10-08 11 51 53

Bug: Fan in the Warehouse level, ungettable secret

This is not a game-breaking bug, but it prevents you from getting one of the two secrets in the level. I'll try to describe it as best as I can...

There is an area in the level, where there is a working fan and a some kind of power device which you are supposed to shoot, thus disabling the fan, and then you have to fall down between the fan blades to progress further into the level. But there's also a secret related to this fan. If you don't shoot the power device, you can step under the fan, and its airflow should push you up to the ceiling. You must use the fan's wind-force to navigate yourself into a small passage above the fan, and this is where the secret is located. Why did I say "should push you"? Well, because in YQuake2 this does not work. This fan acts very strangely, I can't exactly describe how, but it is like the air force exists only over the blades of the fan, and doesn't exist in the area over the gaps between the blades. Depending on the part of the fan (gap / blade) ending up below you when you step under it, you may either be almost instantly thrown in the water below the fan - for me it was so fast that I couldn't see myself falling down - or you may end up finding yourself hitting the ceiling like 5 or 10 times with insane force, and then either ending your life by being sliced by fan blades, or hitting the blades' surfaces with an acceleration so high that it instantly deals massive damage enough for the health meter to show "-99" health. Somehow you may survive, however, and in this case you will also end up in the water below the fan. But it is of course evident that the secret becomes nigh to impossible to get with this fan demonstrating such a bizarre behavior. I was finally able to get the secret by rocket jumping, but it is clearly not the way it's supposed to be taken.

When playing the original game a couple years ago, I don't recall having encountered this bug (I can't test the original game now because I started to run into problems running it after upgrading my system - this is how I began searching for a port in the first place). I also downloaded KMQuake2 to check if the bug also appears there. And I found out that this fan acts normally in KMQuake2. So it definitely looks like a bug in YQuake2, or perhaps a fixable map error (if I forgot about the bug in the original game and it was present there). Could you fix this so the secret becomes gettable by the way it was supposed to be got?

Brain_attack missing in brain.c

in SP_monster_brain the following line is missing after self->monsterinfo.run = brain_run;

	self->monsterinfo.attack = brain_attack;

This line is required to enable the new AI for the brain. Specifically it adds the laserbeams and the long tentacle grabs.

[Original bug] Beta class iron maidens lose homing rockets when pain skin appears

To reproduce:

  1. Go to map refinery
  2. Let the first iron maiden in the level see you and attack you
  3. Notice that she fires homing rockets
  4. Hurt her until her pain skin appears
  5. Let her attack again
  6. Now notice that it is just a normal non-homing rocket

This happens because the programmer uses s.skinnum to choose between firing rockets or homing rockets. Beta class skin is 3, but both types of iron maidens use skin 1 for pain skin, so as soon as the pain skin is set, the check for homing rockets will evaluate to false and regular rocket is fired by the beta class iron maiden.

There is the tiny chance that this is actually intentional, but given how the code is written it seems very much like an oversight that was not intended to be there. Plus, no other monster in the entire Quake 2 line-up behaves like this.

If you want I can provide a pull request with a fixup.

Cinematic openings, demos and the ending don't play

Using Yamagi Quake II ver. 7.30 plus Xatrix ver. 2.05 under Windows 7.

Opening the game through a shortcut (with +game xatrix) has the game go directly to the console. It doesn't play the opening logos or the demos.

Additionally, after finishing an SP run, the ending cinematic is cut short, right before the ship escapes from the collapsing base. If I want to fully see it, I have to write "map xout.cin".

Compiled addon dll falls back to base game

Hi!

Humbly asking for a direction/advice.

My compiled xatrix/game.dll seem to be falling back to base game dll.
Addon's very first level (The Swamps) shows fewer enemies and console says monster_gekk has no spawn function.

Here's my scenario:

  • Yamagi 8.20
  • Steam ver Quake 2 3.20
  • Win7 x64
  • compiling xatrix with VS2017 (solution made with cmake-gui; libs etc as per guideline)

Initially, it gave a sole error about stracasecmp in shared.c, which I was able to fix with following (copied from another VS-compileable vanilla Q2; tbh I'm not really sure what it does though):

Q_stricmp(const char *s1, const char *s2)
{
#if defined(WIN32)
	return _stricmp(s1, s2);
#else
	return strcasecmp(s1, s2);
#endif 
} 

After that, it compiled without errors (but with a ton of warnings).

Output dll (game.dll) was put into xatrix/ folder (along with xatrix's original gamex86.dll).

Am I doing something wrong?

Thanks in advance!

p.s. I'm still kinda new to C compiling, so I could be missing something trivial and important

Missing New Monsters (and maybe new equipments)

I suppose (more test needed) that all new contents are missing in the last version (2.05).

On the first map the enemy count is 0/14 instead of 0/38 (in Easy Mode), the only 2 monsters present in the first part of the map are 2 Grunt at the end.

Sorry for my English, I will do more test when possible.

OP: Windows 7 64 bit
Tested on: GOG Edition and original CD-ROM release (1998 Edition)

[Original bug] No ammo weapon switching to xatrix weapons is broken

To see what I mean, go to src/player/weapon.c:300. Notice that xatrix added code for switching to their new guns if the player runs out of ammo for the current gun. But this is useless code, because they forgot to add return statements, so the assignment is always overridden.

This is easy enough to fix by adding the missing return statements (and making sure player has at least 2 cells for Ionripper), but do we want to? It would change gameplay from what was shipped to what was originally intended, and I'd argue it is bad to switch to the phalanx since it is an explosive weapon.

I think there are 3 options:

  1. Fix both
  2. Remove the phalanx entry but fix the ionripper entry
  3. Remove both

Which one would you prefer?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.