EA 23.54
December 10, 2024
13 files modified. 2 new files created.
Important Changes
None.
ActRide
@@ -123,7 +123,10 @@ public static void Unride(Chara host, bool parasite = false, bool talk = true)
host.SetDirtySpeed();
chara.SetDirtySpeed();
host.Refresh();
Point randomNeighbor = host.pos.GetRandomNeighbor();
chara.MoveImmediate(randomNeighbor);
Point randomPoint = host.pos.GetRandomPoint(1);
if (randomPoint != null)
{
chara.MoveImmediate(randomPoint);
}
}
}
BaseListPeople
@@ -292,6 +292,10 @@ public override void OnClick(Chara c, ItemGeneral i)
{
if (c.pccData == null)
{
uIContextMenu.AddButton("editPCC", delegate
{
EClass.ui.AddLayer<LayerEditPortrait>().Activate(c);
});
uIContextMenu.AddButton("togglePCC", delegate
{
bool isSynced = c.isSynced;
Card
@@ -3036,8 +3036,8 @@ public bool TryStackTo(Thing to)
{
return false;
}
to.ModNum(Num);
to.decay = (to.decay * to.Num + decay * Num) / (to.Num + Num);
to.ModNum(Num);
if (c_isImportant)
{
to.c_isImportant = true;
Chara
@@ -4023,7 +4023,7 @@ public void TryDropCarryOnly()
{
DropHeld();
}
foreach (Thing item in EClass.pc.things.List((Thing t) => t.trait.CanOnlyCarry))
foreach (Thing item in things.List((Thing t) => t.trait.CanOnlyCarry))
{
DropThing(item);
}
Msg.SetColor();
SpawnLoot(origin);
}
TryDropCarryOnly();
if (IsPC)
{
TryDropCarryOnly();
}
}
if (IsPCFaction)
{
ConTransmute
@@ -4,7 +4,7 @@ public class ConTransmute : BaseBuff
public override void Tick()
{
if (owner.host == null)
if (owner.host == null && owner.conSleep == null && (EClass.pc.conSleep == null || EClass.pc.conSleep.pcSleep == 0))
{
base.Tick();
}
LayerColorPicker
using System;
using Empyrean.ColorPicker;
using UnityEngine;
using UnityEngine.UI;
public class LayerColorPicker : ELayer
{
public ColorPicker picker;
public UIColorPicker uiPicker;
public Action<PickerState, Color> onChangeColor;
public ColorPicker picker => uiPicker.picker;
public Color resetColor;
public Action<PickerState, Color> onChangeColor => uiPicker.onChangeColor;
public Color startColor;
public Color resetColor => uiPicker.resetColor;
public GridLayoutGroup layoutColors;
public Color startColor => uiPicker.startColor;
public void SetColor(Color _startColor, Color _resetColor, Action<PickerState, Color> _onChangeColor)
{
UIItem t = layoutColors.CreateMold<UIItem>();
for (int i = 0; i < 8; i++)
{
UIItem item = Util.Instantiate(t, layoutColors);
int _i = i;
item.button1.icon.color = IntColor.FromInt(ELayer.core.config.colors[_i]);
item.button1.SetOnClick(delegate
{
picker.SelectColor(item.button1.icon.color);
});
item.button2.SetOnClick(delegate
{
item.button1.icon.color = picker.SelectedColor;
ELayer.core.config.colors[_i] = IntColor.ToInt(picker.SelectedColor);
SE.Tab();
});
}
layoutColors.RebuildLayout();
picker.ColorUpdated += delegate(Color c)
{
_onChangeColor(PickerState.Modify, c);
};
startColor = _startColor;
resetColor = _resetColor;
picker.Init();
picker.SelectColor(_startColor);
picker.SelectColor(_startColor);
onChangeColor = _onChangeColor;
uiPicker.SetColor(_startColor, _resetColor, _onChangeColor);
}
public void OnClickConfirm()
LayerEditPCC
@@ -116,6 +116,15 @@ public void Apply()
applied = true;
}
public void OnClickChangePortrait()
{
ELayer.ui.AddLayer<LayerEditPortrait>().Activate(chara, uiPCC.pcc.data, delegate
{
portrait.SetChara(chara, uiPCC.actor.data);
uiPCC.actor.Reset();
});
}
public override void OnKill()
{
Apply();
+LayerEditPortrait
File Created
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class LayerEditPortrait : ELayer
{
public Portrait portrait;
public Chara chara;
public UISlider sliderPortrait;
public UIColorPicker uiPicker;
public UIDynamicList list;
public PCCData pcc;
public UIButton buttonGender;
public UIButton buttonUnique;
public Color hairColor;
public Action<Color> action;
private bool hasColorChanged;
private bool gender = true;
private bool unique;
public void Activate(Chara _chara, PCCData _pcc = null, Action<Color> _action = null)
{
chara = _chara;
pcc = _pcc;
action = _action;
if (action == null)
{
action = delegate
{
};
}
portrait.SetChara(chara);
if (chara.GetInt(105) == 0)
{
hairColor = portrait.GetRandomHairColor(chara);
}
else
{
hairColor = IntColor.FromInt(chara.GetInt(105));
}
if (pcc != null)
{
hairColor = pcc.GetHairColor();
}
uiPicker.SetColor(hairColor, hairColor, delegate(PickerState state, Color _c)
{
if (pcc == null)
{
chara.SetInt(105, IntColor.ToInt(_c));
}
else
{
pcc.SetColor("hair", _c);
}
portrait.SetChara(chara, pcc);
action(_c);
hairColor = _c;
hasColorChanged = true;
});
RefreshList();
InvokeRepeating("RefreshHairColor", 0f, 0.1f);
buttonGender = windows[0].AddBottomButton("portrait_gender", delegate
{
gender = !gender;
RefreshButtons();
list.List();
});
buttonUnique = windows[0].AddBottomButton("portrait_unique", delegate
{
unique = !unique;
RefreshButtons();
list.List();
});
RefreshButtons();
}
public void RefreshButtons()
{
buttonGender.mainText.SetText("portrait_gender".lang() + " (" + (gender ? "On" : "Off") + ")");
buttonUnique.mainText.SetText("portrait_unique".lang() + " (" + (unique ? "On" : "Off") + ")");
buttonGender.RebuildLayout();
buttonUnique.RebuildLayout();
}
public void OnClickClear()
{
SE.Trash();
chara.c_idPortrait = null;
portrait.SetChara(chara, pcc);
action(hairColor);
}
public void RefreshHairColor()
{
if (hasColorChanged)
{
list.Redraw();
hasColorChanged = false;
}
}
public void RefreshList()
{
list.Clear();
list.callbacks = new UIList.Callback<ModItem<Sprite>, Portrait>
{
onClick = delegate(ModItem<Sprite> a, Portrait b)
{
list.Select(a);
SE.Click();
chara.c_idPortrait = a.id;
portrait.SetChara(chara, pcc);
action(hairColor);
},
onRedraw = delegate(ModItem<Sprite> a, Portrait b, int i)
{
b.mainText.SetText(a.id);
b.SetPortrait(a.id, hairColor);
},
onList = delegate
{
int num = (gender ? chara.bio.gender : 0);
IEnumerable<ModItem<Sprite>> enumerable = Portrait.ListPortraits(num, "c").Concat(Portrait.ListPortraits(num, "guard")).Concat(Portrait.ListPortraits(num, "special"))
.Concat(Portrait.ListPortraits(num, "foxfolk"));
if (unique)
{
enumerable = enumerable.Concat(Portrait.ListPortraits(0, "UN"));
}
foreach (ModItem<Sprite> item in enumerable.ToList())
{
list.Add(item);
}
}
};
list.List();
list.Select((ModItem<Sprite> a) => a.id == chara.c_idPortrait);
}
}
Portrait
@@ -192,9 +192,7 @@ public void SetChara(Chara c, PCCData pccData = null)
}
else
{
Rand.SetSeed(c.uid);
colorOverlay = PCCManager.current.GetBodySet("female").map["hair"].GetRandomColor();
Rand.SetSeed();
colorOverlay = GetRandomHairColor(c);
if (c.id == "shojo")
{
overlay.enabled = false;
@@ -204,6 +202,14 @@ public void SetChara(Chara c, PCCData pccData = null)
SetPortrait(c.GetIdPortrait(), colorOverlay);
}
public Color GetRandomHairColor(Chara c)
{
Rand.SetSeed(c.uid);
Color randomColor = PCCManager.current.GetBodySet("female").map["hair"].GetRandomColor();
Rand.SetSeed();
return randomColor;
}
public void SetPortrait(string id, Color colorOverlay = default(Color))
{
Sprite @object = modPortraits.GetItem(id).GetObject();
TaskDrawWater
@@ -6,7 +6,17 @@ public class TaskDrawWater : TaskDesignation
public override bool CanPressRepeat => true;
public override bool Loop => CanProgress();
public override bool Loop
{
get
{
if (CanProgress())
{
return !owner.HasCondition<ConSuffocation>();
}
return false;
}
}
public override CursorInfo CursorIcon => CursorSystem.Hand;
TraitBed
@@ -20,6 +20,7 @@ public int MaxHolders
public override void TrySetAct(ActPlan p)
{
ValidateOwners();
p.TrySetAct(new AI_Sleep
{
target = owner.Thing
@@ -82,6 +83,23 @@ public override void TrySetAct(ActPlan p)
}, owner);
}
public void ValidateOwners()
{
CharaList data = owner.c_charaList;
if (data == null)
{
return;
}
data.list.ForeachReverse(delegate(int i)
{
Chara chara = EClass._map.FindChara(i) ?? EClass.game.cards.globalCharas.Find(i);
if (chara == null || (chara.IsPCFaction && chara.homeBranch != EClass._zone.branch))
{
data.list.Remove(i);
}
});
}
public void AddHolder(Chara c)
{
CharaList charaList = owner.c_charaList;
TraitNewZone
@@ -117,7 +117,8 @@ public override void TrySetAct(ActPlan p)
Msg.Say("badidea");
return false;
}
return MoveZone();
MoveZone();
return false;
}, owner, CursorSystem.MoveZone);
}
UICharaMaker
@@ -78,6 +78,8 @@ public void SetChara(Chara c)
chara = c;
BuildRaces();
SetPortraitSlider();
portrait.SetChara(chara, chara.pccData);
portraitZoom.SetChara(chara);
Refresh();
toggleExtra.SetToggle(extraRace, delegate(bool a)
{
@@ -457,16 +459,6 @@ public void ListAge()
public void SetPortraitSlider()
{
if ((bool)sliderPortrait)
{
List<ModItem<Sprite>> list = Portrait.ListPlayerPortraits(chara.bio.gender);
sliderPortrait.SetList(list.Find((ModItem<Sprite> a) => a.id == chara.c_idPortrait), list, delegate(int a, ModItem<Sprite> b)
{
chara.c_idPortrait = b.id;
portrait.SetChara(chara);
portraitZoom.SetChara(chara);
}, (ModItem<Sprite> a) => a.id);
}
}
public void RerollPCC()
@@ -502,4 +494,12 @@ public void EditPCC()
SetPortraitSlider();
});
}
public void OnClickChangePortrait()
{
EMono.ui.AddLayer<LayerEditPortrait>().Activate(chara, chara.pccData, delegate
{
portrait.SetChara(chara, chara.pccData);
});
}
}
+UIColorPicker
File Created
using System;
using Empyrean.ColorPicker;
using UnityEngine;
using UnityEngine.UI;
public class UIColorPicker : EMono
{
public ColorPicker picker;
public Action<PickerState, Color> onChangeColor;
public Color resetColor;
public Color startColor;
public GridLayoutGroup layoutColors;
public void SetColor(Color _startColor, Color _resetColor, Action<PickerState, Color> _onChangeColor)
{
UIItem t = layoutColors.CreateMold<UIItem>();
for (int i = 0; i < 8; i++)
{
UIItem item = Util.Instantiate(t, layoutColors);
int _i = i;
item.button1.icon.color = IntColor.FromInt(EMono.core.config.colors[_i]);
item.button1.SetOnClick(delegate
{
picker.SelectColor(item.button1.icon.color);
});
item.button2.SetOnClick(delegate
{
item.button1.icon.color = picker.SelectedColor;
EMono.core.config.colors[_i] = IntColor.ToInt(picker.SelectedColor);
SE.Tab();
});
}
layoutColors.RebuildLayout();
picker.ColorUpdated += delegate(Color c)
{
_onChangeColor(PickerState.Modify, c);
};
startColor = _startColor;
resetColor = _resetColor;
picker.Init();
picker.SelectColor(_startColor);
picker.SelectColor(_startColor);
onChangeColor = _onChangeColor;
}
}