- Get whaven building now that submodules have been removed.

* Since all code is included in `all.cpp`, several identically named static functions have been renamed to avoid conflicts.
This commit is contained in:
Mitchell Richters 2021-02-13 12:33:55 +11:00
parent 5fc7c7b1d7
commit eef77e80f7
32 changed files with 615 additions and 804 deletions

View file

@ -685,6 +685,7 @@ file( GLOB HEADER_FILES
games/blood/src/*.h
games/sw/src/*.h
games/exhumed/src/*.h
games/whaven/src/*.h
build/src/*.h
platform/win32/*.h
@ -945,6 +946,58 @@ set( NOT_COMPILED_SOURCE_FILES
games/exhumed/src/trigdat.cpp
games/exhumed/src/view.cpp
games/exhumed/src/wasp.cpp
# Witchaven
games/whaven/src/2d.cpp
games/whaven/src/ai.cpp
games/whaven/src/aidemon.cpp
games/whaven/src/aidevil.cpp
games/whaven/src/aidragon.cpp
games/whaven/src/aifatwitch.cpp
games/whaven/src/aifish.cpp
games/whaven/src/aifred.cpp
games/whaven/src/aigoblin.cpp
games/whaven/src/aigonzo.cpp
games/whaven/src/aigron.cpp
games/whaven/src/aiguardian.cpp
games/whaven/src/aiimp.cpp
games/whaven/src/aijudy.cpp
games/whaven/src/aikatie.cpp
games/whaven/src/aikobold.cpp
games/whaven/src/aikurt.cpp
games/whaven/src/aiminotaur.cpp
games/whaven/src/ainewguy.cpp
games/whaven/src/airat.cpp
games/whaven/src/aiskeleton.cpp
games/whaven/src/aiskully.cpp
games/whaven/src/aispider.cpp
games/whaven/src/aiwillow.cpp
games/whaven/src/animate.cpp
games/whaven/src/animatesprites.cpp
games/whaven/src/drawweapon.cpp
games/whaven/src/fonts.cpp
games/whaven/src/input.cpp
games/whaven/src/items.cpp
games/whaven/src/main.cpp
games/whaven/src/music.cpp
games/whaven/src/names.cpp
games/whaven/src/potions.cpp
games/whaven/src/precache.cpp
games/whaven/src/render.cpp
games/whaven/src/screenflash.cpp
games/whaven/src/sndnames.cpp
games/whaven/src/sound.cpp
games/whaven/src/spellbooks.cpp
games/whaven/src/weapons.cpp
games/whaven/src/wepdata.cpp
games/whaven/src/wh.cpp
games/whaven/src/whani.cpp
games/whaven/src/whfx.cpp
games/whaven/src/whldsv.cpp
games/whaven/src/whmap.cpp
games/whaven/src/whobj.cpp
games/whaven/src/whplr.cpp
games/whaven/src/whtag.cpp
)
@ -1269,6 +1322,7 @@ set (PCH_SOURCES
games/exhumed/all.cpp
games/blood/all.cpp
games/sw/all.cpp
games/whaven/all.cpp
)
if( ${HAVE_VM_JIT} )
@ -1500,6 +1554,8 @@ source_group("Games\\Shadow Warrior" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE
source_group("Games\\Shadow Warrior\\Source" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/games/sw/src/+")
source_group("Games\\Exhumed" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/games/exhumed/.+")
source_group("Games\\Exhumed\\Source" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/games/exhumed/src/.+")
source_group("Games\\Witchaven" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/games/whaven/.+")
source_group("Games\\Witchaven\\Source" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/games/whaven/src/.+")
source_group("Core" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/core/.+")
source_group("Core\\Textures" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/core/textures/.+")
source_group("Core\\Textures\\Formats" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/core/textures/formats/.+")

View file

@ -494,12 +494,10 @@ void CheckFrontend(int flags)
{
gi = Exhumed::CreateInterface();
}
#if 0
else if (flags & GAMEFLAG_WHALL)
{
gi = Witchaven::CreateInterface();
}
#endif
else
{
gi = Duke3d::CreateInterface();

View file

@ -1,57 +0,0 @@
set( PCH_SOURCES
src/2d.cpp
src/ai.cpp
src/aidemon.cpp
src/aidevil.cpp
src/aidragon.cpp
src/aifatwitch.cpp
src/aifish.cpp
src/aifred.cpp
src/aigoblin.cpp
src/aigonzo.cpp
src/aigron.cpp
src/aiguardian.cpp
src/aiimp.cpp
src/aijudy.cpp
src/aikatie.cpp
src/aikobold.cpp
src/aikurt.cpp
src/aiminotaur.cpp
src/ainewguy.cpp
src/airat.cpp
src/aiskeleton.cpp
src/aiskully.cpp
src/aispider.cpp
src/aiwillow.cpp
src/animate.cpp
src/animatesprites.cpp
src/items.cpp
src/names.cpp
src/potions.cpp
src/sndnames.cpp
src/spellbooks.cpp
src/weapons.cpp
src/wepdata.cpp
src/whani.cpp
src/whfx.cpp
src/whmap.cpp
src/whldsv.cpp
src/whobj.cpp
src/whplr.cpp
src/whtag.cpp
src/wh.cpp
src/main.cpp
src/music.cpp
src/sound.cpp
src/fonts.cpp
src/screenflash.cpp
src/precache.cpp
src/render.cpp
src/input.cpp
src/drawweapon.cpp
)
add_game_library2( whaven )
include_directories( src )

View file

@ -0,0 +1,50 @@
#include "src/2d.cpp"
#include "src/ai.cpp"
#include "src/aidemon.cpp"
#include "src/aidevil.cpp"
#include "src/aidragon.cpp"
#include "src/aifatwitch.cpp"
#include "src/aifish.cpp"
#include "src/aifred.cpp"
#include "src/aigoblin.cpp"
#include "src/aigonzo.cpp"
#include "src/aigron.cpp"
#include "src/aiguardian.cpp"
#include "src/aiimp.cpp"
#include "src/aijudy.cpp"
#include "src/aikatie.cpp"
#include "src/aikobold.cpp"
#include "src/aikurt.cpp"
#include "src/aiminotaur.cpp"
#include "src/ainewguy.cpp"
#include "src/airat.cpp"
#include "src/aiskeleton.cpp"
#include "src/aiskully.cpp"
#include "src/aispider.cpp"
#include "src/aiwillow.cpp"
#include "src/animate.cpp"
#include "src/animatesprites.cpp"
#include "src/drawweapon.cpp"
#include "src/fonts.cpp"
#include "src/input.cpp"
#include "src/items.cpp"
#include "src/main.cpp"
#include "src/music.cpp"
#include "src/names.cpp"
#include "src/potions.cpp"
#include "src/precache.cpp"
#include "src/render.cpp"
#include "src/screenflash.cpp"
#include "src/sndnames.cpp"
#include "src/sound.cpp"
#include "src/spellbooks.cpp"
#include "src/weapons.cpp"
#include "src/wepdata.cpp"
#include "src/wh.cpp"
#include "src/whani.cpp"
#include "src/whfx.cpp"
#include "src/whldsv.cpp"
#include "src/whmap.cpp"
#include "src/whobj.cpp"
#include "src/whplr.cpp"
#include "src/whtag.cpp"

View file

@ -3,7 +3,7 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chasedemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -73,12 +73,12 @@ static void chase(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchdemon(PLAYER& plr, short i) {
aisearch(plr, i, true);
checksector6(i);
}
static void pain(PLAYER& plr, short i) {
static void paindemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -91,7 +91,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facedemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
boolean cansee = ::cansee(plr.x, plr.y, plr.z, plr.sector, spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7), spr.sectnum);
@ -120,7 +120,7 @@ static void face(PLAYER& plr, short i) {
}
static void attackfunc(PLAYER& plr, short i) {
static void attackdemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (plr.z < spr.z) {
@ -142,7 +142,7 @@ static void attackfunc(PLAYER& plr, short i) {
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
}
static void flee(PLAYER& plr, short i) {
static void fleedemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -175,7 +175,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castdemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -193,7 +193,7 @@ static void cast(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukeddemon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
chunksofmeat(plr, i, spr.x, spr.y, spr.z, spr.sectnum, spr.ang);
trailingsmoke(i, false);
@ -205,19 +205,19 @@ void createDemonAI() {
auto& e = enemy[DEMONTYPE];
enemy[DEMONTYPE].info.Init(38, 41, 4096 + 2048, 120, 0, 64, true, 300, 0);
e.chase = chase;
e.chase = chasedemon;
e.resurect;
e.nuked = nuked;
e.nuked = nukeddemon;
e.frozen;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.pain = paindemon;
e.face = facedemon;
e.attack = attackdemon;
e.flee = fleedemon;
e.cast = castdemon;
e.die;
e.skirmish;
e.stand;
e.search = search;
e.search = searchdemon;
}

View file

@ -4,7 +4,7 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chasedevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -59,7 +59,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void die(PLAYER& plr, short i) {
static void diedevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -78,7 +78,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void paindevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -92,7 +92,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facedevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -123,7 +123,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void flee(PLAYER& plr, short i) {
static void fleedevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -155,7 +155,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackdevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -183,7 +183,7 @@ static void attackfunc(PLAYER& plr, short i) {
sprite[i].ang = getangle(plr.x - sprite[i].x, plr.y - sprite[i].y);
}
static void resurect(PLAYER& plr, short i) {
static void resurectdevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -196,12 +196,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchdevil(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void frozen(PLAYER& plr, short i) {
static void frozendevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -212,7 +212,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukeddevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -233,7 +233,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void cast(PLAYER& plr, short i) {
static void castdevil(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -255,17 +255,17 @@ static void cast(PLAYER& plr, short i) {
void createDevilAI() {
auto &e = enemy[DEVILTYPE];
e.info.Init(isWh2() ? 50 : 36, isWh2() ? 50 : 36, 2048, 120, 0, 64, false, 50, 0);
e.chase = chase;
e.die = die;
e.pain = pain;
e.face = face;
e.flee = flee;
e.attack = attackfunc;
e.resurect = resurect;
e.search = search;
e.frozen = frozen;
e.nuked = nuked;
e.cast = cast;
e.chase = chasedevil;
e.die = diedevil;
e.pain = paindevil;
e.face = facedevil;
e.flee = fleedevil;
e.attack = attackdevil;
e.resurect = resurectdevil;
e.search = searchdevil;
e.frozen = frozendevil;
e.nuked = nukeddevil;
e.cast = castdevil;
}
void premapDevil(short i) {

View file

@ -9,7 +9,7 @@ static void checkspeed(int i, int speed);
static void dragonAttack2(PLAYER& plr, short i);
static void firebreath(PLAYER& plr, int i, int a, int b, int c);
static void chase(PLAYER& plr, short i) {
static void chasedragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -70,7 +70,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void flee(PLAYER& plr, short i) {
static void fleedragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -102,7 +102,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void die(PLAYER& plr, short i) {
static void diedragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -120,7 +120,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void cast(PLAYER& plr, short i) {
static void castdragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -190,7 +190,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackdragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -205,7 +205,7 @@ static void attackfunc(PLAYER& plr, short i) {
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
}
static void resurect(PLAYER& plr, short i) {
static void resurectdragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -218,12 +218,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchdragon(PLAYER& plr, short i) {
aisearch(plr, i, true);
checksector6(i);
}
static void frozen(PLAYER& plr, short i) {
static void frozendragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -234,7 +234,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukeddragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -248,7 +248,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void paindragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
aimove(i);
@ -256,7 +256,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facedragon(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -366,17 +366,17 @@ static void checkspeed(int i, int speed) {
void createDragonAI() {
auto& e = enemy[DRAGONTYPE];
e.info.Init(54, 54, 512, 120, 0, 128, false, 900, 0);
e.chase = chase;
e.flee = flee;
e.die = die;
e.cast = cast;
e.attack = attackfunc;
e.resurect = resurect;
e.search = search;
e.frozen = frozen;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.chase = chasedragon;
e.flee = fleedragon;
e.die = diedragon;
e.cast = castdragon;
e.attack = attackdragon;
e.resurect = resurectdragon;
e.search = searchdragon;
e.frozen = frozendragon;
e.nuked = nukeddragon;
e.pain = paindragon;
e.face = facedragon;
}
void premapDragon(short i) {

View file

@ -5,7 +5,7 @@ BEGIN_WH_NS
static void throwspank(PLAYER& plr, int i);
static void chase(PLAYER& plr, short i) {
static void chasefatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -59,7 +59,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void resurect(PLAYER& plr, short i) {
static void resurectfatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -72,12 +72,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchfatwitch(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedfatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -91,7 +91,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painfatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -105,7 +105,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facefatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
boolean cansee = ::cansee(plr.x, plr.y, plr.z, plr.sector, spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7), spr.sectnum);
@ -133,7 +133,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackfatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -160,7 +160,7 @@ static void attackfunc(PLAYER& plr, short i) {
sprite[i].ang = getangle(plr.x - sprite[i].x, plr.y - sprite[i].y);
}
static void flee(PLAYER& plr, short i) {
static void fleefatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -192,7 +192,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castfatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -209,7 +209,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void diefatwitch(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -261,16 +261,16 @@ static void throwspank(PLAYER& plr, int i) {
void createFatwitchAI() {
auto& e = enemy[FATWITCHTYPE];
e.info.Init(32, 32, 2048, 120, 0, 64, false, 280, 0);
e.chase = chase;
e.resurect = resurect;
e.search = search;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chasefatwitch;
e.resurect = resurectfatwitch;
e.search = searchfatwitch;
e.nuked = nukedfatwitch;
e.pain = painfatwitch;
e.face = facefatwitch;
e.attack = attackfatwitch;
e.flee = fleefatwitch;
e.cast = castfatwitch;
e.die = diefatwitch;
}
void premapFatwitch(short i) {

View file

@ -4,7 +4,7 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chasefish(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -76,11 +76,11 @@ static void chase(PLAYER& plr, short i) {
}
}
static void die(PLAYER& plr, short i) {
static void diefish(PLAYER& plr, short i) {
deletesprite(i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackfish(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.z = sector[sprite[i].sectnum].floorz;
@ -115,7 +115,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishfish(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -138,12 +138,12 @@ static void skirmish(PLAYER& plr, short i) {
return;
}
static void search(PLAYER& plr, short i) {
static void searchfish(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void face(PLAYER& plr, short i) {
static void facefish(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -177,12 +177,12 @@ static void face(PLAYER& plr, short i) {
void createFishAI() {
auto &e = enemy[FISHTYPE];
e.info.Init(1, 1, 512, 120, 0, 32, false, 10, 0);
e.chase = chase;
e.die = die;
e.attack = attackfunc;
e.skirmish = skirmish;
e.search = search;
e.face = face;
e.chase = chasefish;
e.die = diefish;
e.attack = attackfish;
e.skirmish = skirmishfish;
e.search = searchfish;
e.face = facefish;
}
void premapFish(short i) {

View file

@ -3,10 +3,10 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplfred(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasefred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -77,10 +77,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -102,10 +102,10 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void die(PLAYER& plr, short i) {
static void diefred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -124,13 +124,13 @@ static void die(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchfred(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -141,7 +141,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void face(PLAYER& plr, short i) {
static void facefred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -171,10 +171,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -212,7 +212,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleefred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -244,10 +244,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void pain(PLAYER& plr, short i) {
static void painfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -260,10 +260,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplfred(plr, i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -276,7 +276,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplfred(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -302,16 +302,16 @@ static void checkexpl(PLAYER& plr, short i) {
void createFredAI() {
auto &e = enemy[FREDTYPE];
e.info.Init(48, 48, 1024 + 256, 120, 0, 64, false, 40, 0);
e.chase = chase;
e.skirmish = skirmish;
e.die = die;
e.search = search;
e.frozen = frozen;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.pain = pain;
e.resurect = resurect;
e.chase = chasefred;
e.skirmish = skirmishfred;
e.die = diefred;
e.search = searchfred;
e.frozen = frozenfred;
e.face = facefred;
e.attack = attackfred;
e.flee = fleefred;
e.pain = painfred;
e.resurect = resurectfred;
}

View file

@ -3,10 +3,10 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplgoblin(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasegoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -83,10 +83,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
static void die(PLAYER& plr, short i) {
static void diegoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -105,7 +105,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void paingoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -118,10 +118,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
static void face(PLAYER& plr, short i) {
static void facegoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
boolean cansee = ::cansee(plr.x, plr.y, plr.z, plr.sector, spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7),
@ -150,10 +150,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
static void flee(PLAYER& plr, short i) {
static void fleegoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -184,10 +184,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
static void stand(PLAYER& plr, short i) {
static void standgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
@ -216,7 +216,7 @@ static void stand(PLAYER& plr, short i) {
checksector6(i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -255,7 +255,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -268,13 +268,13 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchgoblin(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozengoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -285,7 +285,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -299,7 +299,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -322,7 +322,7 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
void goblinChill(PLAYER& plr, short i) {
@ -487,7 +487,7 @@ static void goblinWar(PLAYER& plr, short i) {
break;
}
checkexpl(plr, i);
checkexplgoblin(plr, i);
}
void goblinWarProcess(PLAYER& plr)
@ -503,7 +503,7 @@ void goblinWarProcess(PLAYER& plr)
}
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -529,18 +529,18 @@ static void checkexpl(PLAYER& plr, short i) {
void createGoblinAI() {
auto& e = enemy[GOBLINTYPE];
e.info.Init(36, 36, 1024, 120, 0, 64, false, 15, 0);
e.chase = chase;
e.die = die;
e.pain = pain;
e.face = face;
e.flee = flee;
e.stand = stand;
e.attack = attackfunc;
e.resurect = resurect;
e.search = search;
e.frozen = frozen;
e.nuked = nuked;
e.skirmish = skirmish;
e.chase = chasegoblin;
e.die = diegoblin;
e.pain = paingoblin;
e.face = facegoblin;
e.flee = fleegoblin;
e.stand = standgoblin;
e.attack = attackgoblin;
e.resurect = resurectgoblin;
e.search = searchgoblin;
e.frozen = frozengoblin;
e.nuked = nukedgoblin;
e.skirmish = skirmishgoblin;
e.info.getHealth = [](EnemyInfo& e, SPRITE& spr)
{
if (spr.pal == 5)

View file

@ -4,10 +4,10 @@
BEGIN_WH_NS
static void gonzopike(short s, PLAYER& plr);
static void checkexpl(PLAYER& plr, short i);
static void checkexplgonzo(PLAYER& plr, short i);
static boolean patrolprocess(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasegonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -184,10 +184,10 @@ static void chase(PLAYER& plr, short i) {
}
}
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -216,7 +216,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -240,23 +240,23 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void search(PLAYER& plr, short i) {
static void searchgonzo(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
chunksofmeat(plr, i, spr.x, spr.y, spr.z, spr.sectnum, spr.ang);
trailingsmoke(i, false);
newstatus(i, DIE);
}
static void frozen(PLAYER& plr, short i) {
static void frozengonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -280,7 +280,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void paingonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -306,10 +306,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void face(PLAYER& plr, short i) {
static void facegonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -339,10 +339,10 @@ static void face(PLAYER& plr, short i) {
if (plr.invisibletime < 0 && checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
spr.z = zr_florz;
@ -426,7 +426,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleegonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -460,10 +460,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgonzo(plr, i);
}
static void cast(PLAYER& plr, short i) {
static void castgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -480,7 +480,7 @@ static void cast(PLAYER& plr, short i) {
}
}
static void die(PLAYER& plr, short i) {
static void diegonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -666,7 +666,7 @@ static void gonzopike(short s, PLAYER& plr) {
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplgonzo(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -721,18 +721,18 @@ void createGonzoAI() {
return adjusthp(e.health);
};
e.chase = chase;
e.resurect = resurect;
e.skirmish = skirmish;
e.search = search;
e.nuked = nuked;
e.frozen = frozen;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chasegonzo;
e.resurect = resurectgonzo;
e.skirmish = skirmishgonzo;
e.search = searchgonzo;
e.nuked = nukedgonzo;
e.frozen = frozengonzo;
e.pain = paingonzo;
e.face = facegonzo;
e.attack = attackgonzo;
e.flee = fleegonzo;
e.cast = castgonzo;
e.die = diegonzo;
}

View file

@ -3,11 +3,11 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplgron(PLAYER& plr, short i);
static void throwhalberd(int s);
static void chase(PLAYER& plr, short i) {
static void chasegron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -115,10 +115,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -146,7 +146,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -169,16 +169,16 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void search(PLAYER& plr, short i) {
static void searchgron(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -199,7 +199,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void frozen(PLAYER& plr, short i) {
static void frozengron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -215,7 +215,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void paingron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -234,10 +234,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void face(PLAYER& plr, short i) {
static void facegron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -267,10 +267,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (spr.picnum == GRONSWATTACK) {
@ -322,7 +322,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleegron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -353,10 +353,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplgron(plr, i);
}
static void cast(PLAYER& plr, short i) {
static void castgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -378,7 +378,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void diegron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -407,7 +407,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -493,18 +493,18 @@ void createGronAI() {
}
return adjusthp(e.health);
};
e.chase = chase;
e.resurect = resurect;
e.skirmish = skirmish;
e.search = search;
e.nuked = nuked;
e.frozen = frozen;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chasegron;
e.resurect = resurectgron;
e.skirmish = skirmishgron;
e.search = searchgron;
e.nuked = nukedgron;
e.frozen = frozengron;
e.pain = paingron;
e.face = facegron;
e.attack = attackgron;
e.flee = fleegron;
e.cast = castgron;
e.die = diegron;
}

View file

@ -3,7 +3,7 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chaseguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -70,7 +70,7 @@ static void chase(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -91,7 +91,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void attackfunc(PLAYER& plr, short i) {
static void attackguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (plr.z < spr.z) {
@ -113,7 +113,7 @@ static void attackfunc(PLAYER& plr, short i) {
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
}
static void face(PLAYER& plr, short i) {
static void faceguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -144,12 +144,12 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void search(PLAYER& plr, short i) {
static void searchguardian(PLAYER& plr, short i) {
aisearch(plr, i, true);
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleeguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -185,7 +185,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void pain(PLAYER& plr, short i) {
static void painguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -198,7 +198,7 @@ static void pain(PLAYER& plr, short i) {
// setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castguardian(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -228,14 +228,14 @@ static void cast(PLAYER& plr, short i) {
void createGuardianAI() {
auto& e = enemy[GUARDIANTYPE];
e.info.Init(isWh2() ? 35 : 32, isWh2() ? 35 : 32, 4096, 120, 0, 64, true, isWh2() ? 100 : 200, 0);
e.chase = chase;
e.nuked = nuked;
e.attack = attackfunc;
e.face = face;
e.search = search;
e.flee = flee;
e.pain = pain;
e.cast = cast;
e.chase = chaseguardian;
e.nuked = nukedguardian;
e.attack = attackguardian;
e.face = faceguardian;
e.search = searchguardian;
e.flee = fleeguardian;
e.pain = painguardian;
e.cast = castguardian;
}
void premapGuardian(short i) {

View file

@ -3,9 +3,9 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplimp(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chaseimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -84,10 +84,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplimp(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -98,7 +98,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -112,7 +112,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void die(PLAYER& plr, short i) {
static void dieimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -131,14 +131,14 @@ static void die(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
chunksofmeat(plr, i, spr.x, spr.y, spr.z, spr.sectnum, spr.ang);
trailingsmoke(i, false);
newstatus((short)i, DIE);
}
static void resurect(PLAYER& plr, short i) {
static void resurectimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -151,7 +151,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void face(PLAYER& plr, short i) {
static void faceimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -181,10 +181,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplimp(plr, i);
}
static void flee(PLAYER& plr, short i) {
static void fleeimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -216,10 +216,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplimp(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -256,13 +256,13 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void search(PLAYER& plr, short i) {
static void searchimp(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplimp(plr, i);
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -285,10 +285,10 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplimp(plr, i);
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplimp(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -314,17 +314,17 @@ static void checkexpl(PLAYER& plr, short i) {
void createImpAI() {
auto& e = enemy[IMPTYPE];
e.info.Init(25, 25, 1024, 120, 0, 64, false, 20, 0);
e.chase = chase;
e.frozen = frozen;
e.pain = pain;
e.die = die;
e.nuked = nuked;
e.resurect = resurect;
e.face = face;
e.flee = flee;
e.attack = attackfunc;
e.search = search;
e.skirmish = skirmish;
e.chase = chaseimp;
e.frozen = frozenimp;
e.pain = painimp;
e.die = dieimp;
e.nuked = nukedimp;
e.resurect = resurectimp;
e.face = faceimp;
e.flee = fleeimp;
e.attack = attackimp;
e.search = searchimp;
e.skirmish = skirmishimp;
}

View file

@ -5,7 +5,7 @@ BEGIN_WH_NS
void spawnabaddy(int i, int monster);
static void chase(PLAYER& plr, short i) {
static void chasejudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -69,7 +69,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void resurect(PLAYER& plr, short i) {
static void resurectjudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -82,12 +82,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchjudy(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedjudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -101,7 +101,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painjudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -115,7 +115,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facejudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
@ -145,7 +145,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackjudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -173,7 +173,7 @@ static void attackfunc(PLAYER& plr, short i) {
sprite[i].ang = getangle(plr.x - sprite[i].x, plr.y - sprite[i].y);
}
static void flee(PLAYER& plr, short i) {
static void fleejudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -205,7 +205,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castjudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -318,7 +318,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void diejudy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -391,16 +391,16 @@ void spawnabaddy(int i, int monster) {
void createJudyAI() {
auto& e = enemy[JUDYTYPE];
e.info.Init(32, 32, 2048, 120, 0, 64, false, 500, 0);
e.chase = chase;
e.resurect = resurect;
e.search = search;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chasejudy;
e.resurect = resurectjudy;
e.search = searchjudy;
e.nuked = nukedjudy;
e.pain = painjudy;
e.face = facejudy;
e.attack = attackjudy;
e.flee = fleejudy;
e.cast = castjudy;
e.die = diejudy;
}
void premapJudy(short i) {

View file

@ -5,7 +5,7 @@ BEGIN_WH_NS
void spawnabaddy(int i, int monster);
static void chase(PLAYER& plr, short i) {
static void chasekatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -59,7 +59,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void resurect(PLAYER& plr, short i) {
static void resurectkatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -72,12 +72,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchkatie(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void pain(PLAYER& plr, short i) {
static void painkatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -91,7 +91,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facekatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.ang = (short)(getangle(plr.x - spr.x, plr.y - spr.y) & 2047);
@ -121,7 +121,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackkatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -148,7 +148,7 @@ static void attackfunc(PLAYER& plr, short i) {
sprite[i].ang = getangle(plr.x - sprite[i].x, plr.y - sprite[i].y);
}
static void flee(PLAYER& plr, short i) {
static void fleekatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -185,7 +185,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castkatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -240,7 +240,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void diekatie(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -262,15 +262,15 @@ static void die(PLAYER& plr, short i) {
void createKatieAI() {
auto& e = enemy[KATIETYPE];
e.info.Init(35, 35, 2048, 120, 0, 64, false, 200, 0);
e.chase = chase;
e.resurect = resurect;
e.search = search;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chasekatie;
e.resurect = resurectkatie;
e.search = searchkatie;
e.pain = painkatie;
e.face = facekatie;
e.attack = attackkatie;
e.flee = fleekatie;
e.cast = castkatie;
e.die = diekatie;
}
void premapKatie(short i) {

View file

@ -3,9 +3,9 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplkobold(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasekobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -87,10 +87,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void die(PLAYER& plr, short i) {
static void diekobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -109,7 +109,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -122,10 +122,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void face(PLAYER& plr, short i) {
static void facekobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -155,10 +155,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void flee(PLAYER& plr, short i) {
static void fleekobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -189,10 +189,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -228,7 +228,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -241,15 +241,15 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchkobold(PLAYER& plr, short i) {
if ((krand() % 100) > 98)
spritesound(S_KSNARL1 + (krand() % 4), &sprite[i]);
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -260,7 +260,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -281,7 +281,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -304,11 +304,11 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplkobold(plr, i);
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplkobold(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -334,17 +334,17 @@ static void checkexpl(PLAYER& plr, short i) {
void createKoboldAI() {
auto& e = enemy[KOBOLDTYPE];
e.info.Init(isWh2() ? 60 : 54, isWh2() ? 60 : 54, 1024, 120, 0, 64, false, 20, 0);
e.chase = chase;
e.die = die;
e.pain = pain;
e.face = face;
e.flee = flee;
e.attack = attackfunc;
e.resurect = resurect;
e.search = search;
e.frozen = frozen;
e.nuked = nuked;
e.skirmish = skirmish;
e.chase = chasekobold;
e.die = diekobold;
e.pain = painkobold;
e.face = facekobold;
e.flee = fleekobold;
e.attack = attackkobold;
e.resurect = resurectkobold;
e.search = searchkobold;
e.frozen = frozenkobold;
e.nuked = nukedkobold;
e.skirmish = skirmishkobold;
}
void premapKobold(short i) {

View file

@ -4,7 +4,7 @@
BEGIN_WH_NS
static void stand(PLAYER& plr, short i) {
static void standkurt(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (bcos(spr.ang) * (plr.x - spr.x) + bsin(spr.ang) * (plr.y - spr.y) >= 0) {
@ -20,7 +20,7 @@ static void stand(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedkurt(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
chunksofmeat(plr, i, spr.x, spr.y, spr.z, spr.sectnum, spr.ang);
trailingsmoke(i, false);
@ -69,8 +69,8 @@ void createKurtAI() {
return out;
};
e.stand = stand;
e.nuked = nuked;
e.stand = standkurt;
e.nuked = nukedkurt;
e.chase = enemy[GONZOTYPE].chase;
e.resurect = enemy[GONZOTYPE].resurect;
e.skirmish = enemy[GONZOTYPE].skirmish;

View file

@ -3,9 +3,9 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplminotaur(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chaseminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -84,10 +84,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -100,7 +100,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -123,10 +123,10 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -147,7 +147,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -160,10 +160,10 @@ static void pain(PLAYER& plr, short i) {
processfluid(i, zr_florhit, false);
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void face(PLAYER& plr, short i) {
static void faceminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -193,10 +193,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -234,7 +234,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void dieminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -253,7 +253,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void flee(PLAYER& plr, short i) {
static void fleeminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -284,10 +284,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -298,14 +298,14 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchminotaur(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplminotaur(plr, i);
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplminotaur(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -334,17 +334,17 @@ void createMinotaurAI() {
auto& e = enemy[MINOTAURTYPE];
e.info.Init(64, 64, 1024 + 512, 120, 0, 64, false, isWh2() ? 80 : 100, 0);
e.chase = chase;
e.resurect = resurect;
e.skirmish = skirmish;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.die = die;
e.flee = flee;
e.frozen = frozen;
e.search = search;
e.chase = chaseminotaur;
e.resurect = resurectminotaur;
e.skirmish = skirmishminotaur;
e.nuked = nukedminotaur;
e.pain = painminotaur;
e.face = faceminotaur;
e.attack = attackminotaur;
e.die = dieminotaur;
e.flee = fleeminotaur;
e.frozen = frozenminotaur;
e.search = searchminotaur;
}

View file

@ -5,7 +5,7 @@ BEGIN_WH_NS
static void newguyarrow(short s, PLAYER& plr);
static void stand(PLAYER& plr, short i) {
static void standnewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (bcos(spr.ang) * (plr.x - spr.x) + bsin(spr.ang) * (plr.y - spr.y) >= 0) {
if (cansee(spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7), spr.sectnum, plr.x, plr.y,
@ -20,7 +20,7 @@ static void stand(PLAYER& plr, short i) {
}
}
static void chase(PLAYER& plr, short i) {
static void chasenewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -100,7 +100,7 @@ static void chase(PLAYER& plr, short i) {
}
}
static void resurect(PLAYER& plr, short i) {
static void resurectnewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -131,7 +131,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishnewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -154,19 +154,19 @@ static void skirmish(PLAYER& plr, short i) {
checksector6(i);
}
static void search(PLAYER& plr, short i) {
static void searchnewguy(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void nuked(PLAYER& plr, short i) {
static void nukednewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
chunksofmeat(plr, i, spr.x, spr.y, spr.z, spr.sectnum, spr.ang);
trailingsmoke(i, false);
newstatus((short)i, DIE);
}
static void pain(PLAYER& plr, short i) {
static void painnewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -180,7 +180,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void facenewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
boolean cansee = ::cansee(plr.x, plr.y, plr.z, plr.sector, spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7),
@ -209,7 +209,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void flee(PLAYER& plr, short i) {
static void fleenewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -243,7 +243,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void attackfunc(PLAYER& plr, short i) {
static void attacknewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -296,7 +296,7 @@ static void attackfunc(PLAYER& plr, short i) {
}
}
static void die(PLAYER& plr, short i) {
static void dienewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -315,7 +315,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void cast(PLAYER& plr, short i) {
static void castnewguy(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -421,18 +421,18 @@ void createNewGuyAI() {
return adjusthp(e.health);
};
e.stand = stand;
e.chase = chase;
e.resurect = resurect;
e.skirmish = skirmish;
e.search = search;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.flee = flee;
e.attack = attackfunc;
e.die = die;
e.cast = cast;
e.stand = standnewguy;
e.chase = chasenewguy;
e.resurect = resurectnewguy;
e.skirmish = skirmishnewguy;
e.search = searchnewguy;
e.nuked = nukednewguy;
e.pain = painnewguy;
e.face = facenewguy;
e.flee = fleenewguy;
e.attack = attacknewguy;
e.die = dienewguy;
e.cast = castnewguy;
}

View file

@ -3,16 +3,16 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chaserat(PLAYER& plr, short i) {
newstatus(i, FLEE);
}
static void search(PLAYER& plr, short i) {
static void searchrat(PLAYER& plr, short i) {
sprite[i].ang = (short) (((krand() & 512 - 256) + sprite[i].ang + 1024) & 2047);
newstatus(i, FLEE);
}
static void face(PLAYER& plr, short i) {
static void facerat(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
spr.ang = (short) (((krand() & 512 - 256) + spr.ang + 1024) & 2047); // NEW
@ -20,11 +20,11 @@ static void face(PLAYER& plr, short i) {
newstatus(i, FLEE);
}
static void die(PLAYER& plr, short i) {
static void dierat(PLAYER& plr, short i) {
deletesprite(i);
}
static void flee(PLAYER& plr, short i) {
static void fleerat(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -90,11 +90,11 @@ void createRatAI() {
{
return 10;
};
e.chase = chase;
e.search = search;
e.face = face;
e.die = die;
e.flee = flee;
e.chase = chaserat;
e.search = searchrat;
e.face = facerat;
e.die = dierat;
e.flee = fleerat;
}
void premapRat(short i) {

View file

@ -3,9 +3,9 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplskeleton(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chaseskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -84,10 +84,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplskeleton(plr, i);
}
static void die(PLAYER& plr, short i) {
static void dieskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -106,7 +106,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void face(PLAYER& plr, short i) {
static void faceskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -136,10 +136,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplskeleton(plr, i);
}
static void flee(PLAYER& plr, short i) {
static void fleeskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.picnum = SKELETON;
@ -173,10 +173,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplskeleton(plr, i);
}
static void stand(PLAYER& plr, short i) {
static void standskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
@ -202,7 +202,7 @@ static void stand(PLAYER& plr, short i) {
checksector6(i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -238,7 +238,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -251,13 +251,13 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchskeleton(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplskeleton(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -268,7 +268,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -289,7 +289,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -312,7 +312,7 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplskeleton(plr, i);
}
void skeletonChill(PLAYER& plr, short i) {
@ -329,7 +329,7 @@ void skeletonChill(PLAYER& plr, short i) {
}
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplskeleton(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -355,17 +355,17 @@ static void checkexpl(PLAYER& plr, short i) {
void createSkeletonAI() {
auto& e = enemy[SKELETONTYPE];
e.info.Init(isWh2() ? 35 : 24, isWh2() ? 35 : 24, 1024, 120, 0, 64, false, isWh2() ? 25 : 30, 0);
e.chase = chase;
e.die = die;
e.face = face;
e.flee = flee;
e.stand = stand;
e.attack = attackfunc;
e.resurect = resurect;
e.search = search;
e.frozen = frozen;
e.nuked = nuked;
e.skirmish = skirmish;
e.chase = chaseskeleton;
e.die = dieskeleton;
e.face = faceskeleton;
e.flee = fleeskeleton;
e.stand = standskeleton;
e.attack = attackskeleton;
e.resurect = resurectskeleton;
e.search = searchskeleton;
e.frozen = frozenskeleton;
e.nuked = nukedskeleton;
e.skirmish = skirmishskeleton;
}

View file

@ -3,7 +3,7 @@
BEGIN_WH_NS
static void chase(PLAYER& plr, short i) {
static void chaseskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -56,7 +56,7 @@ static void chase(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void resurect(PLAYER& plr, short i) {
static void resurectskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -69,12 +69,12 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void search(PLAYER& plr, short i) {
static void searchskully(PLAYER& plr, short i) {
aisearch(plr, i, false);
checksector6(i);
}
static void nuked(PLAYER& plr, short i) {
static void nukedskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -88,7 +88,7 @@ static void nuked(PLAYER& plr, short i) {
}
}
static void pain(PLAYER& plr, short i) {
static void painskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0) {
@ -102,7 +102,7 @@ static void pain(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void face(PLAYER& plr, short i) {
static void faceskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -133,7 +133,7 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -160,7 +160,7 @@ static void attackfunc(PLAYER& plr, short i) {
sprite[i].ang = getangle(plr.x - sprite[i].x, plr.y - sprite[i].y);
}
static void flee(PLAYER& plr, short i) {
static void fleeskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -192,7 +192,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void cast(PLAYER& plr, short i) {
static void castskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -210,7 +210,7 @@ static void cast(PLAYER& plr, short i) {
checksector6(i);
}
static void die(PLAYER& plr, short i) {
static void dieskully(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -232,16 +232,16 @@ static void die(PLAYER& plr, short i) {
void createSkullyAI() {
auto& e = enemy[SKULLYTYPE];
e.info.Init(32, 32, 2048, 120, 0, 64, false, 300, 0);
e.chase = chase;
e.resurect = resurect;
e.search = search;
e.nuked = nuked;
e.pain = pain;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.cast = cast;
e.die = die;
e.chase = chaseskully;
e.resurect = resurectskully;
e.search = searchskully;
e.nuked = nukedskully;
e.pain = painskully;
e.face = faceskully;
e.attack = attackskully;
e.flee = fleeskully;
e.cast = castskully;
e.die = dieskully;
}
void premapSkully(short i) {

View file

@ -3,9 +3,9 @@
BEGIN_WH_NS
static void checkexpl(PLAYER& plr, short i);
static void checkexplspider(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasespider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -84,10 +84,10 @@ static void chase(PLAYER& plr, short i) {
newstatus(i, DIE);
}
checkexpl(plr, i);
checkexplspider(plr, i);
}
static void resurect(PLAYER& plr, short i) {
static void resurectspider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -100,7 +100,7 @@ static void resurect(PLAYER& plr, short i) {
}
}
static void skirmish(PLAYER& plr, short i) {
static void skirmishspider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -123,16 +123,16 @@ static void skirmish(PLAYER& plr, short i) {
if (checksector6(i))
return;
checkexpl(plr, i);
checkexplspider(plr, i);
}
static void search(PLAYER& plr, short i) {
static void searchspider(PLAYER& plr, short i) {
aisearch(plr, i, false);
if (!checksector6(i))
checkexpl(plr, i);
checkexplspider(plr, i);
}
static void frozen(PLAYER& plr, short i) {
static void frozenspider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -143,7 +143,7 @@ static void frozen(PLAYER& plr, short i) {
}
}
static void face(PLAYER& plr, short i) {
static void facespider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -173,10 +173,10 @@ static void face(PLAYER& plr, short i) {
if (checkdist(plr, i))
newstatus(i, ATTACK);
checkexpl(plr, i);
checkexplspider(plr, i);
}
static void attackfunc(PLAYER& plr, short i) {
static void attackspider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
getzrange(spr.x, spr.y, spr.z - 1, spr.sectnum, (spr.clipdist) << 2, CLIPMASK0);
@ -220,7 +220,7 @@ static void attackfunc(PLAYER& plr, short i) {
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleespider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -252,10 +252,10 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
checkexpl(plr, i);
checkexplspider(plr, i);
}
static void die(PLAYER& plr, short i) {
static void diespider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -274,7 +274,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void checkexpl(PLAYER& plr, short i) {
static void checkexplspider(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
@ -300,15 +300,15 @@ static void checkexpl(PLAYER& plr, short i) {
void createSpiderAI() {
auto& e = enemy[SPIDERTYPE];
e.info.Init(24, 18, 512, 60, 0, 64, false, 5, 0);
e.chase = chase;
e.resurect = resurect;
e.skirmish = skirmish;
e.search = search;
e.frozen = frozen;
e.face = face;
e.attack = attackfunc;
e.flee = flee;
e.die = die;
e.chase = chasespider;
e.resurect = resurectspider;
e.skirmish = skirmishspider;
e.search = searchspider;
e.frozen = frozenspider;
e.face = facespider;
e.attack = attackspider;
e.flee = fleespider;
e.die = diespider;
}
void premapSpider(short i) {

View file

@ -5,7 +5,7 @@ BEGIN_WH_NS
static void willowDrain(PLAYER& plr, short i);
static void chase(PLAYER& plr, short i) {
static void chasewillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
if (spr.lotag < 0)
@ -67,7 +67,7 @@ static void chase(PLAYER& plr, short i) {
}
}
static void attackfunc(PLAYER& plr, short i) {
static void attackwillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -138,7 +138,7 @@ static void attackfunc(PLAYER& plr, short i) {
spr.z = floorz;
}
static void face(PLAYER& plr, short i) {
static void facewillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
@ -167,12 +167,12 @@ static void face(PLAYER& plr, short i) {
newstatus(i, ATTACK);
}
static void search(PLAYER& plr, short i) {
static void searchwillow(PLAYER& plr, short i) {
aisearch(plr, i, true);
checksector6(i);
}
static void flee(PLAYER& plr, short i) {
static void fleewillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
short osectnum = spr.sectnum;
@ -205,7 +205,7 @@ static void flee(PLAYER& plr, short i) {
setsprite(i, spr.x, spr.y, spr.z);
}
static void die(PLAYER& plr, short i) {
static void diewillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
spr.lotag -= TICSPERFRAME;
@ -227,7 +227,7 @@ static void die(PLAYER& plr, short i) {
}
}
static void nuked(PLAYER& plr, short i) {
static void nukedwillow(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
if (isWh2()) {
@ -268,13 +268,13 @@ static void willowDrain(PLAYER& plr, short i) {
void createWillowAI() {
auto& e = enemy[WILLOWTYPE];
e.info.Init(32, 32, 512, 120, 0, 64, true, isWh2() ? 5 : 400, 0);
e.chase = chase;
e.attack = attackfunc;
e.face = face;
e.search = search;
e.flee = flee;
e.die = die;
e.nuked = nuked;
e.chase = chasewillow;
e.attack = attackwillow;
e.face = facewillow;
e.search = searchwillow;
e.flee = fleewillow;
e.die = diewillow;
e.nuked = nukedwillow;
}

View file

@ -1,236 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 2020 Christoph Oelckers
This is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#include "ns.h" // Must come before everything else!
#include "build.h"
#include "osd.h"
#include "icorp.h"
#include "version.h"
#include "baselayer.h"
#include "menu/menu.h"
#include "../../glbackend/glbackend.h"
BEGIN_WH_NS
int handle1;
extern int gameactivated;
int MenuExitCondition;
int MenuStartCondition;
//----------------------------------------------------------------------------
//
// Implements the native looking menu used for the main menu
// and the episode/skill selection screens, i.e. the parts
// that need to look authentic
//
//----------------------------------------------------------------------------
void menu_DoPlasma();
int zoomsize = 0;
class WHMainMenu : public DListMenu
{
void Init(DMenu* parent, FListMenuDescriptor* desc) override
{
DListMenu::Init(parent, desc);
//PlayLocalSound(StaticSound[kSound31], 0);
}
void PreDraw() override
{
overwritesprite(127,58,MENUSELECTIONS,0, RS_AUTO,0);
}
};
class WHSkillMenu : public DListMenu
{
void Init(DMenu* parent, FListMenuDescriptor* desc) override
{
DListMenu::Init(parent, desc);
//PlayLocalSound(StaticSound[kSound31], 0);
}
void PreDraw() override
{
///overwritesprite(127,58,BLOODGOREGREEN,0,RS_AUTO,0);
overwritesprite(148,114,DIFFICULTRED,0,RS_AUTO,0);
overwritesprite(147,143,HORNYBACK,0,RS_AUTO,0);
}
//=============================================================================
//
// some hackery to make a horizontal menu work.
//
//=============================================================================
bool MenuEvent (int key, bool fromcontroller)
{
switch (key)
{
case MKEY_Right:
key = MKEY_Down;
break;
case MKEY_Left:
key = MKEY_Up;
break;
default:
break; // Keep GCC quiet
}
return DListMenu::MenuEvent(key, fromcontroller);
}
};
//----------------------------------------------------------------------------
//
// Menu related game interface functions
//
//----------------------------------------------------------------------------
void GameInterface::DrawNativeMenuText(int fontnum, int state, double xpos, double ypos, float fontscale, const char* text, int flags)
{
static struct {
int x;
int y;
}redpic1[5] = {
{ 142,58 },
{ 140,80 },
{ 127,104 },
{ 184,126 },
{ 183,150 } };
struct {
int x;
int y;
}redpic2[4]={
{ 148,146 },
{ 181,146 },
{ 215,144 },
{ 257,143 } };
int index = (int)strtol(text, nullptr, 0);
if (state == NIT_SelectedState)
{
if (index < 5)
{
int redpicnum=NEWGAMEGREEN+index;
overwritesprite(redpic1[index].x,redpic1[index].y,redpicnum,0, RS_AUTO,0);
}
else if (index < 9)
{
int redpicnum = HORNYSKULL1 + index-5;
overwritesprite(redpic2[index-4].x,redpic2[index-4].y,redpicnum,0,RS_AUTO,0);
}
}
}
void GameInterface::MenuOpened()
{
//GrabPalette();
//StopAllSounds();
//StopLocalSound();
}
void GameInterface::MenuSound(EMenuSounds snd)
{
switch (snd)
{
case CursorSound:
case AdvanceSound:
case BackSound:
SND_Sound( rand()%60 ); // Yes, it really is this dumb.
break;
default:
return;
}
}
void GameInterface::MenuClosed()
{
}
void GameInterface::StartGame(FGameStartup& gs)
{
gameactivated=0;
//JSA BLORB
SND_Sting(S_STING1);
SND_FadeMusic();
srand((int)totalclock&30000);
//tille maps are finished
//if(loadedgame == 0 && netgame == 0)
// mapon=1;
auto plr = &player[0];
startnewgame(plr);
gameactivated=1;
}
void GameInterface::DrawCenteredTextScreen(const DVector2& origin, const char* text, int position, bool bg)
{
if (text)
{
int height = 11;
auto lines = FString(text).MakeUpper().Split("\n");
int y = position - (height * lines.Size() / 2);
for (auto& l : lines)
{
int width = fancyfontsize(THEFONT, text);
fancyfontscreen(int(origin.X) + 160 - width / 2, position + int(origin.Y), THEFONT, text);
y += tilesiz[THEFONT].y+2;
}
}
}
void GameInterface::DrawMenuCaption(const DVector2& origin, const char* text)
{
DrawCenteredTextScreen(origin, text, 10, false);
}
END_WH_NS
//----------------------------------------------------------------------------
//
// Class registration
//
//----------------------------------------------------------------------------
static TMenuClassDescriptor<Witchaven::WHMainMenu> _mm("Witchaven.MainMenu");
void RegisterWHMenus()
{
menuClasses.Push(&_mm);
}

View file

@ -43,8 +43,8 @@ void drawscreen(int num, double dasmoothratio, bool sceneonly)
for (int k = floormirrorcnt - 1; k >= 0; k--) {
int sect = floormirrorsector[k];
if((gotsector[sect >> 3] & (1 << (sect & 7))) == 0) continue;
j = klabs(wall[sector[sect].wallptr].x - plr.x);
j += klabs(wall[sector[sect].wallptr].y - plr.y);
j = abs(wall[sector[sect].wallptr].x - plr.x);
j += abs(wall[sector[sect].wallptr].y - plr.y);
if (j < dist) {
dist = j; i = k;
}
@ -81,7 +81,7 @@ void drawscreen(int num, double dasmoothratio, bool sceneonly)
DrawHud(dasmoothratio);
if (automapMode != am_off)
{
DrawOverheadMap(cposx, cposy, cang.asbuild());
DrawOverheadMap(cposx, cposy, cang.asbuild(), dasmoothratio);
}
}
}

View file

@ -20,8 +20,6 @@ WEAPONINF weaponanimtics2[MAXWEAPONS][MAXFRAMES];
WEAPONINF zweaponanimtics2[MAXWEAPONS][MAXFRAMES];
WEAPONINF lefthandanimtics[5][MAXFRAMES];
#define set(v) memcpy(v, _##v, sizeof(v));
void wepdatainit()
{
// The data in here is not constant so they need to be set up at run time.
@ -716,20 +714,24 @@ void wepdatainit()
};
set(sspellbookanim);
set(spikeanimtics);
set(wh2throwanimtics);
set(throwanimtics);
set(cockanimtics);
set(zcockanimtics);
set(zreadyanimtics);
set(readyanimtics);
set(weaponanimtics);
set(zweaponanimtics);
set(zlefthandanimtics);
set(weaponanimtics2);
set(zweaponanimtics2);
set(lefthandanimtics);
#define setmem(v) ::memcpy(v, _##v, sizeof(v));
setmem(sspellbookanim);
setmem(spikeanimtics);
setmem(wh2throwanimtics);
setmem(throwanimtics);
setmem(cockanimtics);
setmem(zcockanimtics);
setmem(zreadyanimtics);
setmem(readyanimtics);
setmem(weaponanimtics);
setmem(zweaponanimtics);
setmem(zlefthandanimtics);
setmem(weaponanimtics2);
setmem(zweaponanimtics2);
setmem(lefthandanimtics);
#undef setmem
}

View file

@ -22,7 +22,6 @@ uint8_t wallshadearray[MAXWALLS];
short floormirrorsector[64];
int floormirrorcnt;
int displaytime = -1;
int redcount, whitecount;
// We owe this to Java. Unfortunately WitchavenGDX was a bit sloppy with the use of its global variables so the wrapper is here to stay. :(
int zr_ceilz, zr_ceilhit, zr_florz, zr_florhit;

View file

@ -153,7 +153,6 @@ extern uint8_t wallshadearray[MAXWALLS];
extern short floormirrorsector[64];
extern int floormirrorcnt;
extern int displaytime;
extern int redcount, whitecount;
extern int zr_ceilz, zr_ceilhit, zr_florz, zr_florhit;
void getzrange(int x, int y, int z, short sectnum, int walldist, int cliptype);

View file

@ -71,7 +71,7 @@ void initlava(void) {
lavadropsizlookup[z] = 8 / (ksqrt(z) + 1);
for (z = 0; z < LAVASIZ; z++)
lavainc[z] = klabs((((z ^ 17) >> 4) & 7) - 4) + 12;
lavainc[z] = abs((((z ^ 17) >> 4) & 7) - 4) + 12;
lavanumdrops = 0;
lavanumframes = 0;
@ -195,7 +195,7 @@ void initwater(void) {
waterdropsizlookup[z] = 8 / (ksqrt(z) + 1);
for (z = 0; z < WATERSIZ; z++)
waterinc[z] = klabs((((z ^ 17) >> 4) & 7) - 4) + 12;
waterinc[z] = abs((((z ^ 17) >> 4) & 7) - 4) + 12;
waternumdrops = 0;
waternumframes = 0;