Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to Xbox Chaos: Modding Evolved

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Guest

General
Megalo Discussion

848 posts in this topic

It is helpful to have a thread where people can discuss Megalo in general without having to create a new thread on an insignificant topic. However, your post and any relevant posts may be split into its own thread and removed from this thread. This helps ensure content can be easily found and categorized.

Share this post


Link to post
Share on other sites

I have a gametype with augmented AAs (link) - if anybody comes across a way to detect usage of Hologram, please let me know. It doesn't trigger for "EquipmentIsInUse"

Share this post


Link to post
Share on other sites

I have a gametype with augmented AAs (link) - if anybody comes across a way to detect usage of Hologram, please let me know. It doesn't trigger for "EquipmentIsInUse"

 

A drastic approach would be to loop through all objects and check its owner player. Also be sure to check whether the distance from the player biped is greater than 0 so you won't accidentally delete the player's grenades, armor ability, weapons, etc.

Share this post


Link to post
Share on other sites

A drastic approach would be to loop through all objects and check its owner player. Also be sure to check whether the distance from the player biped is greater than 0 so you won't accidentally delete the player's grenades, armor ability, weapons, etc.

Any idea if there's an example of that somewhere I could look at? Looping through objects that is. Maybe Chess from Reach? I believe I saw the distance from player dealio implemented in something - Ricochet I think - so I can look at that for that part. Any idea what kind of object the hologram is? 

Share this post


Link to post
Share on other sites

Any idea if there's an example of that somewhere I could look at? Looping through objects that is. Maybe Chess from Reach? I believe I saw the distance from player dealio implemented in something - Ricochet I think - so I can look at that for that part. Any idea what kind of object the hologram is?

 

I believe the Weaponless Vehicles tutorial would be helpful in this case.

Edited by Matt

Share this post


Link to post
Share on other sites

 

I believe the Weaponless Vehicles tutorial would be helpful in this case.

Alrighty - so this is what I've got so far after adapting that code to my needs. It's untested but it compiles. 

<E type="Action" name="Branch"> <Param type="VirtualTrigger">   <VT type="VirtualTrigger">	<E type="Condition" name="ObjectIsSameType" unionGroupID="-2">		<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />		<Param type="ObjectTypeIndex">hologram_equipment</Param>	</E>	<E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" execMode="OnEachObject" name="Trigger17_Subroutine1"> <!--sub loop for each object-->          <Elements>            <E type="Action" name="VariableOperation"> <!--store current sub loop object-->              <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch1" />              <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="Iterator.Object" />              <Param type="OperationType">Set</Param>            </E>            <E type="Action" name="ItemGetOwnerPlayer"> <!--return owner of sub loop current object-->              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />            </E>            <E type="Action" name="DistanceBetweenObjects"> <!--store distance between sub loop object and trigger object in scratch-->              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />              <Param type="CustomReference" varRefType="Scratch">NumericScratch0</Param>              <Param type="Bool">False</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-2"> <!--If distance stored in scratch is greater than zero-->              <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch0</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>              <Param type="ComparisonType">GreaterThan</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-2"> <!--and the owner of the sub loop object is current player-->              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="ComparisonType">Equal</Param>            </E>			<E type="Action" name="VariableOperation"> <!--flag AA as activated-->				<Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="Iterator.Player">PlayerNumeric7</Param>				<Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>				<Param type="OperationType">Set</Param>			</E>           </Elements>        </T>      </Param>    </E>   </VT> </Param></E>

So I could use a timer to terminate the effect after the max duration of a hologram, but if somebody kills the hologram sooner, it would look a little messy. Any idea how I might be able to check if this object gets deleted? 

Share this post


Link to post
Share on other sites

So I could use a timer to terminate the effect after the max duration of a hologram, but if somebody kills the hologram sooner, it would look a little messy. Any idea how I might be able to check if this object gets deleted?

Store the hologram biped in an object variable and check if it's == to null (none)

Edited by Matt

Share this post


Link to post
Share on other sites

Store the hologram biped in an object variable and check if it's == to null (none)

Okay - so would this code (each piece placed appropriately) do the trick? I'm still a bit hazy on type varRefType usage. 

<PlayerVariables>	  <Objects>	    <Var networkState="HighPriority" name="PlayerObject0" />	  </Objects></PlayerVariables><E type="Action" name="VariableOperation"> <!--store object-->	<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Player">PlayerObject0</Param>	<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />	<Param type="OperationType">Set</Param></E><E type="Condition" name="Comparison" unionGroupID="-2"> <!--check if object still exists-->	<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Player">PlayerObject0</Param>	<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="NONE" />	<Param type="ComparisonType">NotEqual</Param></E>

And is high network priority appropriate for something like this, or should that be reserved just for scoring etc?

 

Edit: I'm having trouble with the syntax for storing the object. After digging through several gametypes, I came up with the following, but I'm still getting errors. It keeps telling me that Iterator.Player is not a valid member of ObjectType.

<E type="Action" name="VariableOperation"> <!--store object--> <!--error-->  <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="Iterator.Player">PlayerObject0</Param>  <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />  <Param type="OperationType">Set</Param></E>

I also tried storing the current player in a GlobalPlayer variable and passing it in that way, but it still didn't like it. 

 

Edit again - got it to compile as follows

<E type="Action" name="VariableOperation"> <!--store object--> 	<Param type="VarReference" varRefKind="Object" varRefType="Player.ObjectVar" dataType="Iterator.Player">PlayerObject0</Param>    <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="Iterator.Object" />	<Param type="OperationType">Set</Param></E>

Here's hoping it works

Edited by Gordon

Share this post


Link to post
Share on other sites

Ok, so I got it to work, sort of. As long as I comment out this condition it works (but presumably only for one player)

<E type="Condition" name="Comparison" unionGroupID="-2"> <!-- and the owner of the sub loop object is current player -->              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="ComparisonType">Equal</Param>            </E>

So does that mean that holograms aren't owned by a player? Or am I doing it wrong?

 

Edit: Here's my whole subroutine (trigger branch, technically I suppose) - see anything that might be causing this problem? I'm thinking it's probably just that holograms aren't owned by the player.

<E type="Action" name="Branch">  <Param type="VirtualTrigger">   <VT type="VirtualTrigger">	<E type="Condition" name="ObjectIsSameType" unionGroupID="-2">		<Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />		<Param type="ObjectTypeIndex">hologram_equipment</Param>	</E>	<E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" execMode="OnEachObject" name="Trigger17_Subroutine1"> <!--sub loop for each object-->          <Elements>            <E type="Action" name="ItemGetOwnerPlayer"> <!--return owner of sub loop current object-->              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />            </E>            <E type="Action" name="DistanceBetweenObjects"> <!--store distance between sub loop object and trigger object in scratch-->              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="Iterator.Object" />              <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />              <Param type="CustomReference" varRefType="Scratch">NumericScratch0</Param>              <Param type="Bool">False</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-2"> <!--If distance stored in scratch is greater than zero-->              <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch0</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>              <Param type="ComparisonType">NotEqual</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-2"> <!-- and the owner of the sub loop object is current player -->              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />              <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="ComparisonType">Equal</Param>            </E>			<E type="Action" name="VariableOperation"> <!--store object--> 				<Param type="VarReference" varRefKind="Object" varRefType="Player.ObjectVar" dataType="Iterator.Player">PlayerObject0</Param>                <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="Iterator.Object" />				<Param type="OperationType">Set</Param>			</E>			<E type="Action" name="VariableOperation"> <!--flag AA as activated-->				<Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="Iterator.Player">PlayerNumeric7</Param>				<Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>				<Param type="OperationType">Set</Param>			</E>           </Elements>        </T>      </Param>    </E>	</VT></Param></E>

Edit again: *sigh* well, I used a Chudmessage to display the owner player that it detects as the object is deleted - that way I'm sure it's the hologram deleting. It's saying, "Infinity Slayer". I'm guessing that means I'm S.O.L. on this one. I suppose I can check if it's a biped with no owner or something, and at least then I'll be sure to get holograms, but I think one way or the other the best I'll be able to get is if more than one player uses a hologram at the same time, the effect will apply to both players according to one, or randomly between the two, holograms' status. 

Is this something that could be investigated further by someone with a modded xbox? I don't have one unfortunately, so I don't even know what the range of possibility is. If there was some round-about way to accomplish this - detecting hologram usage I mean, we could ostensibly have full control, as much as megalo can, over all of the retail AAs. The rest of them trigger EquipmentIsInUse fine. (Well, except regen which only triggers as it spawns the field and then it's 'off', but that works well enough, given regen's fixed time. You can't destroy a regen field, can you?)

 

And hell, why not - is it possible to see the values a given object uses with a modded xbox? I'm curious if AAs store their charge in some way that might be accessible like ObjectHealth. They appear to keep individual charge values and recharge by themselves while dropped. I have a gametype with AA recharge disabled and dropping them and then picking them back up yields a partially charged AA sometimes. 

Edited by Gordon

Share this post


Link to post
Share on other sites

What is DBID?

Script data in gametype files are binary data. There's nothing readable like "ObjectKill" or "ObjectCreate", it's all based on id's. Each action and condition have their own unique ID and that's what DBID is.

 

So does that mean that holograms aren't owned by a player?

Yeah, that could be it. Like you said, you can check whether a biped has a player or not. A hacky approach would be to detect the distance of the hologram to the player and whoever it's closest to is the owner. This might work pretty well in most cases.

We're still treading uncharted lands. There are a lot of things we don't know at this time.

P.S. If it's saying Infinity Slayer, you have an error in your XML data. If it has no owner it would say "null" if I remember correctly.

By the way, wasn't there a variant of HaloBall in Reach where you have to send holograms to the other side of the map?

Edited by Matt

Share this post


Link to post
Share on other sites

I recently helped identify a couple of conditions. They are conditions 19, 20, 21 and 24 in this thread.

Note that conditions 19, 20, and 21 still haven't been fully identified yet. They all produce the same result in my test session, but the code says they check for something. If you can figure out what this something is, be sure to let us know!

Share this post


Link to post
Share on other sites

Yeah, that could be it. Like you said, you can check whether a biped has a player or not. A hacky approach would be to detect the distance of the hologram to the player and whoever it's closest to is the owner. This might work pretty well in most cases.

We're still treading uncharted lands. There are a lot of things we don't know at this time.

P.S. If it's saying Infinity Slayer, you have an error in your XML data. If it has no owner it would say "null" if I remember correctly.

By the way, wasn't there a variant of HaloBall in Reach where you have to send holograms to the other side of the map?

What kind of object is a biped? I mean, to use ObjectIsSameType do you think the hologram will return "spartan"?

 

And yes, I know it's a lot of unknowns - I'm more-so posing a question in case anybody finds an answer than demanding an absolute solution lol 

 

If there's something wrong with my code that's causing the non-NULL response, it would probably be ItemGetOwnerPlayer, right? Do you think I need some alternative action, or is there any way I can change the parameters to get a different result?

 

And yes, there was a Haloball variant like that. Unfortunately I believe it operated on Forge mechanics, using the holograms to trigger land mines which initiated a chain reaction to mechanically drop a scorable object into a goal. 

 

And any idea how much data you can access with a modded xbox? There has gotta be a way to pull an AA's charge level. That would make all of this unnecessary and simplify my code from a couple pages down to a handful of lines lol 

Share this post


Link to post
Share on other sites

The hologram itself is a biped but there's no entry for it in the motl table so you can't use ObjectIsSameType. The error most likely lies with your debug chud message action.

It doesn't matter what data is available, all it boils down is whether Megalo provides an interface to this data. I'll take a look again and get back to you if I find anything.

Share this post


Link to post
Share on other sites

The hologram itself is a biped but there's no entry for it in the motl table so you can't use ObjectIsSameType. The error most likely lies with your debug chud message action.

It doesn't matter what data is available, all it boils down is whether Megalo provides an interface to this data. I'll take a look again and get back to you if I find anything.

That's a bummer. Is there a way to check if it's a biped, or some alternative to ObjectIsSameType? Seems like it could conflict with things like discarded weapons and objectives if I can't specify that it be a biped. At this point I think I'll try getting the distance between two players to output via a debug chud, and seeing what the minimum value is. I'm guessing the hologram starts at 0 and moves away, so I'll (hopefully) be able to check IF distance >0 AND distance <1 or something like that and then store the object in the hopes that it's the hologram. 

 

Any idea how to fix the chud? I just found one that outputted a player stored in a global variable, and set up my ItemGetOwnerPlayer variable to copy to one. 

<E type="Action" name="ChudMessage">	<Param type="TargetVar" targetType="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />	<Param type="SoundIndex">NONE</Param>	<Param type="Tokens2" stringIndex="%s owns the current object" tokenCount="1">	  <Token0 type="Player" varRefType="ExplicitPlayerType" dataType="GlobalPlayer1" />	</Param></E>
And yeah, I know it's all about what actually has 'hooks' or whatever. I'm just hoping they cut corners and stored the charge value for AAs in it's ObjectShields data location or something like that that we can access. And thanks - I'd appreciate that :smile: Here's hoping it pans out. Edited by Gordon

Share this post


Link to post
Share on other sites

@Gordon

There may be other actions which are better-suited but one thing that pops to my mind is executing PlayerSetBiped and checking whether the operation has succeeded or not. If it's all done in one tick, I don't think anyone will notice anything in-game but don't quote me on that.

 

And the reason why I said there has to be something wrong with your ChudMessage action is because it shouldn't be displaying "Infinity Slayer" in this case. Ksoft is using the reference to a different string instead of the intended string.

Share this post


Link to post
Share on other sites

Some questions:

1)How do you disable the Killcam? do I just set it to "False" or completely remove it?

 

2)Anyone got the last TU Weapon Tuning data? I copied it from Teancum's assault but the BR gets a surreal buff, I dunno why.

 

3)My headhunter gametype has a pick up radius option, is this the correct way to introduce the userdef data?

<E type="Action" name="ObjectSetBoundary">            <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="Iterator.Player" />            <Param type="Shape" shapeType="Cylinder">              <Radius varRefType="UserDefinedOption">Pick Up Radius</Radius>              <Top varRefType="Int16">5</Top>              <Bottom varRefType="Int16">3</Bottom>            </Param>          </E>
Edited by Gabotron ES

Share this post


Link to post
Share on other sites

Some questions:

1)How do you disable the Killcam? do I just set it to "False" or completely remove it?

2)My headhunter gametype has a pick up radius option, is this the correct way to introduce the userdef data?

<E type="Action" name="ObjectSetBoundary">            <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="Iterator.Player" />            <Param type="Shape" shapeType="Cylinder">              <Radius varRefType="UserDefinedOption">Pick Up Radius</Radius>              <Top varRefType="Int16">5</Top>              <Bottom varRefType="Int16">3</Bottom>            </Param>          </E>

UserDefinedOptions need an index value to link to I believe.

Share this post


Link to post
Share on other sites

How do you disable the Killcam? do I just set it to "False" or completely remove it?

Add these attributes to the <Misc> element:

killCamEnabled="False"

finalKillCamEnabled="False"

Removing them should default to False but don't quote me on that.

 

Anyone got the last TU Weapon Tuning data? I copied it from Teancum's assault but the BR gets a surreal buff, I dunno why.

Here you go (taken from Infinity Rumble):

    <WeaponTuning>      <TwoBarrels>        <HomingRifle>          <Primary>            <Value6>35</Value6>          </Primary>          <Secondary>            <Value6>39</Value6>          </Secondary>        </HomingRifle>      </TwoBarrels>      <OneBarrel>        <BurstGun>          <Value16>0.0479939654</Value16>          <Value20>7.500193</Value20>          <Value21>7.500193</Value21>          <Value22>7.500193</Value22>        </BurstGun>        <MagnumPistol>          <Value20>17.2992249</Value20>          <Value21>17.2992249</Value21>          <Value22>17.2992249</Value22>        </MagnumPistol>        <AssaultRifle>          <Value16>0.03490715</Value16>          <Value20>8.999373</Value20>          <Value21>8.999373</Value21>          <Value22>8.999373</Value22>        </AssaultRifle>        <BattleRifle>          <Value6>35</Value6>          <Value20>7.500193</Value20>          <Value21>7.500193</Value21>          <Value22>7.500193</Value22>        </BattleRifle>        <LMG>          <Value20>8.999373</Value20>          <Value21>8.999373</Value21>          <Value22>8.999373</Value22>        </LMG>        <Carbine>          <Value16>0.00523412554</Value16>          <Value20>13.9890118</Value20>          <Value21>13.9890118</Value21>          <Value22>13.9890118</Value22>        </Carbine>        <StormRifle>          <Value16>0.0445065461</Value16>          <Value18>197</Value18>          <Value20>9.60019</Value20>          <Value21>9.60019</Value21>          <Value22>9.60019</Value22>        </StormRifle>        <WarthogGunner>          <Value20>11.4999142</Value20>          <Value21>11.4999142</Value21>          <Value22>11.4999142</Value22>        </WarthogGunner>        <MechChaingun>          <Value20>12.0005951</Value20>          <Value21>12.0005951</Value21>          <Value22>12.0005951</Value22>        </MechChaingun>      </OneBarrel>      <OneBarrelWeapons>        <BurstGun>          <Value5>0.0610866249</Value5>          <Value9>0.1221725</Value9>        </BurstGun>        <AssaultRifle>          <Value5>0.05235964</Value5>          <Value9>0.1221725</Value9>        </AssaultRifle>        <MarksmanRifle>          <Value7>11.9996414</Value7>        </MarksmanRifle>        <BattleRifle>          <Value7>9.000327</Value7>        </BattleRifle>        <Carbine>          <Value7>9.000327</Value7>        </Carbine>        <StormRifle>          <Value5>0.05235964</Value5>          <Value9>0.1221725</Value9>        </StormRifle>        <WarthogGunner_Gauss>          <Value6>14.0004559</Value6>          <Value7>11.9996414</Value7>          <Value10>11.9996414</Value10>          <Value11>9.999781</Value11>        </WarthogGunner_Gauss>      </OneBarrelWeapons>      <TwoBarrelWeapons>        <HomingRifle>          <Value7>11.9996414</Value7>        </HomingRifle>      </TwoBarrelWeapons>    </WeaponTuning>

Share this post


Link to post
Share on other sites

 

Thanks , do you know about the userdef thing? Thunder mentioned indexes but I didn't figure it out :(

<E type="Action" name="ObjectSetBoundary">            <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="Iterator.Player" />            <Param type="Shape" shapeType="Cylinder">              <Radius varRefType="UserDefinedOption">Pick Up Radius</Radius>              <Top varRefType="Int16">5</Top>              <Bottom varRefType="Int16">3</Bottom>            </Param>          </E>
Edited by Gabotron ES

Share this post


Link to post
Share on other sites

ksoft selects the id based on the value contained in the element which in this case is "Pick Up Radius".

 

That being said, your code seems correct. Are you having issues with it?

Share this post


Link to post
Share on other sites

Can you use the ObjectKillInstantlly on an Iterator.player to kill said player?

 

Also what are valid values for scaling (ObjectScale) an object? are 100, 200 and 300 ok? can I go up to say 500?

Edited by Gabotron ES

Share this post


Link to post
Share on other sites

Can you use the ObjectKillInstantlly on an Iterator.player to kill said player?

 

Also what are valid values for scaling (ObjectScale) an object? are 100, 200 and 300 ok? can I go up to say 500?

Use it on the player's biped. That will kill the player. But it wont be a death animation. Instant respawn instead...

Share this post


Link to post
Share on other sites

Can you use the ObjectKillInstantlly on an Iterator.player to kill said player?

 

Also what are valid values for scaling (ObjectScale) an object? are 100, 200 and 300 ok? can I go up to say 500?

I don't think there's an upper limit on scale. I've used 300 before with no issues. Player biped are different, though as when you scale them over ~150% you can see the legs of the biped in first-person view.

Edited by Teancum
Gabotron ES likes this

Share this post


Link to post
Share on other sites

Can you use the ObjectKillInstantlly on an Iterator.player to kill said player?

 

Also what are valid values for scaling (ObjectScale) an object? are 100, 200 and 300 ok? can I go up to say 500?

 

Although what said is correct if the second parameter is set to true. You can set it to false to kill a player normally.

 

You can go up to 32767 since Integer References are Int16's, if I remember correctly. The value is the actual percentage meaning 100 = 100%, 2000 = 2000%, and so on.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.