Commit graph

255 commits

Author SHA1 Message Date
MajorCooke
cac600733f - Added Remove <classname> console command. 2015-08-10 20:45:18 -05:00
Christoph Oelckers
7ba577e1b0 Merge branch 'master' into scripting
Conflicts:
	src/g_heretic/a_hereticweaps.cpp
	src/thingdef/thingdef_codeptr.cpp
2015-06-07 09:43:54 +02:00
MajorCooke
4c390d92a4 -...forgot this one. 2015-06-02 12:22:26 -05:00
MajorCooke
22570e079e * Added LAXTELEFRAGDMG. This flag forces all damage to be factored, regardless being above or below the telefrag threshold.
- This only affects damage calculations being received by the end result. If the original damage was not a million or more, from the start, it will not hurt invulnerable-flagged or kill buddha-flagged monsters.
- Fixed: Damage was inconsistent by the time the function checked for player cheats/invulnerability and (monster and player) buddha, yet monster invulnerability checked the original damage prior to factor processing. This means a damage source that intended to damage another below the threshold could accidentally increase with a powerdamage multiplier or the recipient with a weakness for it, resulting in invulnerability/buddha foiling. Now, checks for telefrag damage using the raw original value on player godmode, player/monster invulnerability and buddha.
2015-06-02 12:10:45 -05:00
Christoph Oelckers
1b29c3b6cf Merge branch 'master' into scripting
Conflicts:
	src/p_interaction.cpp
	tools/lemon/lemon.c
2015-04-30 16:13:32 +02:00
Edoardo Prezioso
cda4fece1b - Fixed compiler errors and warnings from TFlags. 2015-04-30 12:35:29 +02:00
Christoph Oelckers
646c135eff Merge branch 'master' into scripting
Conflicts:
	src/m_cheat.cpp
	src/p_acs.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_properties.cpp
2015-04-28 23:04:10 +02:00
Edoardo Prezioso
b51fac344d Little TakeInventory refactoring.
Introduce AActor::TakeInventory, which unifies DoTakeInv from ACS and DoTakeInventory from Decorate, and AInventory::DepleteOrDestroy, which is extracted from the DoTakeInv core function, and use both where they're needed.
I don't know if the differences between DoTakeInv and DoTakeInventory were intentional, so I kept both behaviors.
2015-04-28 15:45:11 +02:00
Christoph Oelckers
065c0a79cd Merge commit '4f7ec3ad891d556c0d3f680e209a120ed38e9cdb' into scripting
Conflicts:
	src/d_main.cpp
	src/info.cpp
	src/info.h
	src/p_acs.cpp
	src/p_interaction.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_properties.cpp

(scripting branch update part 5)
2015-04-28 12:48:33 +02:00
Christoph Oelckers
792cad89b3 Merge commit '3849cb86231ce24131a86e9c29795a8cf3706a3d' into scripting
Conflicts:
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_hexenspecialdecs.cpp
	src/p_acs.cpp
	src/p_enemy.cpp
	src/p_interaction.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_expression.cpp

(Scripting branch update part 4)
2015-04-28 11:59:33 +02:00
Christoph Oelckers
d6e3fc0567 Merge commit 'fb9231a38db2025eb77bfd246f36d985cbbccd2e' into scripting
Conflicts:
	src/info.cpp
	src/thingdef/thingdef_expression.cpp
	wadsrc/static/actors/constants.txt

(Scripting branch update part 2)
2015-04-28 09:57:01 +02:00
MajorCooke
27c1434585 - Fixed: Buddha never took forced damage into account. 2015-04-02 20:52:51 -05:00
Christoph Oelckers
0a16855232 - fixed: The assignment to the 'player' variable in P_DamageMobj occured too late, skipping a few cases.
- changed monster unblocking logic to include players as well (i.e. a player being stuck inside another actor is allowed to move away from that other actor.)
2015-04-02 10:05:32 +02:00
MajorCooke
e70aae91e3 - Fixed NODAMAGE not ignoring telefrag damage. 2015-04-01 10:31:47 -05:00
Christoph Oelckers
34aeb428a1 - Removed the check for this flag from P_RadiusAttack because MF7_CAUSEPAIN cannot be used for radius attacks. Their logic is too different from regular attacks. 2015-04-01 10:01:48 +02:00
Christoph Oelckers
d940c6a2ee - fixed: With the recent changes to the damage code, the check for MF5_NODAMAGE was too early. Putting it into AActor::TakeSpecialDamage is also not the best idea because that limits that function's potential. 2015-03-31 23:15:43 +02:00
Christoph Oelckers
15e0f19fdb - fixed another flags mismatch. 2015-03-27 17:16:53 +01:00
Christoph Oelckers
94a04f36e5 - fixed: Dormant monsters should not be telefraggable. 2015-03-27 17:06:56 +01:00
Christoph Oelckers
eb78c24140 - small oversight: TakeSpecialDamage must be called if damage is 0 (to do the special death state checks) but it may not be called if damage is already -1, because that means that damage and pain have already been ruled out completely. 2015-03-27 14:37:13 +01:00
Christoph Oelckers
9d5e6d32c7 - review of P_DamageMobj:
* decided that the pain threshold should always be checked against the actual damage, even if it's down to 0, for consistency. This also restores the original behavior of using actual damage for checking the pain threshold which was altered by the introduction of the ALLOWPAIN and CAUSEPAIN flags.
* removed all newly added exceptions that excluded the player from checks for completely cancelled out damage.
* if anything during damage modification causes negative damage, no pain handling whatsoever will be initiated.
* made sure that TELEFRAG_DAMAGE will not be subjected to damage amount modification by protection items and any other kind of damage modification.
2015-03-27 13:49:47 +01:00
Christoph Oelckers
ac7abca6f8 - completely removed fakePain check in case DoSpecialDamage returns -1. This signifies a special case that should bypass anything that inflicting pain implies. 2015-03-27 11:55:11 +01:00
Christoph Oelckers
c78b9235a8 - DoSpecialDamage was formerly called for any damage value, removed check for 'damage > 0' to restore original behavior. 2015-03-27 11:50:27 +01:00
Christoph Oelckers
66c3c93529 - call TakeSpecialDamage, even if damage is 0, just like it was in older versions. 2015-03-27 09:03:44 +01:00
MajorCooke
d45d45583b Take PainThresholds into account. 2015-03-25 14:27:12 -05:00
MajorCooke
f161c0c501 - Fixed: Projectile impacts never called P_DamageMobj when damage was 0 without the CAUSEPAIN flag. 2015-03-25 14:19:50 -05:00
Braden Obrzut
7a543a71e1 - Fixed: Buddha mode zombie bug returned. (Also fixes compiler warning.)
- Fixed: Missing include for FreeBSD compile.
2015-03-02 16:43:25 -05:00
ZzZombo
c4b742ebf0 - Part 2 of the sanity crusade. 2015-02-08 17:03:49 +08:00
Randy Heit
775e33ede7 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_doom/a_archvile.cpp
	src/g_shared/a_morph.cpp
	src/p_enemy.h
	src/p_local.h
	src/p_mobj.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_exp.h
	src/thingdef/thingdef_expression.cpp
	src/thingdef/thingdef_states.cpp
	wadsrc/static/actors/actor.txt
2015-01-29 20:53:08 -06:00
Christoph Oelckers
67312b907b - fixed: AInventory::AbsorbDamage may only be called for positive damage values, otherwise it ends up adding armor points. 2015-01-20 10:25:58 +01:00
Randy Heit
b5e4153c78 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/b_think.cpp
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_fighterplayer.cpp
	src/namedef.h
	src/p_enemy.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/p_teleport.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_function.cpp
	src/thingdef/thingdef_parse.cpp
	wadsrc/static/actors/actor.txt
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt

- Added register reuse to VMFunctionBuilder for FxPick's code emitter.
- Note to self: Need to reimplement IsPointerEqual and CheckClass, which
  were added to thingdef_function.cpp over the past year, as this file no
  longer exists in this branch.
2014-12-21 21:15:11 -06:00
Randy Heit
2d87eb0ba2 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/actor.h
	src/g_heretic/a_hereticmisc.cpp
	src/g_heretic/a_hereticweaps.cpp
	src/g_heretic/a_ironlich.cpp
	src/info.h
	src/namedef.h
	src/p_buildmap.cpp
	src/p_enemy.cpp
	src/p_map.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	zdoom.vcproj
2014-12-20 19:13:14 -06:00
Christoph Oelckers
b6ccc79ca3 Merge branch 'fixes' of https://github.com/MajorCooke/zdoom
Conflicts:
	src/p_interaction.cpp
2014-11-25 16:32:42 +01:00
MajorCooke
7e579a0a2a - Fixed: Godmode didn't stop ALLOW/CAUSE/FORCEPAIN because the code execution always ended prematurely.
- Optimized checks for fake pain and forced pain. Fake pain now calls a subfunction so the code is cleaner.
2014-11-24 18:30:17 -06:00
Edward Richardson
e303833e5f Inventory damage needs multiplying first 2014-11-20 22:12:16 +13:00
Edward Richardson
99b2cfa147 Added APROP_DamageMultiply
- Used with Set/GetActorProperty, adds a generic multiplier for damage a
source deals.
2014-11-20 18:57:40 +13:00
Edward Richardson
92143f90fa Yet another pointer 2014-11-16 02:59:37 +13:00
Edward Richardson
2d5cbe1d8b Missed a save 2014-11-16 02:44:17 +13:00
Edward Richardson
21e7beb21b Fixed missing NULL pointer checks 2014-11-16 02:39:16 +13:00
MajorCooke
b54b18c8c5 -Added: CAUSEPAIN. Actors which deal damage (even if 0) while having this flag can cause other actors to trigger pain chances.
-Fixed: ALLOWPAIN should not trigger pain states if the damage is 0, but still allow for infighting to occur.
-Fixed: an unneeded logic call was processing damage modification when it was 0 to begin with.
2014-11-12 14:08:26 -06:00
ChillyDoom
a613da43dd - Bot movement is now calculated locally. 2014-11-08 17:38:09 +00:00
MajorCooke
c63adf920a - Fixed: BUDDHA flag on a player wasn't considered. 2014-11-05 22:05:21 -06:00
MajorCooke
2e085b2318 - Added ALLOWPAIN flag.
Monsters with this flag can enter pain states, regardless of
invulnerability or damage absorption.
- Fixed: god2 cheat wasn't being considered for drowning and thrusting.
2014-11-01 00:00:29 -05:00
Christoph Oelckers
6073adbeef - renamed FULLMASS to DONTTHRUST. 2014-10-28 08:40:34 +01:00
MajorCooke
c01d1a8003 - Added DMSS_NOPROTECT.
Bypasses PowerProtection inventory items.
2014-10-27 22:29:10 -05:00
MajorCooke
f802d7a44c - Added +FULLMASS.
Actors will be excluded from damage/radius thrusting of all sorts by
explosions or damage of any kind. They will also never deal impact
damage to other enemies, nor will they damage themselves from being too
close to a wall.
2014-10-27 21:35:55 -05:00
Christoph Oelckers
2e1fa70cbf - some parentheses to silence GCC. 2014-10-25 13:12:57 +02:00
MajorCooke
d1dc6fd59a - Added: BUDDHA and FOILBUDDHA.
- Fixed: mugshot didn't take the god2 cheat into account.
2014-10-25 09:39:00 +02:00
MajorCooke
b980069367 - Added GOD2 and BUDDHA2 cheats.
- Ensures that not even telefrag damage can kill the player.
- Fixed: Players with NODAMAGE could still hurt and kill themselves via
voodoo dolls.
2014-10-25 09:38:40 +02:00
Christoph Oelckers
aa338a4dc6 - fixed: G_FinishTravel must synchronize the CF_FLY flag with MF2_FLY. 2014-10-25 01:00:40 +02:00
Christoph Oelckers
83be901ad6 - fixed: damage of amount TELEFRAG_DAMAGE should not be reduced by armors absorbing some damage, it'd lose its magic-ness, that is needed to ensure a guaranteed kill. The same applies to autousing health items. 2014-10-25 00:52:27 +02:00
Christoph Oelckers
e81c404b04 - fixed some bad logic operations. 2014-10-25 00:01:04 +02:00
ChillyDoom
db323643f8 - Renamed FBot to DBot and made it inherit from DThinker.
- Fixed: Bots added by players other than the net arbitrator did not have their skill set.
2014-10-14 19:57:11 +01:00
ChillyDoom
83d84eaae9 - Moved bot related variables from player_t into a new FBot class. 2014-10-13 18:40:25 +01:00
Braden Obrzut
2020769967 - Fixed: Player turned into a zombie if exiting telefragged in buddha mode.
- Fixed: Players could drop their inventory after dying.
2014-07-15 20:16:28 -04:00
WChrisK
67c6690689 Added a check that doesn't print empty obituary strings, as wad's that hide obituary strings in multiplayer games end up spamming a lot of empty lines. 2014-06-11 23:30:25 -04:00
Braden Obrzut
d8ff4ec281 - Fixed: All clang 5.0 warnings.
- Renamed autostart/autozend since Xcode’s build process links in strictly alphabetical order.
2014-01-05 19:50:09 -05:00
Christoph Oelckers
3e4678765b Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/thingdef/thingdef_codeptr.cpp
2013-08-18 12:18:59 +02:00
Christoph Oelckers
e14590d8ce - moved NOTELESTOMP to flags7. When committing I was accidentally on maint instead of master and in master flags6 was already full. 2013-08-12 20:41:33 +02:00
Christoph Oelckers
a78ad3188b - added MF5_NOFORWARDFALL flag to prevent attacks from making its victim fall forward randomly. 2013-08-09 20:20:23 +02:00
Christoph Oelckers
bba092cc0b Merge branch 'master' into scripting
Conflicts:
	src/d_player.h
	src/g_doom/a_archvile.cpp
	src/thingdef/thingdef.h
	src/thingdef/thingdef_properties.cpp
2013-08-09 13:03:28 +02:00
Christoph Oelckers
3480d40484 - fixed: AActor::Die may only randomize the death state's duration if it is positive. Otherwise -1 (infinite) gets clobbered. 2013-07-30 16:52:36 +02:00
Christoph Oelckers
909ec2e35a Merge branch 'maint' into scripting 2013-07-28 10:47:17 +02:00
Christoph Oelckers
992ba0bbf4 - added handling of MF3_FOILINVUL for A_BFGSpray. This function needs special treatment because the shooting player is considered the inflictor of the spray damage. 2013-07-26 00:52:12 +02:00
Randy Heit
9c86f1c220 Merge branch 'master' into scripting for plugged userinfo memory leak
Conflicts:
	src/d_player.h
	src/p_interaction.cpp
	src/thingdef/thingdef_codeptr.cpp
2013-07-23 21:01:13 -05:00
Christoph Oelckers
f1dff6c9d3 - fixed: The new XDeath code forgot to move the assignment of the flags4 variable. Also renamed the variable to avoid conflicts. 2013-07-02 22:01:54 +02:00
Christoph Oelckers
7e6a5c1448 - added damage type specific extreme death and extreme crash states. Order of labels is 'Death.extreme.damagetype' ('XDeath.damagetype') and 'Crash.extreme.damagetype'.
- fixed: Damage of type 'extreme' did not get recorded as an extreme death for the mugshot code.
- changed: extreme deaths now only get recorded when an extreme death state was actually used, to ensure that the crash state being used is the correct one associated with the death state.
2013-07-01 11:02:35 +02:00
Randy Heit
4deeb8d8ae Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_doom/a_doomweaps.cpp
	src/p_local.h
	src/p_map.cpp
	src/sdl/i_main.cpp
	src/thingdef/thingdef_codeptr.cpp
2013-06-25 19:28:25 -05:00
Christoph Oelckers
394f21f71e - fixed: Draining health from a victim must check for damage reduction before awarding the health to the player. This affected Heretic's gauntlets, A_Saw and A_CustomPunch.
- added a DONTDRAIN flag that prevents the above attacks from draining any health at all.
2013-06-24 16:42:43 +02:00
Christoph Oelckers
9f253ccae3 - fixed: Application of inflictor's death damage type was done too late and missed a few spots where it needed.
- fixed: DamageTypeReceived was not serialized.
- fixed: The check for unhandled damage type was rendered ineffective by the old code handling the DeathType.
2013-06-24 15:40:17 +02:00
Randy Heit
459ad5abff - Updated scripting branch to latest version in trunk.
SVN r4337 (scripting)
2013-06-07 03:31:30 +00:00
Christoph Oelckers
0bca41c202 - replaced unused RNGs with pr_damagemobj for consistency checksum.
SVN r4297 (trunk)
2013-05-30 10:18:46 +00:00
Randy Heit
2668988870 - Switched to a genericly extensible representation for userinfo.
- Fixed: The playerinfo CCMD did not range check the player number.

SVN r4253 (trunk)
2013-05-12 18:27:03 +00:00
Randy Heit
a50e670c0c - Use tests less prone to overflow on very steep slopes when detecting which side of a plane
the camera is on. Mostly, this means testing the distance of the camera to the plane rather
  than computing the plane's Z at the camera and comparing that with the camera's Z.

SVN r4220 (trunk)
2013-04-17 01:32:40 +00:00
Randy Heit
c116453158 - When doing kickback in P_DamageMobj(), choose a random direction if the target and origin are in the exact same spot.
SVN r4069 (trunk)
2013-02-07 21:02:26 +00:00
Randy Heit
47cb2ad6bc - In P_PoisonPlayer(), keep track of the source as the poisoner, so you can get accurate kill
accounting. Also, if the poisoner is a missile, remembering it is pretty pointless, since it's
  likely to be gone before the player ever dies from the poison.

SVN r4040 (trunk)
2013-01-25 02:35:11 +00:00
Randy Heit
814cb4d135 - Move NULL player check earlier in P_PoisonDamage, before player is accessed.
SVN r4016 (trunk)
2013-01-03 03:05:44 +00:00
Randy Heit
549712e719 - P_DamageMobj() now returns the amount of damage actually done so that the bleed functions
can perform based on the amount of damage actually taken after all modifications are done to
  it. However, if the damage is canceled away, blood will still spawn for the original damage
  amount rather than the modified amount.

SVN r4012 (trunk)
2013-01-02 04:39:59 +00:00
Randy Heit
e7efa1d802 - Update to latest version in trunk.
SVN r3890 (scripting)
2012-10-17 04:24:54 +00:00
Randy Heit
ebc4e5b4e1 - Fixed: P_TouchSpecialThing() considered all pickup items to be 32 units tall for the sake
of touching, even if they were taller.

SVN r3814 (trunk)
2012-08-10 02:17:16 +00:00
Randy Heit
562cf04db2 - Update scripting branch to trunk.
SVN r3758 (scripting)
2012-07-14 03:04:41 +00:00
Randy Heit
1346f136f2 - Added inventory-based damage modification to APoisonCloud::DoSpecialDamage() and P_PoisonDamage().
SVN r3718 (trunk)
2012-06-30 01:06:30 +00:00
Randy Heit
e1641da881 - Make APoisonCloud::DoSpecialDamage() and P_PoisonDamage() respect damage factors.
- Pass the damage type to AActor::DoSpecialDamage().

SVN r3717 (trunk)
2012-06-29 04:21:31 +00:00
Randy Heit
cbebc12fd0 - Players are no longer affected by the skill property NoPain.
SVN r3654 (trunk)
2012-05-15 21:51:02 +00:00
Christoph Oelckers
0f8e2441a1 - changed spectral missiles to use FriendPlayer instead of health to distinguish between player spawned and monster spawned versions. Also moved most of this into the basic missile spawning functions instead of littering all spectral missile spawning functions with these initializations.
SVN r3651 (trunk)
2012-05-13 11:17:27 +00:00
Christoph Oelckers
ddf1af455b - moved identical damage checks in P_DamageMobj into an inline function.
SVN r3650 (trunk)
2012-05-13 08:04:58 +00:00
Christoph Oelckers
3a24790056 - fixed: The newly added checks for printing weapon obituaries failed if the weapon used a puff with a special damage type. To handle this, P_DamageMobj will now pass the damage flags to AActor::Die and from there to ClientObituary so that P_LineAttack - which is a better place to decide this - can flag an attack as coming from a player weapon.
- fixed: The same rules that are used for deciding if a weapon attack took place should be used when checking the PIERCEARMOR flag in P_LineAttack: It should be ignored if the attack doesn't originate from the weapon.

SVN r3649 (trunk)
2012-05-13 07:54:44 +00:00
Randy Heit
44932a6c56 - Added OB_MPDEFAULT string for being killed by a player for an unknown reason. This can be
overridden in custom player classes by changing their Obituary property to something else.
- ClientObituary() now only looks up the obituary message from the killing player's weapon if the
  damage type was 'Melee' or 'Hitscan'.
- Gave P_GunShot() and A_FireBullets the new damage type 'Hitscan'.
- Switched A_Saw and A_CustomPunch to the 'Melee' damage type.

SVN r3646 (trunk)
2012-05-13 01:06:28 +00:00
Christoph Oelckers
898232be61 - fixed: Suicides could count towards multikills (patch by edward850)
SVN r3632 (trunk)
2012-05-08 12:27:01 +00:00
Randy Heit
b94607dc7e - Being killed by a voodoo doll now has its own obituary, rather than trying to come up with one
by treating it as a real player.

SVN r3574 (trunk)
2012-04-19 04:03:42 +00:00
Randy Heit
b036ef63e9 - Fixed: The 0-damage FORCEPAIN checks in P_DamageMobj() also need to check the PAINLESS and NOPAIN flags.
SVN r3573 (trunk)
2012-04-19 03:40:27 +00:00
Randy Heit
c03be3b43b - Fixed: Don't ignore FORCEPAIN if damage modification takes the damage to 0.
SVN r3567 (trunk)
2012-04-15 03:48:27 +00:00
Christoph Oelckers
81eef71067 - added FDARI's Default/global damagetype properties submission.
SVN r3523 (trunk)
2012-04-07 12:11:17 +00:00
Braden Obrzut
1f6c6aafd9 - Fixed: DesignatedTeams prevented monsters from hurting themselves in teamplay.
SVN r3508 (trunk)
2012-04-01 20:43:14 +00:00
Randy Heit
49ea87f8bc - Fixed: Poison damage lost damage type information if the poisoner was destroyed before poisoncount
reached 0.
- Fixed: Poisoners without a PainType should use their own DamageType to pick the Pain state
  to make the target enter, not the target's DamageType.

SVN r3475 (trunk)
2012-03-23 20:57:10 +00:00
Randy Heit
9fcc6ebc89 - Fixed: Armor did not use damagefactor "Normal" as a fallback factor.
SVN r3469 (trunk)
2012-03-23 01:20:45 +00:00
Christoph Oelckers
9fc5539ae7 - fixed case of damage type variables.
- fixed loading of BMF fonts' palettes. Index 0 is always transparent and the stored palette data starts at index 1.


SVN r3240 (trunk)
2011-06-17 22:46:34 +00:00
Christoph Oelckers
4d7fcbf1b8 - added Major Cooke's Death/Paintype submission.
SVN r3237 (trunk)
2011-06-13 17:15:09 +00:00
Christoph Oelckers
44921297d3 - added DavidPH's PoisonDamageType submission.
SVN r3235 (trunk)
2011-06-13 10:39:14 +00:00
Christoph Oelckers
ab60afd0b8 - added DavifPH's fix for poisoning invulnerable players.
SVN r3231 (trunk)
2011-06-13 10:25:03 +00:00
Christoph Oelckers
61dfb608f4 - added DavidPH's ProjectileKickback submission.
SVN r3228 (trunk)
2011-06-13 09:16:57 +00:00