![]() |
|
#1
|
|||
|
|||
|
Basically i've got water working the way i want for the most part and it's deployed on my PW and on Obisidian Shore. They seem to be helping to mature it by noting the various issues with it. So the basic concept of triggers defining water areas works even though it needs more work. Now i am working on implementing Wyverns OnBurn script, which allows me to cover both water and fire to some degree which makes me step back to focus on the bigger picture.
The basic concept so far is i have triggers used in the module itself as static definitions, which then define variables on the character ( ie "INWATER" = TRUE or FALSE ). Each is made possible with an onenter and onexit script, and since they are a trigger which can have up to i think it's about 125 points or so these can cover the Entire map or the can just define a puddle and be of any shape. Supporting this i also define events for the entire area, this works the exact same way, and allows an entire area to be underwater. This is suplemented by AOE's which also define things the same way. This allows spells to alter how things are working. This again is handled in a similar manner. So i have a function that gets the variables in a certain spot as well. This allows someone outside of the water, to cast a spell on a target location which is water and have that wall of fire fizzle into a bunch of steam. It also can prevent stacking of the same AOE - perhaps even boosting the first AOE instead of making two expensive AOE's full of visual effects. Now if the caster is in water he has to contend with not being able to speak as he is holding his breath, but the spell target location also affects things. So if a water elemental or a fire elemental are in an area defined as fire or water they are going to be a lot stronger or weaker, with custom effects, perhaps growing even. This is mainly being implemented by Wyvern, but my system i want to cater to this type of thinking. So i am thinking i need a way to further allow multiple trigger types, a single variables on AOE's, Triggers and Areas which allows it to be defined as part of a given area type, just to make it so that function that checks for what is defined at a certain point in space does not have to check for 20 different variables -- instead of INWATER, FIRE, AIRBUBBLE, WILDMAGIC vars being checked it can just check ENVIROSTATE which has a 1 for WATER, 2 for fire, and a 4 for Airbubble ( or via bitwise math adding 1 and 2 and 4 allows it to be Airbubble AND underwater AND on fire at the same time ). And of course triggers can overlap at any time which can make things confusing but this will create a combined bit by adding anything it finds together ( if it finds a 1 and a 2, it will return a 3 which bitwise mathwise is a 1 and a 2 and i can check that in a single operation ). Now then i have to ask all you folks out there, what should this entail besides just water. This includes all game effects, wild magic, dead magic, fire, water, brambles and quicksand of the wilderness. Basically it's important now to figure out the various things that are included in said system soas to make sure they have a cohesive spine and can work well together. Really the goal is to make the game mechanics for the environment work. As a preliminary list i have the following. Trigger/Area Terrain Markers Environment States
Character States - these combine with the above and their purpose is to flag the character with a given state and then targeting scripts or a single heartbeat on that player. ( currently each effect spawns it's own heartbeat which is not a good idea in a larger system if multiple triggers are involved ) Note that these are applied along with the effects of a given state, so if water is left, these remain and are removed along with the water slowing effect. ( this allows me to only check for water code when they are in SC_ENVIRO_WATER or if they still have a state of WATER and thus remove the water effects. More indirect but it allows triggers to be more complicated. )
Variables stored on the character. Either bitmasks or integers ( DC's in some cases, and to show the amount of the effect on others. )
Last edited by pain; 06-25-2009 at 05:42 PM. |
| Thread Tools | |
| Display Modes | |
|
|