From 2f4ecd9938c2efb1cc3f83d4b68d2f8b508e4451 Mon Sep 17 00:00:00 2001 From: Cold-Mint Date: Thu, 27 Jun 2024 23:11:30 +0800 Subject: [PATCH] =?UTF-8?q?Fixed=20an=20issue=20where=20items=20can=20be?= =?UTF-8?q?=20thrown=20without=20collision=20damage.=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=89=A9=E5=93=81=E6=89=94=E5=87=BA=E5=90=8E=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E7=A2=B0=E6=92=9E=E4=BC=A4=E5=AE=B3=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locals/Log.csv | 6 +++++- project.godot | 1 - scripts/character/CharacterTemplate.cs | 3 ++- scripts/pickable/PickAbleTemplate.cs | 10 ++++++++++ scripts/projectile/ProjectileTemplate.cs | 15 ++++++++------- scripts/weapon/WeaponTemplate.cs | 2 -- 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/locals/Log.csv b/locals/Log.csv index f0ca0bd..ac47c50 100644 --- a/locals/Log.csv +++ b/locals/Log.csv @@ -37,4 +37,8 @@ log_found_item_types,从文件中找到{0}个物品类型,Found {0} item types i log_register_item,注册物品类型{0}结果为{1},Registered item type {0}; results in {1},登録されたアイテム・タイプ {0} の結果は {1} です。 log_error_when_open_item_regs_dir,尝试打开物品信息目录时发生错误,Error when opening itemRegs dir,アイテム情報カタログを開こうとしてエラーが発生しました。 log_wrong_custom_arg,不匹配的参数:类型为{0}而值为{1},Mismatched parameter: type {0} and value {1},パラメータの不一致:型{0}と値{1}。 -log_item_container_is_null,物品容器为空,Item container is null,アイテム・コンテナが空です \ No newline at end of file +log_item_container_is_null,物品容器为空,Item container is null,アイテム・コンテナが空です +log_item_has_no_owner,物品没有所有者,Item has no owner,アイテムに所有者がいません +log_no_damage_between_camps,没有阵营之间的伤害,No damage between camps,陣営間のダメージはありません +log_contact_damage_disabled_during_collision,在碰撞期间禁用接触伤害,Contact damage disabled during collision,衝突中に接触ダメージが無効になります +log_owner_of_the_item_is_not_character,物品的所有者不是角色,The owner of the item is not a character,アイテムの所有者はキャラクターではありません \ No newline at end of file diff --git a/project.godot b/project.godot index c455129..fa06aa6 100644 --- a/project.godot +++ b/project.godot @@ -147,7 +147,6 @@ hotbar_previous={ [internationalization] locale/translations=PackedStringArray("res://locals/DeathInfo.en.translation", "res://locals/DeathInfo.ja.translation", "res://locals/DeathInfo.zh.translation", "res://locals/InputMapping.en.translation", "res://locals/InputMapping.ja.translation", "res://locals/InputMapping.zh.translation", "res://locals/Log.en.translation", "res://locals/Log.ja.translation", "res://locals/Log.zh.translation", "res://locals/Slogan.en.translation", "res://locals/Slogan.ja.translation", "res://locals/Slogan.zh.translation", "res://locals/UI.en.translation", "res://locals/UI.ja.translation", "res://locals/UI.zh.translation", "res://locals/Item.en.translation", "res://locals/Item.ja.translation", "res://locals/Item.zh.translation", "res://locals/Action.en.translation", "res://locals/Action.ja.translation", "res://locals/Action.zh.translation", "res://locals/Misc.en.translation", "res://locals/Misc.ja.translation", "res://locals/Misc.zh.translation") -locale/test="en" [layer_names] diff --git a/scripts/character/CharacterTemplate.cs b/scripts/character/CharacterTemplate.cs index 072bb1e..4250e06 100644 --- a/scripts/character/CharacterTemplate.cs +++ b/scripts/character/CharacterTemplate.cs @@ -679,6 +679,8 @@ public partial class CharacterTemplate : CharacterBody2D return; } + pickAbleTemplate.Sleeping = false; + pickAbleTemplate.Owner = this; pickAbleTemplate.Picked = false; var timer = new Timer(); pickAbleTemplate.AddChild(timer); @@ -694,7 +696,6 @@ public partial class CharacterTemplate : CharacterBody2D pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Platform, true); timer.QueueFree(); }; - pickAbleTemplate.Sleeping = false; //Setting an initial speed of 0 for items here prevents the problem of throwing items too fast. //在这里给物品设置一个为0的初始速度,可防止扔出物品时速度过快的问题。 pickAbleTemplate.LinearVelocity = Vector2.Zero; diff --git a/scripts/pickable/PickAbleTemplate.cs b/scripts/pickable/PickAbleTemplate.cs index bf2b40c..a52c4ac 100644 --- a/scripts/pickable/PickAbleTemplate.cs +++ b/scripts/pickable/PickAbleTemplate.cs @@ -2,6 +2,7 @@ using ColdMint.scripts.camp; using ColdMint.scripts.character; using ColdMint.scripts.damage; +using ColdMint.scripts.debug; using ColdMint.scripts.inventory; using Godot; @@ -116,12 +117,20 @@ public partial class PickAbleTemplate : RigidBody2D, IItem { if (!EnableContactInjury) { + LogCat.LogWarning("contact_damage_disabled_during_collision"); return; } + if (Owner == null) + { + LogCat.LogWarning("item_has_no_owner"); + return; + } + if (Owner is not CharacterTemplate ownerCharacterTemplate) { + LogCat.LogWarning("owner_of_the_item_is_not_character"); return; } @@ -131,6 +140,7 @@ public partial class PickAbleTemplate : RigidBody2D, IItem CampManager.GetCamp(characterTemplate.CampId)); if (!canCauseHarm) { + LogCat.Log("no_damage_between_camps"); return; } diff --git a/scripts/projectile/ProjectileTemplate.cs b/scripts/projectile/ProjectileTemplate.cs index 57e2434..80a3ad1 100644 --- a/scripts/projectile/ProjectileTemplate.cs +++ b/scripts/projectile/ProjectileTemplate.cs @@ -1,5 +1,4 @@ using System; - using ColdMint.scripts.camp; using ColdMint.scripts.character; using ColdMint.scripts.damage; @@ -66,10 +65,10 @@ public partial class ProjectileTemplate : CharacterBody2D Area2D.Monitoring = true; Area2D.BodyEntered += OnBodyEnter; Area2D.BodyExited += OnBodyExited; - Durability = GetMeta("Durability", "1").AsDouble(); - MaxDamage = GetMeta("MaxDamage", "7").AsInt32(); - MinDamage = GetMeta("MinDamage", "5").AsInt32(); - DamageType = GetMeta("DamageType", Config.DamageType.Physical).AsInt32(); + Durability = GetMeta("Durability", "1").AsDouble(); + MaxDamage = GetMeta("MaxDamage", "7").AsInt32(); + MinDamage = GetMeta("MinDamage", "5").AsInt32(); + DamageType = GetMeta("DamageType", Config.DamageType.Physical).AsInt32(); KnockbackForce = GetMeta("Knockback", Vector2.Zero).AsVector2(); //life(ms) //子弹的存在时间(毫秒) @@ -130,7 +129,7 @@ public partial class ProjectileTemplate : CharacterBody2D //First get the owner's camp and compare it with the target camp //先获取主人的阵营与目标阵营进行比较 var canCauseHarm = CampManager.CanCauseHarm(CampManager.GetCamp(ownerCharacterTemplate.CampId), - CampManager.GetCamp(characterTemplate.CampId)); + CampManager.GetCamp(characterTemplate.CampId)); return canCauseHarm; } @@ -230,7 +229,9 @@ public partial class ProjectileTemplate : CharacterBody2D /// 当子弹离开节点时 /// /// - protected virtual void OnBodyExited(Node2D node) { } + protected virtual void OnBodyExited(Node2D node) + { + } /// diff --git a/scripts/weapon/WeaponTemplate.cs b/scripts/weapon/WeaponTemplate.cs index 1fc0aa7..4ae56ed 100644 --- a/scripts/weapon/WeaponTemplate.cs +++ b/scripts/weapon/WeaponTemplate.cs @@ -48,8 +48,6 @@ public abstract partial class WeaponTemplate : PickAbleTemplate /// [Export] private Vector2 _recoil; - public override void _Ready() { } - /// /// Discharge of the weapon /// 武器开火