MonsterEvo mapping tutorial

Anything and everything related to the Evolution server.
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

DW_Ant wrote:I haven't finished reading, but I'll continue when I get back.[/color]
yeah, ok

also collaborate on things like

1. if a proximity trigger with property TriggerOnlyOnce: False and Event: spawnmonsters001
will cause an AdvSpawner with TriggerType: Spawn All, and Tag: spawnmonsters001,
to spawn the monsters = Lives everytime that event (spawnmonsters001) completes (someone moves over the trigger) or once and once only and then the AdvSpawner becomes useless???

2. if I set the event above to two different triggers (2 proximity triggers with TriggerOnlyOnce: True)...... will AdvSpawner(TriggerType: Spawn All) work twice??

3. when an AdvSpawner becomes useless ( useless as in destroyed....no event cant ever reactivate it to spawn its monsters)?
and answer this for the 3 trigger types....

4. is an AdvSpawner disabled permanently only by using a scriptedtrigger to destroy that actor?

....in general terms, completing an event to activate the spawner for the first time is easy and straight-forward....
the thing is.....the state of a AdvSpawner after being used once, spawing the monsters within the spawner....
in what state it remains at that point? is it disabled/pending for the same event to be re-activated ?
is it destroyed/useless?
(for the GroupedTrigger and ToggleTrigger types its obviously in a pending state, awaiting for the event to activated for the 2nd time, then the 3rd etc....)

[offtopic]ps: the 30 razor flies example, can only be met, in wideeeee-open terrain maps like vindication, with rocks shaped by terrain-editor with bad slopes on the backside, not-accessible, bad colouring background/skybox, and height >4096units...and choosing bad spawnpoints...thats the only place you cant complete the FinishedEvent[/offtopic]

but its good to know that AdvSpawner Events->Event is completed when Spawner spawns all its Lives....
which means, if Lives < MaxMonstersAtOnce, then Event completes the moment the Spawner activates, right?

Critical Question 1 Reference all Events that complete in Monster Evolution by default (by default I mean not events that a trigger or objective is completing).....
e.g. I spotted in many maps the Event: MEBeginMap to start the moment the map starts, so it triggers all actors that have Tag: MEBeginMap
and yet, I cant find anything/anywhere, not even in scripts, scripted trigger a TRIGGER_EVENT "MEBeginMap"action....
so, is it a default event? are there other events ???? Critical Question 2 what happens with ressurection....
is it auto-triggered after every critical objective?
i mean, how does it work?
or I have to manually create that Event??? (e.g. Objective -> Events->Event :RessurectAllPlayersNow)

and then, how do I trigger it?
Do I use a PlayerSpawnManager with TeamNumber = 1 ? (TeamNumber = 0 is the starting player spawn)
do I have to Tag it here? Critical Question 3
i want to make a door to open (and stay open) after I kill a monster.
I did it with many different ways, half the times it work, other times it fcuks things up.....

how I did it.... Method1:
door-> mover with 2 keys (0 and 1)
Trigger_Toggle
Event->Tag: openthedoornow
and
AdvSpawner
TriggerType: Spawn All
Lives: 1
FinishedEvent: openthedoornow
Tag: spawnthedeadlybeast
and
a trigger to trigger my AdvSpawner
proximity trigger
InitiallyActive: True
TriggerOnlyOnce: True
Event: spawnthedeadlybeast

half the times it works flawlessly,the other half times, after I kill the monster and door opens, then after some point i see the door closing (and remain closed) without altering any properties (ps: no, the AdvSpawner spawns only 1 monster and I dont have the same Event anywhere else in the map)

Method2:
Instead linking directly FinishedEvent with mover....
I created a scriptedtrigger
WAITFOREVENT themonsterisdead
TRIGGEREVENT openthedoornow
where themonsterisdead is the FinishedEvent of the Spawner....
yet, some times door opens and stay open, other times, it closes after a few seconds.....

can you give me an insight?
i cant believe the mover can have any other state that fits better in a one-time unique event than Trigger_Toggle.
ps: its in a map I convert.....
DW_Ant
DW Clan Member
Posts: 2679
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

christmas wrote:[offtopic]I dont know (cant locate in their properties) if it can be also be activated by player collision to the spawner actor[/offtopic]
Collision for the spawner is disabled. Enabling collision would often confuse mappers.
The touch function is called by any actor that encroaches the spawner (players, other monsters, projectiles, etc...)
Then there are other side-affects where repeated touches within consecutive ticks would lead to toggle on-off behavior, or amplified monster triggers for GroupedTrigger behavior. There are work arounds to this, but then then you'll find yourself going through the same steps to setup a proximity trigger.

Also I want to encourage mappers to group their spawners together for organizational purposes (instead of placing spawners where they ought to be triggered). You have no idea how many times a mapper would complain that they can't find their monster spawners associated to specific spawn points.


christmas wrote:IF ANYONE KNOWS ANOTHER METHOD THAT WORKS 100% EVERY TIME, POST IT....EVERY OTHER METHOD I CAME UP WITH AND TRIED, IT SPAWNED SOME RANDOM MONSTERS AT SOME POINT....
Set ChanceToSpawn to a negative value. Easy to find all disabled spawners through notepad, and you don't have to remember your old values.
For example: Changing your value from 0.75 to -0.75 is self-explanatory that your old value is 0.75.




christmas wrote:ps6: expect to have undesired results, the more complex the setup of the spawner you create....IN OTHER WORDS, try to keep it simple...
Or set Object->bDebug to true to figure out what's going on with the spawner(s).


christmas wrote:Difficulty Changes -> PlayerDifficultyChanges this category considers into the equation the NUMBER of players
....
NewDamageFactor leave it zero (i am not aware of specifics)
You can amplify the monster's damage based on the number of players:
Formula
CurrentDamage += (NewDamageFactor * NumPlayers);



christmas wrote:proportional MonsterSpawn methods comparison: Method 1: LM_Stacked I believe this method will give a very precise output = total number of monsters, when number of players is known....
and will only add the variable Rand(Lives.Max - Lives.Min) if min and max values are different
This runs after the CurrentLives is determined (from the min-max range).

Then this runs...
CurrentLives += (NewLives.Factor * NumPlayers);




christmas wrote:Method 2: LM_AddWeight I assume this method (cant test the hypothesis offline...as many other things) is resticted to the total number of monsters it will eventually spawn, by the 2 values set in Monster Spawning -> Lives -> min and Monster Spawning -> Lives -> max
it will always spawn a total number of monsters between the min and max values set in Lives
In short, this decreases the possibility of getting worst case-scenario when the server is empty.
Formula:
CurrentLives = Rand((Lives.Max - Lives.Min) * (NumPlayers/MaxPlayers) ) + Lives.Min;





christmas wrote:1. if a proximity trigger with property TriggerOnlyOnce: False and Event: spawnmonsters001
will cause an AdvSpawner with TriggerType: Spawn All, and Tag: spawnmonsters001,
to spawn the monsters = Lives everytime that event (spawnmonsters001) completes (someone moves over the trigger) or once and once only and then the AdvSpawner becomes useless???
The spawner will only spawn all monsters one time regardless how many times it was triggered. Mappers would often place multiple triggers (specially to rooms with multiple entrances).





christmas wrote:4. is an AdvSpawner disabled permanently only by using a scriptedtrigger to destroy that actor?

....in general terms, completing an event to activate the spawner for the first time is easy and straight-forward....
the thing is.....the state of a AdvSpawner after being used once, spawing the monsters within the spawner....
in what state it remains at that point? is it disabled/pending for the same event to be re-activated ?
is it destroyed/useless?
The spawner is permanently disabled when you nuke it regardless of its trigger state.
The spawner is also permanently disabled when it runs out of lives regardless of its trigger state.




christmas wrote:[offtopic]ps: the 30 razor flies example, can only be met, in wideeeee-open terrain maps like vindication, with rocks shaped by terrain-editor with bad slopes on the backside, not-accessible, bad colouring background/skybox, and height >4096units...and choosing bad spawnpoints...thats the only place you cant complete the FinishedEvent[/offtopic]
One of my goals as a spawner designer is not to put constraints on the mapper. I will have to consider all scenarios I can think of.
What I meant about interrupt pacing is not about possibility, but rather the flow of the map. For example, the pacing would be interrupted if a player with time constraints was flowing through the map until they've approached a locked door. They will have to walk back to find those one or two monsters that's wandering in a corner somewhere.

You may notice that some of my maps enable progression even without killing all of the monsters: Divine Fortress (general minions), Iguazu (end monsters), and Utopia Part II (after reinforcements in capitol courtyard). These examples aren't built to require the players to kill every individual monster, but rather keep the pacing of the assault flowing.




christmas wrote:so, is it a default event? are there other events ????
'ResurrectionNoXP' event is triggered whenever everyone dies and SafeMode is turned on.
'MEPlayerDeath' event is triggered every time a player dies as a human pawn.
'MEPlayerMonsterDeath' event is triggered every time a player monster is killed.



christmas wrote:Critical Question 2 what happens with ressurection....
is it auto-triggered after every critical objective?
i mean, how does it work?
or I have to manually create that Event??? (e.g. Objective -> Events->Event :RessurectAllPlayersNow)
Trigger 'Resurrection' to resurrect all players and grant survivors adrenaline and experience bonus.
Trigger 'ResurrectionNoXP' to resurrect all players.
Trigger 'SingleResurrection' to resurrect a random dead player. The actor will prioritize on a nonmonster player before picking a player that's currently a monster.



christmas wrote:Do I use a PlayerSpawnManager with TeamNumber = 1 ? (TeamNumber = 0 is the starting player spawn)
do I have to Tag it here?
Always keep TeamNumber to 0 unless you plan to have blue human players.
You must give the spawn manager a tag to associate which ones are enabled/disabled.




christmas wrote:how I did it.... Method1:
door-> mover with 2 keys (0 and 1)
Trigger_Toggle
Event->Tag: openthedoornow
and
AdvSpawner
TriggerType: Spawn All
Lives: 1
FinishedEvent: openthedoornow
Tag: spawnthedeadlybeast
and
a trigger to trigger my AdvSpawner
proximity trigger
InitiallyActive: True
TriggerOnlyOnce: True
Event: spawnthedeadlybeast

half the times it works flawlessly,the other half times, after I kill the monster and door opens, then after some point i see the door closing (and remain closed) without altering any properties (ps: no, the AdvSpawner spawns only 1 monster and I dont have the same Event anywhere else in the map)

Method2:
Instead linking directly FinishedEvent with mover....
I created a scriptedtrigger
WAITFOREVENT themonsterisdead
TRIGGEREVENT openthedoornow
where themonsterisdead is the FinishedEvent of the Spawner....
yet, some times door opens and stay open, other times, it closes after a few seconds.....

can you give me an insight?
i cant believe the mover can have any other state that fits better in a one-time unique event than Trigger_Toggle.
ps: its in a map I convert.....
At this time, the FinishedEvent is not working. I've found out that the monster's owner is not the spawner. Instead the controller is the owner. I've made a change so that the controller's owner is the spawner. That way the spawner can be notified when the monster is killed.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

DW_Ant wrote: Collision for the spawner is disabled.
thats Good!!!
DW_Ant wrote: Then there are other side-affects where repeated touches within consecutive ticks would lead to toggle on-off behavior,
that shouldnt be a problem considering your answer below "The spawner is also permanently disabled when it runs out of lives regardless of its trigger state.""
as long as the collision cylinder was in hard-to-reach spots.
Anyways, I always use to place spawners actors in AIR = collision with player impossible.
DW_Ant wrote: Also I want to encourage mappers to group their spawners together for organizational purposes (instead of placing spawners where they ought to be triggered). You have no idea how many times a mapper would complain that they can't find their monster spawners associated to specific spawn points.
interface -> top bar -> search for actors icon and search event/tag or actor name there....easy
also, Display -> DrawScale set a large value like 3 or above to distinguish this actor in your map
btw, I always use different spawnpoints (I mean not the same spawnpoint for 2 different Spawners to avoid undesired results). I guess its a wise tactic to do so.
DW_Ant wrote: ChanceToSpawn to a negative value.
fuck, how did i miss that?!?!?

DW_Ant wrote: You can amplify the monster's damage based on the number of players:
Formula
CurrentDamage += (NewDamageFactor * NumPlayers);
if players = 10
and NewDamageFactor = 0,1
then
NewDamage will be = 10*0,1 = 1 or
NewDamage = 1 + 10*0,1 = 1+1 = 2 (double than before) ?????

DW_Ant wrote: The spawner will only spawn all monsters one time regardless how many times it was triggered. Mappers would often place multiple triggers (specially to rooms with multiple entrances).
in that case the rusher will trigger the Event of the proximity trigger (from the NORTH door)-> trigger the Spawner that was tagged.
If and only if the Spawner TriggerType: Spawn All then spawns numbers of monsters = Lives
other TriggerTypes will cause additive monsters (since other players will enter from other doors that triggers are placed there too)

DW_Ant wrote:
'ResurrectionNoXP' event is triggered whenever everyone dies and SafeMode is turned on.
'MEPlayerDeath' event is triggered every time a player dies as a human pawn.
'MEPlayerMonsterDeath' event is triggered every time a player monster is killed.
1. MEBeginMap is a default event or not??? (i spotted this in many maps, and its not triggered by anything, neither a scripted trigger).

DW_Ant wrote: Trigger 'Resurrection' to resurrect all players and grant survivors adrenaline and experience bonus.
Trigger 'ResurrectionNoXP' to resurrect all players.
Trigger 'SingleResurrection' to resurrect a random dead player. The actor will prioritize on a nonmonster player before picking a player that's currently a monster.
so, If I wanna use a ressurection, to ressurect all dead players, like in ChocoWars, the Cleopatra statue (or in RancidMountain)...
I place a random static mess, a wall button preferably
place a usetrigger close to that with Event Hallelujah
and
scriptedtrigger
0 WAITFOREVENT Hallelujah
1 DISPLAYMESSAGE (criticaltypemessage) get ready to res
2 WAITFORTIMER 3 seconds
3 TRIGGEREVENT Resurrection (or ResurrectionNoXP)

and if I want it to be one time only-> 4 Destroyscriptedtrigger
if i want to be infinite -> 4 GOTOACTION 0
IF i want to be infinite under a condition -> 4 WAITFOREVENT makesomethingworthit-> 5 GOTOACTION 0

is the above correct? am I missing something?

and in addition, for the proper location, I will need a PlayerSpawnManager with TeamNumber = 0, and Tag = Resurrection (or ResurrectionNoXP)

but here is another problem now....

the starting PlayerSpawnManager has TeamNumber = 0 and all playerstarts have TeamNumber = 0
can you have 2 PlayerSpawnManagers with same TeamNumber ???
DW_Ant wrote: PlayerSpawnManager with TeamNumber = 0 unless you wanna have blue team
AS-Cubes4All has 2 PlayerSpawnManagers
TeamNumber = 0 and TeamNumber = 1
Assault team = Attackers (both)
bEnabled = True (for TeamNumber = 0, which is the map starter)
and the 2nd PlayerSpawnManagers has Tag = ResurrectionSpawn
DW_Ant wrote: At this time, the FinishedEvent is not working. I've found out that the monster's owner is not the spawner. Instead the controller is the owner. I've made a change so that the controller's owner is the spawner. That way the spawner can be notified when the monster is killed.
well, somehow, 1 spawner with 1 FinishedEvent , when I kill monster it completed that event....
I assume in
Xeno2 the AlienQueen has a FinishedEvent, otherwise you cant progress
and
in Vindication some dragon has FinishedEvent which causes dead players ressurect
(I mean it has to be FinishedEvent, and then a scripted trigger to WAITFOREVENT FinishedEvent
unless there is some kind of action in scripted trigger WAITFORMonsterDeath)
I cant come up with any other idea to provide the same outcome...
Post Reply