Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small Brax extensions #322

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion kod/include/blakston.khd
Original file line number Diff line number Diff line change
Expand Up @@ -775,7 +775,8 @@
RID_NECROAREA3B = 832
RID_BRAX_BUILDING2 = 832
RID_BRAX_ARENA = 833
RID_BRAX_END = 833
RID_NECROAREA6 = 834
RID_BRAX_END = 834

RID_BOURGEOIS = 850
RID_CASTLE2A = 850
Expand Down Expand Up @@ -1796,6 +1797,8 @@
TID_XEO_HOLY = 71
TID_XEO_NERU = 72
TID_XEO_ILL = 73

TID_SKELETON5 = 74

// English articles

Expand Down
113 changes: 113 additions & 0 deletions kod/object/active/holder/nomoveon/battler/monster/skel/gdaemskel.kod
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
// Meridian 59, Copyright 1994-2012 Andrew Kirmse and Chris Kirmse.
// All rights reserved.
//
// This software is distributed under a license that is described in
// the LICENSE file that accompanies it.
//
// Meridian is a registered trademark.


////////////////////////////////////////////////////////////////////////////////
GiantDaemonSkeleton is Skeleton

constants:

include blakston.khd

DEMENTIA_CHANCE = 20

resources:

include gdaemskel.lkod

GiantDaemonSkeleton_koc_name_rsc = "gikochaleoc"
GiantDaemonSkeleton_name_rsc = "giant daemon skeleton"
GiantDaemonSkeleton_icon_rsc = gskelbody.bgf
GiantDaemonSkeleton_desc_rsc = \
"The sight alone of this abomination of nature is often enough to "
"paralyze a human. You shudder to think what dark ritual brought "
"this creature into being."

GiantDaemonSkeleton_head = gskelhed4.bgf
GiantDaemonSkeleton_dead_icon_rsc = skelX.bgf
GiantDaemonSkeleton_dead_name_rsc = "pile of bones"

GiantDaemonSkeleton_sound_miss = skl4_atk.ogg
GiantDaemonSkeleton_sound_death = skl4_die.ogg
GiantDaemonSkeleton_sound_aware = skl4_awr.ogg

classvars:

vrKocName = GiantDaemonSkeleton_koc_name_rsc
vrName = GiantDaemonSkeleton_name_rsc
vrIcon = GiantDaemonSkeleton_icon_rsc
vrDesc = GiantDaemonSkeleton_desc_rsc
vrDead_icon = GiantDaemonSkeleton_dead_icon_rsc
vrDead_name = GiantDaemonSkeleton_dead_name_rsc

viTreasure_type = TID_SKELETON5
viSpeed = SPEED_FAST
viAttack_type = ATCK_WEAP_THRUST
viAttributes = 0
viLevel = 150
viDifficulty = 9
viVisionDistance = 20
// Attack range of 192, or 3 row/col.
viAttackRange = 192
viKarma = -100
viDefault_behavior = \
AI_FIGHT_AGGRESSIVE | AI_FIGHT_HYPERAGGRESSIVE \
| AI_FIGHT_SWITCHALOT | AI_MOVE_FLEE_FRIGHTENERS
viCashmin = 2589
viCashmax = 4225
vrSound_miss = DaemonSkeleton_sound_miss
vrSound_aware = DaemonSkeleton_sound_aware
vrSound_death = DaemonSkeleton_sound_death

vrHeadIcon = GiantDaemonSkeleton_head

properties:

piAnimation = ANIM_NONE

messages:

SetResistances()
{
plResistances = [ [ATCK_WEAP_PIERCE, 70 ],
[ATCK_WEAP_THRUST, 70 ],
[-ATCK_SPELL_UNHOLY, 70 ],
[-ATCK_SPELL_SHOCK, 70 ],
[-ATCK_SPELL_FIRE, 70 ],
[-ATCK_SPELL_COLD, -10 ],
[-ATCK_SPELL_HOLY, -20 ],
[ATCK_WEAP_BLUDGEON, -20 ]
];

return;
}

HitSideEffect(what = $, who = $)
{
local oSpell;

oSpell = Send(SYS,@FindSpellByNum,#num=SID_DEMENT);
if NOT Send(what,@IsEnchanted,#what=oSpell)
AND Random(1,DEMENTIA_CHANCE) = 1
{
if who <> $
{
Send(oSpell,@CastSpell,#who=who,#lTargets=[what],#iSpellPower=15,
#bItemCast=TRUE);
}
else
{
Send(oSpell,@DoSpell,#what=self,#oTarget=what,#iSpellPower=15);
}
}

return;
}

end
////////////////////////////////////////////////////////////////////////////////
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
GiantDaemonSkeleton_koc_name_rsc = de "gikochaleoc"
GiantDaemonSkeleton_name_rsc = de "Das Riesen D�monenskelett"
GiantDaemonSkeleton_desc_rsc = de \
"Allein der Anblick dieser Abnormalit�t der Natur ist oft genug umeinen "
"Menschen erstarren zu lassen. Du schauderst, als Du daran denkst,was "
"f�r ein dunkles Ritual diese Abnormalit�t zum Leben erweckt hat!"
GiantDaemonSkeleton_dead_name_rsc = de "Ein gro�er Knochenhaufen"
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
!include $(TOPDIR)\common.mak

DEPEND = ..\skel.bof
BOFS = batrskel.bof daemskel.bof tuskskel.bof
BOFS = batrskel.bof daemskel.bof tuskskel.bof gdaemskel.bof


!include $(KODDIR)\kod.mak
2 changes: 1 addition & 1 deletion kod/object/active/holder/room/monsroom/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ BOFS = badland1.bof a5.bof a6.bof c4.bof c6.bof castle1b.bof d4.bof d5.bof \
necarea3.bof necare3a.bof necare3b.bof necarea4.bof necarea5.bof \
marcryp1.bof marcryp2.bof marcry3a.bof castle2b.bof castle2c.bof \
throne2.bof survivalroom.bof castle1d.bof tossecret.bof farolwest.bof \
razaforest.bof oldtown.bof d6e6.bof d6e6ulake.bof
razaforest.bof oldtown.bof d6e6.bof d6e6ulake.bof necarea6.bof

# g7.bof h8.bof i2.bof i4.bof i5.bof \
# j4.bof j5.bof j6.bof j7.bof j8.bof j9.bof k3.bof \
Expand Down
8 changes: 5 additions & 3 deletions kod/object/active/holder/room/monsroom/necarea3.kod
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,11 @@ messages:

plExits = $;

// Locked gate to the north
plExits = Cons([ 5, 20, ROOM_LOCKED_DOOR, Necropolis3_locked_gate ],plExits);
plExits = Cons([ 5, 21, ROOM_LOCKED_DOOR, Necropolis3_locked_gate ],plExits);
// To Daemon Skeleton
plExits = Cons([ 1, 18, RID_NECROAREA6, 31, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 1, 19, RID_NECROAREA6, 31, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 1, 20, RID_NECROAREA6, 31, 11, ROTATE_NONE ],plExits);


// Southwest abandoned building
plExits = Cons([ 19, 12, ROOM_LOCKED_DOOR, Necropolis3_locked_door ],plExits);
Expand Down
190 changes: 190 additions & 0 deletions kod/object/active/holder/room/monsroom/necarea6.kod
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
// Meridian 59, Copyright 1994-2012 Andrew Kirmse and Chris Kirmse.
// All rights reserved.
//
// This software is distributed under a license that is described in
// the LICENSE file that accompanies it.
//
// Meridian is a registered trademark.


///////////////////////////////////////////////////////////////////////////////////
Necropolis6 is MonsterRoom

constants:

include blakston.khd
include protocol.khd

GIANT_ROW = 6
GIANT_COL = 11

HOUR_MILLI = 900000

// FENCE SECTORS
// FENCE_1 = 3
// FENCE_2 = 4
// FENCE_3 = 5

resources:

include necarea6.lkod

room_name_Necropolis6 = "Decaying City of Brax II"
room_Necropolis6 = necarea6.roo
Necropolis6_music = nec02.ogg

Necropolis6_loop = necloop4.ogg

Necropolis6_no_rift = "Casting shadow rift here would be pointless."

fence_open_sound = doordown.ogg
fence_close_sound = doorrsup.ogg

classvars:

vrName = room_name_Necropolis6

viTeleport_row = 27
viTeleport_col = 11

viTerrain_type = TERRAIN_NECROPOLIS

properties:

prRoom = room_Necropolis6
piRoom_num = RID_NECROAREA6

piBaseLight = LIGHT_MIN
piOutside_factor = 0

piGen_time = 25000
piGen_percent = 80

piInit_count_min = 7
piInit_count_max = 9

piMonster_count_max = 25

prMusic = Necropolis6_music

ptGiant_gen = $

messages:

CreateStandardExits()
{

plExits = $;

// To NECROAREA 3
plExits = Cons([ 32, 10, RID_NECROAREA3, 2, 19, ROTATE_NONE ],plExits);
plExits = Cons([ 32, 11, RID_NECROAREA3, 2, 19, ROTATE_NONE ],plExits);
plExits = Cons([ 32, 12, RID_NECROAREA3, 2, 19, ROTATE_NONE ],plExits);

// To INSIDE
plExits = Cons([ 22, 10, RID_NECROAREA6, 20, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 22, 11, RID_NECROAREA6, 20, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 22, 12, RID_NECROAREA6, 20, 11, ROTATE_NONE ],plExits);

plExits = Cons([ 21, 10, RID_NECROAREA6, 22, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 21, 11, RID_NECROAREA6, 22, 11, ROTATE_NONE ],plExits);
plExits = Cons([ 21, 12, RID_NECROAREA6, 22, 11, ROTATE_NONE ],plExits);

propagate;
}


ReqSpellCast(who = $, oSpell = $, lItems = $)
{
if IsClass(oSpell,&DeathsDoor)
{
Send(who,@MsgSendUser,#message_rsc=Necropolis6_no_rift);

return FALSE;
}

propagate;
}


Constructed()
{
plMonsters = [ [&DaemonSkeleton, 70], [&TuskedSkeleton, 30] ];
plGenerators = [ [10,9], [10,14], [13,14], [15,9], [17,9], [17,14] ];

plLooping_sounds = [[ Necropolis4_loop, 0, 0, 200, 100 ]];

Send(self,@GiantGenTimer);

propagate;

}


GiantGenTimer()
{
local i,bFound,each_obj;

ptGiant_gen = $;

bFound = FALSE;
foreach i in plActive
{
each_obj = Send(self,@HolderExtractObject,#data=i);
if IsClass(each_obj,&GiantDaemonSkeleton)
{
bFound = TRUE;
}
}

if not bFound
{
Send(self,@NewHold,#what=Create(&GiantDaemonSkeleton),#new_row=GIANT_ROW,#new_col=GIANT_COL);
}

ptGiant_gen = CreateTimer(self,@GiantGenTimer,1*HOUR_MILLI);

return;
}


CreateStandardObjects()
{
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_NECSLIME),
#new_row=18,#new_col=8,#fine_row=56,#fine_col=0,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_NECSLIME),
#new_row=5,#new_col=14,#fine_row=0,#fine_col=48,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_NECSLIME),
#new_row=20,#new_col=16,#fine_row=56,#fine_col=8,#angle=ANGLE_EAST);

Send(self,@NewHold,#what=Create(&Skull),
#new_row=19,#new_col=8,#fine_row=8,#fine_col=40,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_HALFSKULL),
#new_row=19,#new_col=9,#fine_row=0,#fine_col=8,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&Skull),
#new_row=15,#new_col=12,#fine_row=48,#fine_col=8,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_HALFSKULL),
#new_row=16,#new_col=11,#fine_row=24,#fine_col=0,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&Skull),
#new_row=12,#new_col=13,#fine_row=8,#fine_col=0,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_HALFSKULL),
#new_row=11,#new_col=11,#fine_row=16,#fine_col=40,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&Skull),
#new_row=7,#new_col=10,#fine_row=48,#fine_col=16,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_HALFSKULL),
#new_row=7,#new_col=13,#fine_row=56,#fine_col=0,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&Skull),
#new_row=6,#new_col=10,#fine_row=24,#fine_col=0,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_HALFSKULL),
#new_row=5,#new_col=12,#fine_row=24,#fine_col=24,#angle=ANGLE_EAST);

Send(self,@NewHold,#what=Create(&OrnamentalObject,#type=OO_NECTREE4),
#new_row=27,#new_col=9,#fine_row=0,#fine_col=48,#angle=ANGLE_EAST);
Send(self,@NewHold,#what=Create(&GlowTree),
#new_row=22,#new_col=13,#fine_row=48,#fine_col=48,#angle=ANGLE_EAST);

propagate;
}

end
////////////////////////////////////////////////////////////////////////////////
2 changes: 2 additions & 0 deletions kod/object/active/holder/room/monsroom/necarea6.lkod
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
room_name_Necropolis6 = de "Die verfallende Stadt von Brax II"
Necropolis6_no_rift = de "Hier Schattenriss zu zaubern w�rde nutzlos sein."
2 changes: 1 addition & 1 deletion kod/object/passive/trestype/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ BOFS = wimptres.bof notres.bof spquent.bof med-tght.bof wmp-medt.bof \
statuet.bof kriipat.bof molluskt.bof shadowbeastt.bof ratktres.bof \
earthelet.bof fireelet.bof iceelet.bof neruelet.bof easterbunnyt.bof \
killerbunnyt.bof xeoairt.bof xeoeartht.bof xeofiret.bof xeowatert.bof \
xeoacidt.bof xeounholyt.bof xeoholyt.bof xeonerut.bof xeoillt.bof
xeoacidt.bof xeounholyt.bof xeoholyt.bof xeonerut.bof xeoillt.bof skel5t.bof

!include $(KODDIR)\kod.mak
Loading