From: Mario Date: Sat, 23 Feb 2013 21:29:39 +0000 (+1100) Subject: Some updates to vore (new model, better projectiles) X-Git-Tag: xonotic-v0.8.0~241^2^2~513 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8c4660c97c6e6301edf141f7f771a8dc653d8e3c;p=xonotic%2Fxonotic-data.pk3dir.git Some updates to vore (new model, better projectiles) --- diff --git a/models/monsters/mage.dpm b/models/monsters/mage.dpm new file mode 100644 index 000000000..3686b74af Binary files /dev/null and b/models/monsters/mage.dpm differ diff --git a/models/monsters/mage.dpm.framegroups b/models/monsters/mage.dpm.framegroups new file mode 100644 index 000000000..4a72c65c1 --- /dev/null +++ b/models/monsters/mage.dpm.framegroups @@ -0,0 +1,11 @@ +/* +Generated framegroups file for mage +Used by DarkPlaces to simulate frame groups in DPM models. +*/ + +1 31 30 1 // mage idle +32 31 30 1 // mage walk +63 16 30 1 // mage attack +79 16 30 1 // mage hit +95 31 30 0 // mage die +126 31 60 1 // mage walk diff --git a/models/monsters/shalrath.mdl b/models/monsters/shalrath.mdl deleted file mode 100644 index bfa4ec291..000000000 Binary files a/models/monsters/shalrath.mdl and /dev/null differ diff --git a/models/monsters/shalrath.mdl.framegroups b/models/monsters/shalrath.mdl.framegroups deleted file mode 100644 index 35108f53c..000000000 --- a/models/monsters/shalrath.mdl.framegroups +++ /dev/null @@ -1 +0,0 @@ -1 10 10 1 // shalrath attack 12 4 10 0 // shalrath pain 18 5 10 0 // shalrath death 26 12 10 1 // shalrath walk \ No newline at end of file diff --git a/monsters.cfg b/monsters.cfg index cddda3c4c..ee23a0b48 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -159,10 +159,14 @@ set g_monster_fish_speed_run 70 "Rotfish run speed" // Vore set g_monster_shalrath 1 "Enable Vores" set g_monster_shalrath_health 400 "Vore health" -set g_monster_shalrath_damage 30 "Vore magic attack damage" set g_monster_shalrath_drop health "Vore drops this item on death" set g_monster_shalrath_drop_size medium "Size of the item Vores drop. Possible values are: small, medium, large" set g_monster_shalrath_speed 50 "Vore move speed" +set g_monster_shalrath_attack_spike_damage 30 "Vore homing spike explosion damage" +set g_monster_shalrath_attack_spike_radius 60 "Vore homing spike explosion radius" +set g_monster_shalrath_attack_spike_delay 2 "Delay between Vore homing spike attacks" +set g_monster_shalrath_melee_damage 30 "Vore magic attack damage" +set g_monster_shalrath_attack_melee_delay 0.7 "Delay between Vore melee attacks" // Spawner set g_monster_spawner 1 "Enable Monster Spawner" diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index fb4fdd5ef..a0fd4105f 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -289,6 +289,8 @@ void Ent_Projectile() case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break; case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_SEEKER"); break; case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.traileffect = particleeffectnum("TR_SEEKER"); break; + + case PROJECTILE_VORE_SPIKE: setmodel(self, "models/ebomb.mdl"); self.traileffect = particleeffectnum(""); break; case PROJECTILE_RAPTORBOMB: setmodel(self, "models/vehicles/clusterbomb.md3"); self.gravity = 1; self.avelocity = '0 0 180'; self.traileffect = particleeffectnum(""); break; case PROJECTILE_RAPTORBOMBLET: setmodel(self, "models/vehicles/bomblet.md3"); self.gravity = 1; self.avelocity = '0 0 180'; self.traileffect = particleeffectnum(""); break; diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 8d310a7cc..b908bacec 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -362,6 +362,8 @@ float PROJECTILE_WAKICANNON = 29; float PROJECTILE_BUMBLE_GUN = 30; float PROJECTILE_BUMBLE_BEAM = 31; +float PROJECTILE_VORE_SPIKE = 32; + float SPECIES_HUMAN = 0; float SPECIES_ROBOT_SOLID = 1; float SPECIES_ALIEN = 2; diff --git a/qcsrc/server/monsters/monster/shalrath.qc b/qcsrc/server/monsters/monster/shalrath.qc index 86c5b0d30..76c56d2fe 100644 --- a/qcsrc/server/monsters/monster/shalrath.qc +++ b/qcsrc/server/monsters/monster/shalrath.qc @@ -5,14 +5,21 @@ const vector SHALRATH_MAX = '32 32 32'; // cvars float autocvar_g_monster_shalrath; float autocvar_g_monster_shalrath_health; -float autocvar_g_monster_shalrath_damage; float autocvar_g_monster_shalrath_speed; +float autocvar_g_monster_shalrath_attack_spike_damage; +float autocvar_g_monster_shalrath_attack_spike_radius; +float autocvar_g_monster_shalrath_attack_spike_delay; +float autocvar_g_monster_shalrath_attack_melee_damage; +float autocvar_g_monster_shalrath_attack_melee_delay; // animations -#define shalrath_anim_attack 0 -#define shalrath_anim_pain 1 -#define shalrath_anim_death 2 -#define shalrath_anim_walk 3 +#define shalrath_anim_idle 0 +#define shalrath_anim_walk 1 +#define shalrath_anim_attack 2 +#define shalrath_anim_pain 3 +#define shalrath_anim_death 4 +#define shalrath_anim_run 5 + void() ShalMissile; @@ -24,20 +31,20 @@ void shalrath_think () if(self.delay != -1) self.nextthink = self.delay; - monster_move(autocvar_g_monster_shalrath_speed, autocvar_g_monster_shalrath_speed, 50, shalrath_anim_walk, shalrath_anim_walk, shalrath_anim_walk); + monster_move(autocvar_g_monster_shalrath_speed, autocvar_g_monster_shalrath_speed, 50, shalrath_anim_walk, shalrath_anim_run, shalrath_anim_idle); } void shalrath_attack () { self.frame = shalrath_anim_attack; - self.delay = time + 0.1; - self.attack_finished_single = time + 0.7; + self.delay = time + 0.2; + self.attack_finished_single = time + autocvar_g_monster_shalrath_attack_spike_delay; self.monster_delayedattack = ShalMissile; } void shalrathattack_melee () { - float bigdmg = 0, rdmg = autocvar_g_monster_shalrath_damage * random(); + float bigdmg = 0, rdmg = autocvar_g_monster_shalrath_attack_melee_damage * random(); bigdmg = rdmg * self.scale; @@ -49,7 +56,7 @@ void shalrath_attack_melee () self.monster_delayedattack = shalrathattack_melee; self.delay = time + 0.2; self.frame = shalrath_anim_attack; - self.attack_finished_single = time + 0.7; + self.attack_finished_single = time + autocvar_g_monster_shalrath_attack_melee_delay; } float shal_missile () @@ -85,6 +92,23 @@ void ShalHome () self.think = ShalHome; } +void shal_spike_explode () +{ + self.event_damage = func_null; + + pointparticles(particleeffectnum("explosion_small"), self.origin, '0 0 0', 1); + RadiusDamage (self, self.realowner, autocvar_g_monster_shalrath_attack_spike_damage, autocvar_g_monster_shalrath_attack_spike_damage * 0.5, autocvar_g_monster_shalrath_attack_spike_radius, world, 0, DEATH_MONSTER_SHALRATH_MELEE, other); + + remove (self); +} + +void shal_spike_touchexplode() +{ + PROJECTILE_TOUCH; + + shal_spike_explode(); +} + void ShalMissile () { local entity missile = world; @@ -93,8 +117,6 @@ void ShalMissile () self.effects |= EF_MUZZLEFLASH; - sound (self, CHAN_WEAPON, "weapons/spike.wav", 1, ATTN_NORM); - missile = spawn (); missile.owner = missile.realowner = self; @@ -114,9 +136,9 @@ void ShalMissile () missile.velocity = dir * 400; missile.avelocity = '300 300 300'; missile.enemy = self.enemy; - missile.touch = W_Plasma_TouchExplode; + missile.touch = shal_spike_touchexplode; - CSQCProjectile(missile, TRUE, PROJECTILE_CRYLINK, TRUE); + CSQCProjectile(missile, TRUE, PROJECTILE_VORE_SPIKE, TRUE); } float ShalrathCheckAttack () @@ -224,8 +246,8 @@ void spawnfunc_monster_shalrath () self.scale = 1.3; if not (monster_initialize( - "Vore", - "models/monsters/shalrath.mdl", + "Mage", + "models/monsters/mage.dpm", SHALRATH_MIN, SHALRATH_MAX, FALSE, shalrath_die, shalrath_spawn)) diff --git a/scripts/mage.shader b/scripts/mage.shader new file mode 100644 index 000000000..7a235c141 --- /dev/null +++ b/scripts/mage.shader @@ -0,0 +1,8 @@ +mage +{ + cull none + + { + map textures/mage + } +} diff --git a/scripts/shaderlist.txt b/scripts/shaderlist.txt index a73e7e206..c3ac98f2c 100644 --- a/scripts/shaderlist.txt +++ b/scripts/shaderlist.txt @@ -14,3 +14,4 @@ tree tuba turrets weapons +mage diff --git a/textures/mage.tga b/textures/mage.tga new file mode 100644 index 000000000..89c02fc4c Binary files /dev/null and b/textures/mage.tga differ