Merge pull request #327 from misternebula/dev

0.12.1
This commit is contained in:
_nebula 2021-10-26 19:23:23 +01:00 committed by GitHub
commit 91fbfd1057
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 242 additions and 196 deletions

Binary file not shown.

View File

@ -1,26 +1,36 @@
ManifestFileVersion: 0
CRC: 1518538429
CRC: 3328595786
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: cda9c91e090f27b94734bfca3a7cb9e2
Hash: b1b55f9f86f72ed72608b36f0729af6d
TypeTreeHash:
serializedVersion: 2
Hash: 90db08ff16f71e0f4005d38a4650eff2
Hash: 50a27bfc3e679077929938a6fa57f4db
HashAppended: 0
ClassTypes:
- Class: 1
Script: {instanceID: 0}
- Class: 21
Script: {instanceID: 0}
- Class: 28
Script: {instanceID: 0}
- Class: 48
Script: {instanceID: 0}
- Class: 114
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
- Class: 114
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- Class: 114
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- Class: 114
Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
- Class: 115
Script: {instanceID: 0}
- Class: 128
Script: {instanceID: 0}
- Class: 213
Script: {instanceID: 0}
- Class: 222
Script: {instanceID: 0}
- Class: 223
@ -30,4 +40,5 @@ ClassTypes:
SerializeReferenceClassIdentifiers: []
Assets:
- Assets/DialogueBubble.prefab
- Assets/GameAssets/Texture2D/UI_DialogueBox_d.png
Dependencies: []

View File

@ -3,7 +3,7 @@ CRC: 3095198160
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: aeeeeba83ed0a32973e863d3787067c0
Hash: 44badca86c2222e5cc39a8497439be0c
TypeTreeHash:
serializedVersion: 2
Hash: b2ece8ae09df261ff59d764d08696641

View File

@ -3,7 +3,7 @@ CRC: 1991351671
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 494875ba5d9a67b7d87421e95e386357
Hash: e0f93ad04981fd266a4300b0be721792
TypeTreeHash:
serializedVersion: 2
Hash: 6968c5d2bbef57a79632abd61ea01bb3

View File

@ -22,9 +22,8 @@ namespace QSB.ConversationSync
Instance = this;
_boxPrefab = QSBCore.ConversationAssetBundle.LoadAsset<GameObject>("assets/dialoguebubble.prefab");
// BUG : make dynamic so it can be different sizes!
// the dynamic font seems to be super lo-res at this size...?
var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold");
var font = (Font)Resources.Load(@"fonts\english - latin\HVD Fonts - BrandonGrotesque-Bold_Dynamic");
if (font == null)
{
DebugLog.ToConsole("Error - Font is null!", MessageType.Error);

View File

@ -4,6 +4,7 @@ using QSB.Player;
using QSB.Player.TransformSync;
using QSB.Utility;
using QuantumUNET.Components;
using System;
namespace QSB.Events
{
@ -78,14 +79,21 @@ namespace QSB.Events
return;
}
if (message.FromId == QSBPlayerManager.LocalPlayerId ||
QSBPlayerManager.IsBelongingToLocalPlayer(message.FromId))
try
{
OnReceiveLocal(QSBCore.IsHost, message);
return;
}
if (message.FromId == QSBPlayerManager.LocalPlayerId ||
QSBPlayerManager.IsBelongingToLocalPlayer(message.FromId))
{
OnReceiveLocal(QSBCore.IsHost, message);
return;
}
OnReceiveRemote(QSBCore.IsHost, message);
OnReceiveRemote(QSBCore.IsHost, message);
}
catch (Exception ex)
{
DebugLog.ToConsole($"Error - Exception handling message {message.GetType().Name} : {ex}", MessageType.Error);
}
}
}
}

View File

@ -69,7 +69,7 @@ namespace QSB.OrbSync.Events
DebugLog.ToConsole("Error - FromPlayer is null!", MessageType.Error);
}
var orbSync = NomaiOrbTransformSync.OrbTransformSyncs
var orbSync = NomaiOrbTransformSync.OrbTransformSyncs.Where(x => x != null)
.FirstOrDefault(x => x.AttachedObject == QSBWorldSync.OldOrbList[message.ObjectId].transform);
if (orbSync == null)
{
@ -115,13 +115,13 @@ namespace QSB.OrbSync.Events
return;
}
if (!NomaiOrbTransformSync.OrbTransformSyncs.Any(x => x.AttachedObject == QSBWorldSync.OldOrbList[message.ObjectId].transform))
if (!NomaiOrbTransformSync.OrbTransformSyncs.Where(x => x != null).Any(x => x.AttachedObject == QSBWorldSync.OldOrbList[message.ObjectId].transform))
{
DebugLog.ToConsole($"Error - No NomaiOrbTransformSync has AttachedOrb with objectId {message.ObjectId}!");
return;
}
var orb = NomaiOrbTransformSync.OrbTransformSyncs
var orb = NomaiOrbTransformSync.OrbTransformSyncs.Where(x => x != null)
.First(x => x.AttachedObject == QSBWorldSync.OldOrbList[message.ObjectId].transform);
orb.enabled = true;
}

View File

@ -59,6 +59,7 @@ namespace QSB.Utility
if (Keyboard.current[Key.Numpad9].wasPressedThisFrame)
{
PlayerData.SaveWarpedToTheEye(60);
LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite);
}
}

View File

@ -165,7 +165,7 @@ namespace QSB.WorldSync
return;
}
var orbSync = NomaiOrbTransformSync.OrbTransformSyncs.FirstOrDefault(x => x.AttachedObject == affectingOrb.transform);
var orbSync = NomaiOrbTransformSync.OrbTransformSyncs.Where(x => x != null).FirstOrDefault(x => x.AttachedObject == affectingOrb.transform);
if (orbSync == null)
{
DebugLog.ToConsole($"Error - No NomaiOrbTransformSync found for {affectingOrb.name} (For slot {slot.name})!", MessageType.Error);

View File

@ -8,7 +8,7 @@
"body": "- Disable *all* other mods. (Can heavily affect performance)\n- Make sure you are not running any other network-intensive applications.\n- Make sure you have forwarded/opened the correct ports. (See the GitHub readme.)"
},
"uniqueName": "Raicuparta.QuantumSpaceBuddies",
"version": "0.12.0-pr4",
"version": "0.12.1",
"owmlVersion": "2.1.0",
"dependencies": [ "_nebula.MenuFramework" ]
}

View File

@ -1,47 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1531056750600734}
m_IsPrefabParent: 1
--- !u!1 &1143829915878388
--- !u!1 &679228622185909741
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224902966460615240}
- component: {fileID: 222785523450871998}
- component: {fileID: 114075889546086968}
- component: {fileID: 223100826173633414}
m_Layer: 0
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1531056750600734
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224161822944405660}
- component: {fileID: 222075293424074192}
- component: {fileID: 114008001535486946}
- component: {fileID: 223470330008512890}
- component: {fileID: 114167403308441852}
- component: {fileID: 114670735829080676}
- component: {fileID: 5510779269599846461}
- component: {fileID: 130575080623899817}
- component: {fileID: 916729221779553788}
- component: {fileID: 4465360732322480311}
- component: {fileID: 2271490637008274700}
- component: {fileID: 6454923117947624182}
m_Layer: 0
m_Name: DialogueBubble
m_TagString: Untagged
@ -49,131 +21,84 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &114008001535486946
--- !u!224 &5510779269599846461
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.00286, y: 0.00286, z: 1}
m_Children:
- {fileID: 1910662446065868499}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 900, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &130575080623899817
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_CullTransparentMesh: 0
--- !u!114 &916729221779553788
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 2100000, guid: 08e1a88dddd41604db20b0dcb92d17d8, type: 2}
m_Color: {r: 1, g: 0.68275857, b: 0, a: 1}
m_Material: {fileID: 2100000, guid: 4e6da33672306aa4f9e9fe70ddfd9d8b, type: 2}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 67f35d66c98319540bc681e5a18105d2, type: 2}
m_FontSize: 1
m_Font: {fileID: 12800000, guid: 1c803be2199fabd41b853684b5e45b6a, type: 3}
m_FontSize: 35
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 150
m_MaxSize: 300
m_Alignment: 4
m_AlignByGeometry: 1
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text:
--- !u!114 &114075889546086968
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1143829915878388}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.50980395}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &114167403308441852
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!114 &114670735829080676
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0, g: 0, b: 0, a: 1}
m_EffectDistance: {x: -0.04, y: -0.04}
m_UseGraphicAlpha: 1
--- !u!222 &222075293424074192
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
--- !u!222 &222785523450871998
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1143829915878388}
--- !u!223 &223100826173633414
m_Text: 'OOPSIE WOOPSIE!!
This isn''t meant to appear.
<i><size=20> what
did i do wrong...</size></i>
Submit an error to the QSB Github with the
reproduction steps please!
<size=30>- Your humble servant, <color=magenta>_nebula</color></size>'
--- !u!223 &4465360732322480311
Canvas:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1143829915878388}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 1
m_OverridePixelPerfect: 1
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: -9999
m_TargetDisplay: 0
--- !u!223 &223470330008512890
Canvas:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
@ -188,40 +113,135 @@ Canvas:
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &224161822944405660
--- !u!114 &2271490637008274700
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!114 &6454923117947624182
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 679228622185909741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 5
--- !u!1 &8766783471207652418
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1910662446065868499}
- component: {fileID: 2884875585792430400}
- component: {fileID: 4192568564237117109}
- component: {fileID: 4513423881476039006}
m_Layer: 0
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1910662446065868499
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1531056750600734}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.1, y: 0.1, z: 1}
m_Children:
- {fileID: 224902966460615240}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 25, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224902966460615240
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1143829915878388}
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8766783471207652418}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224161822944405660}
m_Father: {fileID: 5510779269599846461}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -1, y: -1}
m_SizeDelta: {x: 2, y: 2}
m_AnchoredPosition: {x: -20, y: -20.000008}
m_SizeDelta: {x: 40, y: 40}
m_Pivot: {x: 0, y: 0}
--- !u!222 &2884875585792430400
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8766783471207652418}
m_CullTransparentMesh: 0
--- !u!114 &4192568564237117109
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8766783471207652418}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.72156864}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 5e9aeeea80dcad34ea121719721a5a45, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!223 &4513423881476039006
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8766783471207652418}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 1
m_OverridePixelPerfect: 1
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: -9999
m_TargetDisplay: 0

View File

@ -1,8 +1,7 @@
fileFormatVersion: 2
guid: 8a96f886e4fad144f8fb9a5e3c2712df
NativeFormatImporter:
PrefabImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName: conversation
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e2241e4bc9f9e994c9d743879f2f5fb2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: