/
ArtifactOfAttraction.cs
122 lines (108 loc) · 3.38 KB
/
ArtifactOfAttraction.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
using System.Linq;
using Gungeon;
using ItemAPI;
using UnityEngine;
namespace BunnyMod
{
public class ArtifactOfAttraction : PassiveItem
{
public static void Init()
{
string itemName = "Attraction";
string resourceName = "BunnyMod/Resources/Artifacts/attraction";
GameObject obj = new GameObject(itemName);
ArtifactOfAttraction greandeParasite = obj.AddComponent<ArtifactOfAttraction>();
ItemBuilder.AddSpriteToObject(itemName, resourceName, obj);
string shortDesc = "Centre Of Attraction.";
string longDesc = "Pull enemies towards you, instead of away.\n\n";
greandeParasite.SetupItem(shortDesc, longDesc, "bny");
greandeParasite.AddPassiveStatModifier(PlayerStats.StatType.KnockbackMultiplier, -1f, StatModifier.ModifyMethod.MULTIPLICATIVE);
greandeParasite.quality = PickupObject.ItemQuality.EXCLUDED;
}
protected override void Update()
{
bool flag = base.Owner;
if (flag)
{
this.CalculateStats(base.Owner);
}
}
private int currentItems;
private int lastItems;
private int currentGuns;
private int lastGuns;
// Token: 0x06000355 RID: 853 RVA: 0x0001F480 File Offset: 0x0001D680
private void CalculateStats(PlayerController player)
{
this.currentItems = player.passiveItems.Count;
this.currentGuns = player.inventory.AllGuns.Count;
bool flag = this.currentItems != this.lastItems;
bool flag2 = this.currentGuns != this.lastGuns;
bool flag3 = flag || flag2;
if (flag3)
{
this.RemoveStat(PlayerStats.StatType.Curse);
{
bool flag5 = base.Owner.HasPickupID(Game.Items["bny:megalomania"].PickupObjectId);
if (flag5)
{
this.AddStat(PlayerStats.StatType.Curse, -.2f, StatModifier.ModifyMethod.ADDITIVE);
}
this.lastItems = this.currentItems;
this.lastGuns = this.currentGuns;
player.stats.RecalculateStats(player, true, false);
}
}
}
// Token: 0x06000356 RID: 854 RVA: 0x0001F684 File Offset: 0x0001D884
private void AddStat(PlayerStats.StatType statType, float amount, StatModifier.ModifyMethod method = StatModifier.ModifyMethod.ADDITIVE)
{
StatModifier statModifier = new StatModifier
{
amount = amount,
statToBoost = statType,
modifyType = method
};
bool flag = this.passiveStatModifiers == null;
if (flag)
{
this.passiveStatModifiers = new StatModifier[]
{
statModifier
};
}
else
{
this.passiveStatModifiers = this.passiveStatModifiers.Concat(new StatModifier[]
{
statModifier
}).ToArray<StatModifier>();
}
}
private void RemoveStat(PlayerStats.StatType statType)
{
List<StatModifier> list = new List<StatModifier>();
for (int i = 0; i < this.passiveStatModifiers.Length; i++)
{
bool flag = this.passiveStatModifiers[i].statToBoost != statType;
if (flag)
{
list.Add(this.passiveStatModifiers[i]);
}
}
this.passiveStatModifiers = list.ToArray();
}
public override void Pickup(PlayerController player)
{
this.CanBeDropped = false;
base.Pickup(player);
}
public override DebrisObject Drop(PlayerController player)
{
Tools.Print($"Player dropped {this.DisplayName}");
return base.Drop(player);
}
}
}