Fortresses: how to...?
Started by AleAleWitchKing, Nov 20 2008 05:04 PM
224 replies to this topic
#221
Posted 10 December 2008 - 07:01 PM
Ok no problem, I'm desperate 'cause I can't understand where I'm failing...
#222
Posted 11 December 2008 - 12:35 AM
If this is what you want - to have the tower with a command in its palintir that can summon the eye.Ok no problem, I'm desperate 'cause I can't understand where I'm failing...
This eye is not timed .then you can un-summon the eye with the click of a button .
I thinh i can help.I will post the codes after i run through the how to:
Step 1 : you need to see what gives you the eye .it is a special power in the system file
copy it and convert it to a palintir Special power .
It will OCL-create the normal eye/change it to ocl a new non-timed eye /then duplicate the Object Eye and remove the
Timer module .When you select the eye ,it will be non timed and have its own commandset.
This command set will TOGGLE it into a new form -the same eye on a 1 sec timer i.e it will essentially vanish on toggle
I tried it and it works .The spell however on the Baradur tower commandset is timed so juct decrease its reload time if you want
But this would be cheating!!
I f you understood all that then great !!
The codebox cant fit long lines so fix it when you copy eg:
KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL
here are the codes to put in the respective files (i hope i copied all )
; ;------------------------- CommandButton Command_EyeofSauron Command = SPECIAL_POWER SpecialPower = EyeofSauron ButtonImage = SBEvil_EyeofSauron Options = NEED_TARGET_POS TextLabel = CONTROLBAR:EyeofSauron ButtonBorderType = ACTION DescriptLabel = CONTROLBAR:TooltipEyeofSauron RadiusCursorType = EyeOfSauronRadiusCursor InPalantir = Yes End CommandButton Command_TOGGLE_EYE Command = SPECIAL_POWER SpecialPower = SpecialAbilityToggleMounted TextLabel = CONTROLBAR:EyeofSauron Options = TOGGLE_IMAGE_ON_WEAPONSET ON_GROUND_ONLY OK_FOR_MULTI_EXECUTE FlagsUsedForToggle = MOUNTED ButtonImage = SBEvil_EyeofSauron ButtonBorderType = ACTION DescriptLabel = CONTROLBAR:GenericMountTooltip InPalantir = Yes ;UnitSpecificSound = HorseWhinnyForMountButton UnmountButtonFoley End ; OCLFILE--------------------------------------------------------------------------------------- ; Spawn Eye of Sauron ObjectCreationList SUPERWEAPON_SpawnEyeOfSauron2 CreateObject ObjectNames = EyeOfSauron_NO_TIMER Count = 1 FadeIn = Yes FadeTime = 2000 End End ;------------------------ CommandSet CREATE_EYE 1 = Command_EyeofSauron End CommandSet TOGGLE_EYE_COMMANDSET 1 = Command_TOGGLE_EYE End ;---------------------------------------- ;---SPECIALPOWER-------------------------------------------------------------------------- SpecialPower EyeofSauron Enum = SPECIAL_SPELL_BOOK_EYE_OF_SAURON Flags = WATER_OK RESPECT_RECHARGE_TIME_DISCOUNT ReloadTime = SPELL_RECHARGE_TIME_TIER_1; in milliseconds RadiusCursorRadius = 75.0 InitiateAtLocationSound = EyeOfSauronCreated End
The NEW baradur file (leave the Child object one)
;------------------------------------------------------------------------------ Object BaradDur ; *** ART Parameters *** Draw = W3DScriptedModelDraw ModuleTag_Draw UseStandardModelNames = Yes DefaultModelConditionState Model = MBBarDur1_D3 End ModelConditionState = WORLD_BUILDER Model = MBBarDur7_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur1_D3 ParticleSysBone FXbone01 EyeExplode FollowBone:yes ParticleSysBone FXbone02 BaradDurDust01 FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur1_D3.MBBarDur1_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall2 DefaultModelConditionState Model = MBBarDur2_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur2_D3 ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes ParticleSysBone FXbone03 SmokeBuildingLarge FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur2_D3.MBBarDur2_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall3 DefaultModelConditionState Model = MBBarDur3_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur3_D3 ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes ParticleSysBone FXbone03 SmokeBuildingLarge FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur3_D3.MBBarDur3_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall4 DefaultModelConditionState Model = MBBarDur4_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur4_D3 ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes ParticleSysBone FXbone03 SmokeBuildingLarge FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur4_D3.MBBarDur4_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall5 DefaultModelConditionState Model = MBBarDur5_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur5_D3 ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes ParticleSysBone FXbone03 SmokeBuildingLarge FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur5_D3.MBBarDur5_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall6 DefaultModelConditionState Model = MBBarDur6_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur6_D3 ParticleSysBone FXbone01 BaradDurDust01 FollowBone:yes ParticleSysBone FXbone03 SmokeBuildingLarge FollowBone:yes End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur6_D3.MBBarDur6_D3 AnimationMode = ONCE End End End ;---------------------------------------------------------------------------------------------- Draw = W3DScriptedModelDraw Draw_Wall7 DefaultModelConditionState Model = MBBarDur7_D3 End ModelConditionState = REALLYDAMAGED Model = MBBarDur7_D3 FXEvent = Frame: 300 Name: FX_BaradDurWaveDust End AnimationState = REALLYDAMAGED Animation = REALLYDAMAGEDanimation AnimationName = MBBarDur7_D3.MBBarDur7_D3 AnimationMode = ONCE End End End CommandSet = CREATE_EYE Behavior = OCLSpecialPower ModuleTag_OCLEye SpecialPowerTemplate = EyeofSauron OCL = SUPERWEAPON_SpawnEyeOfSauron2 CreateLocation = CREATE_AT_LOCATION AvailableAtStart = Yes End ;--------------------- AUDIO ------------------- #include "..\..\..\Includes\StandardBuildingEvaEvents.inc" SoundOnDamaged = BuildingLightDamageStone SoundOnReallyDamaged = BuildingHeavyDamageStone SoundOnDamaged = BuildingLightDamageStone SoundOnReallyDamaged = BuildingHeavyDamageStone VoiceSelectUnderConstruction = BuildingEvilVoiceSelectUnderConstruction UnitSpecificSounds UnderConstruction = BuildingConstructionLoop; Built first time ; UnderRepairFromDamage = NoSound; Repaired No animation on the building, so don't bother playing sound UnderRepairFromRubble = BuildingConstructionLoop; Repaired from completely destroyed (not used???) End ClientBehavior = ModelConditionAudioLoopClientBehavior ModuleTag_PlayCollapseSound ModelCondition = REQUIRED:RUBBLE Sound:BuildingSink End ; ***DESIGN parameters *** DisplayName = OBJECT:BaradDur Side = Mordor EditorSorting = STRUCTURE ; *** ENGINEERING Parameters *** KindOf = SELECTABLE IMMOBILE ; Shadow = SHADOW_VOLUME Body = ActiveBody ModuleTag_03 MaxHealth = 1000.0 End Geometry = CYLINDER GeometryMajorRadius = 300 GeometryMinorRadius = 300 GeometryHeight = 300 GeometryIsSmall = No End
And the two NEW eye of sauron objects (just add to existing file DO NOT DELETE the original )
;----------------------------------------------------------------------------------------- ; Eye Of Sauron Object ;----------------------------------------------------------------------------------------- Object EyeOfSauron_NO_TIMER ; *** ART Parameters *** ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage. ButtonImage = HIEyeofSauron SelectPortrait = HPSauron_Eye Draw = W3DScriptedModelDraw ModuleTag_01 OkToChangeModelColor = Yes NoRotate = Yes DefaultModelConditionState Model = MUSauronEye End End ; ***DESIGN parameters *** Side = Mordor EditorSorting = UNIT ThreatLevel = 0.0 CommandPoints = 0 ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS VisionRange = 200.0 DisplayName = OBJECT:MordorEyeOfSauron CommandSet = TOGGLE_EYE_COMMANDSET ; *** AUDIO Parameters *** EvaEnemyObjectSightedEvent = None; Don't bother player about this object showing up over their base -- happens too much to bother SoundCreated = EyeOfSauronCreated SoundMoveStart = EyeOfSauronMoveStart VoiceSelect = EyeOfSauronMoveStart ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL Body = HighlanderBody ModuleTag_02 MaxHealth = 1.0 End Behavior = AIUpdateInterface ModuleTag_AIUpdateInterface End Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior End LocomotorSet Locomotor = EyeLocomotor Condition = SET_NORMAL Speed = 200 End ; Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate ; MinLifetime = 60000 ; MaxLifetime = 60000 ; End ; Gives ally trrops bonus Behavior = AttributeModifierAuraUpdate ModuleTag_OrcTroopBonus StartsActive = Yes;If no, requires upgrade to turn on. BonusName = GenericHeroLeadership RefreshDelay = 2000 Range = 150.0; tuned to match size of eye, since QA complained the effect range is too far ObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER End Behavior = SpecialPowerModule ModuleTag_EyeStarter SpecialPowerTemplate = SpecialAbilityEyeOfSauronAntiCategory UpdateModuleStartsAttack = No AntiCategory = LEADERSHIP AttributeModifier = EyeOfSauronAntiCategory; Used for the anti category duration only. AttributeModifierRange = 150.0 StartsPaused = No End Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe StartsActive = Yes;If no, requires upgrade to turn on. BonusName = EyeOfSauronFear RefreshDelay = 1000 Range = 150.0 ObjectFilter = ANY +INFANTRY +CAVALRY TargetEnemy = Yes MaxActiveRank = 1;Only affects level 1 rank units End ;---------MOUNT------------------------------------------------------------------------ Behavior = SpecialPowerModule ModuleTag_HorseToggleStarter1 SpecialPowerTemplate = SpecialAbilityToggleMounted UpdateModuleStartsAttack = Yes ; TriggerFX = FX_BalrogSummoningFinish; StartsPaused = No ; InitiateSound = End Behavior = ToggleMountedSpecialAbilityUpdate ModuleTag_HorseToggle1 SpecialPowerTemplate = SpecialAbilityToggleMounted MountedTemplate = EyeOfSauron_NO_TIMER_2 UnpackTime = 2000 PreparationTime = 0; none, cause we hop onto our mount in no time at all :) PackTime = 0; none, cause we hop onto our mount in no time at all :) OpacityTarget = .0; How see-thru to be at peak of change AwardXPForTriggering = 0 IgnoreFacingCheck = Yes ;TriggerSound = FellBeastVoiceMove End ; Detects other stealth units Behavior = StealthDetectorUpdate StealthDetectorUpdateModuleTag DetectionRate = 500; how often to rescan for stealthed things in my sight (msec) CancelOneRingEffect = Yes; forces uses of one-ring to pop out of it End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL End Geometry = CYLINDER GeometryMajorRadius = 1.0 GeometryMinorRadius = 1.0 GeometryHeight = 1.0 GeometryIsSmall = Yes Shadow = SHADOW_ADDITIVE_DECAL_DYNAMIC ShadowSizeX = 400; ShadowSizeY = 400; ShadowTexture = MUSauronEye; ShadowOpacityStart = 0 ShadowOpacityFadeInTime = 1000 ShadowOpacityPeak = 255 ShadowOpacityFadeOutTime = 1000 ShadowOpacityEnd = 0 ShadowOverrideLODVisibility = yes End ;----------------------------------------------------------------------------------------- ; Eye Of Sauron Object ;----------------------------------------------------------------------------------------- Object EyeOfSauron_NO_TIMER_2 ; *** ART Parameters *** MaxSimultaneousOfType = 1 ; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage. ButtonImage = HIEyeofSauron SelectPortrait = HPSauron_Eye Draw = W3DScriptedModelDraw ModuleTag_01 OkToChangeModelColor = Yes NoRotate = Yes DefaultModelConditionState Model = MUSauronEye End End ; ***DESIGN parameters *** Side = Mordor EditorSorting = UNIT ThreatLevel = 0.0 CommandPoints = 0 ShockwaveResistance = SHOCKWAVE_RESISTANCE_ALWAYS VisionRange = 200.0 DisplayName = OBJECT:MordorEyeOfSauron ;CommandSet = TOGGLE_EYE_COMMANDSET ; *** AUDIO Parameters *** EvaEnemyObjectSightedEvent = None; Don't bother player about this object showing up over their base -- happens too much to bother ;SoundCreated = EyeOfSauronCreated ;SoundMoveStart = EyeOfSauronMoveStart ;VoiceSelect = EyeOfSauronMoveStart ; *** ENGINEERING Parameters *** RadarPriority = UNIT KindOf = SELECTABLE NO_COLLIDE AIRCRAFT UNATTACKABLE MOVE_ONLY CLICK_THROUGH HERO IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION NOT_AUTOACQUIRABLE IGNORES_SELECT_ALL Body = HighlanderBody ModuleTag_02 MaxHealth = 1.0 End Behavior = AIUpdateInterface ModuleTag_AIUpdateInterface End Behavior = PhysicsBehavior ModuleTag_PhysicsBehavior End LocomotorSet Locomotor = EyeLocomotor Condition = SET_NORMAL Speed = 200 End Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate MinLifetime = 2 MaxLifetime = 2 End ; Gives ally trrops bonus Behavior = AttributeModifierAuraUpdate ModuleTag_OrcTroopBonus StartsActive = Yes;If no, requires upgrade to turn on. BonusName = GenericHeroLeadership RefreshDelay = 2000 Range = 150.0; tuned to match size of eye, since QA complained the effect range is too far ObjectFilter = GENERIC_BUFF_RECIPIENT_OBJECT_FILTER End Behavior = SpecialPowerModule ModuleTag_EyeStarter SpecialPowerTemplate = SpecialAbilityEyeOfSauronAntiCategory UpdateModuleStartsAttack = No AntiCategory = LEADERSHIP AttributeModifier = EyeOfSauronAntiCategory; Used for the anti category duration only. AttributeModifierRange = 150.0 StartsPaused = No End Behavior = AttributeModifierAuraUpdate ModuleTag_FearMe StartsActive = Yes;If no, requires upgrade to turn on. BonusName = EyeOfSauronFear RefreshDelay = 1000 Range = 150.0 ObjectFilter = ANY +INFANTRY +CAVALRY TargetEnemy = Yes MaxActiveRank = 1;Only affects level 1 rank units End ; Detects other stealth units Behavior = StealthDetectorUpdate StealthDetectorUpdateModuleTag DetectionRate = 500; how often to rescan for stealthed things in my sight (msec) CancelOneRingEffect = Yes; forces uses of one-ring to pop out of it End Behavior = SlowDeathBehavior ModuleTag_05 DeathTypes = ALL End Geometry = CYLINDER GeometryMajorRadius = 1.0 GeometryMinorRadius = 1.0 GeometryHeight = 1.0 GeometryIsSmall = Yes Shadow = SHADOW_ADDITIVE_DECAL_DYNAMIC ShadowSizeX = 400; ShadowSizeY = 400; ShadowTexture = MUSauronEye; ShadowOpacityStart = 0 ShadowOpacityFadeInTime = 1000 ShadowOpacityPeak = 255 ShadowOpacityFadeOutTime = 1000 ShadowOpacityEnd = 0 ShadowOverrideLODVisibility = yes End
Notice :the baradur object has a behavior-ocl-power
it is activated by the commandbutton on commandset in palintir
It will create a new ocl eye with its own commandset
the eye-commandset-button will then toggle it to a 1sec eye ,effectevly killing it
Go to the Tower to create a new one
ENJOY !! PS =If it does not work i may have left out a file/part
I just now added MaxSimultaneousOfType = 1 to Object EyeOfSauron_NO_TIMER_2
because you dont want to create 100 eyes that are not timed !!LOL!
The max type DID work !!or you can leave it timed and sync the timer amounts
The timer can be sync-ed with the reload time so it will be
available when you choose .Just play around with the
; Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
; MinLifetime = 60000
; MaxLifetime = 60000
; End
ReloadTime = SPELL_RECHARGE_TIME_TIER_1; in milliseconds
stuff !
PS you can still use the Spellbook spell and this will clash as now you will be able to create 2 eyes
If you can fix this fine! Probably by making both Object EyeOfSauron_NO_TIMER_2 and Object EyeOfSauron_NO_TIMER
Child objects of the MAIN one EyeOfSauron and putting MaxSimultaneousOfType = 1 into that Object
Will try it myself !!Nope the eye(s) only register as an object not as a child object.I dropped all three
EyeOfSauron // EyeOfSauron_NO_TIMER // EyeOfSauron_NO_TIMER_2 /in the player template file and only
EyeOfSauron showed up onscreen this is as far as i can mod !!It works as its own objects not as childobjects
If you can 'register' the childobjects then only one eye will be available but for now your options is as follows
Use the tower eye and the spellbook eye or use only the tower eye and change the Spellpower to something else
Ridder Geel probably has more input/skill with this -Hope i could help !
Words to live by - a man who has alot of Knowledge is great !
a man who Shares this Knowledge is GREATER !
Ok problem solved :(I think i am supposed to just edit /add to this post so)
The new stuff to get only one eye on the screen at any one time is to have the same
button/command that uses the Spellpower in the tower commandset !
i.e change/add this to their respective files :
;================= Behavior = OCLSpecialPower ModuleTag_OCLEyeOfSauron SpecialPowerTemplate = SpellBookEyeofSauron OCL = SUPERWEAPON_SpawnEyeOfSauron2 CreateLocation = CREATE_AT_LOCATION AvailableAtStart = No RequirementsFilterMPSkirmish = SPELL_BOOK_REQUIREMENTS_FILTER RequirementsFilterStrategic = SPELL_BOOK_REQUIREMENTS_FILTER_STRATEGIC End CommandButton Command_SpellBookEyeofSauron Command = SPELL_BOOK SpecialPower = SpellBookEyeofSauron ButtonImage = SBEvil_EyeofSauron Options = NEED_TARGET_POS TextLabel = CONTROLBAR:EyeofSauron ButtonBorderType = ACTION DescriptLabel = CONTROLBAR:TooltipEyeofSauron RadiusCursorType = EyeOfSauronRadiusCursor InPalantir = Yes End CommandSet CREATE_EYE 1 = Command_SpellBookEyeofSauron End
You now summon the same eye as in the spellpower / it is timed /the buttons are identical wrt their reload time
so it is like using the tower commandset to get the eye or the spell power .Then this eye has a button that unsummons it
Change this any way you like -I hope my stuff helps !!
-And in secret the dark lord JUS_SAURON forged a Master MOD and into it he
poured his cruelty his malice ,and his will to dominate all mods here on middle earth
<insert-tagline-used-1000000-times-here> err <one-mod-to-rule-them-all>
Edited by JUS_SAURON, 11 December 2008 - 02:44 AM.
#223
Posted 11 December 2008 - 02:42 AM
can you post a screenshot so we can see this??it sounds interesting
#224
Posted 11 December 2008 - 02:45 AM
sure (i will have to delete one of my others as my 10MB is FULL) hold oncan you post a screenshot so we can see this??it sounds interesting
1 :purchase the eye spell
2 : in the tower palintir is the spell power like in the LEFT SIDE of screen
3 :activate either at tower or LEFT SIDE of screen
4 : It is not timed
5 : to de-activate use the eye as it has a de-activate button that basically destroys it
6 : you Cannot have more than one eye on screen .
WOW This was complex but it makes sense to be able to get the eye from the tower !
the DE-activate Button --The CONTROLBAR:GenericMountTooltip in the commandbutton for the eye needs to change
to something better as Toggle unmounted is not proper but at current i cannot make my own soooo........
sorry : i had to delete the pic as i need upload space !
Edited by JUS_SAURON, 11 December 2008 - 11:53 PM.
#225
Posted 12 December 2008 - 05:03 PM
Why does he not just 'kill self' when you press the deactivate button?
Add this in data\scripts\scriptevents.xml
Also give the eye this 'power':
And in specialpower.ini:
And all you need to do is make a button that triggers SpecialAbilityEyeKillSelf and it should work, but this is not a guarantee
Add this in data\scripts\scriptevents.xml
<EventList Name="ZeEyeOfSauronFunctions" Inherit="BaseScriptFunctions"> <EventHandler EventName="UsingSpecialOne" ScriptFunctionName="kill" DebugSingleStep="false"/> </EventList>And give the eye this (remove the old module!):
Behavior = AIUpdateInterface ModuleTag_AIUpdateInterface AILuaEventsList = ZeEyeOfSauronFunctions End
Also give the eye this 'power':
Behavior = SpecialPowerModule ModuleTag_KillStarter SpecialPowerTemplate = SpecialAbilityEyeKillSelf UpdateModuleStartsAttack = Yes End Behavior = ModelConditionSpecialAbilityUpdate ModuleTag_KillUpdate ; So the difference in SpecialPower is that it takes timing from this UpdateG, instead of simply firing. SpecialPowerTemplate = SpecialAbilityEyeKillSelf UnpackTime = 1 PreparationTime = 1 PackTime = 1 AwardXPForTriggering = 0 WhichSpecialPower = 1 End
And in specialpower.ini:
;------------------------------------------------------------------------------ SpecialPower SpecialAbilityEyeKillSelf Enum = SPECIAL_GENERAL_TARGETLESS ReloadTime = 5 End
And all you need to do is make a button that triggers SpecialAbilityEyeKillSelf and it should work, but this is not a guarantee
Ridder Geel
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users