private static GameUnit ReincarnateUnitName(string nextEntName, GameUnit unit, int maxLvl) { var pos = unit.CurrentPos; var origName = unit.OriginalName; var owner = unit.Owner; var lvlText = origName[origName.Length - 1].ToString(); int lvl; if (!int.TryParse(lvlText, out lvl)) { Debug.LogError("ReincarnateUnitName: " + origName + ". Cant parse lvl"); return null; } if (nextEntName.Length == 0) return null; if (lvl > maxLvl) lvl = maxLvl; nextEntName = nextEntName + lvl; var unitChunkNumber = unit.ChunkNumber; unit.KillSelf(); var chunk = ChunkManager.GetChunkByNum(unitChunkNumber); var nUnit = chunk.SetupUnit(nextEntName, pos, owner); UnitEvents.OnEvolution(nUnit); return nUnit; }
public void OnResearchRemove(Player owner) { if (!isHasOnResearchRemove) { return; } eventT["research"] = this; eventT["name"] = OnResearchRemoveEventName; if (UnitEvents.isEventNotPreloaded(eventT, OnResearchRemoveEventName)) { eventT["preset"] = _onResearchRemove; } LuaResearchGetter.OnResearchRemove(eventT); }
public GameUnit SetupUnit(GameEntity ent, string name, Vector3Int pos, Player owner) { var index = Loader.GetIndexByName(name); var npc = LuaNpcGetter.GetNpcById(index); ent.Owner = owner; ent.OriginalName = name; ent.name = name; var unit = ent as GameUnit; var evoTo = LuaNpcGetter.GetEvolutionTo(npc); if (evoTo.Length > 0) { if (!UnitEvolution.IsHasSoloEvolution(name)) { UnitEvolution.AddToSoloDict(name, evoTo); } if (unit != null) { unit.SoloEvolution = true; } } var evoCross = LuaNpcGetter.GetNpcEvoCrossing(npc); if (evoCross.Keys.Count > 0) { foreach (var pair in evoCross) { UnitEvolution.AddToStackDict(name, pair.Key, pair.Value); if (!string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase)) { UnitEvolution.AddToStackDict(pair.Key, name, pair.Value); } } } ChunkManager.AddVision(ent); UnitEvents.OnUnitSpawned(unit); Coloring.RecolorObject(ChunkUtil.GetDovvner(ent.CurrentPos)); return(unit); }
public void DealDamage(int dmg, AbstractGameObject from) { UpgradedStats.Hp -= dmg; GameSoundManager.PlayOnTakeDamage(PrefabIndex); UnitBar_HTML.UpdateInfo(this); if (UpgradedStats.Hp > 0) { return; } KillSelf(); QuestManager.OnKilling(from, this); UnitEvents.OnKilling(from, this); PlayerEvents.OnKilling(from, this); }
public void OnUnitSpawned(GameUnit unit) { if (!isHasOnUnitSpawned) { return; } eventT["research"] = this; eventT["name"] = onUnitSpawnedEventName; eventT["target"] = unit; if (UnitEvents.isEventNotPreloaded(eventT, onUnitSpawnedEventName)) { eventT["preset"] = _onUnitSpawned; } LuaResearchGetter.OnUnitSpawned(eventT); }
public void OnOwnerSpawned(AbstractGameObject caster) { if (!parentBigAbility.eventsPreset.ContainsKey("OnOwnerSpawned")) { return; } eventTable["caster"] = caster; eventTable["target"] = DynValue.Nil; eventTable["ability"] = this; eventTable["name"] = onOwnerSpawnedEventName; if (UnitEvents.isEventNotPreloaded(eventTable, onOwnerSpawnedEventName)) { eventTable["preset"] = parentBigAbility.eventsPreset["OnOwnerSpawned"]; } LuaAbilitiesGetter.OnOwnerSpawned(eventTable); }
public bool OnSpellStart(AbstractGameObject caster, GameUnit target) { if (!parentBigAbility.eventsPreset.ContainsKey("OnSpellStart")) { return(true); } eventTable["caster"] = caster; eventTable["target"] = target; eventTable["ability"] = this; eventTable["name"] = onSpellStartEventName; if (UnitEvents.isEventNotPreloaded(eventTable, onSpellStartEventName)) { eventTable["preset"] = parentBigAbility.eventsPreset["OnSpellStart"]; } return(LuaAbilitiesGetter.OnSpellStart(eventTable)); }