feat: TU19 (Dec 2014) Features & Content (#155)

* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
daoge
2026-03-03 03:04:10 +08:00
committed by GitHub
parent 84c31a2331
commit b3feddfef3
2069 changed files with 264842 additions and 139522 deletions

View File

@@ -1,22 +1,22 @@
#pragma once
using namespace std;
#include "BossMob.h"
#include "MultiEntityMob.h"
#include "Enemy.h"
class BossMobPart;
class MultiEntityMobPart;
class EnderCrystal;
class Node;
class BinaryHeap;
class Path;
class EnderDragon : public BossMob
class EnderDragon : public Mob, public BossMob, public MultiEntityMob, public Enemy
{
public:
eINSTANCEOF GetType() { return eTYPE_ENDERDRAGON; };
static Entity *create(Level *level) { return new EnderDragon(level); }
private:
static const int DATA_ID_SYNCHED_HEALTH = 16;
private:
// 4J Added for new behaviours
static const int DATA_ID_SYNCHED_ACTION = 17;
@@ -27,16 +27,16 @@ public:
double positions[positionsLength][3];
int posPointer;
//BossMobPart[] subEntities;
//MultiEntityMobPart[] subEntities;
vector<shared_ptr<Entity> > subEntities;
shared_ptr<BossMobPart> head;
shared_ptr<BossMobPart> neck; // 4J Added
shared_ptr<BossMobPart> body;
shared_ptr<BossMobPart> tail1;
shared_ptr<BossMobPart> tail2;
shared_ptr<BossMobPart> tail3;
shared_ptr<BossMobPart> wing1;
shared_ptr<BossMobPart> wing2;
shared_ptr<MultiEntityMobPart> head;
shared_ptr<MultiEntityMobPart> neck; // 4J Added
shared_ptr<MultiEntityMobPart> body;
shared_ptr<MultiEntityMobPart> tail1;
shared_ptr<MultiEntityMobPart> tail2;
shared_ptr<MultiEntityMobPart> tail3;
shared_ptr<MultiEntityMobPart> wing1;
shared_ptr<MultiEntityMobPart> wing2;
float oFlapTime;
float flapTime;
@@ -112,9 +112,11 @@ private:
public:
EnderDragon(Level *level);
void AddParts();
virtual ~EnderDragon();
protected:
virtual void registerAttributes();
virtual void defineSynchedData();
public:
@@ -122,7 +124,7 @@ public:
virtual void aiStep();
private:
using BossMob::hurt;
using MultiEntityMob::hurt;
void checkCrystals();
void checkAttack();
@@ -133,9 +135,11 @@ private:
bool checkWalls(AABB *bb);
public:
virtual bool hurt(shared_ptr<BossMobPart> bossMobPart, DamageSource *source, int damage);
virtual bool hurt(shared_ptr<MultiEntityMobPart> MultiEntityMobPart, DamageSource *source, float damage);
virtual bool hurt(DamageSource *source, float damage);
protected:
virtual bool reallyHurt(DamageSource *source, float damage);
virtual void tickDeath();
private:
@@ -143,11 +147,15 @@ private:
protected:
virtual void checkDespawn();
virtual int getHurtSound();
public:
virtual vector<shared_ptr<Entity> > *getSubEntities();
virtual bool isPickable();
virtual int getSynchedHealth();
Level *getLevel();
protected:
int getAmbientSound();
int getHurtSound();
float getSoundVolume();
private:
// 4J added for new dragon behaviour
@@ -174,4 +182,8 @@ public:
double getHeadPartYOffset(int partIndex, doubleArray bodyPos, doubleArray partPos);
double getHeadPartYRotDiff(int partIndex, doubleArray bodyPos, doubleArray partPos);
Vec3 *getHeadLookVector(float a);
virtual wstring getAName() { return app.GetString(IDS_ENDERDRAGON); };
virtual float getHealth() { return LivingEntity::getHealth(); };
virtual float getMaxHealth() { return LivingEntity::getMaxHealth(); };
};