For Half life 2 Deathmatch
The intended effect makes a smoke cloud when killed by an RPG. I want it for an example to rewrite some other things.
Syntax: Select all
# ../explosive/explosive_rpg.py
from entities import TakeDamageInfo
from entities.entity import Entity
from entities.hooks import EntityCondition, EntityPreHook
from memory import make_object
from players.entity import Player
from entities.entity import Entity
from weapons.manager import weapon_manager
DAMAGE_TRIGGERS = [
'rpg_missile',
]
@EntityPreHook(EntityCondition.is_player, 'on_take_damage')
def _pre_take_damage(stack_data):
victim = make_object(Entity, stack_data[0])
if not victim.is_player():
return
info = make_object(TakeDamageInfo, stack_data[1])
try:
weapon_index = info.weapon
weapon = Entity(weapon_index).classname
except:
return
try:
if weapon in DAMAGE_TRIGGERS:
fragcloud(Player(victim.index))
except AttributeError:
pass
def fragcloud(victim):
entity = make_object(Entity, victim.give_named_item('env_ar2explosion'))
entity.set_key_value_string('material', 'smoke/smokeandfire-11-7a.vmt')
entity.call_input('Explode')
entity.delay(8, entity.remove)