INFO Latest Update News

zeus9860

Active Adventurer
The True Followers of the Lost
Crusaders
Blades of Urdual
Alpha Tester
Joined
Feb 28, 2008
Messages
2,581
Reaction score
37
Age
32
Location
lolwut
Winter wolf charms seem to be Spell Casting based? I'm not sure if this is normal but i can't seem to find the requirements to get one for my alt on the log has it keeps denying my winter wolf charm on my alt when trying to capture one with the "lack of magic skill to use this crystal" message... :|
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Regula Wolf Charm: 0
Shadow Wolf Charm: 12
Winter Wolf Charm: 15
 

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
Thothie said:
I got these from you... Note DarkElfM.mdl in there.

Are you trying to say I gave you the female elf model as well now? >_>

The conspiracy deepens...

Yes im trying to say that.
I would never port an ugly warcraft 3 night elf with leaves in her hair.

And the dark elf is... well i dont know who he is.

All i know is you posted those models and i worked on the female.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
All of those are based on the night elf i got from you, with the exception of the civilian who wound up being unused and the mage i never bothered to port.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Okay... Let's just assume, for a moment, that I'm insane, it being well documented fact and all... I do not, nor have I ever had WoW, I can't animate, and I can't rig. So... WTF did these models come from?

I had a pack of HL player models, once upon a time, and one or two of them looked it might have been possible to convert them into elves, but I never had any out-right elves like these before I got this package, IIRC, from you. Cuz if they aren't yours, I sure would like to know whoever it is that has the know how to rip and re-rig WoW and Morrowind models. :\ (I only recently figured how to exctract Morrwind meshes, but still can't do animations.)
 

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
I can also confirm that the female elf model is NOT from wow.
And i do not even have Morrowind how am i supposed to get models from it?
Let alone males i am not interested in.

Looks suspiciously like this:

night-elf-campaign.jpg

I have no idea how to extract models from warcraft 3 nor make them playable.
 

FER

New Adventurer
MSC Developer
RiP
Joined
Sep 16, 2006
Messages
2,758
Reaction score
0
Age
37
Location
on Belser's army
Lets stop this madness for I hate elves.

I think I gave you those elven archer along with the male elve with glasses
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Well, where did you get them? <_<
 

FER

New Adventurer
MSC Developer
RiP
Joined
Sep 16, 2006
Messages
2,758
Reaction score
0
Age
37
Location
on Belser's army
From another HL mod, I think its was called half life deatmatch-X or something.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
JAN2010b PUBLIC CHANGELOG:

Optional B Patch (mostly server side)

• Fixed DMG/HP Multi XP passing (v. big for Shad Palace, Kfortress, and Isleofdread1)
- Layman's terms: More XP on those maps, and others.
• Fixed chests on Kfortress
• Fixed Neck Hunter on Kfortress
• Fixed doors on Aleyesu
• /stuck should work on disconnected maps
• Players should be sent to nearby random ms_player_spawn's at spawn
• Teleporters with multiple destinations will now send players to one at random
• Can't use Dragon Axe while sitting or unable to attack
• Dragon Axe will be unable to push a few oversized monsters
- Still works on nearly anything with under 10k HP though
• Max View Distance map settings should now work
- Requires both client and server have patch
• Rebuild of Fire Elemental
- COF now works, but requires both client and server have patch
• Helena Bandit Boss should no longer crash
- Well... At least not from precache errors
• Fixed buggered "items/base_treasurechest_new" chest script in Nash
• Fixed poisons spores not creating clouds at right locations
- Some fundamental stuff needs to be fixed in dlls/weapons/giprojectiles.cpp
• Fixed bugged hitchance on some classic goblins
• Fixed bugged orc bow on Chapel
• Fixed fog persistence between maps
• Fixed some item-ownership related activation scripts
• Frostbow now gives 75% cold resist as advertised
• Fixed Shad using wrong submodel during eye summon (untested)
• Fixed/work-around some bugs with the Iron Golem
• Fixed Runegahr teleport system on Shad Palace
• Fixed some duplicating chest bugs
• Fixed storing of magic hands
• Fixed some remaining bugs with the g. ice blade (mana cost also reduced)
• Fixed wrong charm dishing out on some maps
• Nerfed some monster multipliers
• Fixed various exploits
• Running an illegal map on FN will reset server to Edana on next restart

We have fixes for the lack of blinding poison and the armor/glowshell/body bit anomalies, as well as a recompile of shad_palace, but they will have to wait for FEB2010, as I'd really prefer "B" patches to be server-side (ie. optional.)

Quick patch: JAN2010a to JAN2010b:
- Good only if you have JAN2010a already installed.
Mirror1: http://www.epic-name.com/ms/msc_beta_pa ... N2010b.exe
Mirror2: http://www.thothie.com/msc_dev3/JAN2010 ... N2010b.zip
Mirror3: http://www.msremake.com/fn/msc_beta_pac ... N2010b.exe

Full betapack to be updated... Eventually.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Probably, depends on how much we can get done by FEB2010... Might pass it to MAR2010, if it gets to be too much to get more than one map, in the week or so we have.

Betapack has gotten far too large though. Dunno what we're going to do about that... Maybe it's time for a new full installer. :/
 

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
Yeah, msc 1.2

I just miss the time when we used to get a betapack each month. Really kept it alive :)
If necessary i can help with the modification of the Nashalrath scripts?
 

PBarnum

New Adventurer
MSS Developer
MSC Developer
RiP
Joined
Jun 14, 2006
Messages
3,031
Reaction score
4
Gurluas said:
I just miss the time when we used to get a betapack each month.
QFT!!! Maybe with MiB back in the mix, we might see it again.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Gurluas said:
Yeah, msc 1.2

I just miss the time when we used to get a betapack each month. Really kept it alive :)
If necessary i can help with the modification of the Nashalrath scripts?

Here's the Bludgeon and Elf base scripts, and two top scripts, have a ball:

monsters/elf_warrior_base.script
Code:
#scope server
{ [shared]

	//base anims
	setvar ANIM_WALK walk2
	setvar ANIM_IDLE deep_idle

	setvard ANIM_RUN run
	setvard ANIM_ATTACK swordswing1_R

	//custom anims
	const ANIM_MOVE_FAST run
	const ANIM_MOVE_CAUTIOUS run_squatwalk1_R
	const ANIM_IDLE_CAUTIOUS stand_squatwalk1_R
	const ANIM_IDLE_NORMAL deep_idle

	const ANIM_LOOK look_idle
	const ANIM_GUARD_IDLE stand
	const ANIM_DUCK_MOVE crawl //needs vadj
	const ANIM_DUCK_IDLE crouch_idle
	const ANIM_JUMP jump
	const ANIM_LONG_JUMP long_jump

	const ANIM_AURA prepare_fireball

	const ANIM_DEATH1 die_simple
	const ANIM_DEATH2 die_backwards1
	const ANIM_DEATH3 die_backwards
	const ANIM_DEATH4 die_forwards
	const ANIM_DEATH5 headshot
	const ANIM_DEATH6 die_spin
	const ANIM_DEATH7 gutshot
	
	const ANIM_ATTACK_1H swordswing1_R //frame_melee_1h
	const ANIM_ATTACK_2H longsword_swipe_L //frame_melee_2h
	const ANIM_ATTACK_JAB swordjab1_R //frame_jab
	const ANIM_ATTACK_1H_READY swordready1_R
	const ANIM_ATTACK_GAXE battleaxe_swing1_L //frame_axe2

	const ANIM_SPELL_PREP prepare_fireball //frame_spell_hands_join frame_spell_release
	const ANIM_SPELL_CUDDLE aim_fireball_R
	const ANIM_SPELL_FIRE throw_fireball_R //fame_spell_toss - so fast maybe don't use event though (3 frames)

	const ANIM_DRAW_SWORD swordready1_R
	
	const ANIM_MA_IDLE aim_fists
	const ANIM_ATTACK_MA aim_punch1
	const ANIM_KICK stance_normal_highkick_r1
	const ANIM_SWEEP stance_normal_lowkick_r1

	const ANIM_PARRY longsword_parry
	const ANIM_BLOCK aim_block1_L

	const ANIM_HOLD_AURA aim_sword1_R

	//other shared data
	const ELF_MODEL npc/elf_f_warrior.mdl
}

{ [server]

	//base stats
	setvard ATTACK_MOVERANGE 48
	setvard ATTACK_RANGE 80
	setvard ATTACK_HITRANGE 120

	//custom stats
	const WALK_RANGE 200

	const DMG_MELEE 300
	const DMG_TYPE slash
	const DMG_KICK 400
	const DOT_SCRIPT effects/effect_burn
	const DOT_AMT 50
	const DOT_DURATION 5.0
	const ATTACK_HITCHANCE 90%
	const CHANCE_STUN 0%
	const CHANCE_DOT 0%
	const STUN_DURATION 10.0

	const FREQ_LOOK 5.0 //just an animation effect

	const CAN_THROW 0
	const DMG_THROW 600
	const THROW_SPEED 600
	const THROW_RANGE 512
	const FREQ_THROW 6.0
	const KNIFE_TYPE poison
	const KNIFE_THROW_ITEM proj_k_knife

	const CAN_KICK 0
	const FREQ_KICK $randf(10.0,25.0)
	const KICK_RANGE 90
	const LEAP_AFTER_KICK 0

	const CAN_JUMP 1
	const FREQ_JUMP 5.0
	const MAX_JUMP_RANGE 600

	const CAN_FREEZE_AURA 0
	const FREEZE_AURA_RADIUS 128
	const FREEZE_AURA_DURATION 10.0
	const FREEZE_AURA_CL_SCRIPT effects/sfx_ice_burst
	const FREQ_FREEZE_AURA $randf(10.0,20.0)

	const WEAPON_AURA 0
	const WAURA_TYPE lightning
	const WAURA_EFFECT_SCRIPT effects/effect_shock_dmg
	const WAURA_RANGE 128
	const WEAPON_AURA_CL_SCRIPT monsters/telf_warrior_laxe_cl
	const DMG_WAURA 300
	const DOT_WAURA 100
	const WAURA_DMG_TYPE lightning_effect
	const FREQ_WAURA $randf(20.0,30.0)
	const WAURA_DURATION 5.0
	const SOUND_WAURA_START magic/bolt_end.wav
	const SOUND_WAURA_LOOP magic/bolt_loop.wav
	
	const CAN_BLOCK 0
	const FREQ_BLOCK $randf(20.0,30.0)
	const BLOCK_DURATION 5.0

	//sounds
	const SOUND_STRUCK1 weapons/cbar_hitbod1.wav
	const SOUND_STRUCK2 weapons/cbar_hitbod2.wav
	const SOUND_STRUCK3 weapons/cbar_hitbod3.wav

	const SOUND_SHIELD1 weapons/axemetal1.wav
	const SOUND_SHIELD2 weapons/axemetal2.wav
	const SOUND_SHIELD3 doors/doorstop5.wav

	const SOUND_ATTACK1 zombie/claw_miss1.wav
	const SOUND_ATTACK2 zombie/claw_miss2.wav
	const SOUND_ATTACK_CRY1 npc/elvenfemale/ElfF_Attack1.wav
	const SOUND_ATTACK_CRY2 npc/elvenfemale/ElfF_Attack2.wav
	const SOUND_ATTACK_CRY3 npc/elvenfemale/ElfF_Attack3.wav
	
	const SOUND_PAIN1 npc/elvenfemale/ElfF_Criticalhit.wav
	const SOUND_PAIN2 npc/elvenfemale/ElfF_Pain1.wav
	const SOUND_PAIN3 npc/elvenfemale/ElfF_Pain2.wav
	const SOUND_PAIN4 npc/elvenfemale/ElfF_Pain3.wav

	const SOUND_DEATH npc/elvenfemale/ElfF_Die.wav

	const SOUND_THROW zombie/claw_miss1.wav
	const SOUND_DRAW weapons/dagger/dagger2.wav

	precache SOUND_DEATH
}

#include monsters/base_monster_new

//==================================== Init
{ npc_spawn

	setmodel ELF_MODEL
	width 24
	height 80
	roam 1

	hearingsensitivity 10

	setmoveanim ANIM_WALK
	setidleanim ANIM_IDLE

	//general elemental resistance
	takedmg cold 0.5
	takedmg fire 0.5
	takedmg poison 0.5
	takedmg lightning 0.5

	takedmg holy 0.0 //native to plane

	callevent elf_spawn

	setvard ELF_HALF_HEALTH $get(ent_me,maxhp)
	multiply ELF_HALF_HEALTH 0.5

	setvard DEF_ANIM_WALK ANIM_WALK
	setvard DEF_ANIM_RUN ANIM_RUN
	setvard DEF_ANIM_IDLE ANIM_IDLE
	callevent 3.0 mark_def_anims

	setvard FIRST_CYCLE game.time
	add FIRST_CYCLE 10.0
}

{ npc_post_spawn
	if AM_ARCHER
	setvard ANIM_ATTACK shootbow
	setvard ATTACK_RANGE 1024
	setvard ATTACK_HITRANGE 1024
}

{ mark_def_anims //give time for the top script to redefine

	setvard DEF_ANIM_WALK ANIM_WALK
	setvard DEF_ANIM_RUN ANIM_RUN
	setvard DEF_ANIM_IDLE ANIM_IDLE
}

//==================================== Movement Suspend
//- This shouldn't be needed, but something in the base AI or code is causing creatuers to move when when the AI is suspended
{ suspend_movement
	setvard ANIM_WALK PARAM1
	setvard ANIM_RUN PARAM1
	setvard ANIM_IDLE PARAM1
	setmoveanim PARAM1
	setidleanim PARAM1
	roam 0
}

{ resume_movement
	setvard ANIM_WALK DEF_ANIM_WALK
	setvard ANIM_RUN DEF_ANIM_RUN
	setvard ANIM_IDLE DEF_ANIM_IDLE
	setmoveanim ANIM_RUN
	setidleanim ANIM_IDLE
	roam 1
}

//==================================== Alerts / Releases
{ cycle_up
	if ( ATTACK_STANCE equals 1h )
	{
		playanim critical ANIM_ATTACK_1H_READY
		callevent move_type 1
	}

	if ( CAN_KICK )
	{
		setvard NEXT_KICK game.time
		add NEXT_KICK FREQ_KICK
	}
}

{ cycle_down
	if ( ATTACK_STANCE equals 1h ) callevent move_type 0
}

{ my_target_died
	if ( ATTACK_STANCE equals 1h ) callevent move_type 0
}

{ heard_cycle_down
	if ( ATTACK_STANCE equals 1h ) callevent move_type 0
}

{ npc_heard_player
	if ( ATTACK_STANCE equals 1h )	callevent move_type 1
}

//==================================== Main Cycle
{ npcatk_hunt

	if ( SUSPEND_AI )
	{
		if game.time > MAX_SUSPEND
		callevent npcatk_resume_ai
	}

	local GAME_TIME game.time //we're checking game.time a lot in this sub, so store it here

	if GAME_TIME > FIRST_CYCLE //suspend cycles until we're sure we're fully initialized

	if NPCATK_TARGET isnot unset

	if !SUSPEND_AI

	if ( ATTACK_STANCE equals 1h )
	{
		//walk calmly up to opponent if not struck within last 5 secs
		if ( GAME_TIME > NEXT_CALM_TIME )
		{
			if ( $get(NPCATK_TARGET,range) < WALK_RANGE )
			{
				if ( $cansee(NPCATK_TARGET) )
				{
					callevent move_type 1
				}
				else
				{
					callevent move_type 0
				}
			}
			else
			{
				callevent move_type 0
			}
		}
		else
		{
			callevent move_type 0
		}
	} //endif ATTACK_STANCE equals 1h

	if ( CAN_THROW )
	{
		if GAME_TIME > NEXT_THROW
		if !DOING_LEAP
		if $cansee(NPCATK_TARGET)
		if ( $get(NPCATK_TARGET,range) > ATTACK_RANGE )
		{
			if $get(NPCATK_TARGET,range) < THROW_RANGE
			setvard NEXT_THROW GAME_TIME
			add NEXT_THROW FREQ_THROW
			callevent throw_knife NPCATK_TARGET
			local EXIT_SUB 1
		}
	}
	if !EXIT_SUB

	if ( CAN_KICK )
	{
		if GAME_TIME > NEXT_KICK
		setvard NEXT_KICK GAME_TIME
		if $get(NPCATK_TARGET,range) < KICK_RANGE
		add NEXT_KICK FREQ_KICK
		callevent do_kick
		local EXIT_SUB 1
	}
	if !EXIT_SUB

	//jump at targets too high
	if ( CAN_JUMP )
	{
		if GAME_TIME > NEXT_JUMP

		if $get(NPCATK_TARGET,range) < MAX_JUMP_RANGE

		local MY_Z $get(ent_me,origin.z)
		local TARG_Z $get(NPCATK_TARGET,origin.z)
		if ( $get(NPCATK_TARGET,isplayer) ) subtract TARG_Z 38 //compensate for origin center

		local Z_DIFF TARG_Z
		subtract Z_DIFF MY_Z

		if ( Z_DIFF > ATTACK_RANGE )
		{
			callevent do_hop Z_DIFF
			local EXIT_SUB 1
			setvard NEXT_JUMP GAME_TIME
			add NEXT_JUMP FREQ_JUMP
		}
	}
	if !EXIT_SUB


	if ( CAN_FREEZE_AURA )
	{
		if $get(NPCATK_TARGET,range) < FREEZE_AURA_RADIUS
		if GAME_TIME > NEXT_FREEZE_AURA
		setvard NEXT_FREEZE_AURA GAME_TIME
		add NEXT_FREEZE_AURA FREQ_FREEZE_AURA
		callevent do_freeze_aura
		local EXIT_SUB 1
	}
	if !EXIT_SUB


	if ( WEAPON_AURA )
	{
		if GAME_TIME > NEXT_WAURA
		setvard NEXT_WAURA GAME_TIME
		add NEXT_WAURA FREQ_WAURA
		callevent do_waura
		local EXIT_SUB 1
	}
	if !EXIT_SUB


	if ( CAN_BLOCK )
	{
		if GAME_TIME > NEXT_BLOCK
		setvard NEXT_BLOCK GAME_TIME
		add NEXT_BLOCK FREQ_BLOCK
		callevent do_block
	}
}

//==================================== Attack switches
{ npc_selectattack
	if ( ATTACK_STANCE equals assasin )
	{
		local RND_ATK $rand(1,2)
		if ( RND_ATK == 1 )
		{
			setvard ANIM_ATTACK ANIM_ATTACK_1H
		}
		else
		{
			setvard ANIM_ATTACK ANIM_ATTACK_JAB
		}
	}

	if ( ATTACK_STANCE equals 2hsword )
	{

		local RND_ATK $rand(1,2)
		if ( RND_ATK == 1 )
		{
			setvard ANIM_ATTACK ANIM_ATTACK_2H
		}
		else
		{
			setvard ANIM_ATTACK ANIM_ATTACK_GAXE
		}
	}
}


//==================================== Calm approach
{ move_type //1=Cautious 0=Combat
	if ATTACK_STANCE equals 1h
	if !SUSPEND_AI

	//dbg move_type PARAM1 CAUTIOUS_MOVE

	if ( PARAM1 == 1 )
	{
		if !CAUTIOUS_MOVE
		setvard CAUTIOUS_MOVE 1
		setmoveanim ANIM_MOVE_CAUTIOUS
		setidleanim ANIM_IDLE_CAUTIOUS
	}
	else
	{
		if CAUTIOUS_MOVE
		setvard CAUTIOUS_MOVE 0
		setmoveanim ANIM_MOVE_FAST
		setidleanim ANIM_IDLE_NORMAL
	}
}

{ combat_move
	setvard CAUTIOUS_MOVE 0
	setmoveanim ANIM_MOVE_FAST
	setidleanim ANIM_IDLE_NORMAL
}

//==================================== Anim Events
{ frame_melee_1h
	//<target> <range> <dmg> <cth> [type]

	if ( THROWING_KNIFE )
	{
		setvard THROWING_KNIFE 0
		local EXIT_SUB 1
	}
	if !EXIT_SUB

	callevent melee_attack
}

{ frame_jab
	callevent melee_attack
}

{ frame_axe2
	callevent melee_attack
}

{ frame_melee_2h
	callevent melee_attack
}

{ frame_kick_high
	dodamage NPCATK_TARGET ATTACK_HITRANGE DMG_KICK ATTACK_HITCHANCE DMG_TYPE
	if $get(NPCATK_TARGET,range) < KICK_RANGE
	applyeffect NPCATK_TARGET effects/heavy_stun 10.0 $get(ent_me,id) 1

	if LEAP_AFTER_KICK
	callevent 0.2 leap_away
}

{ melee_attack
	setvard MELEE_ATTACK 1
	dodamage NPCATK_TARGET ATTACK_HITRANGE DMG_MELEE ATTACK_HITCHANCE DMG_TYPE
	playrandomsound 1 10 SOUND_ATTACK1 SOUND_ATTACK2
	if $rand(1,5) == 1
	playrandomsound 0 10 SOUND_ATTACK_CRY1 SOUND_ATTACK_CRY2 SOUND_ATTACK_CRY3
	callevent move_mouth
}

{ frame_jump_land
	callevent force_leap_end
}

{ frame_hop_land
	callevent npcatk_resume_ai
}

//==================================== Struck
{ game_struck
	setvard LAST_HIT_FOR PARAM1

	//be agitated for at least 5 seconds after being struck
	setvard NEXT_CALM_TIME game.time
	add NEXT_CALM_TIME 5.0

	if !AM_BLOCKING

	if ( ATTACK_STANCE equals 1h ) callevent move_type 0

	playrandomsound 1 10 SOUND_STRUCK1 SOUND_STRUCK2 SOUND_STRUCK3
	if ( PARAM1 > 100 )
	{
		callevent sound_pain
	}
	else
	{
		if $get(ent_me,hp) < ELF_HALF_HEALTH
		if $rand(1,5) == 1
		callevent sound_pain
	}
}

{ game_damaged //PARAM1=attacker PARAM2=dmg PARAM3=dmg_type
	if AM_BLOCKING
	local ATTACKER_ID $get(PARAM1,id)
	local ATTACKER_ORG $get(PARAM1,origin)
	if $within_cone2D(ATTACKER_ORG,game.monster.origin,game.monster.angles,1)
	if ( PARAM3 contains effect ) local EXIT_SUB 1
	if !EXIT_SUB
	setdmg dmg 0.1
	returndata 0.1
	local NEG_DMG $neg(PARAM2)
	dbg game_damaged NEG_DMG
	addvelocity ent_me $relvel(0,NEG_DMG,110)
	playrandomsound 0 10 SOUND_SHIELD1 SOUND_SHIELD2 SOUND_SHIELD3
}

//==================================== Damage specials
{ game_dodamage //PARAM1=hit:0|1 PARAM2=ent_hit PARAM3=(start) PARAM4=(end)
	if ( MELEE_ATTACK )
	{
		if PARAM1
		if ( CHANCE_STUN > 0 )
		{
			if $rand(1,100) <= CHANCE_STUN
			applyeffect PARAM2 effects/heavy_stun STUN_DURATION $get(ent_me,id) 1
		}

		if ( CHANCE_DOT > 0 )
		{
			if $rand(1,100) <= CHANCE_DOT
			applyeffect PARAM2 DOT_SCRIPT DOT_DURATION $get(ent_me,id) DOT_AMT
		}
	}
	setvard MELEE_ATTACK 0
}

//==================================== Handle Death
{ npc_death
	local RND_DEATH $rand(1,7)
	if ( RND_DEATH == 1 ) setvard ANIM_DEATH ANIM_DEATH1
	if ( RND_DEATH == 2 ) setvard ANIM_DEATH ANIM_DEATH2
	if ( RND_DEATH == 3 ) setvard ANIM_DEATH ANIM_DEATH3
	if ( RND_DEATH == 4 ) setvard ANIM_DEATH ANIM_DEATH4
	if ( RND_DEATH == 5 ) setvard ANIM_DEATH ANIM_DEATH5
	if ( RND_DEATH == 6 ) setvard ANIM_DEATH ANIM_DEATH6
	if ( RND_DEATH == 7 ) setvard ANIM_DEATH ANIM_DEATH7
	if ( LAST_HIT_FOR > 100 ) setvard ANIM_DEATH ANIM_DEATH6 //spin out from heavy killing blows
	callevent move_mouth

	if ( G_TELF_ESCORTS > 0 ) subtract G_TELF_ESCORTS 1  //The_Wall escort tracker
}

//==================================== Throw Knife
{ throw_knife //<PARAM1> target
	playrandomsound 1 10 SOUND_ATTACK_CRY1 SOUND_ATTACK_CRY2 SOUND_ATTACK_CRY3
	setvard THROWING_KNIFE 1
	setvard KNIFE_TARGET PARAM1
	setvard AS_ATTACKING game.time
	add AS_ATTAKCING 5.0
	callevent npcatk_suspend_ai
	setmodelbody 1 0
	roam 0
	setidleanim ANIM_ATTACK_1H
	setmoveanim ANIM_ATTACK_1H
	setmovedest KNIFE_TARGET 9999
	playanim critical ANIM_ATTACK_1H
	playsound 0 10 SOUND_THROW
	callevent 0.25 throw_knife2
	callevent 0.75 throw_knife_done
}

{ throw_knife2
	setvard ALCO_TYPE KNIFE_TYPE
	tossprojectile KNIFE_TARGET THROW_SPEED DMG_THROW 0.2 KNIFE_THROW_ITEM (0,38,62)
}

{ throw_knife_done
	playsound 0 10 SOUND_DRAW
	setmodelbody 1 1
	roam 1
	setidleanim ANIM_IDLE
	setmoveanim ANIM_RUN
	callevent npcatk_resume_ai
}

//==================================== Kick
{ do_kick
	setvard AS_ATTACKING game.time
	add AS_ATTACKING 5.0
	playanim critical ANIM_KICK
	playrandomsound 1 10 SOUND_ATTACK1 SOUND_ATTACK2
	playrandomsound 0 10 SOUND_ATTACK_CRY1 SOUND_ATTACK_CRY2 SOUND_ATTACK_CRY3
}

//==================================== Leap Away
{ leap_away
	callevent npcatk_suspend_ai
	setvard DOING_LEAP 1
	setvard LEAP_TARGET PARAM1
	if ( !$get(LEAP_TARGET,isalive) ) setvard LEAP_TARGET NPCATK_TARGET
	setmovedest LEAP_TARGET 1024 flee
	setvard NPC_FORCED_MOVEDEST 1
	playanim critical ANIM_LONG_JUMP
	setmoveanim ANIM_LONG_JUMP
	callevent sound_pain
	callevent repulse_area $get(ent_me,origin)
	callevent 0.1 leap_away_boost
	callevent 2.0 force_leap_end
}

{ leap_away_boost
	//addvelocity ent_me $relvel(0,1000,400)
	local LEAP_TARG_ORG $get(LEAP_TARGET,origin)
	local TARG_ANG $angles(LEAP_TARG_ORG,game.monster.origin)
	setvelocity ent_me $relvel($vec(0,TARG_ANG,0),$vec(10,800,120))
}

{ force_leap_end
	if DOING_LEAP
	setvard DOING_LEAP 0
	setmoveanim ANIM_RUN
	callevent npcatk_resume_ai
}

{ repulse_area
	playsound 0 10 magic/boom.wav
	clientevent new all monsters/cold_one_cl repulse $get(ent_me,origin) 128 1 
	setvard REPULSE_LIST $get_tsphere(enemy,128)
	if REPULSE_LIST isnot none
	calleventloop $get_token_amt(REPULSE_LIST) repulse_targets
}

{ repulse_targets
	local CUR_TARG $get_token(REPULSE_LIST,game.script.iteration)
	local TARG_ORG $get(CUR_TARG,origin)
	local TARG_ANG $angles(game.monster.origin,TARG_ORG)
	setvelocity CUR_TARG $relvel($vec(0,TARG_ANG,0),$vec(10,1000,10))
}

//==================================== Hop up at targets out of reach
{ do_hop //<vertical_difference> - determines jump strength
	playrandomsound 0 10 SOUND_ATTACK_CRY1 SOUND_ATTACK_CRY2 SOUND_ATTACK_CRY3
	setvard UP_JUMP_STR PARAM1
	multiply UP_JUMP_STR 5
	callevent npcatk_suspend_ai 1.0
	setvard FWD_JUMP_STR $get(NPCATK_TARGET,range)
	dbg do_hop UP_JUMP_STR FWD_JUMP_STR
	playanim critical ANIM_JUMP
	callevent 0.1 do_jump_boost
}

{ do_jump_boost
	addvelocity ent_me $relvel(0,FWD_JUMP_STR,UP_JUMP_STR)
}

//==================================== Litch Tounge Freeze Aura
{ do_freeze_aura
	clientevent new all FREEZE_AURA_CL_SCRIPT $get(ent_me,origin) FREEZE_AURA_RADIUS 1 (128,128,255)
	playanim critical ANIM_AURA
	setvard AS_ATTACKING game.time
	add AS_ATTACKING 3.0
	callevent 0.25 do_freeze_aura2
}

{ do_freeze_aura2
	setvard FREEZE_TARGS $get_tsphere(enemy,FREEZE_AURA_RADIUS)
	if FREEZE_TARGS isnot none
	calleventloop $get_token_amt(FREEZE_TARGS) feeze_targets
}

{ feeze_targets
	local CUR_TARG $get_token(FREEZE_TARGS,game.script.iteration)
	if $get(CUR_TARG,isalive)
	if $get(CUR_TARG,onground)
	applyeffect CUR_TARG effects/freeze_solid FREEZE_AURA_DURATION $get(ent_me,id) DOT_AMT
}

{ sound_pain
	playrandomsound 0 10 SOUND_PAIN1 SOUND_PAIN2 SOUND_PAIN3 SOUND_PAIN4
	callevent move_mouth
}

//can't seem to figure a way to garuntee the gals mouth will move without being left open
//so we do random, and figure it'll close at least half the time
{ move_mouth
	local RND_SAY1 "["
	stradd RND_SAY1 $randf(0.5,1.0)
	stradd RND_SAY1 "]"
	say RND_SAY1
}

//==================================== Weapon Aura (made after the litchtoungue, or we woulda dealt with that here too)
{ do_waura
	setprop ent_me controller0 150 //model weridness - straighten back
	//leaning to side too, may need to fix that controller as well
	callevent npcatk_suspend_ai
	playanim hold ANIM_HOLD_AURA
	callevent suspend_movement ANIM_HOLD_AURA
	clientevent new all WEAPON_AURA_CL_SCRIPT $get(ent_me,index) WAURA_DURATION
	playsound 0 10 SOUND_WAURA_START
	setvard WAURA_ON 1
	callevent 0.5 do_waura_loop
	callevent WAURA_DURATION end_waura
	setvard AS_ATTACKING game.time
	add AS_ATTACKING 5.0
	add AS_ATTACKING WAURA_DURATION
}

{ do_waura_loop
	if WAURA_ON
	callevent 1.0 do_waura_loop
	if ( SOUND_WAURA_LOOP isnot 'none' ) playsound 1 10 SOUND_WAURA_LOOP
	//xdodamage $get(ent_me,origin) WAURA_RANGE DMG_WAURA 0 ent_me ent_me none WAURA_DMG_TYPE
	setvard WAURA_TARGETS $get_tsphere(enemy,WAURA_RANGE)
	if WAURA_TARGETS isnot none
	calleventloop $get_token_amt(WAURA_TARGETS) do_waura_affect_targs
}

{ do_waura_affect_targs
	local CUR_TARG $get_token(WAURA_TARGETS,game.script.iteration)
	if $get(CUR_TARG,height) > 36
	applyeffect CUR_TARGET WAURA_EFFECT_SCRIPT 5.0 $get(ent_me,id) DOT_WAURA
	dodamage CUR_TARG direct DMG_WAURA 100% ent_me WAURA_DMG_TYPE
	if ( WAURA_TYPE equals lightning )
	{
		local TARG_RESIST $get_takedmg(CUR_TARG,lightning)
		local RND_ROLL $randf(0.0,1.0)
		dbg RND_ROLL vs TARG_RESIST
		if ( RND_ROLL <= TARG_RESIST ) effect screenfade CUR_TARG 3 1 (255,255,255) 255 fadein
	}
}

{ end_waura
	dbg end_waura SOUND_WAURA_LOOP
	setprop ent_me controller0 -1 //model weridness - straighten back
	playanim break
	setvard WAURA_ON 0
	if ( SOUND_WAURA_LOOP isnot 'none' ) playsound 1 0 SOUND_WAURA_LOOP
	callevent npcatk_resume_ai
	callevent resume_movement

	if ( CAN_BLOCK )
	{
		//delay next block so we don't do one vulnerable moment after another
		setvard NEXT_BLOCK game.time
		add NEXT_BLOCK FREQ_BLOCK
	}
}

//==================================== Shield Block
{ do_block
	dbg do_block
	setprop ent_me controller0 60
	setvard BLOCK_TARGET NPCATK_TARGET
	callevent npcatk_suspend_ai
	playanim break
	playanim hold ANIM_BLOCK
	callevent suspend_movement ANIM_BLOCK
	setvard AM_BLOCKING 1
	callevent do_block_loop
	callevent BLOCK_DURATION end_block

	setvard AS_ATTACKING game.time
	add AS_ATTACKING 2.0
	add AS_ATTACKING BLOCK_DURATION
}

{ do_block_loop
	dbg do_block_loop
	if AM_BLOCKING
	//dbg Blocking...
	callevent 0.1 do_block_loop
	setmovedest BLOCK_TARGET 9999
}

{ end_block
	dbg end_block
	playanim break
	setprop ent_me controller0 -1
	setvard AM_BLOCKING 0
	callevent npcatk_resume_ai
	callevent resume_movement
}

//==================================== Lost target emote
{ npcatk_lost_sight
	if game.time > NEXT_LOOK
	setvard NEXT_LOOK game.time
	add NEXT_LOOK FREQ_LOOK
	playanim critical ANIM_LOOK
}

//==================================== BD Prevention
{ npcatk_suspend_ai
	setvard MAX_SUSPEND game.time
	add MAX_SUSPEND 10.0
}

//==================================== Debugarry
{ ext_con
	setprop ent_me controller0 PARAM1
}

//==================================== External for The_Wall
{ set_escort
	add G_TELF_ESCORTS 1
}

monsters/bludgeon_gaz_base.script
Code:
#scope server
{ [shared]

	//anims used by base
	setvar ANIM_IDLE idle
	setvar ANIM_WALK walk
	setvar ANIM_RUN	run
	setvard ANIM_ATTACK m_attack1
	setvard ANIM_FLINCH flinch2
	const ANIM_DEATH death
}


{
	const GOLD_BAGS 1
	const GOLD_BAGS_PPLAYER 1
	const GOLD_PER_BAG 50
	const GOLD_RADIUS 128
	const GOLD_MAX_BAGS 8

	//custom anims
	const ANIM_TRICK idle2
	const ANIM_JUMP jump
	const ANIM_LEAP longjump
	const ANIM_THROW m_attack1
	const ANIM_THROW_HOLD m_attack1 //may need new anim here
	const ANIM_HAMMER m_attack2
	const ANIM_WARCRY warcry

	//stats used by base
	setvard ATTACK_MOVERANGE 48
	setvard ATTACK_RANGE 110
	setvard ATTACK_HITRANGE 160
	setvard CAN_FLINCH 1

	//custom stats
	const LEAP_RANGE 220
	setvard ATTACK_HITCHANCE 80
	const STEP_SIZE_NORM 48

	const FREQ_IDLE $randf(5,10)
	const FREQ_LEAP 10.0
	const FREQ_THROW $randf(5,20)
	const FREQ_JUMP $randf(2,5)
	const FREQ_STOMP $randf(10,20)
	const FREQ_CHARGE $randf(10,20)

	const DMG_SWING $rand(50,100) //prob $rand(50,100)
	const DMG_STUN	$rand(25,50) //prob $rand(25,50)
	const DOT_BURN $rand(100,200)
	const DOT_POISON $rand(25,75)
	const DMG_CHARGE $rand(50,75)
	const DMG_THROW 80
	const CHANCE_STUN 10%

	//sounds
	const SOUND_LEAP monsters/bludgeon/bludgeonattack2.wav
	const SOUND_WARCRY monsters/bludgeon/bludgeon_gaz_bat2.wav
	const SOUND_ALERT monsters/bludgeon/bludgeon_gaz_bat1.wav
	const SOUND_SWING_MISS zombie/claw_miss2.wav
	const SOUND_SWING_HIT zombie/claw_strike1.wav
	const SOUND_ATTACK1 monsters/bludgeon/bludgeon_gaz_atk1.wav
	const SOUND_ATTACK2 monsters/bludgeon/bludgeon_gaz_atk2.wav
	const SOUND_ATTACK3 monsters/bludgeon/bludgeon_gaz_atk3.wav
	const SOUND_THROW monsters/bludgeon/bludgeon_gaz_snort.wav
	const SOUND_DEATH monsters/bludgeon/bludgeon_gaz_death.wav
	const SOUND_IDLE1 monsters/bludgeon/bludgeon_gaz_ask.wav
	const SOUND_IDLE2 monsters/bludgeon/bludgeon_gaz_answer.wav
	const SOUND_STRUCK1 weapons/cbar_hitbod1.wav
	const SOUND_STRUCK2 weapons/cbar_hitbod2.wav
	const SOUND_PAIN monsters/bludgeon/bludgeon_gaz_pain.wav
	const SOUND_SPELL monsters/bludgeon/bludgeon_gaz_spell.wav
	const SOUND_SNORT monsters/bludgeon/bludgeon_gaz_snort.wav

	const SOUND_STEP1 gonarch/gon_step1.wav
	const SOUND_STEP2 gonarch/gon_step2.wav
	const SOUND_LAND garg/gar_step2.wav

	const SOUND_CHARGE_START monsters/bludgeon/bludgeon_gaz_snort.wav
	const SOUND_CHARGE_GO monsters/bludgeon/bludgeondeath2.wav
	const SOUND_BURN ambience/steamburst1.wav

	//stun_burst
	precache magic/boom.wav

	//poison aura
	precache poison_cloud.spr

	const MONSTER_MODEL monsters/bludgeon_gaz.mdl

	//must be precached as used by base_npc
	precache SOUND_DEATH 
	precache MONSTER_MODEL
}

#include monsters/base_monster_new

{ [shared] npc_spawn

	setmodel MONSTER_MODEL
	width 32
	height 96

	if game.serverside
	if ( !AM_MINI ) name a|Bludgeon
	if ( AM_MINI ) name a|Young Bludgeon
	if ( !AM_HAMMER ) callevent axe_mode
	if ( AM_HAMMER ) callevent hammer_mode
	takedmg all 0.6
	race demon
	roam 1
	hearingsensitivity 4
	setvard SWING_STEP 0

	if ( AM_DEMON ) callevent demon_mode
	if ( AM_CORRUPT ) callevent corrupt_mode
}

{ axe_mode
	hp 2000
	dbg Axer
	setvard NPC_GIVE_EXP 450
	setmodelbody 4 1
}

{ hammer_mode
	hp 3000
	dbg Hammah
	setvard NPC_GIVE_EXP 550
	setmodelbody 4 2
}

{ demon_mode
	if ( !NPC_CUSTOM_NAME )
	{
		if ( !AM_MINI ) name a|Demon Bludgeon
		if ( AM_MINI ) name a|Young Demon Bludgeon
	}
	setprop ent_me skin 1
	setvard IS_UNHOLY 1
	takedmg all 0.4
	takedmg fire 0.0
	takedmg holy 0.25
	multiply NPC_GIVE_EXP 3.0
}

{ corrupt_mode
	if ( !NPC_CUSTOM_NAME )
	{
		if ( !AM_MINI ) name a|Corrupted Bludgeon
		if ( AM_MINI ) name a|Young Corrupted Bludgeon
	}
	setprop ent_me skin 2
	setvard IS_UNHOLY 1
	takedmg all 0.4
	takedmg poison 0.0
	takedmg holy 0.25
	multiply NPC_GIVE_EXP 3.0	
	callevent 0.1 poison_aura
	callevent 0.1 poison_aura_scan
}

{ npc_post_spawn
	setmoveanim ANIM_WALK
	setidleanim ANIM_IDLE
	if ( AM_HAMMER ) setvard ANIM_ATTACK ANIM_HAMMER
}

{ npc_targetsighted

	if !I_R_FROZEN

	if ( !DID_WARCRY )
	{
		setvard DID_WARCRY 1
		local WARCRY_TYPE $rand(1,2)
		if ( WARCRY_TYPE == 1 )
		{
			playanim critical warcry
			playsound 0 10 SOUND_WARCRY
		}
		if ( WARCRY_TYPE == 2 ) playsound 0 10 SOUND_ALERT

		if !AM_HAMMER
		//axers don't open with charge, since they can throw
		setvard CHARGE_DELAY 1
		callevent FREQ_CHARGE reset_charge_delay
	}

	local TARGET_RANGE $get(NPCATK_TARGET,range)

	if TARGET_RANGE > ATTACK_RANGE

	if ( !CHARGE_DELAY )
	{
		if !I_R_FROZEN
		setvard CHARGE_TARGET NPCATK_TARGET
		setvard AS_ATTACKING game.time
		add AS_ATTACKING 20.0
		setvard CHARGE_DELAY 1
		callevent FREQ_CHARGE reset_charge_delay
		callevent npcatk_suspend_ai
		setmoveanim charge_start
		setidleanim charge_start
		playanim critical charge_start
		callevent 1.0 do_charge
		playsound 0 10 SOUND_CHARGE_START
		local EXIT_SUB 1
	}
	if !EXIT_SUB

	if ( TARGET_RANGE < LEAP_RANGE )
	{
		if !THROWING_AXE
		if !LEAP_DELAY
		if !AM_CHARGING
		setvard LEAP_DELAY 1
		callevent FREQ_LEAP reset_leap_delay
		setvard AS_ATTACKING game.time
		add AS_ATTACKING 20.0
		playsound 0 10 SOUND_LEAP
		setmoveanim ANIM_LEAP
		playanim critical ANIM_LEAP
	}

	if ( TARGET_RANGE > LEAP_RANGE )
	{
		if !AM_HAMMER
		if !THROW_DELAY
		setvard THROW_DELAY 1
		setvard AS_ATTACKING game.time
		add AS_ATTACKING 20.0
		setvard THROWING_AXE 1
		playsound 0 10 SOUND_THROW
		callevent npcatk_suspend_ai
		setidleanim ANIM_THROW_HOLD
		setmoveanim ANIM_THROW_HOLD
		roam 0
		playanim break
		playanim hold ANIM_THROW
		callevent 0.5 throw_axe
	}
}

{ throw_axe

	setmodelbody 4 0
	local TARG_DEST $get(NPCATK_TARGET,origin)
	vectoradd TARG_DEST $relpos($vec(0,game.monster.angles.yaw,0),$vec(0,ATTACK_RANGE,0))
	local TRACE_START game.monster.origin
	vectoradd TRACE_START z 32
	local TRACE_TARG $get_traceline(TRACE_START,TARGET_DEST,worldonly)
	local TRACE_DEST TRACE_TARG
	if ( !$get(NPCATK_TARGET,isplayer) ) vectoradd TARG_DEST z $get(NPCATK_TARGET,height)
	createnpc monsters/summon/bludgeon_axe $relpos(0,40,48) $get(ent_me,id) TARG_DEST DMG_THROW
	setvard MY_AXE ent_lastcreated
	callevent throw_axe_loop
}

{ throw_axe_loop
	if THROWING_AXE
	setmovedest MY_AXE 9999
	callevent 0.1 throw_axe_loop
}

{ reset_throw_delay
	setvard THROW_DELAY 0
}

{ do_charge
	movespeed 3.0
	setvard CHARGE_DEST $get(CHARGE_TARGET,origin)
	vectoradd CHARGE_DEST $relpos($vec(0,game.monster.angles.yaw,0),$vec(0,256,0))
	setmoveanim charge
	setidleanim charge
	setvard CHARGE_COUNT 0
	setvard AM_CHARGING 1
	playsound 0 10 SOUND_CHARGE_GO
	callevent charge_loop
}

{ charge_loop
	add CHARGE_COUNT 1
	setmovedest CHARGE_DEST 20
	if ( CHARGE_COUNT == 30 ) callevent end_charge
	
	if ( $dist(CHARGE_DEST,game.monster.origin) < ATTACK_MOVERANGE ) callevent end_charge

	if AM_CHARGING
	//dodamage $relpos(0,32,0) 96 0 100% 0.0 reflective target
	callevent 0.1 charge_loop

	local SCAN_LOC $relpos(0,32,0)
	setvard CHARGE_LIST $get_tsphere(enemy,96,SCAN_LOC)
	if ( CHARGE_LIST isnot none )
	{
		playsound 0 10 SOUND_STRUCK1
		calleventloop $get_token_amt(CHARGE_LIST) charge_affect_targets
	}

}

{ charge_affect_targets
	local CUR_TARG $get_token(CHARGE_LIST,game.script.iteration)
	local LR_RAND $randf(-200,200)
	addvelocity CUR_TARG $relvel(LR_RAND,600,110)
	//applyeffect CUR_TARG effects/generic_damage DMG_CHARGE $get(ent_me,id) 0 blunt
	dodamage CUR_TARG direct DMG_CHARGE 100% ent_me blunt
}

{ end_charge
	setvard AM_CHARGING 0
	setmoveanim ANIM_RUN
	setidleanim ANIM_IDLE
	movespeed 1.0
	callevent npcatk_resume_ai
}

{ game_dodamage

	if ( AM_DEMON ) applyeffect PARAM2 effects/effect_burn 3 $get(ent_me,id) DOT_BURN

	if ( AM_CORRUPT ) applyeffect PARAM2 effects/effect_poison 10.0 $get(ent_me,id) DOT_POISON

	if ( SWING_ATTACK )
	{
		if ( !PARAM1 ) playsound 0 10 SOUND_SWING_MISS
		if PARAM1
		playsound 0 10 SOUND_SWING_HIT
		if ( !$get(PARAM2,scriptvar,IMMUNE_PUSH) ) addvelocity PARAM2 $relvel(-100,130,120)
		setvard SWING_ATTACK 0
	}

	if ( AM_HAMMER )
	{
		if PARAM1
		if $rand(1,100) < CHANCE_STUN
		applyeffect PARAM2 effects/heavy_stun 5 $get(ent_me,id) 1
		playsound 0 10 SOUND_SNORT
	}
}

{ reset_charge_delay
	setvard CHARGE_DELAY 0
}

{ reset_leap_delay
	setvard LEAP_DELAY 0
}

{ game_struck
	playrandomsound 0 10 SOUND_STRUCK1 SOUND_STRUCK2 SOUND_STRUCK1 SOUND_STRUCK2 SOUND_PAIN
}

{
repeatdelay FREQ_IDLE

	if NPCATK_TARGET equals unset

	local RND_IDLE $rand(1,2)
	if ( RND_IDLE == 1 )
	{
		playsound 0 10 SOUND_IDLE1
		playanim critical ANIM_TRICK
	}

	if ( RND_IDLE == 2 )
	{
		playsound 0 10 SOUND_IDLE2
		playanim critical ANIM_WARCRY
	}
}

//model debugarry
{ ext_bd_toggle
	if ( SUSPEND_AI )
	{
		callevent npcatk_resume_ai
		local EXIT_SUB 1
	}
	if !EXIT_SUB
	if ( !SUSPEND_AI )
	{
		roam 0
		callevent npcatk_suspend_ai
	}
}

{ ext_follow
	setmovedest PARAM1 ATTACK_MOVERANGE
}

{ ext_playanim
	playanim critical PARAM1
}

{ ext_demon
	setvard AM_DEMON 1
	setprop ent_me skin PARAM1
}

{ ext_hammer
	setvard AM_HAMMER 1
	setmodelbody 4 2
}

{ ext_axe
	setvard AM_HAMMER 0
	setmodelbody 4 1
}

{ cycle_up
	if !CYCLES_STARTED
	setvard CYCLES_STARTED 1
	callevent jump_check
}

//jump at target if way above me
{ jump_check
	callevent FREQ_JUMP jump_check

	if NPCATK_TARGET isnot unset

	local TARG_Z $get(NPCATK_TARGET,origin.z)
	local MY_Z $vec.z(game.monster.origin)
	local Z_DIFF TARG_Z
	subtract Z_DIFF MY_Z
	//dbg temp z_targ TARG_Z z_me MY_Z z_diff Z_DIFF 
	if Z_DIFF > ATTACK_RANGE
	callevent npcatk_faceattacker NPCATK_TARGET
	callevent 0.1 do_jump
	playsound 0 10 SOUND_LEAP
}

{ do_jump
	stepsize 1000
	setmoveanim ANIM_JUMP
	addvelocity ent_me $relvel(0,-200,800)
	callevent 0.5 push_forward
	callevent 1.0 jump_done
}

{ push_forward
	addvelocity ent_me $relvel(0,400,100)
}

{ jump_done
	stepsize STEP_SIZE_NORM
	setmoveanim ANIM_RUN
}

//anim events
{ leap_land
	setmoveanim ANIM_RUN
	playsound 0 10 SOUND_LAND
	createnpc monsters/summon/stun_burst $relpos(0,0,0) $get(ent_me,id) 128 0 DMG_STUN
}

{ attack1
	setvard SWING_ATTACK 1
	callevent npcatk_dodamage NPCATK_TARGET ATTACK_HITRANGE DMG_SWING ATTACK_HITCHANCE slash
	if ( THROWING_AXE ) setanim.framerate 0.0001
}

{ attack2
	callevent attack1
}

{ walk_step
	//playsound 0 4 SOUND_STEP1 SOUND_STEP2
}

{ run_step
	playsound 0 10 SOUND_STEP1 SOUND_STEP2
}

{ swing_start
	add SWING_STEP 1
	if SWING_STEP > 2
	setvard SWING_STEP 0
	playrandomsound 0 10 SOUND_ATTACK1 SOUND_ATTACK2 SOUND_ATTACK3
}

{ my_target_died
	playanim once warcry
	playsound 0 10 SOUND_SPELL
}

{ catch_axe //called extermally from bludgeon_axe upon return
	callevent npcatk_resume_ai
	playanim break
	roam 1
	setvard THROWING_AXE 0
	setmodelbody 4 1
	setidleanim ANIM_IDLE
	setmoveanim ANIM_RUN
	callevent FREQ_THROW reset_throw_delay
	setanim.framerate 1.0
}

{ chest_b_castle_bonus //external param
	setvard DROPS_CONTAINER 1
	setvard CONTAINER_DROP_CHANCE 100%
	setvard CONTAINER_SCRIPT chests/lostcaverns2	
}

{ poison_aura
	if $get(ent_me,isalive)
	clientevent new all effects/sfx_poison_aura $get(ent_me,index) 96 19.0
	callevent 20.0 poison_aura
}

{ poison_aura_scan
	if $get(ent_me,isalive)
	callevent 0.5 poison_aura_scan
	if NPCATK_TARGET isnot unset
	if !AM_CHARGING
	setvard POISON_TARGETS $get_tsphere(enemy,96)
	if POISON_TARGETS isnot none
	calleventloop $get_token_amt(POISON_TARGETS) poison_aura_affect
}

{ poison_aura_affect
	local CUR_TARG $get_token(POISON_TARGETS,game.script.iteration)
	applyeffect CUR_TARG effects/effect_poison 5.0 $get(ent_me,id) DOT_POISON
}

//poison aura armor

monsters/telf_warrior_fmace_dshield.script
Code:
#scope server
{
	setvard NPC_GIVE_EXP 1000
	setvard DROP_GOLD 1
	setvard DROP_GOLD_AMT 500

	const CHANCE_STUN 20%
	const ATTACK_TYPE blunt
	const ATTACK_STANCE 1h
	const CHANCE_DOT 100%

	const CAN_BLOCK 1

	const WEAPON_AURA 1
	const WAURA_TYPE fire
	const WAURA_EFFECT_SCRIPT effects/effect_burn
	const WAURA_RANGE 128
	const WEAPON_AURA_CL_SCRIPT monsters/telf_warrior_fmace_cl
	const DMG_WAURA 400
	const DOT_WAURA 150
	const WAURA_DMG_TYPE fire_effect
	const FREQ_WAURA $randf(20.0,30.0)
	const WAURA_DURATION 5.0
	const SOUND_WAURA_START monsters/goblin/sps_fogfire.wav
	const SOUND_WAURA_LOOP magic/volcano_loop.wav

	precache xfireball3.spr //use by CL script, has to be precached here
}

#include monsters/elf_warrior_base

{ elf_spawn
	name a|Torkalath Warrior
	//Torkalath Warrior - Club (stun)
	//Torkalath Assasin - Dagger (poison - maybe throw?)
	//Torkalath Slasher - Axe (more hp)
	//Torkalath Blademistress - Dbl Sword (more dmg)
	//Torkalath Archer - different base? (spiral arrows)
	hp 5000
	takedmg all 0.5
	setvard ANIM_ATTACK swordswing1_R
	race torkie

	setmodelbody 1 2 //0=Unarmed 1=PDagger 2=FMace 3=LAxe 4=ESword 5=DBow 6=IDagger 7=Axe 8=OBow 9=Dagger 10=Mace
	setmodelbody 2 1 //0=None 1=Dark_Shield 2=Wood_Shield 3=White_Shield
}

{ npc_post_spawn
	setvard ANIM_ATTACK swordswing1_R
}

monsters/bludgeon_gaz2_corrupt_mini.script
Code:
{
	const AM_CORRUPT 1
	const AM_HAMMER 1
	const MONSTER_MODEL monsters/bludgeon_gaz_mini.mdl
	const AM_MINI 1
}

#include monsters/bludgeon_gaz_base
 

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
Does Hashalgath have his own script?

EDIT: I sent some scripts to you, hope they work.

I also got some sound effects for them, and some new music for Nashalrath, the Nashalrath track is meant to play in the city part (From the temple with the corrupted bludgeon to the hallway before Hashalgath)

While the Hashalgath piece is for the Hashalgath fight.

Here it is:
http://www.megaupload.com/?d=NYJ38QJO
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Gurluas said:
Does Hashalgath have his own script?
Nein, he's just a demon blungeon with a custom title and some mild multipliers. (And a particularly evil mini-boss chamber.)
 

Gurluas

New Adventurer
Joined
Aug 28, 2004
Messages
1,775
Reaction score
4
Age
33
Nevertheless i made a script for him which gives him poison amongst other things, did you recieve the scripts i sent?
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
I think I can safely say that FEB2010a will not be out on time.

Hopefully it won't be as late as JAN2010 though.

With *luck* however, the female player model will be available in FEB2010, whenever it is released. Also The_Wall should be in game... Beyond that, and bunch of other stuff already discussed, no promises.

We also may be looking into making FN forum groups, so we can change the password on a monthly basis, and just add/remove members of the groups as needed, thus eliminating the need to PM about 200 folks every time we change the passwords.
 

Dejiko

New Adventurer
Joined
Aug 28, 2007
Messages
225
Reaction score
0
Age
36
The upcoming patches are sounding fucking awesome, Thothie :D
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
tranny_issues.jpg

Hrmmm...

tranny_issues2.jpg

><
 
Top