-The name of your map files should start with ONP, like "ONP-YourMission" in order to be listed in the pulldown menu "onp custom maps"!!
-To get to the ONP scripts “open olextras.u” in the
Classes browser.
-About maps: make defaultgametype always be tvsp (gameinfo->unrealgameinfo->singleplayer).
(The coop game info is olextras.tvcoop)
The base of everything. ONPLevelInfo
This info actor allows the mapper to set special options for the map that
cannot be performed under default UT. Simply add it somewhere in the level
(it will have a weapon texture) and edit the default properties to set up
options:
Under Inventory:
DefaultInventory (20 elements): (class type) All of these items will be added
to the players inventory, if they are not already present at the start of
the map. (Thus you can only use this to add weapons and pickups, but adding
ammo/charge will not work).
InventoryToDestroy (8 elements): (class type) These items will be removed
from the player's inventory. If you wish to remove EVERYTHING, add the the
inventory class itself, to element 0. Be sure that these items are not present
in default inventory.
bAkimboEnforcers (bool): If enforcer's are present at start or added here,
should they be forced to akimbo (2 of them)mode?
NetOptions (28 elements; enumeration): This is basically "net variance".
The first 20 control the default inventory options and the last 8 control
the inventorytodestroyoptions, respectfully. (an element per element basis.
i.e. element 3 controls defaultinventory element 3 and element 21 controls
inventorytodestroy element 1.
Used_ALL means that the addition/destruction occurs in singleplayer and co-op.
Used_SPOnly means that the addition/destruction for that element occurs only
in singleplayer.
Used_CoopOnly means that the addition/destruction for that element occurs
only in a co-operative game.
Used_None: Do not use this option! (meaningless and very buggy).
DefaultWeapon: Under what netmode should the default weapon (normally the
dispersion pistol but user-added mutators can change this) be given to the
player?
PlayerMod(ification) options:
bCutScene: Is the level a cutscene itself? This causes the HUD to be hidden,
and the fade in to work somewhat differently.
bJet: Should the player be a space ship? (i.e. np03davidm( (HUD will also
be a little different). Also note that if a ship crashes, the player will
simply be repawned, rather than being forced to restart the level.
FadeInTime: How long should the complete fade in be (player can move when
this is 1/2 complete). Applies only to singleplayer games.
bVrikersTypeStart: When the player "awakens", like in vortex2.
MaxHealth: What is the maximum health a player can have when entering the
level? For instance, a true vortex riker game would set this to 12; as the
player will only have 12 health when awakening. Applies only to singleplayer
games.
(All under SpeedRun):
-GoalTime: The time the player must hit (in seconds) to start getting bonus
points. This should be a realistic time where no shortcuts are used, but not
much effort is taken to save health/kill enemies/pick up stuff.
-GoalPoints (default: 1000) Points given for hitting the goaltime.
-GoalMult: (default: 2.6) Multiplier of seconds faster than goal time. i.e.
if I beat the goal time by 2 seconds, I get 1000 points + the goalmultiplier
multiplied by 2. (thus, with defaults I get 1005 points).
-UberGoalTime: The time the palyer must hit (in seconds) to get an extreme
amount of points. This should be an extremely difficult time to attain
that involves using every shortcut, including jumping on ships, hugging cliffs
to slow yourself down, rocket jumping, shock jumping, krall boosting, etc.
In other words, a goal Unreal-Done-Quick time. For the record, not every map
should have one. (i.e. maps without any real shortcuts, like np02davidm).
Most later maps will have one though, thx to the power of rocket jumping.
-UberGoalPoints (default: 6000): Points given for hitting ubergoaltime.
UberGoalMult (default: 7.1): No need to get into description.
The Followers:
Custom scriptedpawns exist in ONP and they are designed to follow the player
and fight his enemies.
The current ones are:
-NaliTrooper (a nali which holds a UT weapon. under nali).
-FollowingMercenary (under mercenary)
-FollowingMercenaryElite (under followingmercenary)
-RebelSkaarj (i.e. rebelling against the main skaarj collective and thus helps
the player. under skaarjberserker (not berserk though. only there so other
skaarj hate him). He has the properties of an iceskaarj (i.e. skin and resistance
to freeze attacks (whatever that might be :p ) You can always change its skin
in the display options...
-RebelSkaarjTrooper: (under rebelskaarj). a rebellious trooper
Like scripted pawns, they can be given pre-player sight orders (wait/patrol
whatever).
Also, their skill level is inverse to difficulty (better AI at lower difficulty
levels).
Options:
GreetAnim: Animation to play when greeting (seeing for first time) the player.
Sounds are hard-coded...
bShouldWait: If the player must order the creature to follow first, before
it will follow.
CanAnger: Can the follower get pissed off at the player if the player shoots
him too much? (pissed off=attack player)
bCoward: If this is true, the follower will not help the player. This also
allows it to use alarm tags and such as a friendly creature. (like a nali
would...)
Menuname (pawn catagory): Give the follower a unique name that will be used
in the HUD! All followers probably should be given names...
RebelSkaarj (not trooper!) and followingmercenary only:
bCheckFriendlyFire: If true, merc bullets cannot hurt its controller. Also,
projectile firing (skaarj bolts and merc rockets) is aborted if it appears
that the projectile would hit the player.
NaliTrooper/RebelSkaarjTrooper only (under that catagory?):
WeaponType: What weapon class will it have? Be sure to use olweapons/olextras
classes if needed.
NaliTrooper Only:
Evil: Is this nali evil (hates player?) If so, it basically is just another
enemy (used in np04hyperion)
Note: The player can have a max of 8 followers following at once. They will
move to the next level.
FollowerStopper:
This will stop followers, and thus they cannot go to the next level. Use this
when the followers cannot possibly see the player (for instance, an area too
low for a nali to fit into).
FollowerTag: The tag of followers to stop. If set to 'All', all followers
in the level still stop.
bAllowTouch: This allows the player to activate it by touching, rather than
just triggering the actor, which is normally needed.
About warlord guard: IT follows the player, but has crappy AI and is not part
of the main follower system. =test and DO NOT USE IT!
Cannons:
-Cannons have been made that will attack the player or his enemies. They can
also be destoryed.
For the spcannon and spminiguncannon, set myteam to 0 for it to attack a player/allies
and myteam to 1, for it to attack the player's enemies. Note: followers will
attack cannons.
Triggering still will disable them for 8 or so seconds, like normal cannons.
Movers:
Several special movers have been created. If olextras is loaded in ued, they
will appear when right clicking the mover button in ued:
SmokeAttachMover: This is an attach mover, basically. However, it also has
options that are exactly the same as smokegenerator. As a note, like the smokegenerator,
rising velocity will only affect the generated actor if the Generation type
is a SpriteSmokePuff or UT_SpriteSmokePuff. (or subclasses).
LoopAttach: This is a loopmover that has an attachtag (thus combining it with
an attachmover). You can also set bsmoke to true. This allows it to emit smoke,
using the properties given.
LightAttachMover: Requested by chico. Allows lights to be attached in co-op
games (client-side).
Zoneinfos:
GunFireSensorZone: If a player inside the zone fires a weapon inside
this zone, it will trigger the zone's event.
Vars:
bActive: Whether or not the zone is active (will trigger event). Trigger the
zone itself to toggle this option in-game.
EventCallDelay: How long from a player firing a gun should the event be triggered?
bCallEventOnceOnly: If true, and once the event is called, it will never trigger
actors of its event again if a player fires.
bTriggerOnceOnly: If true, the zone (bactive toggle) can only be triggered
once.
WaterToggleZone: A zone that, upon triggering, will convert to a waterzone
or vice-versa. It may still be complex to have true rising waters (you will
probably need two movable sheets with special options or something like that
(one for the zone boundry and the other for the water).
Options:
bWaterZone (under zoneinfo): Set to true for the zone to initially be water
and then dry up. If false, the reverse will occur.
bTriggerOnceOnly: Can only trigger zone once (i.e. water/land change occurs
once at max).
Inventory
Items:
SuperAmmoShockRifle: Exactly like the normal supershockrifle, only this one
uses ammo with each shot.
SPEnf: An enforcer that will keep the akimbo properties when the level changes.
Note that the mutator will handle this cahnge on its own, but the level will
load 0.01% faster if you use this weapon instead of the normal enforcer.
About weapons: Be sure to also with the osshockrifle and ospulsegun (these
weapons support the amp). Again, the mutator will exchange them, but blah,
blah....
TVTranslocator: This translocator has a different disc, which will bounce
of pawns and decorations, rather than traveling through them. USe this, as
in ONP, enemies may not be telefragged (translocation will simply fail, like
what occurs when trying to translocate into a teammate).
Ducksize: An old item to allow duck collision to work. DO NOT USE.
(part of oldskool): scorekeeper: Added by the gameinfo, holds the player's
score stats. Again, do not add to the world.
Decorations:
TranslatorBook (under book): I always found it stupid how translatorevents
did not move when a book was shot. A translatorbook spawns a translatorevent
(with the given options which are identical to translatorevent's, including
the tag of the book) itself. The transevent will move with the book....
TDBarrel, TDChest, TDWoodenBox, TDMedWoodBox, TDSmallWoodBox:
They will look exactly like thieir non-TD-in-name parent. However, they automatically
break apart when the player comes in contact (well, in col. radius ). This
can be accomplished also by triggering a normal deco, but I figure that this
is faster to create (you probably will need to enlarge the col. radius however...).
Triggers:
Many new triggers have been added:
CodeConsole:
This is not truly a trigger. Rather it is a user input security pass system.
Upon touching the trigger, the user is prompted with a code screen. He must
enter the correct numeric code (randomly generated at start of level
)
for the event to be called (and thus opening doors or whatever...):
Options (many):
MinNumber: The lowest number the random number gen can return to be used as
the code.
MaxNumber: The highest number the random number gen can return to be used
as the code.
TranslatorTag: Obviously, the code must be found SOMEWHERE (unless you want
an impossible to get past door). Set a translatorevent's tag to the translatortag
of the codeconsole. Where you place "%c" (no quotes!) in the message/altmessage,
the random code will be inserted there.
ClearenceMessage: IF the player enters the correct code, he receives this
message.
ClearenceSound: Sound to play on correct code entry.
FailureMessage: Message recieved on incorrect code entry.
FailureSound: Sound received on incorrect..
SecurityPrompt: Message written in the prompt screen.
PromptSound: Sound played when console is touched by a player.
KeyEnterSound:sound played when a number key is depressed while in the prompt
screen.
FailureEvent: If the incorrect code is entered, actors with this tag are triggered
(i.e. alarms/factories?)
Event: If correct code is entered, actors with this tag are triggered (door
most likely).
bEnabled: Is it activated at start? Triggering the console toggles this in-game.
MessageType: The "type" of message. See top of this doc.
LinkedTag: If you wish multiple codeconsoles to have the same code, you must
set their linktag to their tag. (i.e. tag and linktag must be the same in
EVERY codeconsole that has the same code). Yes, this isn't the best way to
have programed this, but I'm not going to rewrite it now
Thus if consoleA and consoleB are to have the same code, set consoleA AND
consoleB's tag AND linktag to something.
DisableOnCorrect: If true, the console will be disabled when correct code
is entered (thus setting benabled to false) Set this to false for control
of doors/lifts that close after opening.
ConsoleCommandTrigger:
I am apprehensive about making this, but here it is.
Command: On triggering this actor, this console command will be called (consolecommand=command
a user inputs into console). Do not be a f*cking retard and put exit, debug
gpf, setname Moron, etc. into it!
FollowerStopper:
now part of ONPlevelinfo, prevents Followers from following to the next map
if true
KeysInverter: Best trigger ever!
If triggered, it will invert the triggerer's keys (all players if bInvertAllPlayers
is true). up will mean down, down mean up, viewing up will view down, etc.!
(maybe in a drug area or something?).
States (one must be set!):
TriggerToggled: Triggering this toggles between invert/norm.
InvertWhileTriggered: Triggering will invert the players keys and untriggering
returns them to normal. Note that if this state is set and binvertallplayers
is true, a non-player can trigger this.
MP3Event: Don't use! Mp3 support in UT sux too much so I disabled the
system entirely.
PlayerMotionFreeze:
VERY USEFUL for mid-level cutscenes. When triggered, a player's motion/weapon
keys are locked (all players if bFreezeAllPlayers is true). Thus, preventing
him from moving (other keys such as looking and input commands will still
work). This ALSO will hide the HUD when activated.
States (one must be set!):
The same as KeysInverter!
WorkingTriggeredAmbientSound:
This can turn an ambient sound on/off by triggering.
bInitiallyPlaying: IS the sound playing at the beginning of level?
TheSound: Will become the ambientsound.
States follow the same concepts as keysinverter. Toggle enables/disables and
OppositeWhileTriggered will toggle when triggered and return when untriggered.
SpecialerEvent:
Even more special than special event!
New:
Option: MyMessageType allows you to set the type of message that the message
will be (see top).
Playerpath supports co-op.
State VaporizeInstigator will vaporize (kill without a carcass being created)
a non-player instigator.
-DoubleVolume: If true, a playerplaysound type is doubled. Block Ship Actor -PlayerAlterZone: This zone
can set various player properties when a player enters. They are reset on
leaving.
Actor->Projectile->TelsaBolt->LaserBeam. They are under scriptedpawn->follower->weaponholder->scriptedhuman->scripted(fe)male.
-HumanSpeechTrigger (under triggers):
-Secret area level actor (under keypoint).
These secret areas are recorded in the stats. It is possible to do a "secret
secret area" that won't be initially in the stats (i.e. x secrets found/total)
with thingfactories.
SpeedSwapper:
Triggering can change around gamespeed/"pause".
Options:
TriggerOnceOnly: Take a guess. 'Nuf said.
Pause: if true, triggering causes playersonly to be activated.
Speed: If pause is false, than what speed will the game change to? Set this
to 0 to use default speed at start of level.
Time: If pause is true, how long does it take to disable playersonly after it
was used.
If pause is false, then how long does the transition take to the new
speed? Remember, the game will speed up/slow down during the transition until
it reaches the desired speed.
Obviously setting this to 0 means instaneous change.
TVtutEvent: Only used in tutorial map. And only
works in tutorial map (well tvtutorial gameinfo). so, uh, don't use
Miscellaneous actors:
fadeoutTeleporter:
This is meant ONLY as a teleporter at the end of level to go on to the next.
It should be used at the end of ALL maps. The game will fade out and then the
new level will load.
Options:
TargetFlash: The viewflash the zone will become. Really should not be altered.
FadeSeconds: How long does fade take?
CoopURL (under teleporter): If a co-op game, then this will be used instead
of the normal URL. It MUST be set!
ViewFlash, ViewFog: Does nothing
CoopInterpolationPoint:
For support of co-op interpolation. Use this instead of the normal point.
PatrolKillPoint: Supposed to be able to kill a patroller, but doesn't
work at time of writing.
-TELSA BOLT!
Add a telsa keypoint into the world. A beam is fired from it and will run after
the player, as long as the player is close enough. Just look at it yourself.
MUCH THANKS to M.C. Spanky for the rotation code (I suck at vector cross products)
Using the telsa:
-bEnabled: Is it enabled? Triggering will toggle this!
-bTriggerOnceOnly: Self-Explainatory
-MaxBolts: Maximum bolts the telsa can fire. Can be 1-8. Only 1 bolt per target...
-AttackPlayers: Can it attack players?
-AttackAllies: Attack players allies? Not yet implemented. Will be upon massive
follower rewrite I promised
-AttackEnemies: Attack other scripted pawns?
-BeamOffset: Offset of beam in local (not world!) vector coordinates.
-HasCap: If true, the beam will have a cap (like the pulse beam) if it ends
in the air. If false, it will hide (more realisitic)
-RotSpeed: Maximum rotational speed of the beam in radians per second. That
is RADIANS, NOT UNREAL ROTATOR UNITS! (0.4 is about the speed of the player
in the spule level)
-MaxLength: The maximum bolt length. Ideally, should be a multiple of 81. If
the value is not a multiple of 81, it will be rounded. (a pulsebeam is 81 units
long..)
-MaxDamage: The maximum damage the beam can cause per second. I suppose this
requires an explaination. I made use of Ohm's law, where voltage/resistance=current.
This translates into the electric power formula, where Watts(power)=voltage&2/resistance.
Resistance increases when the length between opposing charges is longer. As
anything but resistance is a constant, I have simply made the damage formula
be:
maxdamage/currrentlength As length increases, damage decreases. The damage at
the maximum beam length of course is maxdamage/maxlength, a ratio which defaults
to 1 unit of damage per second. Yet, as you close in on the beam, it causes
more damage (ex. at 1/2 of maxlength it will deal 2 un./s)
Network:
Untested, but should work. The beam will look like crap in high pings though.
I'll write some nice netcode for it in the future.
-EL
COCHE! (the car): (not working)
For my physics project, I created a car with relatively realistic physics. I
have since placed it in ONP. However, I stress that this is an alpha, AND ONLY
A PHYSICS MODEL. No effects are currently present, or even sounds. A damage
model does not even yet exist. Yet, the physics model should satisfy you enough.
Also, I left the sim console commands and hud in. The HUD will be updated soon
(I'll need cool graphics though). PLEASE GIVE ME YOUR POINTERS!
Note that it is not actually a car in the normal sense. Rather, it has two jet
engines on each side to propel it. Uneven thrust results in turns.
-Be sure to add a tvdrivablecar! Tvvehicle is merely an abstract class, where
other vehicles (I plan to move the plane there), can be under.
Car variables:
-Mass: Still under movement. However, unlike normal UT, this plays a HUGE role
in the physics, at least in regards to max/min force.
MaxForce: Maximum forward force that can be exerted by the forward engines.
(in newtons).
MinForce: Maximum reverse force that cab be exerted by the reverse engines (in
newtons).
EngineRate: How fast holding down forward/back results in engine force changes
(Newtons/s)
Gravity: Yes, I probably should use zonegravity, but you can use this to alter
Z acceleration from gravity. I will utilitize zonegravity in the future... I
promise (vary gravity thoughout level) In unreal units per second^2
EnergyLoss: Console commands set this value to the inputted value, which represents
the percentage of kinetic energy lost in collisions. However, as a mapper, simply
input the multiplier of velocity in collisions (i.e. what number*oldspeed will
new speed be)
Meiu: Coefficient of kinetic frictional acceleration. Kinetic frictional acceleration
is defined as Meui*gravity*sin(Normal to road) Future versions will use zonegroundfriction
to allow for varying meius thoughout the level.
ARCoef: Coefficeint of air resistance, where air resistance is defined as ArCoef*speed^2.
THIS IS WHAT LIMITS THE SPEED OF THE CAR AND ONLY THIS. If you set the value
to 0, the car will be able to accelerate forever, so do not do that.
Network:
Absolutely none. For the car to have net support, I need my map
-Simply blocks ship, but does not destroy it.
Use like any other actor.
LEETPALM
Note about palm:
Using shadow generator: (not working properly)
-Set LightTag to the tag of some actor. That actor is used to calculate the
direction and length of the shadow. In other words, think of that actor as
the light source.
-bShadowImportant: A true setting means the shadow will show up even if the
user is not in high detail mode. (I don't know which one.. but you get the
point...)
Issues with shadow generator (plenty):
-Shadows use scriptedtextures, which are voracious eaters of FPS. Having 3
shadows on screen slowed my FPS by 19 (from 85 to 65). In other words, do
not use shadows too frequently! I wouldn't allow more than two on screen at
once ever. (although in low poly areas you can go higher). In maps, like np06heiko,
I don't even know how well 1 will be handled....
-May have wierd marks on them... you'll have to test yourself
-Occasionally are slightly off the tree base. Try rotating the tree.. I really
dunno what the problem is.
-Length is calculated by the angle between the light source and collisionheight
above the tree base. Note that the texture will never really deform at all.
Thus, it is really a pseudo-shadow at best. Yet as long as light is between
30 and 60 degrees, it should be fine..
-The shadow can only bend maximum 45 degrees from its center. Hard-coded UT
limit in C++: nothing I can do. Thus, if you have a wall at a right angle
to the floor, it will only be on the floor or wall, not both. HOWEVER, you
can get around this by placing a 45 degree slope between the wall and floor.
As long as the center of the shadow is on that slope, it will appear on all
3 surfaces.
-The shadow can attach to a maximum of 13 different non-coplanar surfaces.
If for some insane reason, you need this higher, I'll change it. (BTW, the
normal level for decals is 5 :p)
-There is a way I can possibly get around the angle limits and FPS drain.
If I make a DLL exclusively for the shadow, I can access C++ code and change
a lot (This is assuming that Epic does send me the needed code... I'll email
them if you agree with this idea). However, the DLL will only work on windows
UT 432 and 436. Thus two versions will need to be released, one with and one
without the DLL. Oh, and mac/linux users will have no shadows...
-JumpZ: Alters incoming player's jumpz to this number.
-JumpSounds array: Sets incoming player's 3 random jumpsounds to these.
-FollowerToggler:
Toggles Followers from coward to follower, etc.
-FollowerTag: Tag of follower to alter
-Become: Thing this follower should become. Note that non-aggressive means
that the follower will not attack first.
-bAutoFollowTriggerer: If true and the follower is becoming a follower, it
will automatically follow the player when it becomes a follower (ya.. I confused
you).
-NoSoundlExplosion:
DrPest requested this . A flame explosion without the sound.....
-NoAmmoDPistol:
Use this instead of dispersion pistol, although the mutator will auto-change.
The dispersion pistol now has infinite ammo! In fact, it doesn't use ammo
at all or even have ammo
-BattleBrute:
-SeekingOdds: Odds of firing a seeking rocket at easy difficulty. Note that
it must have a ranged projectile of rocket or rocket_mk2 to have seeking rockets.
-SeekingDifficultyVariation: Varies odds by this number per difficulty. i.e.
medium difficulty odds of seeking are seekingodds+seekingdifficultyvariation*1
I got sick of all the fak1sh laser beams in npdavidm27 and the mcpest map.
This is a REAL LASER!
Advantages:
-Will not go through player.
-Pretty much perfect collision detection.
-Very easy to set up.
-Doesn't stop in mid-air
-Easy to set up triggering system
etc.
To use, simply add a laserbeam onto one side (the generator of the laser).
Rotate it so the arrow points to where you want it to go. (the receiving area
of the laser)
Some useful properties:
-bActive: Is this initially active? Trigger the beam to toggle this.
-TriggeringType: Like the trigger one. TT_GoodGuyProximity means follower
or player.
ClassProximityType: again, like trigger (if TT_ClassProximity is selected
for triggeringtype).
-Event: event to call when something gets in way of the beam and passes the
triggering type stuff.
-CallEventOnceOnly: This causes the event to be called only once. Otherwise,
it will be called each frame as the thing is being hit.
-Damage (under projectile): Amount of damage the beam deals per second.
-bWallHitEffect: Show the telsa/pulse beam wall hit effect on each end?
You can also change the mesh of the beam and light hue and such. (as to use
that red beam thing and such).
You will also need to set:
-BeamSize: Amount of uu's one beam takes up.
-MaxPos: Maxiumum individual beams in a series allowed (for instance the pulse
beam is actually made of 10 individual 81 uu beams).
-SpriteAnim: The animations changed every 50 ms. If you want just one skin,
fill all 5 spots in.
-AmbientSound: Sound beam uses. (keep none if none).
Ok, that should be enough. enjoy.
Be sure to use the lasers in the mines (for the laser activated lift) and
the death-lasers in mcpest (set damage to 10000 or so)
As these are only planned for one level (atje's), there are some slight issues
to them:
1) Do not support travelling. I could add it, but if it is in only one level,
I may as well save time and not add support :p
2) Do take more time to set up than normal scriptedpawns, but not that much
of an issue.
3) Only support default UT models (female commando, female soldier, male commando,
male soldier, and boss).
Whatever.. lets describe how to use them:
Add a scriptedmale if you want to add a male model or a scriptedfemale if
you want to add a female.
-Note that you will see an unskinned green mesh. This is normal.
-Under display set the mesh to which female/male model you want (again scriptedmales
must use male meshes and females must use female. failure to do this will
screw stuff up!)
-Now you must set each multiskin from 0 to 3. Load the skin pack for the model
(available ones: soldierskins.utx, commandoskins.utx, fcommandoskins.utx,
sgirlskins.utx)
Set each multiskin element to the skin number one above.
i.e. you will see skin names like blkt1 or blkt1t_3. You use those in the
multiskin(0). similary, blkt3 or blkt3t_1, goes on multiskin(2). The various
faces are for multiskin(3). Also note that the t_# is the team color. I recommend
keeping the pattern the same for all multiskins....
Note that failure to set multiskins will cause the code to simply select the
default skin with a random color. bad idea...
And now you have a propertly skinned model. BUT PAY ATTENTION TO INFO BELOW!
Additional properties:
-Standard follower properties still apply to the humans.
-Can set Evil as true for them to be enemies.
-WeaponType (in weaponholder) is their weapon.
Special human properties:
-various ones added to the sounds. no need to get into detail with these.
-FollowerIcon: This is the texture that will appear in the HUD as the "follower
face". Select the texture (with a 5 in it) that coincides with the face
chosen. It'll be pretty obvious what you want to select. If you don't set
this, cliffy B face will be used :p
-Voice: I simply love this feature! Humans use the voice packs to taunt stuff
they kill, scream that you are an idiot shooting them, shout "incoming"
when they see enemies, etc.
Simply set this to anything under info->voicepack->challengevoicepack
(must be lowest order!).
Realistically, you should only use:
-VoiceMaleOne
-VoiceMaleTwo
-VoiceFeMaleOne
-VoiceFeMaleTwo
-VoiceBoss will also work.
-Animated Face system (SpeechFaces, SpeechTime):
As David simply wanted random faces, this pulls it off. You are allowed up
to 6 unique "talking faces". Just plug each texture int he speechfaces.
Speechtime is how long each face stays on as the human talks.
-The human will use a talking face when screaming as well. However, it does
not move (kinda like a guy with his mouth wide open).
That should cover everything. If you need something else with the humans,
please tell me. (you might need some speech trigger? dunno).
-Feel free to just summon olextras.scriptedmale or olextras.scriptedfemale
in game for an example (note that defaults have no animated faces)
Use this to activate scriptedhuman speech.
vars:
-Speech: the actual sound
-SpeechVolume: Volume of sound
-SpeechRadius: Radius that sound can be heard within
-FaceLastingTime: Amount of time per face before it changes.
-HumanTag: Tag of the human to talk.
Properties:
-FoundMessage: Message to give player when it is found.
-FoundMessageType: MessageType of message (similar to specialerevent)
-FoundSound: Sound to play when found.
-Points: Number of points to give player for finding the area. The %i in foundmessage
is replaced with this number.
-Event: Triggered when secret area is found.
-Added MENUS! Just hit the start button in the ONP level pack. Enjoy them.
Advanced stats in the high score menu will come later. The hardest part is
out of the way at least.
There might be things missing (I'm pretty sure there are), so if you have
questions email UsAaR33 or post
your question on our forum.