JDK깔려있어야 되고 이클립스 같은 걸 쓰면 편합니다.
1. Diffuser.java
...
public static enum SteamType {
ANTI_FUNGAL("곰팡이 방지", 0),
STEAM("담수", 1),
ORANGE("오렌지", 2),
AGE_BOOST("성장촉진", 3),
AGE_STOP("성장억제", 4),
ANTI_DOS("도스화방지", 5),
ANTI_YU("살윳제", 6),
PREDATOR("포식방지", 7),
SUGER("설탕물", 8),
NOSLEEP("수면방해", 9),
HYBRID("하이브리드화약", 9),
RAPIDPREGNANT("조산화약", 9),
ANTI_NONYUKKURI("비윳쿠리증 방지약", 9),
ENDLESS_FURIFURI("무한 실룩실룩", 9),
...
이부분이 있는데 임의로 한글로 써놨기 때문에 원본이라면 일어로 나옵니다.
추가할 기능을 디퓨저에 나오게 하는건데 간단하게 광폭화기능을 넣어봅시다.
...
ANTI_NONYUKKURI("비윳쿠리증 방지약", 9),
ENDLESS_FURIFURI("무한 실룩실룩", 9),
BERSERK("광폭화", 9),
...
일단 디퓨저에 추가만 해놓은겁니다.
숫자는 증기 색깔입니다. 이미지를 추가 할 수 있는데 있는걸 쓸거니 패스합니다.
2. Terrarium.java
...
public static boolean antifungalSteam = false;
public static boolean orangeSteam = false;
public static boolean ageBoostSteam = false;
public static boolean ageStopSteam = false;
public static boolean antidosSteam = false;
public static boolean poisonSteam = false;
public static boolean predatorSteam = false;
public static boolean sugerSteam = false;
public static boolean noSleepSteam = false;
public static boolean hybridSteam = false;
public static boolean rapidPregnantSteam = false;
public static boolean antiNonYukkuriDiseaseSteam = false;
public static boolean endlessFurifuriSteam = false;
...
가 나오는데 현재 ~Steam이라고 되있는게 현재 디퓨저에 활성 기능을 조절하는 스위치 같은 겁니다.
저 사이나 끝부분에
public static boolean berserkSteam = false;
이라고 하나 만듭니다. 이름은 겹치는 것만 아니면 다 되는데 알아보기 편하게 다른 것들처럼 ~Steam이라고 정하는게 좋습니다.
steam으로 검색하면 위와 비슷한 곳이 몇군데 나오는데 복사 붙여넣기 한다음 수정할 부분만 수정합니다.
예시) berserkSteam로 이름을 정한경우
resetTerrariumEnvironment() 에 berserkSteam = false 추가
if(flags[Diffuser.SteamType ~ 이라고 되어있는데다가
if(flags[Diffuser.SteamType.BERSERK.ordinal()]) berserkSteam = true;
3. BerserkEvent.java
광폭화 관련된 이벤트 java파일을 작성해야되는데 이미 있는 반격 이벤트를 그대로 사용할 생각이니까 그냥 넘어갑니다.
4. Body.java
checkSleep()으로 가보면
if (Terrarium.noSleepSteam)
{
...
부분이 있는데 치고박는데 자면 안되니까
if (Terrarium.noSleepSteam || Terrarium.berserkSteam)
{
로 수정합니다. 이클립스라면 Terrarium. 까지 치면 목록이 주르르 뜨는데 거기에 berserkSteam이 있을겁니다.
5. BodyLogic.Java
디퓨저로 광폭화를 켰을 경우 치고 박게 만들어야 되는데
/////////////////////////////////
// 移動判定
/////////////////////////////////
이라고 되있는 부분 아래쪽에
for (Body p: bodyList) {
// 自分同士のチェックは無意味なのでスキップ
if (p == b) continue;
// 最小距離のものが見つかっていたら
if( minDistance < 1 && p.getPheromone() == false){
continue;
}
// 相手が浮いてたらスキップ
if(!b.canflyCheck() && p.getZ() != 0) continue;
라는 윳쿠리 체크 및 스킵하는 부분 아래에 소스 작성하면 됩니다.
예시)
if (Terrarium.berserk)
{
p.clearActions() ;
if(!b.isTargetBind() || !p.isTargetBind())
{
EventLogic.addWorldEvent(new RevengeAttackEvent(p, b, null, 10), p, MessagePool.getMessage(b, MessagePool.Action.HateYukkuri));
}
return true ;
}
대사는 있는 대사 사용해도 되고 따로 만들어서 해도 됩니다.
제대로 동작한다면 디퓨져에서 광폭화키는 순간 우르르 몰려들어서 치고박을겁니다.
응용한다면 동족은 공격을 안한다던가 머리가 좋으면 대미지 입은 윳쿠리나 어린 윳쿠리를 우선적으로 공격하게 한다던가 할 수 있습니다.


