EA 23.169 Nightly
July 18, 2025
8 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Card (1)
public bool IsExcludeFromCraft()
public bool IsExcludeFromCraft(Recipe.Ingredient ing)
Chara (1)
public void RequestProtection(Chara attacker, Action<Chara> action)
public bool RequestProtection(Chara attacker, Action<Chara> action)
ActMelee
@@ -111,10 +111,10 @@ public bool Attack(float dmgMulti = 1f, bool maxRoll = false)
return true;
}
Act.CC.renderer.PlayAnime(AnimeID.Attack, Act.TC);
Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c)
bool intercepted = (Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c)
{
Act.TC = c;
});
})).GetValueOrDefault();
Act.TP.Set(Act.TC.pos);
CellEffect effect = Act.TP.cell.effect;
if (effect != null && effect.id == 6 && EClass.rnd(2) == 0)
@@ -176,7 +176,7 @@ void _Attack(BodySlot slot)
w = slot.thing;
}
int num = 1 + Mathf.Max(Act.CC.Evalue(666), (w != null) ? w.Evalue(666) : 0);
if (!UseWeaponDist || dist <= 1 || dist <= num)
if (!UseWeaponDist || dist <= 1 || dist <= num || intercepted)
{
int num2 = GetWeaponEnc(606, addSelfEnc: false);
int scatter = GetWeaponEnc(607, addSelfEnc: false);
ActRanged
@@ -187,6 +187,10 @@ public override bool Perform()
return true;
}
}
Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c)
{
Act.TC = c;
});
Act.CC.LookAt(Act.TP);
int index = 0;
Point orgTP = Act.TP.Copy();
@@ -283,13 +287,6 @@ void Shoot(Card _tc, Point _tp)
index++;
Act.TC = _tc;
Act.TP = _tp;
if (index == 1)
{
Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c)
{
Act.TC = c;
});
}
CellEffect effect = Act.TP.cell.effect;
if (effect != null && effect.id == 6 && EClass.rnd(2) == 0)
{
Card
@@ -2462,9 +2462,9 @@ public Window.SaveData GetWindowSaveData()
return c_windowSaveData;
}
public bool IsExcludeFromCraft()
public bool IsExcludeFromCraft(Recipe.Ingredient ing)
{
if (IsUnique || c_isImportant)
if ((IsUnique && ing.id != id && !ing.idOther.Contains(id)) || c_isImportant)
{
return true;
}
Chara
@@ -7800,11 +7800,19 @@ public void GiveLovePotion(Chara c, Thing t)
t.Destroy();
}
public void RequestProtection(Chara attacker, Action<Chara> action)
public bool RequestProtection(Chara attacker, Action<Chara> action)
{
if (HasCondition<StanceTaunt>() || base.isRestrained || attacker == this || (host != null && host.isRestrained) || (base.IsPCFactionOrMinion && attacker.IsPCFactionOrMinion))
if (HasCondition<StanceTaunt>() || base.isRestrained || attacker == this)
{
return;
return false;
}
if (host != null && host.isRestrained)
{
return false;
}
if (base.IsPCFactionOrMinion && attacker.IsPCFactionOrMinion)
{
return false;
}
bool flag = false;
foreach (Chara chara in EClass._map.charas)
@@ -7868,6 +7876,7 @@ public void RequestProtection(Chara attacker, Action<Chara> action)
flag = true;
}
}
return flag;
}
public bool ShouldThrowAway(Thing t, ClearInventoryType type)
CraftUtil
@@ -304,12 +304,17 @@ void MixElements(Card t)
{
if (isFood && value3.IsFoodTraitMain)
{
product.elements.ModBase(value3.id, value3.Value);
int num5 = value3.Value;
if (product.id == "lunch_dystopia")
{
num5 *= -1;
}
product.elements.ModBase(value3.id, num5);
}
else
{
int num5 = product.elements.Base(value3.id);
if ((num5 <= 0 && value3.Value < 0 && value3.Value < num5) || (value3.Value > 0 && value3.Value > num5))
int num6 = product.elements.Base(value3.id);
if ((num6 <= 0 && value3.Value < 0 && value3.Value < num6) || (value3.Value > 0 && value3.Value > num6))
{
product.elements.SetTo(value3.id, value3.Value);
}
Props
@@ -254,7 +254,7 @@ void FindCat(string id)
SourceCategory.Row cat = EClass.sources.categories.map[id];
EClass.pc.things.Foreach(delegate(Thing t)
{
if (!t.isEquipped && t.category.IsChildOf(cat.id) && !t.IsExcludeFromCraft())
if (!t.isEquipped && t.category.IsChildOf(cat.id) && !t.IsExcludeFromCraft(ing))
{
stack.Add(t);
}
@@ -264,7 +264,7 @@ void FindCat(string id)
foreach (Thing thing2 in things)
{
Card obj = thing2.parent as Card;
if (obj != null && obj.c_lockLv == 0 && thing2.category.IsChildOf(cat.id) && !thing2.IsExcludeFromCraft())
if (obj != null && obj.c_lockLv == 0 && thing2.category.IsChildOf(cat.id) && !thing2.IsExcludeFromCraft(ing))
{
stack.Add(thing2);
}
@@ -273,7 +273,7 @@ void FindCat(string id)
}
void TryAdd(Thing t)
{
if ((tag == null || t.Thing.material.tag.Contains(tag)) && (idMat == -1 || t.material.id == idMat) && !t.IsExcludeFromCraft())
if ((tag == null || t.Thing.material.tag.Contains(tag)) && (idMat == -1 || t.material.id == idMat) && !t.IsExcludeFromCraft(ing))
{
stack.Add(t.Thing);
}
StanceSongSleep
@@ -9,7 +9,7 @@ public override void OnStart()
public override void Tick()
{
if (owner.HasCondition<ConSilence>())
if (owner.HasCondition<ConSilence>() || EClass._zone.IsRegion)
{
return;
}
TraitBaseSpellbook
@@ -195,7 +195,7 @@ public override void OnRead(Chara c)
}
if (!owner.c_idRefName.IsEmpty())
{
CardRow cardRow = EClass.sources.cards.map[owner.c_idRefName];
CardRow cardRow = EClass.sources.cards.map.TryGetValue(owner.c_idRefName, "putty");
c.Say("learn_weakspot", c, cardRow.GetName());
if (c.IsPC)
{