mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-21 02:51:46 +00:00
- 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:
parent
5fc7c7b1d7
commit
eef77e80f7
32 changed files with 615 additions and 804 deletions
|
@ -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/.+")
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 )
|
50
source/games/whaven/all.cpp
Normal file
50
source/games/whaven/all.cpp
Normal 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"
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue