This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Scytheria23

Pages: 1 [2] 3 4
16
Resources and Tools / Re: [RELEASE] [TOOL] [WotLk] ADT Guru
« on: October 25, 2016, 01:31:04 pm »
Updated to v1.1 (already!)

- maskmin added
- maskmax added
- spike and pit removal added
- softening algorithms added

Scy

17
Resources and Tools / Re: [TOOL] [WotLk] ADT Guru
« on: October 23, 2016, 03:55:34 am »
Yes, auto-texturing is the next step, along with being able to set different water heights (and types?) on the ADTs.  Additionally, I'll be working to add offset-fixes into the code, areaID generation, etc.

Scy

18
Resources and Tools /  [TOOL] [WotLk] ADTForge
« on: October 21, 2016, 09:17:52 am »
BIG EDIT - links to original (horrible) tool have been removed.

Dear All,

I've bitten the bullet and decided to add alpha-mapping into the project (now renamed from ADT Guru to ADTForge).  This means I'm a few more weeks away from release, but in the meantime, some teasers:

- Complete control over heights. Extract height information from greyscale bitmaps, combine, manipulate and transform that data, protecting or masking areas.


- Rip data from existing ADTs, then manipulate like any other data.


- Easily write ADTs and accompanying WDL and WDT files.  ADTs are complete with textures (including animations, overbright and cube-map flags) and ground effects, AreaIDs, impassible flags, and (soon) alphamaps for the three layers above the base layer - all of which can be applied on an Mapwide, ADT by ADT or Chunk by Chunk level.


Maybe ready before Christmas... ask Santa nicely.

19
Just an update.  Project is not 'dead', just going slowly at its own pace.  Most game systems are now functioning the way I want them, have tested the character abilities against various mobs and other players in a local server.  All seem good, but a little balancing to do.  At present, the world building is well under way, and the City as planned will be filling an area about 20 times the size of Stormwind.  Currently modelling and texturing the 'base' in Noggit, although most of the streets will be wmos.  It's a scarily large area to fill - the size of the north part of the Eastern Kingdoms...

Scy

20
Modelling and Animation / Re: Outland Sky animation as Log Screen?
« on: June 24, 2016, 08:41:59 pm »
I'm fairly sure you can't use an animated GIF for this - client doesn't support them.  However, Outland skyboxes are models, and models can be used very effectively to make login scenes.  Since I'm a big fan of Outland, I'll see if I can whip something up for you.  It will require an MPQ patch to the Glues folder, but nothing more.  Did you have a particular sky in mind?  The Hellfire one with the moons and swirly stuff or the purplish Netherstorm look?

-- Scy

21
Quote from: "Steff"
I would try to do this woth custom wmos and on one map. We had maps with 10 000 plus models on one adt and it worked. Just try it.

That's interesting - I'd always suspected the client could handle a lot more (and we have evidence from WoD maps ported into WotLK).  The problem, however, isn't solely the number of polys the client can push out, it's the amount of time required to realistically populate a city of the size desired.  Also, although a labyrinth of narrow streets with dead ends sounds nice, in gameplay terms it would eventually get pretty annoying, especially if most of those streets are only there as decoration.

22
Thanks for nice comments!

Here's as good a place as any for random thoughts.  When I'm not at the computer, I'm jotting plans for the City itself.  In the Thief series, the City is vast - spanning a huge river and sprawling over hills.  It's physical limits are never seen, and all of the action takes place within it (or underneath it).  Creating that effect in WoW is going to be tricky.  Stormwind, for example, is the largest human city in the game, but a character can still run from one edge to the other in a few minutes.  The City, however, needs to be something that requires a day of travel to traverse (unless, of course, I go for the same level of belief-suspension that WoW uses).

The only solution (other than building a map that measures 100x100 adts or something ridiculous) is to section the city into walled areas, with 'portals' between them.  I don't mean actual magical swirly portals, but things that send you from one part of the map to another.  This is actually in keeping with Thief 3, which did a similar thing to link certain areas.  The 'rest of the city' will simply be evident as scenery surrounding the maps players can get to.  It's not optimal - I dream of a huge totally open city - but that's probably not realistic.  Thus, I'm thinking of having about ten or so areas the size of Stormwind, connected only by these 'portals'.  It limits the immersion and open-endedness, but ultimately makes the project doable, and doable in discrete chunks too.

-- Scy

23
I've finally managed to get past Chinese internet censorship to post a couple of vids.  Your comments and suggestions are very welcome, and if you are inspired enough to play a part in this project's creation do send me a PM. -- Scy

PART ONE
[media:4lary0o4]https://www.youtube.com/embed/0QbBuhTyd1E[/media:4lary0o4]

PART TWO
[media:4lary0o4]https://www.youtube.com/embed/5sM3jnPa6F0[/media:4lary0o4]

24
Serverside Modding / Re: Trinity WLK - Limits on Factions?
« on: May 30, 2016, 09:57:34 am »
I had the exact same problem myself (first dozen or so new factions worked fine, then POP!).  In the end I just reused the redundant ones.

25
Serverside Modding / Re: [C++] [WotLk] Real Stealth...
« on: May 24, 2016, 12:37:04 am »
Well thank you, Ascathos (I think).

I feel the need to explain how this code can be tweaked to fit projects other than my own.

(1) Attributes

You'll need to decide a 'cap' for both intellect and agility.  Players can have attributes over this cap, but doing so will not improve either perception or stealth.  In my project, both are capped at 200, but in a normal WotLK game this will need to be a lot higher (maybe 2000?) - I forget how high attributes get.

You'll also need to decide what constitutes a base score for both - e.g. what a normal max-level NPC should have.  In my project, this is 100.  In a WotLK game, this must be higher - typically half of the cap.

Change the code as follows:

Code: [Select]
float v_intellect = YOUR INT BASE AS A FLOAT;
float o_agility = YOUR AGI BASE AS A FLOAT;

and

Code: [Select]
if (v_intellect < 1.0f) v_intellect = 1.0f;
if (o_agility < 1.0f) o_agility = 1.0f;
if (v_intellect > YOUR INT CAP AS A FLOAT) v_intellect = YOUR INT CAP AS A FLOAT;
if (o_agility > YOUR AGI CAP AS A FLOAT) o_agility = YOUR AGI CAP AS A FLOAT;

(2) Stealth/Perception Bonuses

If you have not done anything to the WotLK spells, use this:

Code: [Select]
int32 sneakbonus = 350;
and

Code: [Select]
if (sneakbonus > 350) sneakbonus = 350;
(3) Ranges


You can tinker with the ranges of the view arcs with these:

Code: [Select]
radiusinner = combatReach;
radiusmiddle = radiusinner + XXX - (YYY * sneakscale);
radiusouter = radiusmiddle * ZZZ;

XXX = base radius in which all are detected irrespective of stealth
YYY = amount that XXX can be reduced by stealth (I suggest about 1/3 of XXX)
ZZZ = multiplier of base radius in which unstealthed are detected when in front (must be more than 1, I suggest 2+)

(4) Player and NPC levels

Since this system is based around attribute scores and since attribute scores typically increase with level, there's no real need to incorporate these.  Having said that, all NPCs will have the same base perception.  I'm happy with this - you don't really get better eyesight the more experienced a warlock you are.

26
Serverside Modding / Re: [C++] [WotLk] Real Stealth...
« on: May 23, 2016, 03:19:50 am »
Just a quick point for anyone trying this - you will note that non-stealthed players become invisible to you when they are stood a certain distance behind you.  This applies to enemies and allies alike.  Essentially, they are beyond your visual arc.  This is realistic (e.g. I can't see people standing behind me even if they are my friends), but possibly undesirable in a Blizzy environment (especially if you like mouse-wheeling out your view and panning around).  You probably don't want half a raid group appearing to vanish just because they are stood behind you, so an additional condition will ne needed somewhere.  In my project, where players can freely attack, kill and rob any other player, this effect is desired.

27
Serverside Modding / Re: [C++] [WotLk] Real Stealth...
« on: May 23, 2016, 12:39:02 am »
Due to my geographical location (e.g. China) where access to Youtube and similar sites is blocked, I'm going to have to hold up on providing videos until I get back to the UK for the summer.  Meanwhile, in the spirit of sharing, I provide my code changes to object.cpp which replace the entire existing CanDetectStealthOf function. Don't poke at my coding style - I'm a mathematician, not a coder - this gets the job done.

If you choose to try out this system, you will need to make a few adjustments to suit your core because my own is heavily modified from Blizzlike parameters.  My own project dispenses with levels entirely, attributes are in the range 0-200 only and stealth abilities award bonuses that only extend up to +100 stealth points.  If, for example, you want a unit's level to factor into this or the level of the potential observer, you will need to figure that out yourself.  If your stats are in the normal Blizzlike range, you'll need to play with the default values of v_intellect and o_agility and the bits of code that restrain them.  

The below code does not do anything to create light emitters.  I'm still working on that aspect, but am tinkering with the go type 30 (aura emitters) or a disused type (as Trinity Core already achieves things that way).

Anyway, use, abuse and enjoy.

Code: [Select]
// Real Stealth

bool WorldObject::CanDetectStealthOf(WorldObject const* obj, bool checkAlert) const
{
float distance = GetExactDist(obj);
float combatReach = 0.0f;

float v_intellect = 100.0f;
float o_agility = 100.0f;

float viewarc = (float(M_PI) * 1.25);
float radiusinner = 0.0f;
float radiusmiddle = 10.0f;
float radiusouter = 20.0f;

Unit const* v_unit = ToUnit();
Player const* v_player = ToPlayer();
Unit const* o_unit = obj->ToUnit();
Player const* o_player = obj->ToPlayer();

int32 sneakbonus = 100;
float sneakscale = 1.0f;

// if object is not a player and has no stealth return true (visible at all times)
// do this now to prevent running through the entire function for no good reason
if (!(o_unit->GetTypeId() == TYPEID_PLAYER) && !(o_player) && !(obj->m_stealth.GetFlags())) return true;

if (v_unit)
{
       combatReach = v_unit->GetCombatReach();
       if ((v_unit->GetTypeId() == TYPEID_PLAYER) && (v_player)) v_intellect = v_player->GetStat(STAT_INTELLECT);
}

   if ((o_unit->GetTypeId() == TYPEID_PLAYER) && (o_player)) o_agility = o_player->GetStat(STAT_AGILITY);

if (v_intellect < 1.0f) v_intellect = 1.0f;
if (o_agility < 1.0f) o_agility = 1.0f;
if (v_intellect > 200.0f) v_intellect = 200.0f;
if (o_agility > 200.0f) o_agility = 200.0f;

viewarc = viewarc * (v_intellect / o_agility);
if (viewarc > (float(M_PI) * 1.5f)) viewarc = (float(M_PI) * 1.5f);
if (viewarc < (float(M_PI) / 2.0f)) viewarc = (float(M_PI) / 2.0f);

for (uint32 i = 0; i < TOTAL_STEALTH_TYPES; ++i)
{
if (!(obj->m_stealth.GetFlags() & (1 << i))) continue;

if (v_unit && v_unit->HasAuraTypeWithMiscvalue(SPELL_AURA_DETECT_STEALTH, i)) return true;

sneakbonus -= m_stealthDetect.GetValue(StealthType(i));
sneakbonus += obj->m_stealth.GetValue(StealthType(i));
}

if (sneakbonus < 0) sneakbonus = 0;
if (sneakbonus > 100) sneakbonus = 100;

sneakscale = ((float(sneakbonus) / 100.f) * (o_agility / v_intellect));

radiusinner = combatReach;
radiusmiddle = radiusinner + 15.0f - (5.0f * sneakscale);
radiusouter = radiusmiddle * 2.0f;

if (radiusmiddle < radiusinner) radiusmiddle = radiusinner + 1.0f;
if (radiusouter < radiusmiddle) radiusouter = radiusmiddle + 2.0f;

if (checkAlert) radiusinner += (radiusinner * 0.08f) + 1.5f;
if (checkAlert) radiusmiddle += (radiusmiddle * 0.04f) + 1.0f;
if (checkAlert) radiusouter += (radiusouter * 0.02f) + 0.5f;

// always detect things in combat reach
if (distance < radiusinner) return true;

// always detect things within the front middle arc
if ((distance < radiusmiddle) && (HasInArc(viewarc, obj))) return true;

// always detect unstealthed things within the rear middle arc
if ((distance < radiusmiddle) && !(HasInArc(viewarc, obj)) && !(obj->m_stealth.GetFlags())) return true;

// always detect unstealthed things within the front outer arc
if ((distance < radiusouter) && (HasInArc(viewarc, obj)) && !(obj->m_stealth.GetFlags())) return true;

// otherwise thing is not detected
return false;
}

28
Serverside Modding / Re: [C++] [WotLk] Real Stealth...
« on: May 20, 2016, 10:01:28 am »
Another update.  I'll get some vids online sometime soon to show how this is going...

Thanks to Kaev, for some very interesting ideas - these have totally reshaped my mechanism, but the new system is far more robust and works very nicely.  I'll try to explain the main points:

(1) All players and NPCs now 'see' in an arc rather than having 360 vision.
(2) The size of the arc is increased by having high intellect (e.g. perception).
(3) The size of the arc is decreased, however, by an approaching unit's agility (e.g. stealth).
(4) The distance a player/NPC can see is increased by intellect.
(5) Thus, it is possible to follow any player/NPC (at a reasonable distance) without being seen regardless of any stealth ability.  More perceptive units will spot you sooner, and you will need to move in a tighter zone to remain hidden.  More agile units will be able to follow closer and in a wider zone.
(6) Bulky armor and weapons improve resistance to physical damage  and cause damage (of course) but reduce Agility.  This effect can be mitigated by having a higher Strength.  Armor and weapons in bags also count towards this effect.
(7) The stealth ability is learnable (actually, talentable) and allows guaranteed invisibility when behind a unit's visual arc and a chance to be undetected when in front of it.
(8) Lights emit stealth debuffs.

So, this is pretty much doing everything I wanted and without too much fiddling around.  The only part of the Trinity Core modified (and heavily) is the CanDetectStealthOf function in object.cpp.  This required a total rewriting, but remains compatible with the other things it handled.  All I need to do next is somehow factor footsteps in to make a perfect system.  Ideally, walking on things like tiles or metal plates should make noise and reduce all kinds of stealth.  Not sure even where to begin on that, but something, somewhere knows when a unit walks on different textures to play different sounds or leave different footprints... clues welcomed.

Scy

29
Serverside Modding / Re: [C++] [WotLk] Real Stealth...
« on: April 18, 2016, 02:55:01 am »
Thanks for the above suggestions.

Just an update on progress.  My approach has changed somewhat, now much less to do with coding.  Here are the steps taken so far:

[1] Stealth (the rogue ability) has now been turned into a passive ability that is on all the time.  It's visual effects (e.g. translucency and animations, speed reduction) have been removed.  This means that characters can sneak up on npcs, and as long as they stay behind them are mostly undetectable.  This is, of course, an improvement on the existing system in WoW where npcs have 360 vision.

[2] A new spell, a clone of the original Stealth, can be learned to enhance the passive stealth.  This has the usual visual effects and animations.

[3] Light markers (invisible gameobjects) radiate stackable debuffs that decrease stealth.  The nearer you are to a marker, the more it stacks.

This seems to work pretty well, but there are some bugs to iron out with line of sight, etc.  I'm also not totally happy with the passive stealth which seems a little too powerful (e.g. you can stand still right in front of an npc without being detected).  This should, hopefully, be a case of fine-tuning some of the spell variables.

Scy

30
Thanks, Schlumpf.  I didn't doubt you.  Well, I did, but only in the sense that I couldn't understand why this would be buried in the client.

Time to start hacking...

Pages: 1 [2] 3 4