상품 구성 관련 수정사항 반영 바랍니다.

1) 챗봇 패키지는 특가 패키지로 합쳐서 4개의 상품으로 처리 될 수 있도록 수정 바랍니다.
2) 일부 패키지 기능 수정이 필요합니다.
핫타임 패키지 : 피버 모드 지속시간 2배로 증가 (패키지 구매 시)
확률업 패키지 : 뽑기 가격 1/2로 감소, 뽑기 확률 증가 (패키지 구매 시 뽑기 등급1 가중치 0으로 변경)"
This commit is contained in:
Ino 2025-12-19 15:18:29 +09:00
parent 3e77c663f9
commit 9cf2822b09
8 changed files with 256 additions and 90 deletions

View File

@ -25,16 +25,6 @@ MonoBehaviour:
m_ReadOnly: 0 m_ReadOnly: 0
m_SerializedLabels: [] m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 6380f1d398a88f24eb4533b24a31dd71
m_Address: Assets/Res_Addr/Girl_Game
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9bef269f90a11c545bd6c49e5eeaa40c
m_Address: Assets/Res_Addr/Girl_LuckyGame
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
m_ReadOnly: 0 m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: a2b1186de4aee1c42bc7b90913f7e65c, type: 2} m_Settings: {fileID: 11400000, guid: a2b1186de4aee1c42bc7b90913f7e65c, type: 2}
m_SchemaSet: m_SchemaSet:

View File

@ -42,24 +42,46 @@ public class table_gacharateconfig : table_base
if (tableDatas == null || tableDatas.Count == 0) if (tableDatas == null || tableDatas.Count == 0)
return null; return null;
List<gacharateconfigtabledata> targetList = tableDatas;
if (SaveMgr.Ins.GachaChargeTime_Reduce())
{
int minGrade = int.MaxValue;
for (int i = 0; i < tableDatas.Count; i++)
{
if (tableDatas[i].n_GachaGrade < minGrade)
minGrade = tableDatas[i].n_GachaGrade;
}
var filtered = new List<gacharateconfigtabledata>();
for (int i = 0; i < tableDatas.Count; i++)
{
if (tableDatas[i].n_GachaGrade > minGrade)
filtered.Add(tableDatas[i]);
}
if (filtered.Count > 0)
targetList = filtered;
}
int totalRate = 0; int totalRate = 0;
foreach (var data in tableDatas) foreach (var data in targetList)
{ {
totalRate += data.n_GachaGradeRate; totalRate += data.n_GachaGradeRate;
} }
// 1 ~ totalRate 사이 난수 생성 // 1 ~ totalRate
int rand = UnityEngine.Random.Range(1, totalRate + 1); int rand = UnityEngine.Random.Range(1, totalRate + 1);
int cumulative = 0; int cumulative = 0;
foreach (var data in tableDatas) foreach (var data in targetList)
{ {
cumulative += data.n_GachaGradeRate; cumulative += data.n_GachaGradeRate;
if (rand <= cumulative) if (rand <= cumulative)
return data; return data;
} }
// fallback (논리상 여기 안 옴) // fallback
return tableDatas[tableDatas.Count - 1]; return targetList[targetList.Count - 1];
} }
} }

View File

@ -130,7 +130,6 @@ public class HorseRushPanel : AddrHandleBase
{ {
STUN_TIME = 0.5f; STUN_TIME = 0.5f;
RUSH_LIMIT_TIME = 2f; RUSH_LIMIT_TIME = 2f;
FEVER_TIME = 8f;
BONUS_TIME = 0.4f; BONUS_TIME = 0.4f;
FEVER_INCREASE_MIN = 5; FEVER_INCREASE_MIN = 5;
FEVER_INCREASE_MAX = 15; FEVER_INCREASE_MAX = 15;
@ -311,6 +310,7 @@ public class HorseRushPanel : AddrHandleBase
#if UNITY_EDITOR #if UNITY_EDITOR
DEFAULT_FEVER_COUNT = 20; DEFAULT_FEVER_COUNT = 20;
#endif #endif
FEVER_TIME = SaveMgr.Ins.IsInfinityMiniGame() ? 16f : 8f;
// UI 초기화 // UI 초기화
_combo.SetActive(false); _combo.SetActive(false);

View File

@ -16342,7 +16342,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 34, y: -78} m_AnchoredPosition: {x: 34, y: 333}
m_SizeDelta: {x: -50.10004, y: -89.630005} m_SizeDelta: {x: -50.10004, y: -89.630005}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &372107469 --- !u!114 &372107469
@ -17889,7 +17889,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &413986003 --- !u!224 &413986003
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -19420,9 +19420,9 @@ RectTransform:
- {fileID: 1758430830} - {fileID: 1758430830}
m_Father: {fileID: 1520745915} m_Father: {fileID: 1520745915}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -240, y: -272} m_AnchoredPosition: {x: -234.2, y: 216}
m_SizeDelta: {x: 440, y: 302.74} m_SizeDelta: {x: 440, y: 302.74}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &449645076 --- !u!114 &449645076
@ -33081,7 +33081,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &772120019 --- !u!224 &772120019
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -39976,7 +39976,7 @@ MonoBehaviour:
t_limit: {fileID: 1446812988} t_limit: {fileID: 1446812988}
t_pricelimit: {fileID: 1860629982} t_pricelimit: {fileID: 1860629982}
t_buymoneyprice: {fileID: 539166755} t_buymoneyprice: {fileID: 539166755}
t_sale: {fileID: 0} t_sale: {fileID: 1064032601}
go_btnbuy: {fileID: 513804693} go_btnbuy: {fileID: 513804693}
go_btnbuylimit: {fileID: 825929559} go_btnbuylimit: {fileID: 825929559}
go_btnbuymoney: {fileID: 1105452051} go_btnbuymoney: {fileID: 1105452051}
@ -42581,7 +42581,7 @@ MonoBehaviour:
t_limit: {fileID: 1014086874} t_limit: {fileID: 1014086874}
t_pricelimit: {fileID: 915124419} t_pricelimit: {fileID: 915124419}
t_buymoneyprice: {fileID: 1924078574} t_buymoneyprice: {fileID: 1924078574}
t_sale: {fileID: 0} t_sale: {fileID: 381297544}
go_btnbuy: {fileID: 2014452500} go_btnbuy: {fileID: 2014452500}
go_btnbuylimit: {fileID: 1988377068} go_btnbuylimit: {fileID: 1988377068}
go_btnbuymoney: {fileID: 902737964} go_btnbuymoney: {fileID: 902737964}
@ -48824,7 +48824,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 46, y: -268.18506} m_AnchoredPosition: {x: 46, y: 143}
m_SizeDelta: {x: 0, y: -100} m_SizeDelta: {x: 0, y: -100}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1072563889 --- !u!114 &1072563889
@ -51954,9 +51954,9 @@ RectTransform:
- {fileID: 89002543} - {fileID: 89002543}
m_Father: {fileID: 1520745915} m_Father: {fileID: 1520745915}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 240, y: -272.00003} m_AnchoredPosition: {x: 233.89, y: 216}
m_SizeDelta: {x: 440, y: 302.74} m_SizeDelta: {x: 440, y: 302.74}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1142258171 --- !u!114 &1142258171
@ -52266,7 +52266,7 @@ MonoBehaviour:
t_limit: {fileID: 735254794} t_limit: {fileID: 735254794}
t_pricelimit: {fileID: 1592967792} t_pricelimit: {fileID: 1592967792}
t_buymoneyprice: {fileID: 1954560664} t_buymoneyprice: {fileID: 1954560664}
t_sale: {fileID: 0} t_sale: {fileID: 1827843152}
go_btnbuy: {fileID: 158737568} go_btnbuy: {fileID: 158737568}
go_btnbuylimit: {fileID: 404307196} go_btnbuylimit: {fileID: 404307196}
go_btnbuymoney: {fileID: 233404564} go_btnbuymoney: {fileID: 233404564}
@ -53364,7 +53364,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1} m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -74} m_AnchoredPosition: {x: 0, y: 340}
m_SizeDelta: {x: 956, y: 66} m_SizeDelta: {x: 956, y: 66}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1176259466 --- !u!114 &1176259466
@ -56732,9 +56732,9 @@ RectTransform:
m_Children: [] m_Children: []
m_Father: {fileID: 2083971308} m_Father: {fileID: 2083971308}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 1, y: 0} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -50, y: 51} m_AnchoredPosition: {x: 50, y: -49}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1246994244 --- !u!114 &1246994244
@ -65300,8 +65300,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 540, y: -3023.6} m_AnchoredPosition: {x: 540, y: -2571.51}
m_SizeDelta: {x: 1080, y: 1867.8} m_SizeDelta: {x: 1080, y: 963.62}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1444161457 --- !u!1 &1444161457
GameObject: GameObject:
@ -65948,7 +65948,7 @@ MonoBehaviour:
t_limit: {fileID: 1911490257} t_limit: {fileID: 1911490257}
t_pricelimit: {fileID: 1860643411} t_pricelimit: {fileID: 1860643411}
t_buymoneyprice: {fileID: 1127974296} t_buymoneyprice: {fileID: 1127974296}
t_sale: {fileID: 0} t_sale: {fileID: 255354124}
go_btnbuy: {fileID: 1972920947} go_btnbuy: {fileID: 1972920947}
go_btnbuylimit: {fileID: 1559514763} go_btnbuylimit: {fileID: 1559514763}
go_btnbuymoney: {fileID: 258455758} go_btnbuymoney: {fileID: 258455758}
@ -67137,7 +67137,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 3957.5} m_SizeDelta: {x: 0, y: 3053.32}
m_Pivot: {x: 0, y: 1} m_Pivot: {x: 0, y: 1}
--- !u!114 &1500699733 --- !u!114 &1500699733
MonoBehaviour: MonoBehaviour:
@ -87287,7 +87287,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &1941786414 --- !u!224 &1941786414
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -88661,9 +88661,9 @@ RectTransform:
m_Children: [] m_Children: []
m_Father: {fileID: 797927522} m_Father: {fileID: 797927522}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 1, y: 0} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -65, y: 39} m_AnchoredPosition: {x: 35, y: -61}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1957647543 --- !u!114 &1957647543

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using GUPS.AntiCheat.Protected;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -25,11 +26,11 @@ public class GachaUI : uScrollViewMgr
float fRefillTime, ToastY = -400f; float fRefillTime, ToastY = -400f;
List<(eMoney, int)> list_log = new List<(eMoney, int)>(); List<(eMoney, int)> list_log = new List<(eMoney, int)>();
Coroutine co_sliderupdate; Coroutine co_sliderupdate;
ProtectedInt32 m_GachaNeed;
private void Start() private void Start()
{ {
texts[1].text = $"{table_GlobalValue.Ins.Get_Float("GachaAD_Reward")}"; texts[1].text = $"{table_GlobalValue.Ins.Get_Float("GachaAD_Reward")}";
texts[2].text = $"{table_GlobalValue.Ins.Get_Int("GachaAmount")}";
texts[4].text = $"{table_GlobalValue.Ins.Get_Int("GachaAmount")}"; texts[4].text = $"{table_GlobalValue.Ins.Get_Int("GachaAmount")}";
videoPlayer.loopPointReached += OnVideoEnd; videoPlayer.loopPointReached += OnVideoEnd;
@ -54,6 +55,10 @@ public class GachaUI : uScrollViewMgr
Set_UI(false); Set_UI(false);
Init_GachaAnim(); Init_GachaAnim();
Set_Video(); Set_Video();
m_GachaNeed = table_GlobalValue.Ins.Get_Int("GachaAmount");
m_GachaNeed.Obfuscate();
texts[2].text = $"{(SaveMgr.Ins.GachaChargeTime_Reduce() ? m_GachaNeed >> 1 : m_GachaNeed)}";
} }
void Set_UI(bool updateSlider) void Set_UI(bool updateSlider)
@ -177,7 +182,7 @@ public class GachaUI : uScrollViewMgr
public void OnClick_Gacha() public void OnClick_Gacha()
{ {
if (!isGacha && SaveMgr.Ins.Check_Money(eMoney.Gacha, table_GlobalValue.Ins.Get_Int("GachaAmount"), true, ToastY)) if (!isGacha && SaveMgr.Ins.Check_Money(eMoney.Gacha, m_GachaNeed, true, ToastY))
{ {
CanSkip = isGacha = true; CanSkip = isGacha = true;
isRewardGiven = false; isRewardGiven = false;
@ -234,7 +239,7 @@ public class GachaUI : uScrollViewMgr
if (isRewardGiven) yield break; if (isRewardGiven) yield break;
isRewardGiven = true; isRewardGiven = true;
SaveMgr.Ins.Add_Money(eMoney.Gacha, -table_GlobalValue.Ins.Get_Int("GachaAmount")); SaveMgr.Ins.Add_Money(eMoney.Gacha, -m_GachaNeed);
var gradedata = table_gacharateconfig.Ins.Get_RadomData(); var gradedata = table_gacharateconfig.Ins.Get_RadomData();
var reward = table_gachareward.Ins.Get_Reward(gradedata.n_GachaGrade); var reward = table_gachareward.Ins.Get_Reward(gradedata.n_GachaGrade);
i_GachaReward.transform.parent.parent.gameObject.SetActive(true); i_GachaReward.transform.parent.parent.gameObject.SetActive(true);

View File

@ -74,15 +74,27 @@ public class LobbyUI : MonoBehaviourSingletonTemplate<LobbyUI>
} }
} }
void MiniGameCharging() void MiniGameCharging()
{
if (!SaveMgr.Ins.IsInfinityMiniGame())
{ {
SaveMgr.Ins.Add_Money(eMoney.MiniGameHP); SaveMgr.Ins.Add_Money(eMoney.MiniGameHP);
m_ToastUI.Set($"생명력이 충전되었습니다."); m_ToastUI.Set($"생명력이 충전되었습니다.");
}
else
SaveMgr.Ins.Set_Money(eMoney.MiniGameHP, table_GlobalValue.Ins.Get_Int("MiniGame_TotalEnterMoney"));
Check_MiniGameCharging(); Check_MiniGameCharging();
Set_Money(); Set_Money();
SaveMgr.Ins.Save(); SaveMgr.Ins.Save();
} }
void Check_MiniGameCharging() void Check_MiniGameCharging()
{ {
if (SaveMgr.Ins.IsInfinityMiniGame())
{
minigamechargingTime = 0f;
return;
}
if (!SaveMgr.Ins.Check_Money(eMoney.MiniGameHP, table_GlobalValue.Ins.Get_Int("MiniGame_TotalEnterMoney"), false)) if (!SaveMgr.Ins.Check_Money(eMoney.MiniGameHP, table_GlobalValue.Ins.Get_Int("MiniGame_TotalEnterMoney"), false))
{ {
var cal = SaveMgr.Ins.Get_MiniGameTime() - InternetTime.Ins.Time; var cal = SaveMgr.Ins.Get_MiniGameTime() - InternetTime.Ins.Time;

View File

@ -243,22 +243,24 @@ public class ShopCard : MonoBehaviour
msg += $"광고 제거권을 획득했습니다."; msg += $"광고 제거권을 획득했습니다.";
} }
if (m_Data.n_BonusGameRefill > 0) //if (m_Data.n_BonusGameRefill > 0)
{ //{
if (!string.IsNullOrEmpty(msg)) msg += "\n"; // if (!string.IsNullOrEmpty(msg)) msg += "\n";
msg += $"보너스 게임 리필 횟수가 {m_Data.n_BonusGameRefill} 추가 되었습니다."; // msg += $"보너스 게임 리필 횟수가 {m_Data.n_BonusGameRefill} 추가 되었습니다.";
} //}
if (m_Data.b_InfinityMiniGame) if (m_Data.b_InfinityMiniGame)
{ {
if (!string.IsNullOrEmpty(msg)) msg += "\n"; if (!string.IsNullOrEmpty(msg)) msg += "\n";
msg += $"미니 게임 무제한 입장을 획득했습니다."; msg += $"미니 게임 무제한 입장을 획득했습니다.\n";
msg += $"미니 게임 피버 지속시간이 2배 증가 했습니다.";
} }
if (m_Data.b_LuckyGameCharge) if (m_Data.b_LuckyGameCharge)
{ {
if (!string.IsNullOrEmpty(msg)) msg += "\n"; if (!string.IsNullOrEmpty(msg)) msg += "\n";
msg += $"뽑기 무료 충전 시간이 90% 감소되었습니다."; msg += $"뽑기 비용이 50% 감소 했습니다.\n";
msg += $"뽑기 확률이 대폭 증가 했습니다.";
} }
if (string.IsNullOrEmpty(msg)) msg = "보상이 없습니다.\n보상을 설정해 주세요!"; if (string.IsNullOrEmpty(msg)) msg = "보상이 없습니다.\n보상을 설정해 주세요!";

File diff suppressed because one or more lines are too long