Merge pull request #95 from rgto/move_consumable_to_gameaccount
Solve HellFire items bug and create structure/code to hardcore consumable.
This commit is contained in:
commit
8230e98543
@ -302,37 +302,75 @@ ALTER TABLE public.craft_data_seq OWNER TO postgres;
|
||||
CREATE TABLE public.game_accounts (
|
||||
id bigint NOT NULL,
|
||||
dbaccount_id bigint,
|
||||
lastonline bigint,
|
||||
flags integer,
|
||||
banner bytea,
|
||||
uiprefs bytea,
|
||||
uisettings bytea,
|
||||
seentutorials bytea,
|
||||
bossprogress bytea,
|
||||
stashicons bytea,
|
||||
lastonline bigint,
|
||||
flags integer,
|
||||
paragonlevel integer,
|
||||
paragonlevelhardcore integer,
|
||||
experience integer,
|
||||
experiencehardcore integer,
|
||||
lastplayedhero_id bigint,
|
||||
gold bigint,
|
||||
platinum integer,
|
||||
hardcoregold bigint,
|
||||
platinum integer,
|
||||
hardplatinum integer,
|
||||
rmtcurrency bigint,
|
||||
hardrmtcurrency bigint,
|
||||
bloodshards integer,
|
||||
hardcorebloodshards integer,
|
||||
stashsize integer,
|
||||
hardcorestashsize integer,
|
||||
seasonstashsize integer,
|
||||
hardseasonstashsize integer,
|
||||
eliteskilled bigint,
|
||||
totalkilled bigint,
|
||||
totalgold bigint,
|
||||
hardtotalgold bigint,
|
||||
totalbloodshards integer,
|
||||
hardtotalbloodshards integer,
|
||||
totalbounties integer DEFAULT 0 NOT NULL,
|
||||
totalbountieshardcore integer DEFAULT 0 NOT NULL,
|
||||
pvptotalkilled bigint,
|
||||
hardpvptotalkilled bigint,
|
||||
pvptotalwins bigint,
|
||||
pvptotalgold bigint
|
||||
hardpvptotalwins bigint,
|
||||
pvptotalgold bigint,
|
||||
hardpvptotalgold bigint,
|
||||
craftitem1 integer,
|
||||
hardcraftitem1 integer,
|
||||
craftitem2 integer,
|
||||
hardcraftitem2 integer,
|
||||
craftitem3 integer,
|
||||
hardcraftitem3 integer,
|
||||
craftitem4 integer,
|
||||
hardcraftitem4 integer,
|
||||
craftitem5 integer,
|
||||
hardcraftitem5 integer,
|
||||
vialofputridness integer,
|
||||
hardvialofputridness integer,
|
||||
idolofterror integer,
|
||||
hardidolofterror integer,
|
||||
heartoffright integer,
|
||||
hardheartoffright integer,
|
||||
leorikkey integer,
|
||||
hardleorikkey integer,
|
||||
bigportalkey integer,
|
||||
hardbigportalkey integer,
|
||||
horadrica1 integer,
|
||||
hardhoradrica1 integer,
|
||||
horadrica2 integer,
|
||||
hardhoradrica2 integer,
|
||||
horadrica3 integer,
|
||||
hardhoradrica3 integer,
|
||||
horadrica4 integer,
|
||||
hardhoradrica4 integer,
|
||||
horadrica5 integer,
|
||||
hardhoradrica5 integer
|
||||
);
|
||||
|
||||
|
||||
@ -749,19 +787,7 @@ CREATE TABLE public.toons (
|
||||
cosmetic1 integer,
|
||||
cosmetic2 integer,
|
||||
cosmetic3 integer,
|
||||
cosmetic4 integer,
|
||||
craftitem1 integer,
|
||||
craftitem2 integer,
|
||||
craftitem3 integer,
|
||||
craftitem4 integer,
|
||||
craftitem5 integer,
|
||||
bigportalkey integer,
|
||||
leorikkey integer,
|
||||
horadrica1 integer,
|
||||
horadrica2 integer,
|
||||
horadrica3 integer,
|
||||
horadrica4 integer,
|
||||
horadrica5 integer
|
||||
cosmetic4 integer
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -1,52 +1,46 @@
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using System.Text;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using bgs.protocol.presence.v1;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.Account;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.Achievements;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.Client;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.OnlineService;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.PartyMessage;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using D3.Profile;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Extensions;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Storage;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.Base;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.Battle;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.ChannelSystem;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.GuildSystem;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.Helpers;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.Objects;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.LoginServer.Toons;
|
||||
//Blizzless Project 2022
|
||||
//Blizzless Project 2022
|
||||
using Google.ProtocolBuffers;
|
||||
//Blizzless Project 2022
|
||||
using static DiIiS_NA.LoginServer.Toons.Toon;
|
||||
|
||||
namespace DiIiS_NA.LoginServer.AccountsSystem
|
||||
{
|
||||
@ -397,87 +391,531 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
||||
|
||||
private ulong _currentToonId = 0;
|
||||
|
||||
public ulong Gold
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBGameAccount.Gold;
|
||||
public ulong Gold {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardcoreGold;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.Gold;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (DBGameAccount)
|
||||
{
|
||||
var dbGAcc = DBGameAccount;
|
||||
dbGAcc.Gold = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardcoreGold = value;
|
||||
}
|
||||
else {
|
||||
dbGA.Gold = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ulong HardcoreGold
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBGameAccount.HardcoreGold;
|
||||
public int BloodShards {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardcoreBloodShards;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.BloodShards;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (DBGameAccount)
|
||||
{
|
||||
var dbGAcc = DBGameAccount;
|
||||
dbGAcc.HardcoreGold = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardcoreBloodShards = value;
|
||||
}
|
||||
else {
|
||||
dbGA.BloodShards = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int BloodShards
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBGameAccount.BloodShards;
|
||||
public int TotalBloodShards {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardTotalBloodShards;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.TotalBloodShards;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (DBGameAccount)
|
||||
{
|
||||
var dbGAcc = DBGameAccount;
|
||||
dbGAcc.BloodShards = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardTotalBloodShards = value;
|
||||
}
|
||||
else {
|
||||
dbGA.TotalBloodShards = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HardcoreBloodShards
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBGameAccount.HardcoreBloodShards;
|
||||
public int StashSize {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardcoreStashSize;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.StashSize;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (DBGameAccount)
|
||||
{
|
||||
var dbGAcc = DBGameAccount;
|
||||
dbGAcc.HardcoreBloodShards = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardcoreStashSize = value;
|
||||
}
|
||||
else {
|
||||
dbGA.StashSize = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int TotalBloodShards
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBGameAccount.TotalBloodShards;
|
||||
public int SeasonStashSize {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardSeasonStashSize;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.SeasonStashSize;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (DBGameAccount)
|
||||
{
|
||||
var dbGAcc = DBGameAccount;
|
||||
dbGAcc.TotalBloodShards = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardSeasonStashSize = value;
|
||||
}
|
||||
else {
|
||||
dbGA.SeasonStashSize = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ulong PvPTotalKilled {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardPvPTotalKilled;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.PvPTotalKilled;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardPvPTotalKilled = value;
|
||||
}
|
||||
else {
|
||||
dbGA.PvPTotalKilled = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ulong PvPTotalWins {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardPvPTotalWins;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.PvPTotalWins;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardPvPTotalWins = value;
|
||||
}
|
||||
else {
|
||||
dbGA.PvPTotalWins = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ulong PvPTotalGold {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardPvPTotalGold;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.PvPTotalGold;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardPvPTotalGold = value;
|
||||
}
|
||||
else {
|
||||
dbGA.PvPTotalGold = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int CraftItem1 {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardCraftItem1;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.CraftItem1;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardCraftItem1 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.CraftItem1 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int CraftItem2 {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardCraftItem2;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.CraftItem2;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardCraftItem2 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.CraftItem2 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int CraftItem3 {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardCraftItem3;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.CraftItem3;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardCraftItem3 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.CraftItem3 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int CraftItem4 {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardCraftItem4;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.CraftItem4;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardCraftItem4 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.CraftItem4 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int CraftItem5 {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardCraftItem5;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.CraftItem5;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardCraftItem5 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.CraftItem5 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int BigPortalKey {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardBigPortalKey;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.BigPortalKey;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardBigPortalKey = value;
|
||||
}
|
||||
else {
|
||||
dbGA.BigPortalKey = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int LeorikKey {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardLeorikKey;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.LeorikKey;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardLeorikKey = value;
|
||||
}
|
||||
else {
|
||||
dbGA.LeorikKey = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int VialofPutridness {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardVialofPutridness;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.VialofPutridness;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardVialofPutridness = value;
|
||||
}
|
||||
else {
|
||||
dbGA.VialofPutridness = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int IdolofTerror {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardIdolofTerror;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.IdolofTerror;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardIdolofTerror = value;
|
||||
}
|
||||
else {
|
||||
dbGA.IdolofTerror = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HeartofFright {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHeartofFright;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HeartofFright;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHeartofFright = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HeartofFright = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA1Res {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHoradricA1;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HoradricA1;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHoradricA1 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HoradricA1 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA2Res {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHoradricA2;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HoradricA2;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHoradricA2 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HoradricA2 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA3Res {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHoradricA3;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HoradricA3;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHoradricA3 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HoradricA3 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA4Res {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHoradricA4;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HoradricA4;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHoradricA4 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HoradricA4 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA5Res {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardHoradricA5;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.HoradricA5;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGA = this.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardHoradricA5 = value;
|
||||
}
|
||||
else {
|
||||
dbGA.HoradricA5 = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -697,24 +1135,20 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
||||
.SetBloodShardsCollected((uint)dbGAcc.TotalBloodShards)
|
||||
.SetSeasonId(1)
|
||||
.AddSeasons(1)
|
||||
.SetElitesKilled(dbGAcc.ElitesKilled)
|
||||
.SetGoldCollected(dbGAcc.TotalGold)
|
||||
//deprecated //.SetHighestDifficulty(Convert.ToUInt32(progress[0], 10))
|
||||
.SetNumFallenHeroes(3)
|
||||
.SetParagonLevelHardcore(0) // Hardcore Paragon Level
|
||||
.SetBountiesCompleted((uint)dbGAcc.TotalBounties) // Bounties Completed
|
||||
.SetLootRunsCompleted(0) // Loot Runs Completed
|
||||
.SetBountiesCompleted((uint)dbGAcc.TotalBounties) // Executed orders
|
||||
.SetLootRunsCompleted(0) // Closed by the Nephalemic Portals
|
||||
.SetPvpWins(0)
|
||||
.SetPvpTakedowns(0)
|
||||
.SetPvpDamage(0)
|
||||
.SetMonstersKilled(dbGAcc.TotalKilled) //Monsters killed
|
||||
.SetElitesKilled(DBGameAccount.ElitesKilled) //Убито особых противников
|
||||
.SetGoldCollected(DBGameAccount.TotalGold) //Собрано золото
|
||||
.SetHighestHardcoreLevel(0) // Максимальный уровень в гер. режиме
|
||||
.SetHardcoreMonstersKilled(0) // Убито монстров в гер. режиме
|
||||
|
||||
.SetMonstersKilled(dbGAcc.TotalKilled) // Killed monsters
|
||||
.SetElitesKilled(dbGAcc.ElitesKilled) // Special Enemies Killed
|
||||
.SetGoldCollected(dbGAcc.TotalGold) // Collected gold
|
||||
.SetHighestHardcoreLevel(0) // Maximum level in hermetic mode
|
||||
.SetHardcoreMonstersKilled(0) // Killed monsters in ger mode
|
||||
.SetHighestHardcoreLevel(GetHighestHardcoreLevel())
|
||||
.SetMonstersKilled(dbGAcc.TotalKilled)
|
||||
.SetClassBarbarian(GetClassInfo(ToonClass.Barbarian))
|
||||
.SetClassCrusader(GetClassInfo(ToonClass.Crusader))
|
||||
.SetClassDemonhunter(GetClassInfo(ToonClass.DemonHunter))
|
||||
@ -750,9 +1184,30 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
||||
|
||||
public static readonly EntityId AccountHasNoToons =
|
||||
EntityId.CreateBuilder().SetIdHigh(0).SetIdLow(0).Build();
|
||||
|
||||
//Platinum
|
||||
|
||||
public int Platinum { get { return DBGameAccount.Platinum; } set { lock (DBGameAccount) { var dbGA = DBGameAccount; dbGA.Platinum = value; DBSessions.SessionUpdate(dbGA); } } }
|
||||
public int Platinum {
|
||||
get {
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
return this.DBGameAccount.HardPlatinum;
|
||||
}
|
||||
else {
|
||||
return this.DBGameAccount.Platinum;
|
||||
}
|
||||
}
|
||||
set {
|
||||
lock (this.DBGameAccount) {
|
||||
var dbGA = this.DBGameAccount;
|
||||
if (this.CurrentToon.IsHardcore) {
|
||||
dbGA.HardPlatinum = value;
|
||||
}
|
||||
else {
|
||||
dbGA.Platinum = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Toon> Toons
|
||||
{
|
||||
|
||||
@ -81,24 +81,65 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
||||
ParagonLevelHardcore = 0,
|
||||
Experience = 7200000,
|
||||
ExperienceHardcore = 7200000,
|
||||
StashSize = 700, // Default stash sizes should be 70 with purchasable upgrades
|
||||
HardcoreStashSize = 700,
|
||||
StashSize = 700, // Default stash sizes should be 70 with purchasable upgrades.
|
||||
HardcoreStashSize = 700, // Default stash sizes should be 70 with purchasable upgrades.
|
||||
SeasonStashSize = 700,
|
||||
HardSeasonStashSize = 700,
|
||||
BloodShards = 0,
|
||||
HardcoreBloodShards = 0,
|
||||
BossProgress = new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff },
|
||||
SeenTutorials = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
||||
StashIcons = new byte[] { 0x00, 0x00, 0x00, 0x00 },
|
||||
RmtCurrency = 0,
|
||||
HardRmtCurrency = 0,
|
||||
Platinum = 0,
|
||||
HardPlatinum = 0,
|
||||
Gold = 0,
|
||||
HardcoreGold = 0,
|
||||
ElitesKilled = 0,
|
||||
HardElitesKilled = 0,
|
||||
TotalKilled = 0,
|
||||
HardTotalKilled = 0,
|
||||
TotalGold = 0,
|
||||
HardTotalGold = 0,
|
||||
TotalBloodShards = 0,
|
||||
HardTotalBloodShards = 0,
|
||||
PvPTotalKilled = 0,
|
||||
HardPvPTotalKilled = 0,
|
||||
PvPTotalWins = 0,
|
||||
PvPTotalGold = 0
|
||||
HardPvPTotalWins = 0,
|
||||
PvPTotalGold = 0,
|
||||
HardPvPTotalGold = 0,
|
||||
CraftItem1 = 0,
|
||||
HardCraftItem1 = 0,
|
||||
CraftItem2 = 0,
|
||||
HardCraftItem2 = 0,
|
||||
CraftItem3 = 0,
|
||||
HardCraftItem3 = 0,
|
||||
CraftItem4 = 0,
|
||||
HardCraftItem4 = 0,
|
||||
CraftItem5 = 0,
|
||||
HardCraftItem5 = 0,
|
||||
BigPortalKey = 0,
|
||||
HardBigPortalKey = 0,
|
||||
LeorikKey = 0,
|
||||
HardLeorikKey = 0,
|
||||
VialofPutridness = 0,
|
||||
HardVialofPutridness = 0,
|
||||
IdolofTerror = 0,
|
||||
HardIdolofTerror = 0,
|
||||
HeartofFright = 0,
|
||||
HardHeartofFright = 0,
|
||||
HoradricA1 = 0,
|
||||
HardHoradricA1 = 0,
|
||||
HoradricA2 = 0,
|
||||
HardHoradricA2 = 0,
|
||||
HoradricA3 = 0,
|
||||
HardHoradricA3 = 0,
|
||||
HoradricA4 = 0,
|
||||
HardHoradricA4 = 0,
|
||||
HoradricA5 = 0,
|
||||
HardHoradricA5 = 0
|
||||
};
|
||||
|
||||
DBSessions.SessionSave(newDBGameAccount);
|
||||
|
||||
@ -159,164 +159,6 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
public IntPresenceField HighestUnlockedDifficulty
|
||||
{ get { return new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 7, 0, 9); } }
|
||||
|
||||
public int CraftItem1
|
||||
{
|
||||
get { return this.DBToon.CraftItem1; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.CraftItem1 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int CraftItem2
|
||||
{
|
||||
get { return this.DBToon.CraftItem2; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.CraftItem2 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int CraftItem3
|
||||
{
|
||||
get { return this.DBToon.CraftItem3; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.CraftItem3 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int CraftItem4
|
||||
{
|
||||
get { return this.DBToon.CraftItem4; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.CraftItem4 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int CraftItem5
|
||||
{
|
||||
get { return this.DBToon.CraftItem5; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.CraftItem5 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int BigPortalKey
|
||||
{
|
||||
get { return this.DBToon.BigPortalKey; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.BigPortalKey = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int LeorikKey
|
||||
{
|
||||
get { return this.DBToon.LeorikKey; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.LeorikKey = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int HoradricA1Res
|
||||
{
|
||||
get { return this.DBToon.HoradricA1; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.HoradricA1 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int HoradricA2Res
|
||||
{
|
||||
get { return this.DBToon.HoradricA2; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.HoradricA2 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int HoradricA3Res
|
||||
{
|
||||
get { return this.DBToon.HoradricA3; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.HoradricA3 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int HoradricA4Res
|
||||
{
|
||||
get { return this.DBToon.HoradricA4; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.HoradricA4 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int HoradricA5Res
|
||||
{
|
||||
get { return this.DBToon.HoradricA5; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.HoradricA5 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// D3 EntityID encoded id.
|
||||
/// </summary>
|
||||
@ -591,10 +433,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
{
|
||||
if (_paragonLevelChanged || !LoginServer.Config.Instance.Enabled)
|
||||
{
|
||||
if (this.IsHardcore)
|
||||
this._cachedParagonLevel = this.GameAccount.DBGameAccount.ParagonLevelHardcore;
|
||||
else
|
||||
this._cachedParagonLevel = this.GameAccount.DBGameAccount.ParagonLevel;
|
||||
this._cachedParagonLevel = this.GameAccount.DBGameAccount.ParagonLevel;
|
||||
_paragonLevelChanged = false;
|
||||
}
|
||||
return this._cachedParagonLevel;
|
||||
@ -726,33 +565,30 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Killed monsters(total for account)
|
||||
/// </summary>
|
||||
public ulong KilledMonsters
|
||||
{
|
||||
get { return this.GameAccount.DBGameAccount.TotalKilled; }
|
||||
set
|
||||
{
|
||||
lock (this.GameAccount.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
dbGAcc.TotalKilled = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
public ulong TotalKilled {
|
||||
get {
|
||||
return this.GameAccount.DBGameAccount.TotalKilled;
|
||||
}
|
||||
set {
|
||||
var dbGA = this.GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
dbGA.TotalKilled = value;
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Killed elites(total for account)
|
||||
/// </summary>
|
||||
public ulong KilledElites
|
||||
{
|
||||
get { return this.GameAccount.DBGameAccount.ElitesKilled; }
|
||||
set
|
||||
{
|
||||
lock (this.GameAccount.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
dbGAcc.ElitesKilled = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
public ulong ElitesKilled {
|
||||
get {
|
||||
return this.GameAccount.DBGameAccount.ElitesKilled;
|
||||
}
|
||||
set {
|
||||
var dbGA = this.GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
dbGA.ElitesKilled = value;
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -760,50 +596,25 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Bounties completed(total for account)
|
||||
/// </summary>
|
||||
public int TotalBounties
|
||||
{
|
||||
get { return this.GameAccount.DBGameAccount.TotalBounties; }
|
||||
set
|
||||
{
|
||||
lock (this.GameAccount.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
dbGAcc.TotalBounties = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
public int TotalBounties {
|
||||
get {
|
||||
if (this.IsHardcore) {
|
||||
return this.GameAccount.DBGameAccount.TotalBountiesHardcore;
|
||||
}
|
||||
else {
|
||||
return this.GameAccount.DBGameAccount.TotalBounties;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bounties completed(seasonal)
|
||||
/// </summary>
|
||||
public int TotalBountiesHardcore
|
||||
{
|
||||
get { return this.GameAccount.DBGameAccount.TotalBountiesHardcore; }
|
||||
set
|
||||
{
|
||||
lock (this.GameAccount.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
dbGAcc.TotalBountiesHardcore = value;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Killed elites(seasonal)
|
||||
/// </summary>
|
||||
public int KilledElitesSeasonal
|
||||
{
|
||||
get { return this.DBToon.ElitesKilled; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.ElitesKilled = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
set {
|
||||
var dbGA = this.GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (this.IsHardcore) {
|
||||
dbGA.TotalBountiesHardcore = value;
|
||||
}
|
||||
else {
|
||||
dbGA.TotalBounties = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -816,9 +627,9 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
get { return this.DBToon.Kills; }
|
||||
set
|
||||
{
|
||||
lock (this.DBToon)
|
||||
var dbToon = this.DBToon;
|
||||
lock (dbToon)
|
||||
{
|
||||
var dbToon = this.DBToon;
|
||||
dbToon.Kills = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
@ -828,15 +639,24 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Total collected Gold(total for account)
|
||||
/// </summary>
|
||||
public ulong CollectedGold
|
||||
{
|
||||
get { return this.GameAccount.DBGameAccount.TotalGold; }
|
||||
set
|
||||
{
|
||||
lock (this.GameAccount.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
dbGAcc.TotalGold = value;
|
||||
public ulong CollectedGold {
|
||||
get {
|
||||
if (this.IsHardcore) {
|
||||
return this.GameAccount.DBGameAccount.HardTotalGold;
|
||||
}
|
||||
else {
|
||||
return this.GameAccount.DBGameAccount.TotalGold;
|
||||
}
|
||||
}
|
||||
set {
|
||||
var dbGAcc = this.GameAccount.DBGameAccount;
|
||||
lock (dbGAcc) {
|
||||
if (this.IsHardcore) {
|
||||
dbGAcc.HardTotalGold = value;
|
||||
}
|
||||
else {
|
||||
dbGAcc.TotalGold = value;
|
||||
}
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,36 +7,76 @@ namespace DiIiS_NA.Core.Storage.AccountDataBase.Entities
|
||||
{
|
||||
public new virtual ulong Id { get; protected set; }
|
||||
public virtual DBAccount DBAccount { get; set; }
|
||||
public virtual ulong LastOnline { get; set; }
|
||||
public virtual DBToon LastPlayedHero { get; set; }
|
||||
public virtual int Flags { get; set; }
|
||||
public virtual byte[] Banner { get; set; }
|
||||
public virtual byte[] UIPrefs { get; set; }
|
||||
public virtual byte[] UISettings { get; set; }
|
||||
public virtual byte[] SeenTutorials { get; set; }
|
||||
public virtual byte[] BossProgress { get; set; }
|
||||
public virtual byte[] StashIcons { get; set; }
|
||||
public virtual int Flags { get; set; }
|
||||
public virtual int ParagonLevel { get; set; }
|
||||
public virtual int ParagonLevelHardcore { get; set; }
|
||||
public virtual long Experience { get; set; }
|
||||
public virtual long ExperienceHardcore { get; set; }
|
||||
public virtual ulong LastOnline { get; set; }
|
||||
public virtual DBToon LastPlayedHero { get; set; }
|
||||
public virtual ulong Gold { get; set; }
|
||||
public virtual int Platinum { get; set; }
|
||||
public virtual int HardPlatinum { get; set; }
|
||||
public virtual ulong HardcoreGold { get; set; }
|
||||
public virtual ulong RmtCurrency { get; set; }
|
||||
public virtual ulong HardRmtCurrency { get; set; }
|
||||
public virtual int BloodShards { get; set; }
|
||||
public virtual int HardcoreBloodShards { get; set; }
|
||||
public virtual int StashSize { get; set; }
|
||||
public virtual int HardcoreStashSize { get; set; }
|
||||
public virtual int SeasonStashSize { get; set; }
|
||||
public virtual int HardSeasonStashSize { get; set; }
|
||||
public virtual ulong ElitesKilled { get; set; }
|
||||
public virtual ulong HardElitesKilled { get; set; }
|
||||
public virtual ulong TotalKilled { get; set; }
|
||||
public virtual ulong HardTotalKilled { get; set; }
|
||||
public virtual ulong TotalGold { get; set; }
|
||||
public virtual ulong HardTotalGold { get; set; }
|
||||
public virtual int TotalBloodShards { get; set; }
|
||||
public virtual int HardTotalBloodShards { get; set; }
|
||||
public virtual int TotalBounties { get; set; }
|
||||
public virtual int TotalBountiesHardcore { get; set; }
|
||||
public virtual ulong PvPTotalKilled { get; set; }
|
||||
public virtual ulong HardPvPTotalKilled { get; set; }
|
||||
public virtual ulong PvPTotalWins { get; set; }
|
||||
public virtual ulong HardPvPTotalWins { get; set; }
|
||||
public virtual ulong PvPTotalGold { get; set; }
|
||||
public virtual ulong HardPvPTotalGold { get; set; }
|
||||
public virtual int CraftItem1 { get; set; }
|
||||
public virtual int HardCraftItem1 { get; set; }
|
||||
public virtual int CraftItem2 { get; set; }
|
||||
public virtual int HardCraftItem2 { get; set; }
|
||||
public virtual int CraftItem3 { get; set; }
|
||||
public virtual int HardCraftItem3 { get; set; }
|
||||
public virtual int CraftItem4 { get; set; }
|
||||
public virtual int HardCraftItem4 { get; set; }
|
||||
public virtual int CraftItem5 { get; set; }
|
||||
public virtual int HardCraftItem5 { get; set; }
|
||||
public virtual int BigPortalKey { get; set; }
|
||||
public virtual int HardBigPortalKey { get; set; }
|
||||
public virtual int LeorikKey { get; set; }
|
||||
public virtual int HardLeorikKey { get; set; }
|
||||
public virtual int VialofPutridness { get; set; }
|
||||
public virtual int HardVialofPutridness { get; set; }
|
||||
public virtual int IdolofTerror { get; set; }
|
||||
public virtual int HardIdolofTerror { get; set; }
|
||||
public virtual int HeartofFright { get; set; }
|
||||
public virtual int HardHeartofFright { get; set; }
|
||||
public virtual int HoradricA1 { get; set; }
|
||||
public virtual int HardHoradricA1 { get; set; }
|
||||
public virtual int HoradricA2 { get; set; }
|
||||
public virtual int HardHoradricA2 { get; set; }
|
||||
public virtual int HoradricA3 { get; set; }
|
||||
public virtual int HardHoradricA3 { get; set; }
|
||||
public virtual int HoradricA4 { get; set; }
|
||||
public virtual int HardHoradricA4 { get; set; }
|
||||
public virtual int HoradricA5 { get; set; }
|
||||
public virtual int HardHoradricA5 { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,12 +14,10 @@ namespace DiIiS_NA.Core.Storage.AccountDataBase.Entities
|
||||
public virtual ToonClass Class { get; set; }
|
||||
public virtual ToonFlags Flags { get; set; }
|
||||
public virtual byte Level { get; set; }
|
||||
|
||||
public virtual bool Dead { get; set; }
|
||||
public virtual bool StoneOfPortal { get; set; }
|
||||
public virtual int CreatedSeason { get; set; }
|
||||
public virtual int TimeDeadHarcode { get; set; }
|
||||
|
||||
public virtual long Experience { get; set; }
|
||||
public virtual ushort[] ParagonBonuses { get; set; }
|
||||
public virtual int PvERating { get; set; }
|
||||
@ -47,18 +45,5 @@ namespace DiIiS_NA.Core.Storage.AccountDataBase.Entities
|
||||
public virtual int Cosmetic2 { get; set; }
|
||||
public virtual int Cosmetic3 { get; set; }
|
||||
public virtual int Cosmetic4 { get; set; }
|
||||
public virtual int CraftItem1 { get; set; }
|
||||
public virtual int CraftItem2 { get; set; }
|
||||
public virtual int CraftItem3 { get; set; }
|
||||
public virtual int CraftItem4 { get; set; }
|
||||
public virtual int CraftItem5 { get; set; }
|
||||
public virtual int BigPortalKey { get; set; }
|
||||
public virtual int LeorikKey { get; set; }
|
||||
|
||||
public virtual int HoradricA1 { get; set; }
|
||||
public virtual int HoradricA2 { get; set; }
|
||||
public virtual int HoradricA3 { get; set; }
|
||||
public virtual int HoradricA4 { get; set; }
|
||||
public virtual int HoradricA5 { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,39 +12,78 @@ namespace DiIiS_NA.Core.Storage.AccountDataBase.Mapper
|
||||
Table("game_accounts");
|
||||
Id(e => e.Id).CustomType<PostgresUserTypeNullable>().GeneratedBy.Sequence("game_accounts_seq").UnsavedValue(null);
|
||||
References(e => e.DBAccount);
|
||||
Map(e => e.LastOnline).CustomType<PostgresUserType>();
|
||||
References(e => e.LastPlayedHero).Nullable();
|
||||
Map(e => e.Flags);
|
||||
Map(e => e.Banner).CustomSqlType("Bytea");
|
||||
Map(e => e.UIPrefs).CustomSqlType("Bytea");
|
||||
Map(e => e.UISettings).CustomSqlType("Bytea");
|
||||
Map(e => e.SeenTutorials).CustomSqlType("Bytea");
|
||||
Map(e => e.BossProgress).CustomSqlType("Bytea");
|
||||
Map(e => e.StashIcons).CustomSqlType("Bytea");
|
||||
Map(e => e.LastOnline).CustomType<PostgresUserType>();
|
||||
Map(e => e.Flags);
|
||||
Map(e => e.ParagonLevel);
|
||||
Map(e => e.ParagonLevelHardcore);
|
||||
Map(e => e.Experience);
|
||||
Map(e => e.ExperienceHardcore);
|
||||
//HasMany(e => e.DBToons).Cascade.All();
|
||||
//HasMany(e => e.DBInventories).Cascade.All();
|
||||
References(e => e.LastPlayedHero).Nullable();
|
||||
Map(e => e.Gold).CustomType<PostgresUserType>();
|
||||
Map(e => e.Platinum);
|
||||
Map(e => e.HardcoreGold).CustomType<PostgresUserType>();
|
||||
Map(e => e.Platinum);
|
||||
Map(e => e.HardPlatinum);
|
||||
Map(e => e.RmtCurrency).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardRmtCurrency).CustomType<PostgresUserType>();
|
||||
Map(e => e.BloodShards);
|
||||
Map(e => e.HardcoreBloodShards);
|
||||
Map(e => e.StashSize);
|
||||
Map(e => e.HardcoreStashSize);
|
||||
Map(e => e.SeasonStashSize);
|
||||
Map(e => e.HardSeasonStashSize);
|
||||
Map(e => e.ElitesKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardElitesKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.TotalKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardTotalKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.TotalGold).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardTotalGold).CustomType<PostgresUserType>();
|
||||
Map(e => e.TotalBloodShards);
|
||||
Map(e => e.HardTotalBloodShards);
|
||||
Map(e => e.TotalBounties).Not.Nullable().Default("0");
|
||||
Map(e => e.TotalBountiesHardcore).Not.Nullable().Default("0");
|
||||
Map(e => e.PvPTotalKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardPvPTotalKilled).CustomType<PostgresUserType>();
|
||||
Map(e => e.PvPTotalWins).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardPvPTotalWins).CustomType<PostgresUserType>();
|
||||
Map(e => e.PvPTotalGold).CustomType<PostgresUserType>();
|
||||
Map(e => e.HardPvPTotalGold).CustomType<PostgresUserType>();
|
||||
Map(e => e.CraftItem1);
|
||||
Map(e => e.HardCraftItem1);
|
||||
Map(e => e.CraftItem2);
|
||||
Map(e => e.HardCraftItem2);
|
||||
Map(e => e.CraftItem3);
|
||||
Map(e => e.HardCraftItem3);
|
||||
Map(e => e.CraftItem4);
|
||||
Map(e => e.HardCraftItem4);
|
||||
Map(e => e.CraftItem5);
|
||||
Map(e => e.HardCraftItem5);
|
||||
Map(e => e.BigPortalKey);
|
||||
Map(e => e.HardBigPortalKey);
|
||||
Map(e => e.LeorikKey);
|
||||
Map(e => e.HardLeorikKey);
|
||||
Map(e => e.VialofPutridness);
|
||||
Map(e => e.HardVialofPutridness);
|
||||
Map(e => e.IdolofTerror);
|
||||
Map(e => e.HardIdolofTerror);
|
||||
Map(e => e.HeartofFright);
|
||||
Map(e => e.HardHeartofFright);
|
||||
Map(e => e.HoradricA1);
|
||||
Map(e => e.HardHoradricA1);
|
||||
Map(e => e.HoradricA2);
|
||||
Map(e => e.HardHoradricA2);
|
||||
Map(e => e.HoradricA3);
|
||||
Map(e => e.HardHoradricA3);
|
||||
Map(e => e.HoradricA4);
|
||||
Map(e => e.HardHoradricA4);
|
||||
Map(e => e.HoradricA5);
|
||||
Map(e => e.HardHoradricA5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,18 +46,6 @@ namespace DiIiS_NA.Core.Storage.AccountDataBase.Mapper
|
||||
Map(e => e.Cosmetic2);
|
||||
Map(e => e.Cosmetic3);
|
||||
Map(e => e.Cosmetic4);
|
||||
Map(e => e.CraftItem1);
|
||||
Map(e => e.CraftItem2);
|
||||
Map(e => e.CraftItem3);
|
||||
Map(e => e.CraftItem4);
|
||||
Map(e => e.CraftItem5);
|
||||
Map(e => e.BigPortalKey);
|
||||
Map(e => e.LeorikKey);
|
||||
Map(e => e.HoradricA1);
|
||||
Map(e => e.HoradricA2);
|
||||
Map(e => e.HoradricA3);
|
||||
Map(e => e.HoradricA4);
|
||||
Map(e => e.HoradricA5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1046,14 +1046,12 @@ namespace DiIiS_NA.GameServer.GSSystem.GameSystem
|
||||
.Build()
|
||||
).Build()
|
||||
});
|
||||
//Добавляем критерий!
|
||||
// Adding the criterion!
|
||||
player.GrantCriteria(3367569);
|
||||
//Повышаем за выполнене поручения.
|
||||
// Increase for the completion of the assignment.
|
||||
player.UpdateExp((int)xpReward);
|
||||
player.Inventory.AddGoldAmount((int)goldReward);
|
||||
player.Toon.TotalBounties++;
|
||||
if (player.World.Game.IsHardcore)
|
||||
player.Toon.TotalBountiesHardcore++;
|
||||
player.UpdateAchievementCounter(412, 1);
|
||||
}
|
||||
Finished = true;
|
||||
|
||||
@ -872,12 +872,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
player.Inventory.RefreshInventoryToClient();
|
||||
|
||||
switch (SNO)
|
||||
//var playerAcc = player.InGameClient.BnetClient.Account.GameAccount;
|
||||
switch (this.SNO)
|
||||
{
|
||||
case ActorSno._tieredlootrunkey_0:
|
||||
player.Toon.BigPortalKey++;
|
||||
Destroy();
|
||||
player.Toon.GameAccount.BigPortalKey++;
|
||||
this.Destroy();
|
||||
break;
|
||||
default:
|
||||
player.Inventory.PickUp(this);
|
||||
@ -885,22 +885,29 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
}
|
||||
|
||||
var Moneys = D3.Items.CurrencySavedData.CreateBuilder();
|
||||
var playerAcc = player.InGameClient.BnetClient.Account.GameAccount;
|
||||
D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)player.Inventory.GetGoldAmount()).Build();
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(player.InGameClient.BnetClient.Account.GameAccount.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(player.InGameClient.BnetClient.Account.GameAccount.Platinum).Build();
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(player.Toon.CraftItem1).Build();
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(player.Toon.CraftItem2).Build();
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(player.Toon.CraftItem3).Build();
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(player.Toon.CraftItem4).Build();
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(player.Toon.CraftItem5).Build();
|
||||
D3.Items.CurrencyData Craft6Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(player.Toon.LeorikKey).Build(); //Leorik Regret
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(player.Toon.BigPortalKey).Build(); //Big Portal Key
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(player.Toon.HoradricA1Res).Build();
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(player.Toon.HoradricA2Res).Build();
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(player.Toon.HoradricA3Res).Build();
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(player.Toon.HoradricA4Res).Build();
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(player.Toon.HoradricA5Res).Build();
|
||||
//CraftItemLegendary - 2073430088
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(playerAcc.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(playerAcc.Platinum).Build();
|
||||
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(playerAcc.CraftItem1).Build(); // Reusable Parts.
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(playerAcc.CraftItem2).Build(); // Arcanes Dust.
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(playerAcc.CraftItem3).Build(); // Veiled Crystal.
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build(); // Death's Breath.
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(playerAcc.CraftItem5).Build(); // Forgotten Soul.
|
||||
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(playerAcc.HoradricA1Res).Build(); // Khanduran Rune Bounty itens Act I.
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(playerAcc.HoradricA2Res).Build(); // Caldeum Nightshade Bounty itens Act II.
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(playerAcc.HoradricA3Res).Build(); // Arreat War Tapestry Bounty itens Act III.
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(playerAcc.HoradricA4Res).Build(); // Copputed Angel Flesh Bounty itens Act IV.
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(playerAcc.HoradricA5Res).Build(); // Westmarch Holy Water Bounty itens Act V.
|
||||
|
||||
D3.Items.CurrencyData Craft8Data = D3.Items.CurrencyData.CreateBuilder().SetId(13).SetCount(playerAcc.HeartofFright).Build(); // Heart of Fright.
|
||||
D3.Items.CurrencyData Craft9Data = D3.Items.CurrencyData.CreateBuilder().SetId(14).SetCount(playerAcc.VialofPutridness).Build(); // Idol of Terror.
|
||||
D3.Items.CurrencyData Craft10Data = D3.Items.CurrencyData.CreateBuilder().SetId(15).SetCount(playerAcc.IdolofTerror).Build(); // Vail of Putridiness.
|
||||
D3.Items.CurrencyData Craft11Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(playerAcc.LeorikKey).Build(); // Leorik Regret.
|
||||
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift.
|
||||
|
||||
Moneys.AddCurrency(GoldData);
|
||||
Moneys.AddCurrency(BloodShardData);
|
||||
@ -910,13 +917,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
Moneys.AddCurrency(Craft3Data);
|
||||
Moneys.AddCurrency(Craft4Data);
|
||||
Moneys.AddCurrency(Craft5Data);
|
||||
Moneys.AddCurrency(Craft6Data);
|
||||
Moneys.AddCurrency(Craft7Data);
|
||||
Moneys.AddCurrency(Horadric1Data);
|
||||
Moneys.AddCurrency(Horadric2Data);
|
||||
Moneys.AddCurrency(Horadric3Data);
|
||||
Moneys.AddCurrency(Horadric4Data);
|
||||
Moneys.AddCurrency(Horadric5Data);
|
||||
Moneys.AddCurrency(Craft8Data);
|
||||
Moneys.AddCurrency(Craft9Data);
|
||||
Moneys.AddCurrency(Craft10Data);
|
||||
Moneys.AddCurrency(Craft11Data);
|
||||
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Base.GenericBlobMessage(Opcodes.CurrencyDataFull) { Data = Moneys.Build().ToByteArray() });
|
||||
|
||||
}
|
||||
@ -989,27 +1000,34 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
case LoginServer.Toons.ToonClass.Necromancer: Base = 8; break;
|
||||
case LoginServer.Toons.ToonClass.WitchDoctor: Base = 10; break;
|
||||
case LoginServer.Toons.ToonClass.Wizard: Base = 12; break;
|
||||
} //0 - Варвар, 2 - Крестоносец, 4 - Охотник, 6 - Монах, 8 - Некромант, 10 - Колдун, 12 - Волшебник
|
||||
} //0 - Barbarian, 2 - Crusader, 4 - Hunter, 6 - Monk, 8 - Necromancer, 10 - Sorcerer, 12 - Wizard
|
||||
string it = "";
|
||||
#region Калькуляция баланса
|
||||
#region Balance calculation
|
||||
var Moneys = D3.Items.CurrencySavedData.CreateBuilder();
|
||||
D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)player.Inventory.GetGoldAmount()).Build();
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(player.InGameClient.BnetClient.Account.GameAccount.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(player.InGameClient.BnetClient.Account.GameAccount.Platinum).Build();
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(player.Toon.CraftItem1).Build();
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(player.Toon.CraftItem2).Build();
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(player.Toon.CraftItem3).Build();
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(player.Toon.CraftItem4).Build();
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(player.Toon.CraftItem5).Build();
|
||||
D3.Items.CurrencyData Craft6Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(player.Toon.LeorikKey).Build(); //Leorik Regret
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(player.Toon.BigPortalKey).Build(); //Big Portal Key
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(player.Toon.HoradricA1Res).Build();
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(player.Toon.HoradricA2Res).Build();
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(player.Toon.HoradricA3Res).Build();
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(player.Toon.HoradricA4Res).Build();
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(player.Toon.HoradricA5Res).Build();
|
||||
var playerAcc = player.InGameClient.BnetClient.Account.GameAccount;
|
||||
|
||||
//CraftItemLegendary - 2073430088
|
||||
D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)player.Inventory.GetGoldAmount()).Build();
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(playerAcc.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(playerAcc.Platinum).Build();
|
||||
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(playerAcc.CraftItem1).Build(); // Reusable Parts.
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(playerAcc.CraftItem2).Build(); // Arcanes Dust.
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(playerAcc.CraftItem3).Build(); // Veiled Crystal.
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build(); // Death's Breath.
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(playerAcc.CraftItem5).Build(); // Forgotten Soul.
|
||||
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(playerAcc.HoradricA1Res).Build(); // Khanduran Rune Bounty itens Act I.
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(playerAcc.HoradricA2Res).Build(); // Caldeum Nightshade Bounty itens Act II.
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(playerAcc.HoradricA3Res).Build(); // Arreat War Tapestry Bounty itens Act III.
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(playerAcc.HoradricA4Res).Build(); // Copputed Angel Flesh Bounty itens Act IV.
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(playerAcc.HoradricA5Res).Build(); // Westmarch Holy Water Bounty itens Act V.
|
||||
|
||||
D3.Items.CurrencyData Craft8Data = D3.Items.CurrencyData.CreateBuilder().SetId(13).SetCount(playerAcc.HeartofFright).Build(); // Heart of Fright.
|
||||
D3.Items.CurrencyData Craft9Data = D3.Items.CurrencyData.CreateBuilder().SetId(14).SetCount(playerAcc.VialofPutridness).Build(); // Idol of Terror.
|
||||
D3.Items.CurrencyData Craft10Data = D3.Items.CurrencyData.CreateBuilder().SetId(15).SetCount(playerAcc.IdolofTerror).Build(); // Vail of Putridiness.
|
||||
D3.Items.CurrencyData Craft11Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(playerAcc.LeorikKey).Build(); // Leorik Regret.
|
||||
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift.
|
||||
|
||||
Moneys.AddCurrency(GoldData);
|
||||
Moneys.AddCurrency(BloodShardData);
|
||||
@ -1019,12 +1037,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
Moneys.AddCurrency(Craft3Data);
|
||||
Moneys.AddCurrency(Craft4Data);
|
||||
Moneys.AddCurrency(Craft5Data);
|
||||
Moneys.AddCurrency(Craft6Data);
|
||||
Moneys.AddCurrency(Craft7Data);
|
||||
Moneys.AddCurrency(Horadric1Data);
|
||||
Moneys.AddCurrency(Horadric2Data);
|
||||
Moneys.AddCurrency(Horadric3Data);
|
||||
Moneys.AddCurrency(Horadric4Data);
|
||||
Moneys.AddCurrency(Horadric5Data);
|
||||
Moneys.AddCurrency(Craft8Data);
|
||||
Moneys.AddCurrency(Craft9Data);
|
||||
Moneys.AddCurrency(Craft10Data);
|
||||
Moneys.AddCurrency(Craft11Data);
|
||||
#endregion
|
||||
switch (GBHandle.GBID)
|
||||
{
|
||||
#region Дар Хедрига
|
||||
#region The Gift of Horadric
|
||||
case -1249067449:
|
||||
items = new string[] { "Unique_Helm_Set_15_x1", "Unique_Gloves_Set_15_x1",
|
||||
"Unique_Helm_Set_12_x1", "Unique_Gloves_Set_12_x1",
|
||||
@ -1065,11 +1091,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
it = items[RandomHelper.Next(Base, Base + 1)]; player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
||||
break;
|
||||
#endregion
|
||||
#region Сокровище Хорадримов
|
||||
case -1575654862: //Сокровища 1 Акта
|
||||
player.Toon.HoradricA1Res += RandomHelper.Next(1, 5);
|
||||
player.Toon.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(player.Toon.HoradricA1Res).Build();
|
||||
#region The Treasure of the Khoradrim
|
||||
case -1575654862: // The Treasure 1 Акта
|
||||
playerAcc.HoradricA1Res += RandomHelper.Next(1, 5);
|
||||
playerAcc.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(playerAcc.HoradricA1Res).Build();
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(5, 9));
|
||||
@ -1077,10 +1103,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
player.World.SpawnGold(player, player, 5000);
|
||||
player.World.SpawnBloodShards(player, player, RandomHelper.Next(10, 25));
|
||||
break;
|
||||
case -1575654861: //Сокровища 2 Акта
|
||||
player.Toon.HoradricA2Res += RandomHelper.Next(1, 5);
|
||||
player.Toon.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(player.Toon.HoradricA2Res).Build();
|
||||
case -1575654861: // The Treasure 2 Акта
|
||||
playerAcc.HoradricA2Res += RandomHelper.Next(1, 5);
|
||||
playerAcc.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(playerAcc.HoradricA2Res).Build();
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(5, 9));
|
||||
@ -1088,10 +1114,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
player.World.SpawnGold(player, player, 5000);
|
||||
player.World.SpawnBloodShards(player, player, RandomHelper.Next(10, 25));
|
||||
break;
|
||||
case -1575654860: //Сокровища 3 Акта
|
||||
player.Toon.HoradricA3Res += RandomHelper.Next(1, 5);
|
||||
player.Toon.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(player.Toon.HoradricA3Res).Build();
|
||||
case -1575654860: // The Treasure 3 Акта
|
||||
playerAcc.HoradricA3Res += RandomHelper.Next(1, 5);
|
||||
playerAcc.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(playerAcc.HoradricA3Res).Build();
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(5, 9));
|
||||
@ -1099,10 +1125,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
player.World.SpawnGold(player, player, 5000);
|
||||
player.World.SpawnBloodShards(player, player, RandomHelper.Next(10, 25));
|
||||
break;
|
||||
case -1575654859: //Сокровища 4 Акта
|
||||
player.Toon.HoradricA4Res += RandomHelper.Next(1, 5);
|
||||
player.Toon.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(player.Toon.HoradricA4Res).Build();
|
||||
case -1575654859: // The Treasure 4 Акта
|
||||
playerAcc.HoradricA4Res += RandomHelper.Next(1, 5);
|
||||
playerAcc.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(playerAcc.HoradricA4Res).Build();
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(5, 9));
|
||||
@ -1110,10 +1136,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
player.World.SpawnGold(player, player, 5000);
|
||||
player.World.SpawnBloodShards(player, player, RandomHelper.Next(10, 25));
|
||||
break;
|
||||
case -1575654858: //Сокровища 5 Акта
|
||||
player.Toon.HoradricA5Res += RandomHelper.Next(1, 5);
|
||||
player.Toon.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(player.Toon.HoradricA5Res).Build();
|
||||
case -1575654858: // The Treasure 5 Акта
|
||||
playerAcc.HoradricA5Res += RandomHelper.Next(1, 5);
|
||||
playerAcc.CraftItem4 += RandomHelper.Next(2, 4);
|
||||
Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(playerAcc.HoradricA5Res).Build();
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(3, 8));
|
||||
player.World.SpawnRandomEquip(player, player, RandomHelper.Next(5, 9));
|
||||
@ -1125,7 +1151,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
||||
default:
|
||||
Logger.Warn("This treasure bag - not implemented"); break;
|
||||
}
|
||||
Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(player.Toon.CraftItem4).Build();
|
||||
Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build();
|
||||
Moneys.AddCurrency(Horadric1Data);
|
||||
Moneys.AddCurrency(Horadric2Data);
|
||||
Moneys.AddCurrency(Horadric3Data);
|
||||
|
||||
@ -1401,7 +1401,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
switch (msg.SalvageType)
|
||||
{
|
||||
|
||||
//Простые предметы
|
||||
// Simple items
|
||||
case 0:
|
||||
foreach (var item in GetBackPackItems())
|
||||
if (!item.ItemDefinition.Name.ToLower().Contains("potion") &&
|
||||
@ -1420,7 +1420,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
count_reward += SalvageItem(item);
|
||||
}
|
||||
break;
|
||||
//Магические предметы
|
||||
// Magical items
|
||||
case 1:
|
||||
foreach (var item in GetBackPackItems())
|
||||
if (item.Attributes[GameAttribute.Item_Quality_Level] > 2 &
|
||||
@ -1431,7 +1431,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
count_reward += SalvageItem(item);
|
||||
}
|
||||
break;
|
||||
//Редкие предметы
|
||||
// Rare Items
|
||||
case 2:
|
||||
foreach (var item in GetBackPackItems())
|
||||
if (item.Attributes[GameAttribute.Item_Quality_Level] > 5 &
|
||||
@ -1490,14 +1490,15 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
|
||||
Item reward = ItemGenerator.Cook(_owner, rewardName);
|
||||
int count_reward = RandomHelper.Next(1, 5) * (10 - item.Attributes[GameAttribute.Item_Quality_Level]);
|
||||
var playerAcc = _owner.Toon.GameAccount;
|
||||
if (reward == null) return 0;
|
||||
for (int i = 0; i < count_reward; i++)
|
||||
{
|
||||
switch (rewardName)
|
||||
{
|
||||
case "Crafting_AssortedParts_01": _owner.Toon.CraftItem1++; break;
|
||||
case "Crafting_Magic_01": _owner.Toon.CraftItem2++; break;
|
||||
case "Crafting_Rare_01": _owner.Toon.CraftItem3++; break;
|
||||
case "Crafting_AssortedParts_01": playerAcc.CraftItem1++; break;
|
||||
case "Crafting_Magic_01": playerAcc.CraftItem2++; break;
|
||||
case "Crafting_Rare_01": playerAcc.CraftItem3++; break;
|
||||
}
|
||||
//Item reward1 = ItemGenerator.Cook(_owner, rewardName);
|
||||
//_inventoryGrid.AddItem(reward1);
|
||||
@ -1537,7 +1538,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
brimstone = ItemGenerator.Cook(_owner, rewardName);
|
||||
if (brimstone != null)
|
||||
{
|
||||
_owner.Toon.CraftItem5++;
|
||||
_owner.Toon.GameAccount.CraftItem5++;
|
||||
//_inventoryGrid.AddItem(brimstone);
|
||||
haveBrimstone = true;
|
||||
}
|
||||
@ -1625,9 +1626,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
{
|
||||
switch (rewardName)
|
||||
{
|
||||
case "Crafting_AssortedParts_01": _owner.Toon.CraftItem1++; break;
|
||||
case "Crafting_Magic_01": _owner.Toon.CraftItem2++; break;
|
||||
case "Crafting_Rare_01": _owner.Toon.CraftItem3++; break;
|
||||
case "Crafting_AssortedParts_01": _owner.Toon.GameAccount.CraftItem1++; break;
|
||||
case "Crafting_Magic_01": _owner.Toon.GameAccount.CraftItem2++; break;
|
||||
case "Crafting_Rare_01": _owner.Toon.GameAccount.CraftItem3++; break;
|
||||
}
|
||||
}
|
||||
//reward.Owner = _owner;
|
||||
@ -1666,7 +1667,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
brimstone = ItemGenerator.Cook(_owner, rewardName);
|
||||
if (brimstone != null)
|
||||
{
|
||||
_owner.Toon.CraftItem5++;
|
||||
_owner.Toon.GameAccount.CraftItem5++;
|
||||
haveBrimstone = true;
|
||||
}
|
||||
}
|
||||
@ -1732,16 +1733,16 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
if (ingr.ItemsGBID == -1 || ingr.ItemsGBID == 0) continue;
|
||||
switch (ingr.ItemsGBID)
|
||||
{
|
||||
case -363607620: //Обычные детали
|
||||
if(_owner.Toon.CraftItem1 < ingr.Count)
|
||||
case -363607620: // Common parts.
|
||||
if(_owner.Toon.GameAccount.CraftItem1 < ingr.Count)
|
||||
haveEnoughIngredients = false;
|
||||
break;
|
||||
case -1585802162: //Чародейская пыль
|
||||
if (_owner.Toon.CraftItem2 < ingr.Count)
|
||||
case -1585802162: // Wizard Dust.
|
||||
if (_owner.Toon.GameAccount.CraftItem2 < ingr.Count)
|
||||
haveEnoughIngredients = false;
|
||||
break;
|
||||
case -605947593: //Затуманенный кристалл
|
||||
if (_owner.Toon.CraftItem3 < ingr.Count)
|
||||
case -605947593: // Blurred Crystal.
|
||||
if (_owner.Toon.GameAccount.CraftItem3 < ingr.Count)
|
||||
haveEnoughIngredients = false;
|
||||
break;
|
||||
}
|
||||
@ -1792,14 +1793,14 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
if (ingr.ItemsGBID == -1 || ingr.ItemsGBID == 0) continue;
|
||||
switch (ingr.ItemsGBID)
|
||||
{
|
||||
case -363607620: //Обычные детали
|
||||
_owner.Toon.CraftItem1 -= ingr.Count;
|
||||
case -363607620: // Common parts.
|
||||
_owner.Toon.GameAccount.CraftItem1 -= ingr.Count;
|
||||
break;
|
||||
case -1585802162: //Чародейская пыль
|
||||
_owner.Toon.CraftItem2 -= ingr.Count;
|
||||
case -1585802162: // Wizard Dust.
|
||||
_owner.Toon.GameAccount.CraftItem2 -= ingr.Count;
|
||||
break;
|
||||
case -605947593: //Затуманенный кристалл
|
||||
_owner.Toon.CraftItem3 -= ingr.Count;
|
||||
case -605947593: // Blurred Crystal.
|
||||
_owner.Toon.GameAccount.CraftItem3 -= ingr.Count;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1992,12 +1993,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
_owner.Attributes.BroadcastChangedIfRevealed();
|
||||
_stashGrid.ResizeGrid(_owner.Attributes[GameAttribute.Shared_Stash_Slots] / 7, 7);
|
||||
var dbGAcc = _owner.Toon.GameAccount.DBGameAccount;
|
||||
if (_owner.World.Game.IsSeasoned)
|
||||
dbGAcc.SeasonStashSize = _owner.Attributes[GameAttribute.Shared_Stash_Slots];
|
||||
else if (_owner.World.Game.IsHardcore)
|
||||
dbGAcc.HardcoreStashSize = _owner.Attributes[GameAttribute.Shared_Stash_Slots];
|
||||
else
|
||||
dbGAcc.StashSize = _owner.Attributes[GameAttribute.Shared_Stash_Slots];
|
||||
dbGAcc.StashSize = _owner.Attributes[GameAttribute.Shared_Stash_Slots];
|
||||
_owner.World.Game.GameDBSession.SessionUpdate(dbGAcc);
|
||||
}
|
||||
|
||||
@ -2262,14 +2258,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
_inventoryGold.Attributes.SendChangedMessage(_owner.InGameClient);
|
||||
if (immediately)
|
||||
{
|
||||
if (_owner.World.Game.IsHardcore)
|
||||
_owner.Toon.GameAccount.HardcoreGold += (ulong)amount;
|
||||
else
|
||||
_owner.Toon.GameAccount.Gold += (ulong)amount;
|
||||
|
||||
//_owner.Toon.CollectedGold += (ulong)amount;
|
||||
|
||||
//_owner.UpdateAchievementCounter(10, (uint)amount);
|
||||
_owner.Toon.GameAccount.Gold += (ulong)amount;
|
||||
}
|
||||
else
|
||||
_owner.GoldCollectedTempCount += amount;
|
||||
@ -2282,11 +2271,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
_inventoryGold.Attributes[GameAttribute.Gold] -= amount;
|
||||
_inventoryGold.Attributes[GameAttribute.ItemStackQuantityLo] = _inventoryGold.Attributes[GameAttribute.Gold];
|
||||
_inventoryGold.Attributes.SendChangedMessage(_owner.InGameClient);
|
||||
if (_owner.World.Game.IsHardcore)
|
||||
_owner.Toon.GameAccount.HardcoreGold -= (ulong)amount;
|
||||
else
|
||||
_owner.Toon.GameAccount.Gold -= (ulong)amount;
|
||||
|
||||
_owner.Toon.GameAccount.Gold -= (ulong)amount;
|
||||
UpdateCurrencies();
|
||||
}
|
||||
|
||||
@ -2310,51 +2295,42 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
var BloodShardsElement = D3.Items.CurrencyData.CreateBuilder().SetId(1);
|
||||
if (immediately)
|
||||
{
|
||||
if (_owner.World.Game.IsHardcore)
|
||||
{
|
||||
_owner.Toon.GameAccount.HardcoreBloodShards += amount;
|
||||
BloodShardsElement.SetCount(_owner.Toon.GameAccount.HardcoreBloodShards);
|
||||
}
|
||||
else
|
||||
{
|
||||
_owner.Toon.GameAccount.BloodShards += amount;
|
||||
BloodShardsElement.SetCount(_owner.Toon.GameAccount.BloodShards);
|
||||
}
|
||||
BloodShardsElement.SetCount(_owner.Toon.GameAccount.BloodShards);
|
||||
}
|
||||
else
|
||||
{
|
||||
_owner.BloodShardsCollectedTempCount += amount;
|
||||
if (_owner.World.Game.IsHardcore)
|
||||
{
|
||||
BloodShardsElement.SetCount(_owner.BloodShardsCollectedTempCount + _owner.Toon.GameAccount.HardcoreBloodShards);
|
||||
}
|
||||
else
|
||||
{
|
||||
BloodShardsElement.SetCount(_owner.BloodShardsCollectedTempCount + _owner.Toon.GameAccount.BloodShards);
|
||||
}
|
||||
BloodShardsElement.SetCount(_owner.BloodShardsCollectedTempCount + _owner.Toon.GameAccount.BloodShards);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateCurrencies()
|
||||
{
|
||||
var Moneys = D3.Items.CurrencySavedData.CreateBuilder();
|
||||
D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)GetGoldAmount()).Build();
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(_owner.InGameClient.BnetClient.Account.GameAccount.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(_owner.InGameClient.BnetClient.Account.GameAccount.Platinum).Build();
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(_owner.Toon.CraftItem1).Build();
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(_owner.Toon.CraftItem2).Build();
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(_owner.Toon.CraftItem3).Build();
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(_owner.Toon.CraftItem4).Build();
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(_owner.Toon.CraftItem5).Build();
|
||||
D3.Items.CurrencyData Craft6Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(_owner.Toon.LeorikKey).Build(); //Leorik Regret
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(_owner.Toon.BigPortalKey).Build(); //Big Portal Key
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(_owner.Toon.HoradricA1Res).Build();
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(_owner.Toon.HoradricA2Res).Build();
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(_owner.Toon.HoradricA3Res).Build();
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(_owner.Toon.HoradricA4Res).Build();
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(_owner.Toon.HoradricA5Res).Build();
|
||||
var playerAcc = _owner.InGameClient.BnetClient.Account.GameAccount;
|
||||
D3.Items.CurrencyData GoldData = D3.Items.CurrencyData.CreateBuilder().SetId(0).SetCount((long)this.GetGoldAmount()).Build();
|
||||
D3.Items.CurrencyData BloodShardData = D3.Items.CurrencyData.CreateBuilder().SetId(1).SetCount(playerAcc.BloodShards).Build();
|
||||
D3.Items.CurrencyData PlatinumData = D3.Items.CurrencyData.CreateBuilder().SetId(2).SetCount(playerAcc.Platinum).Build();
|
||||
|
||||
//CraftItemLegendary - 2073430088
|
||||
D3.Items.CurrencyData Craft1Data = D3.Items.CurrencyData.CreateBuilder().SetId(3).SetCount(playerAcc.CraftItem1).Build(); // Reusable Parts.
|
||||
D3.Items.CurrencyData Craft2Data = D3.Items.CurrencyData.CreateBuilder().SetId(4).SetCount(playerAcc.CraftItem2).Build(); // Arcanes Dust.
|
||||
D3.Items.CurrencyData Craft3Data = D3.Items.CurrencyData.CreateBuilder().SetId(5).SetCount(playerAcc.CraftItem3).Build(); // Veiled Crystal.
|
||||
D3.Items.CurrencyData Craft4Data = D3.Items.CurrencyData.CreateBuilder().SetId(6).SetCount(playerAcc.CraftItem4).Build(); // Death's Breath.
|
||||
D3.Items.CurrencyData Craft5Data = D3.Items.CurrencyData.CreateBuilder().SetId(7).SetCount(playerAcc.CraftItem5).Build(); // Forgotten Soul.
|
||||
|
||||
D3.Items.CurrencyData Horadric1Data = D3.Items.CurrencyData.CreateBuilder().SetId(8).SetCount(playerAcc.HoradricA1Res).Build(); // Khanduran Rune Bounty itens Act I.
|
||||
D3.Items.CurrencyData Horadric2Data = D3.Items.CurrencyData.CreateBuilder().SetId(9).SetCount(playerAcc.HoradricA2Res).Build(); // Caldeum Nightshade Bounty itens Act II.
|
||||
D3.Items.CurrencyData Horadric3Data = D3.Items.CurrencyData.CreateBuilder().SetId(10).SetCount(playerAcc.HoradricA3Res).Build(); // Arreat War Tapestry Bounty itens Act III.
|
||||
D3.Items.CurrencyData Horadric4Data = D3.Items.CurrencyData.CreateBuilder().SetId(11).SetCount(playerAcc.HoradricA4Res).Build(); // Copputed Angel Flesh Bounty itens Act IV.
|
||||
D3.Items.CurrencyData Horadric5Data = D3.Items.CurrencyData.CreateBuilder().SetId(12).SetCount(playerAcc.HoradricA5Res).Build(); // Westmarch Holy Water Bounty itens Act V.
|
||||
|
||||
D3.Items.CurrencyData Craft8Data = D3.Items.CurrencyData.CreateBuilder().SetId(13).SetCount(playerAcc.HeartofFright).Build(); // Heart of Fright.
|
||||
D3.Items.CurrencyData Craft9Data = D3.Items.CurrencyData.CreateBuilder().SetId(14).SetCount(playerAcc.VialofPutridness).Build(); // Idol of Terror.
|
||||
D3.Items.CurrencyData Craft10Data = D3.Items.CurrencyData.CreateBuilder().SetId(15).SetCount(playerAcc.IdolofTerror).Build(); // Vail of Putridiness.
|
||||
D3.Items.CurrencyData Craft11Data = D3.Items.CurrencyData.CreateBuilder().SetId(16).SetCount(playerAcc.LeorikKey).Build(); // Leorik Regret.
|
||||
|
||||
D3.Items.CurrencyData Craft7Data = D3.Items.CurrencyData.CreateBuilder().SetId(20).SetCount(playerAcc.BigPortalKey).Build(); // KeyStone Greater Rift.
|
||||
|
||||
Moneys.AddCurrency(GoldData);
|
||||
Moneys.AddCurrency(BloodShardData);
|
||||
@ -2364,13 +2340,17 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
Moneys.AddCurrency(Craft3Data);
|
||||
Moneys.AddCurrency(Craft4Data);
|
||||
Moneys.AddCurrency(Craft5Data);
|
||||
Moneys.AddCurrency(Craft6Data);
|
||||
Moneys.AddCurrency(Craft7Data);
|
||||
Moneys.AddCurrency(Horadric1Data);
|
||||
Moneys.AddCurrency(Horadric2Data);
|
||||
Moneys.AddCurrency(Horadric3Data);
|
||||
Moneys.AddCurrency(Horadric4Data);
|
||||
Moneys.AddCurrency(Horadric5Data);
|
||||
Moneys.AddCurrency(Craft8Data);
|
||||
Moneys.AddCurrency(Craft9Data);
|
||||
Moneys.AddCurrency(Craft10Data);
|
||||
Moneys.AddCurrency(Craft11Data);
|
||||
|
||||
_owner.InGameClient.SendMessage(new GenericBlobMessage(Opcodes.CurrencyDataFull) { Data = Moneys.Build().ToByteArray() });
|
||||
}
|
||||
|
||||
@ -2382,12 +2362,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
|
||||
public void RemoveBloodShardsAmount(int amount)
|
||||
{
|
||||
BloodShards -= amount;
|
||||
|
||||
if (_owner.World.Game.IsHardcore)
|
||||
_owner.Toon.GameAccount.HardcoreBloodShards -= amount;
|
||||
else
|
||||
_owner.Toon.GameAccount.BloodShards -= amount;
|
||||
this.BloodShards -= amount;
|
||||
_owner.Toon.GameAccount.BloodShards -= amount;
|
||||
UpdateCurrencies();
|
||||
}
|
||||
|
||||
@ -2401,21 +2377,13 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
//load everything and make a switch on slot_id
|
||||
|
||||
Item item = null;
|
||||
int goldAmount = _owner.World.Game.IsHardcore ?
|
||||
(int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).HardcoreGold :
|
||||
(int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).Gold;
|
||||
BloodShards = _owner.World.Game.IsHardcore ?
|
||||
(int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).HardcoreBloodShards :
|
||||
(int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).BloodShards;
|
||||
int goldAmount = (int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).Gold;
|
||||
this.BloodShards = (int)_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).BloodShards;
|
||||
// Clear already present items
|
||||
// LoadFromDB is called every time World is changed, even entering a dungeon
|
||||
_inventoryGrid.Clear();
|
||||
|
||||
// first of all load stash size
|
||||
|
||||
var slots = _owner.World.Game.IsHardcore ?
|
||||
_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).HardcoreStashSize :
|
||||
_owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).StashSize;
|
||||
var slots = _owner.World.Game.GameDBSession.SessionGet<DBGameAccount>(_owner.Toon.GameAccount.PersistentID).StashSize;
|
||||
if (slots > 0)
|
||||
{
|
||||
_owner.Attributes[GameAttribute.Shared_Stash_Slots] = slots;
|
||||
|
||||
@ -2487,7 +2487,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
Attributes[GameAttribute.Corpse_Resurrection_Charges] = 3; // Reset resurrection charges on zone change (TODO: do not reset charges on reentering the same zone)
|
||||
|
||||
#if DEBUG
|
||||
Logger.Warn("Местоположение игрока {0}, Scene: {1} SNO: {2} LevelArea: {3}", Toon.Name, CurrentScene.SceneSNO.Name, CurrentScene.SceneSNO.Id, CurrentScene.Specification.SNOLevelAreas[0]);
|
||||
Logger.Warn("Player Location {0}, Scene: {1} SNO: {2} LevelArea: {3}", this.Toon.Name, this.CurrentScene.SceneSNO.Name, this.CurrentScene.SceneSNO.Id, this.CurrentScene.Specification.SNOLevelAreas[0]);
|
||||
#else
|
||||
|
||||
#endif
|
||||
@ -2964,12 +2964,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
// Check the gold
|
||||
if (InGameClient.Game.TickCounter % 120 == 0 && World != null && GoldCollectedTempCount > 0)
|
||||
{
|
||||
if (World.Game.IsHardcore)
|
||||
Toon.GameAccount.HardcoreGold += (ulong)GoldCollectedTempCount;
|
||||
else
|
||||
Toon.GameAccount.Gold += (ulong)GoldCollectedTempCount;
|
||||
|
||||
Toon.CollectedGold += (ulong)GoldCollectedTempCount;
|
||||
this.Toon.GameAccount.Gold += (ulong)this.GoldCollectedTempCount;
|
||||
this.Toon.CollectedGold += (ulong)this.GoldCollectedTempCount;
|
||||
|
||||
if (World.Game.IsHardcore)
|
||||
Toon.CollectedGoldSeasonal += GoldCollectedTempCount;
|
||||
@ -2982,14 +2978,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
// Check the blood shards
|
||||
if (InGameClient.Game.TickCounter % 120 == 0 && World != null && BloodShardsCollectedTempCount > 0)
|
||||
{
|
||||
if (World.Game.IsHardcore)
|
||||
Toon.GameAccount.HardcoreBloodShards += BloodShardsCollectedTempCount;
|
||||
else
|
||||
Toon.GameAccount.BloodShards += BloodShardsCollectedTempCount;
|
||||
|
||||
Toon.GameAccount.TotalBloodShards += BloodShardsCollectedTempCount;
|
||||
|
||||
BloodShardsCollectedTempCount = 0;
|
||||
this.Toon.GameAccount.BloodShards += this.BloodShardsCollectedTempCount;
|
||||
this.Toon.GameAccount.TotalBloodShards += this.BloodShardsCollectedTempCount;
|
||||
this.BloodShardsCollectedTempCount = 0;
|
||||
}
|
||||
|
||||
if (World != null && SkillSet.HasPassive(298038) && (InGameClient.Game.TickCounter - LastMovementTick) > 90)
|
||||
@ -3107,29 +3098,26 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
{
|
||||
if (KilledMonstersTempCount != 0)
|
||||
{
|
||||
Toon.KilledMonsters += (ulong)KilledMonstersTempCount;
|
||||
KilledMonstersTempCount = 0;
|
||||
this.Toon.TotalKilled += (ulong)this.KilledMonstersTempCount;
|
||||
this.KilledMonstersTempCount = 0;
|
||||
|
||||
if (KilledElitesTempCount != 0)
|
||||
{
|
||||
Toon.KilledElites += (ulong)KilledElitesTempCount;
|
||||
if (World.Game.IsHardcore)
|
||||
Toon.KilledElitesSeasonal += KilledElitesTempCount;
|
||||
KilledElitesTempCount = 0;
|
||||
this.Toon.ElitesKilled += (ulong)this.KilledElitesTempCount;
|
||||
this.KilledElitesTempCount = 0;
|
||||
}
|
||||
|
||||
if (KilledSeasonalTempCount != 0)
|
||||
{
|
||||
if (World.Game.IsHardcore)
|
||||
Toon.SeasonalKills += KilledSeasonalTempCount;
|
||||
KilledSeasonalTempCount = 0;
|
||||
this.Toon.SeasonalKills += this.KilledSeasonalTempCount;
|
||||
this.KilledSeasonalTempCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
CheckAchievementCounters();
|
||||
}
|
||||
|
||||
#region Призывы некроманта
|
||||
#region Necromancer summons
|
||||
bool switchertobool = false;
|
||||
bool switchertoboolTwo = false;
|
||||
ActiveSkillSavedData NowSkillGolem = null;
|
||||
@ -4428,13 +4416,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
public void LoadCurrencyData()
|
||||
{
|
||||
int bloodShards = 0;
|
||||
if (World.Game.IsHardcore)
|
||||
bloodShards = Toon.GameAccount.HardcoreBloodShards;
|
||||
else
|
||||
bloodShards = Toon.GameAccount.BloodShards;
|
||||
|
||||
Inventory.UpdateCurrencies();
|
||||
|
||||
bloodShards = this.Toon.GameAccount.BloodShards;
|
||||
this.Inventory.UpdateCurrencies();
|
||||
}
|
||||
|
||||
public void LoadMailData()
|
||||
@ -5377,7 +5360,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
||||
Type = (FloatingAmountMessage.FloatType)22,
|
||||
});
|
||||
//*/
|
||||
Toon.CraftItem4++;
|
||||
Toon.GameAccount.CraftItem4++;
|
||||
Inventory.UpdateCurrencies();
|
||||
item.Destroy();
|
||||
}
|
||||
|
||||
@ -805,22 +805,22 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
}
|
||||
});
|
||||
//StartConversation(this.Target.World, 340878);
|
||||
var hubWorld = Target.World.Game.GetWorld(WorldSno.x1_tristram_adventure_mode_hub);
|
||||
var orek = (hubWorld.GetActorBySNO(ActorSno._x1_lr_nephalem) as InteractiveNPC);
|
||||
orek.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(340878));
|
||||
orek.ForceConversationSNO = 340878;
|
||||
orek.Attributes[GameAttribute.Conversation_Icon, 0] = 2;
|
||||
orek.Attributes[GameAttribute.Conversation_Icon, 1] = 2;
|
||||
orek.Attributes[GameAttribute.Conversation_Icon, 2] = 2;
|
||||
orek.Attributes[GameAttribute.Conversation_Icon, 3] = 2;
|
||||
orek.Attributes.BroadcastChangedIfRevealed();
|
||||
//Unique spawn
|
||||
Target.World.SpawnBloodShards(Target, plr, RandomHelper.Next(10, 30));
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
plr.Toon.BigPortalKey++;
|
||||
Target.World.Game.ActiveNephalemProgress = 0f;
|
||||
var HubWorld = this.Target.World.Game.GetWorld(WorldSno.x1_tristram_adventure_mode_hub);
|
||||
var Orek = (HubWorld.GetActorBySNO(ActorSno._x1_lr_nephalem) as InteractiveNPC);
|
||||
Orek.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(340878));
|
||||
Orek.ForceConversationSNO = 340878;
|
||||
Orek.Attributes[GameAttribute.Conversation_Icon, 0] = 2;
|
||||
Orek.Attributes[GameAttribute.Conversation_Icon, 1] = 2;
|
||||
Orek.Attributes[GameAttribute.Conversation_Icon, 2] = 2;
|
||||
Orek.Attributes[GameAttribute.Conversation_Icon, 3] = 2;
|
||||
Orek.Attributes.BroadcastChangedIfRevealed();
|
||||
//Уникальный спавн
|
||||
this.Target.World.SpawnBloodShards(this.Target, plr, RandomHelper.Next(10, 30));
|
||||
this.Target.World.SpawnGold(this.Target, plr);
|
||||
this.Target.World.SpawnGold(this.Target, plr);
|
||||
this.Target.World.SpawnGold(this.Target, plr);
|
||||
plr.Toon.GameAccount.BigPortalKey++;
|
||||
this.Target.World.Game.ActiveNephalemProgress = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
user.block.title